From a0c2bfa81806a62f537599383f75c5c79b60b1ee Mon Sep 17 00:00:00 2001 From: AG <> Date: Mon, 25 Aug 2025 23:04:15 +0200 Subject: [PATCH] wip --- workspace/.metadata/.ide.log | 1742 + workspace/.metadata/.log | 1306 + .../.plugins/org.eclipse.cdt.core/.log | 5 + .../AUTOM10.1755360506374.pdom | Bin 3698688 -> 3796992 bytes .../AUTOM7.1755290294236.pdom | Bin 3944448 -> 4898816 bytes .../AUTOM7.language.settings.xml | 2 +- .../dialog_settings.xml | 10 +- .../org.eclipse.cdt.ui/AUTOM10.build.log | 15 +- .../org.eclipse.cdt.ui/AUTOM7.build.log | 52 +- .../org.eclipse.cdt.ui/dialog_settings.xml | 36 +- .../org.eclipse.cdt.ui/global-build.log | 18 +- .../1/a0723d83b17900101184ce6eca06d082 | 3 - .../102fe779f58100101998fc3eb692d7cd} | 77 +- .../10/30c9c34c1c790010170b9c5237bb316a | 246 - .../12/e08e6ae4c57a0010102ab5f83d1b4df9 | 617 - .../19/e0e135791d7a00101d5d8357c45e25c3 | 4 - .../1b/9054fd36117a00101d5d8357c45e25c3 | 356 - .../1b/d0f728a01c790010170b9c5237bb316a | 246 - .../1f/f04f62710c7a00101d5d8357c45e25c3 | 352 - .../22/008d7917117a00101d5d8357c45e25c3 | 356 - .../24/30b9e0ac18790010170b9c5237bb316a | 303 - .../27/70764144187a00101d5d8357c45e25c3 | 270 - .../3/608b2195197a00101d5d8357c45e25c3 | 4 - .../32/201fa704c67a0010102ab5f83d1b4df9 | 617 - .../34/80564e66ef7900101d5d8357c45e25c3 | 265 - .../37/a03d2ccdc57a0010102ab5f83d1b4df9 | 617 - .../3b/1004aac7177a00101d5d8357c45e25c3 | 2 - .../3b/903f1566b77900101184ce6eca06d082 | 247 - .../40/401bbf82fb7900101d5d8357c45e25c3 | 277 - .../42/70d65f11b87a0010102ab5f83d1b4df9 | 559 - .../42/90723d53007a00101d5d8357c45e25c3 | 339 - .../44/00942c65097a00101d5d8357c45e25c3 | 277 - .../45/60aaee8dc57a0010102ab5f83d1b4df9 | 217 - .../49/200f62a2f17900101d5d8357c45e25c3 | 264 - .../4a/909b53a8bb7a0010102ab5f83d1b4df9 | 3 - .../4c/505def3fbb7a0010102ab5f83d1b4df9 | 2 - .../4c/90888eb7bb7a0010102ab5f83d1b4df9 | 3 - .../4f/8036bb67fb7900101d5d8357c45e25c3 | 264 - .../51/70dca0320a7a00101d5d8357c45e25c3 | 330 - .../51/d068e88dc57a0010102ab5f83d1b4df9 | 608 - .../53/405d2976b17900101184ce6eca06d082 | 3 - .../57/40cdb25bd67a00101a7e8e8124d02ecc | 2 - .../58/b0873cb3b77900101184ce6eca06d082 | 255 - .../59/70f72802107a00101d5d8357c45e25c3 | 354 - .../5a/802130c4c57a0010102ab5f83d1b4df9 | 617 - .../5e/d06e2a7fd77a00101a7e8e8124d02ecc | 4 - .../60/e0793035bb7900101184ce6eca06d082 | 228 - .../61/409b59f3c47a0010102ab5f83d1b4df9 | 608 - .../63/d0f4c47dfa7900101d5d8357c45e25c3 | 132 - .../b083378af58100101998fc3eb692d7cd} | 1 + .../65/00ee80c21c790010170b9c5237bb316a | 247 - .../76/206deba7b97900101184ce6eca06d082 | 217 - .../78/3007bc7dd67a00101a7e8e8124d02ecc | 3 - .../7b/909420678478001019e1d409b055d613 | 3 - .../7b/d03db49118790010170b9c5237bb316a | 303 - .../82/201c4223fc7900101d5d8357c45e25c3 | 277 - .../86/5081c4c1187a00101d5d8357c45e25c3 | 4 - .../86/704696281e7a00101d5d8357c45e25c3 | 4 - .../8f/f0f7229dd67a00101a7e8e8124d02ecc | 3 - .../95/50789494f27900101d5d8357c45e25c3 | 264 - .../98/206886a7197a00101d5d8357c45e25c3 | 350 - .../9a/f024c82afa7900101d5d8357c45e25c3 | 303 - .../9f/4005280e0e7a00101d5d8357c45e25c3 | 352 - .../a/409faa241c7a00101d5d8357c45e25c3 | 4 - .../a0/6037e751be7900101184ce6eca06d082 | 228 - .../a1/206042d8c57a0010102ab5f83d1b4df9 | 617 - .../a2/b0e4226ec27a0010102ab5f83d1b4df9 | 567 - .../a5/90fd624e097a00101d5d8357c45e25c3 | 277 - .../a8/00933aaa167a00101d5d8357c45e25c3 | 368 - .../a9/c0d351411c7a00101d5d8357c45e25c3 | 4 - .../ab/e06e33801d7a00101d5d8357c45e25c3 | 391 - .../ac/d0f4e152ef7900101d5d8357c45e25c3 | 246 - .../ae/9055a26b187a00101d5d8357c45e25c3 | 3 - .../af/10d1f7cdbf7900101184ce6eca06d082 | 203 - .../b/50144391fb7900101d5d8357c45e25c3 | 277 - .../b1/a0beebb4c57a0010102ab5f83d1b4df9 | 617 - .../b3/407fa3eab87a0010102ab5f83d1b4df9 | 303 - .../b4/f0236100b97a0010102ab5f83d1b4df9 | 132 - .../bd/00f1f4678378001019e1d409b055d613 | 2 - .../bf/80634b1f1d7a00101d5d8357c45e25c3 | 4 - .../c1/205d973c157a00101d5d8357c45e25c3 | 362 - .../c3/f0bc9dd71b7a00101d5d8357c45e25c3 | 354 - .../c4/10aa9bbd167a00101d5d8357c45e25c3 | 374 - .../c5/10635b1d0c7a00101d5d8357c45e25c3 | 132 - .../c7/80369808b57900101184ce6eca06d082 | 247 - .../c9/607e840fc67a0010102ab5f83d1b4df9 | 622 - .../cc/f0fcce86a57a0010102ab5f83d1b4df9 | 2 - .../ce/e0bca7d3167a00101d5d8357c45e25c3 | 374 - .../cf/e0cb3896d67a00101a7e8e8124d02ecc | 203 - .../d1/b06f66431b790010170b9c5237bb316a | 266 - .../d2/a0cc777c007a00101d5d8357c45e25c3 | 330 - .../d4/0027584a8578001019e1d409b055d613 | 3 - .../d4/70350260be7900101184ce6eca06d082 | 228 - .../d4/f086c91d8778001019e1d409b055d613 | 3 - .../da/d0bbce8abc7a0010102ab5f83d1b4df9 | 303 - .../e0/10444201d87a00101a7e8e8124d02ecc | 223 - .../e3/00fff1e3be7900101184ce6eca06d082 | 252 - .../e4/106d86388678001019e1d409b055d613 | 3 - .../ec/8098976cbc7a0010102ab5f83d1b4df9 | 205 - .../f0/5073db96bc7a0010102ab5f83d1b4df9 | 132 - .../f2/6038c032177a00101d5d8357c45e25c3 | 445 - .../f3/101359710a7a00101d5d8357c45e25c3 | 340 - .../f3/a0ecdfe217790010170b9c5237bb316a | 303 - .../f4/9082421c187a00101d5d8357c45e25c3 | 3 - .../f4/c084a29c0f7a00101d5d8357c45e25c3 | 246 - .../f7/c070a9b9a47a0010102ab5f83d1b4df9 | 2 - .../ff/b02b156ab17900101184ce6eca06d082 | 2 - .../ff/d02d0374f17900101d5d8357c45e25c3 | 265 - .../.projects/AUTOM1/2.tree | Bin 0 -> 11246 bytes .../AUTOM10/.indexes/91/1/history.index | Bin 119 -> 0 bytes .../AUTOM10/.indexes/af/history.index | Bin 118 -> 0 bytes .../AUTOM10/.indexes/bf/c4/history.index | Bin 365 -> 49 bytes .../.projects/AUTOM2/1.tree | Bin 0 -> 11357 bytes .../.projects/AUTOM3/1.tree | Bin 0 -> 11357 bytes .../.projects/AUTOM4/1.tree | Bin 0 -> 17865 bytes .../AUTOM5/.indexes/91/1/history.index | Bin 263 -> 0 bytes .../AUTOM5/.indexes/af/history.index | Bin 166 -> 0 bytes .../AUTOM5/.indexes/bf/c4/history.index | Bin 797 -> 0 bytes .../.projects/AUTOM5/2.tree | Bin 0 -> 49655 bytes .../AUTOM6/.indexes/af/history.index | Bin 118 -> 0 bytes .../AUTOM6/.indexes/bf/c4/history.index | Bin 197 -> 0 bytes .../.projects/AUTOM6/1.tree | Bin 0 -> 15180 bytes .../AUTOM7/.indexes/91/1/history.index | Bin 119 -> 0 bytes .../AUTOM7/.indexes/af/history.index | Bin 286 -> 0 bytes .../AUTOM7/.indexes/bf/c4/history.index | Bin 169 -> 49 bytes .../.projects/AUTOM7/.markers | Bin 240 -> 889 bytes .../AUTOM8/.indexes/af/history.index | Bin 70 -> 0 bytes .../.projects/AUTOM8/1.tree | Bin 0 -> 5568 bytes .../AUTOM9/.indexes/af/history.index | Bin 70 -> 0 bytes .../.projects/AUTOM9/2.tree | Bin 0 -> 5401 bytes .../.projects/blink/.indexes/af/history.index | Bin 142 -> 0 bytes .../blink/.indexes/bf/c4/history.index | Bin 73 -> 0 bytes .../.projects/blink/1.tree | Bin 0 -> 9801 bytes .../org.eclipse.core.resources/.root/13.tree | Bin 168786 -> 0 bytes .../org.eclipse.core.resources/.root/18.tree | Bin 0 -> 31350 bytes .../.safetable/org.eclipse.core.resources | Bin 602 -> 910 bytes .../.settings/org.eclipse.debug.core.prefs | 13 +- .../.settings/org.eclipse.debug.ui.prefs | 9 +- .../org.eclipse.launchbar.core.prefs | 19 +- .../.settings/org.eclipse.ui.ide.prefs | 8 +- .../launchConfigurationHistory.xml | 52 +- .../org.eclipse.e4.workbench/workbench.xmi | 4493 +- .../org.eclipse.ui.workbench/workingsets.xml | 6 +- workspace/.metadata/version.ini | 6 +- .../AUTOM10/.settings/language.settings.xml | 4 +- workspace/AUTOM10/AUTOM10 Debug.launch | 2 + workspace/AUTOM10/AUTOM10.ioc | 566 +- workspace/AUTOM10/Core/Src/main.c | 16 + workspace/AUTOM10/Debug/AUTOM10.elf | Bin 974992 -> 975148 bytes workspace/AUTOM10/Debug/AUTOM10.list | 47195 ++++++++-------- workspace/AUTOM10/Debug/AUTOM10.map | 11190 ++-- workspace/AUTOM10/Debug/Core/Src/main.cyclo | 20 +- workspace/AUTOM10/Debug/Core/Src/main.d | 158 +- workspace/AUTOM10/Debug/Core/Src/main.o | Bin 819920 -> 820312 bytes workspace/AUTOM10/Debug/Core/Src/main.su | 20 +- .../Debug/Core/Src/stm32f1xx_hal_msp.cyclo | 12 +- .../Debug/Core/Src/stm32f1xx_hal_msp.d | 120 +- .../Debug/Core/Src/stm32f1xx_hal_msp.su | 12 +- .../AUTOM10/Debug/Core/Src/stm32f1xx_it.cyclo | 20 +- .../AUTOM10/Debug/Core/Src/stm32f1xx_it.d | 124 +- .../AUTOM10/Debug/Core/Src/stm32f1xx_it.su | 20 +- workspace/AUTOM10/Debug/Core/Src/subdir.mk | 48 +- .../AUTOM10/Debug/Core/Src/syscalls.cyclo | 36 +- workspace/AUTOM10/Debug/Core/Src/syscalls.d | 2 +- workspace/AUTOM10/Debug/Core/Src/syscalls.su | 36 +- workspace/AUTOM10/Debug/Core/Src/sysmem.cyclo | 2 +- workspace/AUTOM10/Debug/Core/Src/sysmem.d | 2 +- workspace/AUTOM10/Debug/Core/Src/sysmem.su | 2 +- .../Debug/Core/Src/system_stm32f1xx.cyclo | 4 +- .../AUTOM10/Debug/Core/Src/system_stm32f1xx.d | 118 +- .../Debug/Core/Src/system_stm32f1xx.su | 4 +- .../Core/Startup/startup_stm32f103c8tx.d | 4 +- .../AUTOM10/Debug/Core/Startup/subdir.mk | 48 +- .../Src/stm32f1xx_hal.cyclo | 50 +- .../STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d | 120 +- .../STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.su | 50 +- .../Src/stm32f1xx_hal_adc.cyclo | 54 +- .../Src/stm32f1xx_hal_adc.d | 120 +- .../Src/stm32f1xx_hal_adc.su | 54 +- .../Src/stm32f1xx_hal_adc_ex.cyclo | 26 +- .../Src/stm32f1xx_hal_adc_ex.d | 120 +- .../Src/stm32f1xx_hal_adc_ex.su | 26 +- .../Src/stm32f1xx_hal_cortex.cyclo | 58 +- .../Src/stm32f1xx_hal_cortex.d | 120 +- .../Src/stm32f1xx_hal_cortex.su | 58 +- .../Src/stm32f1xx_hal_dma.cyclo | 26 +- .../Src/stm32f1xx_hal_dma.d | 120 +- .../Src/stm32f1xx_hal_dma.su | 26 +- .../Src/stm32f1xx_hal_exti.cyclo | 18 +- .../Src/stm32f1xx_hal_exti.d | 120 +- .../Src/stm32f1xx_hal_exti.su | 18 +- .../Src/stm32f1xx_hal_flash.cyclo | 28 +- .../Src/stm32f1xx_hal_flash.d | 120 +- .../Src/stm32f1xx_hal_flash.su | 28 +- .../Src/stm32f1xx_hal_flash_ex.cyclo | 32 +- .../Src/stm32f1xx_hal_flash_ex.d | 120 +- .../Src/stm32f1xx_hal_flash_ex.su | 32 +- .../Src/stm32f1xx_hal_gpio.cyclo | 16 +- .../Src/stm32f1xx_hal_gpio.d | 120 +- .../Src/stm32f1xx_hal_gpio.su | 16 +- .../Src/stm32f1xx_hal_gpio_ex.cyclo | 6 +- .../Src/stm32f1xx_hal_gpio_ex.d | 120 +- .../Src/stm32f1xx_hal_gpio_ex.su | 6 +- .../Src/stm32f1xx_hal_pcd.cyclo | 74 +- .../Src/stm32f1xx_hal_pcd.d | 120 +- .../Src/stm32f1xx_hal_pcd.su | 74 +- .../Src/stm32f1xx_hal_pcd_ex.cyclo | 8 +- .../Src/stm32f1xx_hal_pcd_ex.d | 120 +- .../Src/stm32f1xx_hal_pcd_ex.su | 8 +- .../Src/stm32f1xx_hal_pwr.cyclo | 36 +- .../Src/stm32f1xx_hal_pwr.d | 120 +- .../Src/stm32f1xx_hal_pwr.su | 36 +- .../Src/stm32f1xx_hal_rcc.cyclo | 30 +- .../Src/stm32f1xx_hal_rcc.d | 120 +- .../Src/stm32f1xx_hal_rcc.su | 30 +- .../Src/stm32f1xx_hal_rcc_ex.cyclo | 6 +- .../Src/stm32f1xx_hal_rcc_ex.d | 120 +- .../Src/stm32f1xx_hal_rcc_ex.su | 6 +- .../Src/stm32f1xx_hal_tim.cyclo | 238 +- .../Src/stm32f1xx_hal_tim.d | 120 +- .../Src/stm32f1xx_hal_tim.su | 238 +- .../Src/stm32f1xx_hal_tim_ex.cyclo | 84 +- .../Src/stm32f1xx_hal_tim_ex.d | 120 +- .../Src/stm32f1xx_hal_tim_ex.su | 84 +- .../Src/stm32f1xx_ll_usb.cyclo | 56 +- .../Src/stm32f1xx_ll_usb.d | 120 +- .../Src/stm32f1xx_ll_usb.su | 56 +- .../STM32F1xx_HAL_Driver/Src/subdir.mk | 48 +- .../Class/CDC/Src/subdir.mk | 48 +- .../Class/CDC/Src/usbd_cdc.cyclo | 30 +- .../Class/CDC/Src/usbd_cdc.d | 154 +- .../Class/CDC/Src/usbd_cdc.su | 30 +- .../Core/Src/subdir.mk | 48 +- .../Core/Src/usbd_core.cyclo | 40 +- .../Core/Src/usbd_core.d | 146 +- .../Core/Src/usbd_core.su | 40 +- .../Core/Src/usbd_ctlreq.cyclo | 28 +- .../Core/Src/usbd_ctlreq.d | 150 +- .../Core/Src/usbd_ctlreq.su | 28 +- .../Core/Src/usbd_ioreq.cyclo | 14 +- .../Core/Src/usbd_ioreq.d | 146 +- .../Core/Src/usbd_ioreq.su | 14 +- .../AUTOM10/Debug/USB_DEVICE/App/subdir.mk | 48 +- .../Debug/USB_DEVICE/App/usb_device.cyclo | 2 +- .../AUTOM10/Debug/USB_DEVICE/App/usb_device.d | 168 +- .../Debug/USB_DEVICE/App/usb_device.su | 2 +- .../Debug/USB_DEVICE/App/usbd_cdc_if.cyclo | 16 +- .../Debug/USB_DEVICE/App/usbd_cdc_if.d | 152 +- .../Debug/USB_DEVICE/App/usbd_cdc_if.su | 16 +- .../Debug/USB_DEVICE/App/usbd_desc.cyclo | 18 +- .../AUTOM10/Debug/USB_DEVICE/App/usbd_desc.d | 152 +- .../AUTOM10/Debug/USB_DEVICE/App/usbd_desc.su | 18 +- .../AUTOM10/Debug/USB_DEVICE/Target/subdir.mk | 48 +- .../Debug/USB_DEVICE/Target/usbd_conf.cyclo | 64 +- .../Debug/USB_DEVICE/Target/usbd_conf.d | 156 +- .../Debug/USB_DEVICE/Target/usbd_conf.su | 64 +- workspace/AUTOM10/Debug/makefile | 172 +- workspace/AUTOM10/Debug/objects.list | 66 +- workspace/AUTOM10/Debug/objects.mk | 18 +- workspace/AUTOM10/Debug/sources.mk | 48 +- .../AUTOM7/.settings/language.settings.xml | 4 +- workspace/AUTOM7/Core/Src/main.c | 3 + workspace/AUTOM7/Debug/AUTOM7.elf | Bin 938356 -> 0 bytes workspace/AUTOM7/Debug/AUTOM7.list | 44310 +++++++-------- workspace/AUTOM7/Debug/AUTOM7.map | 10368 ++-- workspace/AUTOM7/Debug/Core/Src/main.cyclo | 7 - workspace/AUTOM7/Debug/Core/Src/main.d | 150 +- workspace/AUTOM7/Debug/Core/Src/main.o | Bin 791996 -> 0 bytes workspace/AUTOM7/Debug/Core/Src/main.su | 7 - .../Debug/Core/Src/stm32f1xx_hal_msp.cyclo | 8 +- .../AUTOM7/Debug/Core/Src/stm32f1xx_hal_msp.d | 112 +- .../Debug/Core/Src/stm32f1xx_hal_msp.su | 8 +- .../AUTOM7/Debug/Core/Src/stm32f1xx_it.cyclo | 20 +- .../AUTOM7/Debug/Core/Src/stm32f1xx_it.d | 116 +- .../AUTOM7/Debug/Core/Src/stm32f1xx_it.su | 20 +- workspace/AUTOM7/Debug/Core/Src/subdir.mk | 48 +- .../AUTOM7/Debug/Core/Src/syscalls.cyclo | 36 +- workspace/AUTOM7/Debug/Core/Src/syscalls.d | 2 +- workspace/AUTOM7/Debug/Core/Src/syscalls.su | 36 +- workspace/AUTOM7/Debug/Core/Src/sysmem.cyclo | 2 +- workspace/AUTOM7/Debug/Core/Src/sysmem.d | 2 +- workspace/AUTOM7/Debug/Core/Src/sysmem.su | 2 +- .../Debug/Core/Src/system_stm32f1xx.cyclo | 4 +- .../AUTOM7/Debug/Core/Src/system_stm32f1xx.d | 110 +- .../AUTOM7/Debug/Core/Src/system_stm32f1xx.su | 4 +- .../Core/Startup/startup_stm32f103c8tx.d | 4 +- workspace/AUTOM7/Debug/Core/Startup/subdir.mk | 48 +- .../Src/stm32f1xx_hal.cyclo | 50 +- .../STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d | 112 +- .../STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.su | 50 +- .../Src/stm32f1xx_hal_cortex.cyclo | 58 +- .../Src/stm32f1xx_hal_cortex.d | 112 +- .../Src/stm32f1xx_hal_cortex.su | 58 +- .../Src/stm32f1xx_hal_dma.cyclo | 26 +- .../Src/stm32f1xx_hal_dma.d | 112 +- .../Src/stm32f1xx_hal_dma.su | 26 +- .../Src/stm32f1xx_hal_exti.cyclo | 18 +- .../Src/stm32f1xx_hal_exti.d | 112 +- .../Src/stm32f1xx_hal_exti.su | 18 +- .../Src/stm32f1xx_hal_flash.cyclo | 28 +- .../Src/stm32f1xx_hal_flash.d | 112 +- .../Src/stm32f1xx_hal_flash.su | 28 +- .../Src/stm32f1xx_hal_flash_ex.cyclo | 32 +- .../Src/stm32f1xx_hal_flash_ex.d | 112 +- .../Src/stm32f1xx_hal_flash_ex.su | 32 +- .../Src/stm32f1xx_hal_gpio.cyclo | 16 +- .../Src/stm32f1xx_hal_gpio.d | 112 +- .../Src/stm32f1xx_hal_gpio.su | 16 +- .../Src/stm32f1xx_hal_gpio_ex.cyclo | 6 +- .../Src/stm32f1xx_hal_gpio_ex.d | 112 +- .../Src/stm32f1xx_hal_gpio_ex.su | 6 +- .../Src/stm32f1xx_hal_pcd.cyclo | 74 +- .../Src/stm32f1xx_hal_pcd.d | 112 +- .../Src/stm32f1xx_hal_pcd.su | 74 +- .../Src/stm32f1xx_hal_pcd_ex.cyclo | 8 +- .../Src/stm32f1xx_hal_pcd_ex.d | 112 +- .../Src/stm32f1xx_hal_pcd_ex.su | 8 +- .../Src/stm32f1xx_hal_pwr.cyclo | 36 +- .../Src/stm32f1xx_hal_pwr.d | 112 +- .../Src/stm32f1xx_hal_pwr.su | 36 +- .../Src/stm32f1xx_hal_rcc.cyclo | 30 +- .../Src/stm32f1xx_hal_rcc.d | 112 +- .../Src/stm32f1xx_hal_rcc.su | 30 +- .../Src/stm32f1xx_hal_rcc_ex.cyclo | 6 +- .../Src/stm32f1xx_hal_rcc_ex.d | 112 +- .../Src/stm32f1xx_hal_rcc_ex.su | 6 +- .../Src/stm32f1xx_hal_tim.cyclo | 238 +- .../Src/stm32f1xx_hal_tim.d | 112 +- .../Src/stm32f1xx_hal_tim.su | 238 +- .../Src/stm32f1xx_hal_tim_ex.cyclo | 84 +- .../Src/stm32f1xx_hal_tim_ex.d | 112 +- .../Src/stm32f1xx_hal_tim_ex.su | 84 +- .../Src/stm32f1xx_ll_usb.cyclo | 56 +- .../Src/stm32f1xx_ll_usb.d | 112 +- .../Src/stm32f1xx_ll_usb.su | 56 +- .../STM32F1xx_HAL_Driver/Src/subdir.mk | 48 +- .../Class/CDC/Src/subdir.mk | 48 +- .../Class/CDC/Src/usbd_cdc.cyclo | 30 +- .../Class/CDC/Src/usbd_cdc.d | 146 +- .../Class/CDC/Src/usbd_cdc.su | 30 +- .../Core/Src/subdir.mk | 48 +- .../Core/Src/usbd_core.cyclo | 40 +- .../Core/Src/usbd_core.d | 138 +- .../Core/Src/usbd_core.su | 40 +- .../Core/Src/usbd_ctlreq.cyclo | 28 +- .../Core/Src/usbd_ctlreq.d | 142 +- .../Core/Src/usbd_ctlreq.su | 28 +- .../Core/Src/usbd_ioreq.cyclo | 14 +- .../Core/Src/usbd_ioreq.d | 138 +- .../Core/Src/usbd_ioreq.su | 14 +- .../AUTOM7/Debug/USB_DEVICE/App/subdir.mk | 48 +- .../Debug/USB_DEVICE/App/usb_device.cyclo | 2 +- .../AUTOM7/Debug/USB_DEVICE/App/usb_device.d | 160 +- .../AUTOM7/Debug/USB_DEVICE/App/usb_device.su | 2 +- .../Debug/USB_DEVICE/App/usbd_cdc_if.cyclo | 16 +- .../AUTOM7/Debug/USB_DEVICE/App/usbd_cdc_if.d | 144 +- .../Debug/USB_DEVICE/App/usbd_cdc_if.su | 16 +- .../Debug/USB_DEVICE/App/usbd_desc.cyclo | 18 +- .../AUTOM7/Debug/USB_DEVICE/App/usbd_desc.d | 144 +- .../AUTOM7/Debug/USB_DEVICE/App/usbd_desc.su | 18 +- .../AUTOM7/Debug/USB_DEVICE/Target/subdir.mk | 48 +- .../Debug/USB_DEVICE/Target/usbd_conf.cyclo | 64 +- .../Debug/USB_DEVICE/Target/usbd_conf.d | 148 +- .../Debug/USB_DEVICE/Target/usbd_conf.su | 64 +- workspace/AUTOM7/Debug/makefile | 172 +- workspace/AUTOM7/Debug/objects.list | 62 +- workspace/AUTOM7/Debug/objects.mk | 18 +- workspace/AUTOM7/Debug/sources.mk | 48 +- 368 files changed, 69140 insertions(+), 88086 deletions(-) delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1/a0723d83b17900101184ce6eca06d082 rename workspace/.metadata/.plugins/org.eclipse.core.resources/.history/{46/00215adc727a0010170d9fb255de36ff => 10/102fe779f58100101998fc3eb692d7cd} (87%) delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/10/30c9c34c1c790010170b9c5237bb316a delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/12/e08e6ae4c57a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/19/e0e135791d7a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1b/9054fd36117a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1b/d0f728a01c790010170b9c5237bb316a delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1f/f04f62710c7a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/22/008d7917117a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/24/30b9e0ac18790010170b9c5237bb316a delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/27/70764144187a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/3/608b2195197a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/32/201fa704c67a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/34/80564e66ef7900101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/37/a03d2ccdc57a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/3b/1004aac7177a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/3b/903f1566b77900101184ce6eca06d082 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/40/401bbf82fb7900101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/42/70d65f11b87a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/42/90723d53007a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/44/00942c65097a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/45/60aaee8dc57a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/49/200f62a2f17900101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4a/909b53a8bb7a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4c/505def3fbb7a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4c/90888eb7bb7a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4f/8036bb67fb7900101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/51/70dca0320a7a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/51/d068e88dc57a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/53/405d2976b17900101184ce6eca06d082 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/57/40cdb25bd67a00101a7e8e8124d02ecc delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/58/b0873cb3b77900101184ce6eca06d082 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/59/70f72802107a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/5a/802130c4c57a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/5e/d06e2a7fd77a00101a7e8e8124d02ecc delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/60/e0793035bb7900101184ce6eca06d082 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/61/409b59f3c47a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/63/d0f4c47dfa7900101d5d8357c45e25c3 rename workspace/.metadata/.plugins/org.eclipse.core.resources/.history/{78/30084946c67a0010102ab5f83d1b4df9 => 64/b083378af58100101998fc3eb692d7cd} (99%) delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/65/00ee80c21c790010170b9c5237bb316a delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/76/206deba7b97900101184ce6eca06d082 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/78/3007bc7dd67a00101a7e8e8124d02ecc delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/7b/909420678478001019e1d409b055d613 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/7b/d03db49118790010170b9c5237bb316a delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/82/201c4223fc7900101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/86/5081c4c1187a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/86/704696281e7a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/8f/f0f7229dd67a00101a7e8e8124d02ecc delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/95/50789494f27900101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/98/206886a7197a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/9a/f024c82afa7900101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/9f/4005280e0e7a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a/409faa241c7a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a0/6037e751be7900101184ce6eca06d082 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a1/206042d8c57a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a2/b0e4226ec27a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a5/90fd624e097a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a8/00933aaa167a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a9/c0d351411c7a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ab/e06e33801d7a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ac/d0f4e152ef7900101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ae/9055a26b187a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/af/10d1f7cdbf7900101184ce6eca06d082 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b/50144391fb7900101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b1/a0beebb4c57a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b3/407fa3eab87a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b4/f0236100b97a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/bd/00f1f4678378001019e1d409b055d613 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/bf/80634b1f1d7a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c1/205d973c157a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c3/f0bc9dd71b7a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c4/10aa9bbd167a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c5/10635b1d0c7a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c7/80369808b57900101184ce6eca06d082 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c9/607e840fc67a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/cc/f0fcce86a57a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ce/e0bca7d3167a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/cf/e0cb3896d67a00101a7e8e8124d02ecc delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d1/b06f66431b790010170b9c5237bb316a delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d2/a0cc777c007a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d4/0027584a8578001019e1d409b055d613 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d4/70350260be7900101184ce6eca06d082 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d4/f086c91d8778001019e1d409b055d613 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/da/d0bbce8abc7a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/e0/10444201d87a00101a7e8e8124d02ecc delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/e3/00fff1e3be7900101184ce6eca06d082 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/e4/106d86388678001019e1d409b055d613 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ec/8098976cbc7a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f0/5073db96bc7a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f2/6038c032177a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f3/101359710a7a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f3/a0ecdfe217790010170b9c5237bb316a delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f4/9082421c187a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f4/c084a29c0f7a00101d5d8357c45e25c3 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f7/c070a9b9a47a0010102ab5f83d1b4df9 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ff/b02b156ab17900101184ce6eca06d082 delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ff/d02d0374f17900101d5d8357c45e25c3 create mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM1/2.tree delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM10/.indexes/91/1/history.index delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM10/.indexes/af/history.index create mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM2/1.tree create mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM3/1.tree create mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM4/1.tree delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM5/.indexes/91/1/history.index delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM5/.indexes/af/history.index delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM5/.indexes/bf/c4/history.index create mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM5/2.tree delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM6/.indexes/af/history.index delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM6/.indexes/bf/c4/history.index create mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM6/1.tree delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM7/.indexes/91/1/history.index delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM7/.indexes/af/history.index delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM8/.indexes/af/history.index create mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM8/1.tree delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM9/.indexes/af/history.index create mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM9/2.tree delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/blink/.indexes/af/history.index delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/blink/.indexes/bf/c4/history.index create mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/blink/1.tree delete mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.root/13.tree create mode 100644 workspace/.metadata/.plugins/org.eclipse.core.resources/.root/18.tree delete mode 100644 workspace/AUTOM7/Debug/AUTOM7.elf delete mode 100644 workspace/AUTOM7/Debug/Core/Src/main.o diff --git a/workspace/.metadata/.ide.log b/workspace/.metadata/.ide.log index 757467b..423a837 100644 --- a/workspace/.metadata/.ide.log +++ b/workspace/.metadata/.ide.log @@ -7788,3 +7788,1745 @@ java.lang.NullPointerException: Cannot invoke "javax.swing.JTextField.getText()" 2025-08-16 21:30:41,743 [INFO] ProjectBuilder:3463 - Time for Copy CMSIS : 0mS. 2025-08-16 21:56:30,353 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] 2025-08-16 21:56:30,359 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] +2025-08-25 21:52:58,601 [INFO] Activator:176 - + + +2025-08-25 21:52:58,601 [INFO] Activator:177 - !SESSION log4j initialized +2025-08-25 21:53:01,835 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] +2025-08-25 21:53:04,018 [INFO] ApplicationProperties:184 - Using Application install path: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-08-25 21:53:04,036 [INFO] DbMcusXml:78 - Set database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/mcu/ +2025-08-25 21:53:04,037 [INFO] ApiDb:274 - Set plugin database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/boardmanager/ +2025-08-25 21:53:04,038 [WARN] ApiDb:259 - Overriding images path with different value: => C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/mcufinder/images/ +2025-08-25 21:53:04,053 [INFO] ApiDb:250 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 21:53:04,055 [INFO] DbMcusAds:125 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 21:53:04,057 [INFO] CrossReferenceDbSqlite:203 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/cs/ +2025-08-25 21:53:04,170 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-08-25 21:53:04,242 [INFO] DbMcusXml:78 - Set database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/mcu/ +2025-08-25 21:53:04,243 [INFO] ApiDb:274 - Set plugin database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/boardmanager/ +2025-08-25 21:53:04,243 [INFO] ApiDb:261 - Set plugin images path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/mcufinder/images/ +2025-08-25 21:53:04,243 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 21:53:04,243 [INFO] ApiDb:250 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 21:53:04,243 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 21:53:04,243 [INFO] DbMcusAds:125 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 21:53:04,243 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 21:53:04,243 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 21:53:04,243 [INFO] CrossReferenceDbSqlite:203 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/cs/ +2025-08-25 21:53:04,305 [INFO] MainPanel:274 - HeapMemory: 268435456 +2025-08-25 21:53:04,384 [INFO] DbMcusXml:78 - Set database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/mcu/ +2025-08-25 21:53:04,384 [INFO] ApiDb:274 - Set plugin database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/boardmanager/ +2025-08-25 21:53:04,384 [INFO] ApiDb:261 - Set plugin images path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/mcufinder/images/ +2025-08-25 21:53:04,384 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 21:53:04,384 [INFO] ApiDb:250 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 21:53:04,384 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 21:53:04,384 [INFO] DbMcusAds:125 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 21:53:04,385 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 21:53:04,385 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 21:53:04,385 [INFO] CrossReferenceDbSqlite:203 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/cs/ +2025-08-25 21:53:04,405 [INFO] ApplicationProperties:184 - Using Application install path: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-08-25 21:53:04,406 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ] +2025-08-25 21:53:04,407 [INFO] PluginManage:310 - Check plugin analytics +2025-08-25 21:53:04,594 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses: +2025-08-25 21:53:04,594 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses: +2025-08-25 21:53:04,594 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: +2025-08-25 21:53:04,597 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1) +2025-08-25 21:53:04,598 [INFO] PluginManage:310 - Check plugin cadmodel +2025-08-25 21:53:04,602 [INFO] CADModel:105 - Init CAD model plugin +2025-08-25 21:53:04,603 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5) +2025-08-25 21:53:04,603 [INFO] PluginManage:310 - Check plugin clock +2025-08-25 21:53:04,612 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2) +2025-08-25 21:53:04,613 [INFO] PluginManage:310 - Check plugin ddr +2025-08-25 21:53:04,615 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6) +2025-08-25 21:53:04,615 [INFO] PluginManage:310 - Check plugin filemanager +2025-08-25 21:53:04,741 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10) +2025-08-25 21:53:04,741 [INFO] PluginManage:310 - Check plugin ipmanager +2025-08-25 21:53:04,747 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5) +2025-08-25 21:53:04,747 [INFO] PluginManage:310 - Check plugin lpbam +2025-08-25 21:53:04,754 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0) +2025-08-25 21:53:04,754 [INFO] PluginManage:310 - Check plugin memorymap +2025-08-25 21:53:04,769 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4) +2025-08-25 21:53:04,769 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration +2025-08-25 21:53:04,776 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1) +2025-08-25 21:53:04,776 [INFO] PluginManage:310 - Check plugin pinoutconfig +2025-08-25 21:53:04,895 [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-08-25 21:53:05,100 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0) +2025-08-25 21:53:05,100 [INFO] PluginManage:310 - Check plugin power +2025-08-25 21:53:05,108 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4) +2025-08-25 21:53:05,108 [INFO] PluginManage:310 - Check plugin projectmanager +2025-08-25 21:53:05,124 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4) +2025-08-25 21:53:05,125 [INFO] PluginManage:310 - Check plugin rif +2025-08-25 21:53:05,142 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3) +2025-08-25 21:53:05,142 [INFO] PluginManage:310 - Check plugin thirdparty +2025-08-25 21:53:05,273 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check] +2025-08-25 21:53:05,273 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check] +2025-08-25 21:53:05,273 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1) +2025-08-25 21:53:05,274 [INFO] PluginManage:310 - Check plugin tools +2025-08-25 21:53:05,274 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15] +2025-08-25 21:53:05,277 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7) +2025-08-25 21:53:05,277 [INFO] PluginManage:310 - Check plugin tutovideos +2025-08-25 21:53:05,587 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1) +2025-08-25 21:53:05,587 [INFO] PluginManage:310 - Check plugin updater +2025-08-25 21:53:05,606 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12) +2025-08-25 21:53:05,607 [INFO] PluginManage:310 - Check plugin userauth +2025-08-25 21:53:05,611 [INFO] UserAuth:118 - Init User Auth plugin +2025-08-25 21:53:05,612 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14) +2025-08-25 21:53:05,613 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18] +2025-08-25 21:53:05,836 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-08-25 21:53:05,922 [INFO] CADModel:165 - CPN selected for project level +2025-08-25 21:53:05,922 [INFO] CADModel:114 - Register for checkConnection events +2025-08-25 21:53:05,939 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,939 [INFO] PluginManager:220 - loadIPPluginJar : add adc +2025-08-25 21:53:05,941 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,942 [INFO] PluginManager:220 - loadIPPluginJar : add aes +2025-08-25 21:53:05,944 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,944 [INFO] PluginManager:220 - loadIPPluginJar : add can +2025-08-25 21:53:05,946 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,947 [INFO] PluginManager:220 - loadIPPluginJar : add comp +2025-08-25 21:53:05,949 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,949 [INFO] PluginManager:220 - loadIPPluginJar : add cryp +2025-08-25 21:53:05,953 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,953 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy +2025-08-25 21:53:05,956 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,956 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm +2025-08-25 21:53:05,962 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,963 [INFO] PluginManager:220 - loadIPPluginJar : add dma +2025-08-25 21:53:05,966 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,966 [INFO] PluginManager:220 - loadIPPluginJar : add dma3 +2025-08-25 21:53:05,968 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,969 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager +2025-08-25 21:53:05,970 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,970 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs +2025-08-25 21:53:05,974 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,975 [INFO] PluginManager:220 - loadIPPluginJar : add fmc +2025-08-25 21:53:05,979 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,980 [INFO] PluginManager:220 - loadIPPluginJar : add freertos +2025-08-25 21:53:05,981 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,981 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin +2025-08-25 21:53:05,983 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,983 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu +2025-08-25 21:53:05,987 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,988 [INFO] PluginManager:220 - loadIPPluginJar : add gic +2025-08-25 21:53:05,991 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,991 [INFO] PluginManager:220 - loadIPPluginJar : add gpio +2025-08-25 21:53:05,994 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,994 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc +2025-08-25 21:53:05,996 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,996 [INFO] PluginManager:220 - loadIPPluginJar : add hash +2025-08-25 21:53:05,998 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:05,998 [INFO] PluginManager:220 - loadIPPluginJar : add i2c +2025-08-25 21:53:06,001 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,001 [INFO] PluginManager:220 - loadIPPluginJar : add i2s +2025-08-25 21:53:06,004 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,004 [INFO] PluginManager:220 - loadIPPluginJar : add i3c +2025-08-25 21:53:06,007 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,007 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr +2025-08-25 21:53:06,014 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,014 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist +2025-08-25 21:53:06,017 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,017 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan +2025-08-25 21:53:06,018 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,019 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc +2025-08-25 21:53:06,024 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,025 [INFO] PluginManager:220 - loadIPPluginJar : add mdma +2025-08-25 21:53:06,028 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,028 [INFO] PluginManager:220 - loadIPPluginJar : add nvic +2025-08-25 21:53:06,031 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,031 [INFO] PluginManager:220 - loadIPPluginJar : add opamp +2025-08-25 21:53:06,034 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,034 [INFO] PluginManager:220 - loadIPPluginJar : add openamp +2025-08-25 21:53:06,038 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,038 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm +2025-08-25 21:53:06,044 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,050 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings +2025-08-25 21:53:06,051 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,051 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi +2025-08-25 21:53:06,053 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,054 [INFO] PluginManager:220 - loadIPPluginJar : add radio +2025-08-25 21:53:06,058 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,058 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility +2025-08-25 21:53:06,062 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,062 [INFO] PluginManager:220 - loadIPPluginJar : add sai +2025-08-25 21:53:06,065 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,065 [INFO] PluginManager:220 - loadIPPluginJar : add spi +2025-08-25 21:53:06,071 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,071 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan +2025-08-25 21:53:06,074 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,074 [INFO] PluginManager:220 - loadIPPluginJar : add tim +2025-08-25 21:53:06,077 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,077 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing +2025-08-25 21:53:06,079 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,080 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb +2025-08-25 21:53:06,081 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,082 [INFO] PluginManager:220 - loadIPPluginJar : add ts +2025-08-25 21:53:06,083 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,083 [INFO] PluginManager:220 - loadIPPluginJar : add tsc +2025-08-25 21:53:06,085 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,086 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd +2025-08-25 21:53:06,089 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,089 [INFO] PluginManager:220 - loadIPPluginJar : add usart +2025-08-25 21:53:06,092 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:53:06,092 [INFO] PluginManager:220 - loadIPPluginJar : add usbx +2025-08-25 21:53:06,226 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 21:53:06,248 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-08-25 21:53:06,258 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-08-25 21:53:06,266 [INFO] CADModel:165 - CPN selected for project level +2025-08-25 21:53:06,266 [INFO] CADModel:114 - Register for checkConnection events +2025-08-25 21:53:06,266 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 21:53:06,266 [ERROR] CADModel:125 - Updater not yet initialized, retry later +2025-08-25 21:53:06,416 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 21:53:06,418 [INFO] CADModel:165 - CPN selected for project level +2025-08-25 21:53:06,418 [INFO] CADModel:114 - Register for checkConnection events +2025-08-25 21:53:06,418 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 21:53:06,418 [ERROR] CADModel:125 - Updater not yet initialized, retry later +2025-08-25 21:53:06,422 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 21:53:06,529 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 21:53:06,534 [INFO] DbMcusAds:53 - JSON generation date=Thu Sep 30 08:55:09 CEST 2021 (1632984909247) +2025-08-25 21:53:06,534 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 21:53:06,581 [WARN] DetailPanel:346 - Failed to get advertising image, set to default +2025-08-25 21:53:06,665 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 21:53:06,669 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 21:53:06,669 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 21:53:06,669 [WARN] DetailPanel:346 - Failed to get advertising image, set to default +2025-08-25 21:53:06,670 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 21:53:06,718 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set. +2025-08-25 21:53:06,720 [INFO] Updater:1134 - Updater Version found : 6.15.0 +2025-08-25 21:53:06,739 [INFO] ApplicationProperties:184 - Using Application install path: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-08-25 21:53:08,274 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [2/15] +2025-08-25 21:53:08,315 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] Aug 25, 2025 9:53:08 PM java.util.prefs.WindowsPreferences +2025-08-25 21:53:08,316 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0xffffffff80000002. Windows RegCreateKeyEx(...) returned error code 5. +2025-08-25 21:53:08,317 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] +2025-08-25 21:53:08,590 [INFO] MainUpdater:2872 - connection check result : 10 +2025-08-25 21:53:08,591 [INFO] MainUpdater:289 - Updater Check For Update Now. +2025-08-25 21:53:08,591 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-08-25 21:53:08,600 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated) +2025-08-25 21:53:08,600 [INFO] UserAuth:171 - activating auth plugin +2025-08-25 21:53:08,603 [INFO] UserAuth:487 - Internet connection configuration mode: 1 +2025-08-25 21:53:08,624 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder +2025-08-25 21:53:08,764 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread +2025-08-25 21:53:09,620 [INFO] WebApp:169 - Instantiating new browser for Auth +2025-08-25 21:53:10,354 [INFO] WebApp:463 - Apply proxy settings +2025-08-25 21:53:10,355 [INFO] WebApp:548 - Chromium requires no authentication +2025-08-25 21:53:10,365 [INFO] WebApp:491 - Direct internet connection detected +2025-08-25 21:53:10,382 [INFO] WebApp:900 - Register for checkConnection events +2025-08-25 21:53:10,383 [INFO] WebApp:463 - Apply proxy settings +2025-08-25 21:53:10,383 [INFO] WebApp:548 - Chromium requires no authentication +2025-08-25 21:53:10,383 [INFO] WebApp:491 - Direct internet connection detected +2025-08-25 21:53:10,545 [INFO] WebApp:225 - Starting web application +2025-08-25 21:53:10,545 [INFO] WebApp:593 - Web application path used C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\db\plugins\mcufinder\reactClient1\index.html +2025-08-25 21:53:10,568 [INFO] WebApp:191 - Connection restablished +2025-08-25 21:53:11,447 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0 +2025-08-25 21:53:11,457 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2 +2025-08-25 21:53:11,473 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0 +2025-08-25 21:53:11,478 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0 +2025-08-25 21:53:11,504 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0 +2025-08-25 21:53:11,517 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.4.0 +2025-08-25 21:53:11,553 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1 +2025-08-25 21:53:11,580 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0 +2025-08-25 21:53:11,588 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0 +2025-08-25 21:53:11,597 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0 +2025-08-25 21:53:11,603 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0 +2025-08-25 21:53:11,610 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0 +2025-08-25 21:53:11,615 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0 +2025-08-25 21:53:11,619 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0 +2025-08-25 21:53:11,628 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-08-25 21:53:11,629 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-08-25 21:53:11,630 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-08-25 21:53:11,631 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-08-25 21:53:11,632 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-08-25 21:53:11,635 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0 +2025-08-25 21:53:11,639 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0 +2025-08-25 21:53:11,644 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0 +2025-08-25 21:53:11,649 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0 +2025-08-25 21:53:11,654 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.2 +2025-08-25 21:53:11,658 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0 +2025-08-25 21:53:11,662 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2 +2025-08-25 21:53:11,667 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0 +2025-08-25 21:53:11,680 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0 +2025-08-25 21:53:11,688 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2 +2025-08-25 21:53:11,693 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0 +2025-08-25 21:53:11,700 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1 +2025-08-25 21:53:11,704 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0 +2025-08-25 21:53:11,707 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0 +2025-08-25 21:53:11,712 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0 +2025-08-25 21:53:11,717 [WARN] PackLoader:240 - Cannot read IP mode file for RealThread.X-CUBE-RT-Thread_Nano.4.1.1 +2025-08-25 21:53:11,720 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0 +2025-08-25 21:53:11,725 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0 +2025-08-25 21:53:11,729 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0 +2025-08-25 21:53:11,732 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0 +2025-08-25 21:53:11,752 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1 +2025-08-25 21:53:11,795 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0 +2025-08-25 21:53:11,837 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0 +2025-08-25 21:53:11,983 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0 +2025-08-25 21:53:11,995 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0 +2025-08-25 21:53:12,000 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0 +2025-08-25 21:53:12,003 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0 +2025-08-25 21:53:12,008 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0 +2025-08-25 21:53:12,021 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0 +2025-08-25 21:53:12,029 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0 +2025-08-25 21:53:12,035 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1 +2025-08-25 21:53:12,038 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0 +2025-08-25 21:53:12,042 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0 +2025-08-25 21:53:12,060 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-08-25 21:53:12,060 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0 +2025-08-25 21:53:12,062 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-08-25 21:53:12,062 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-08-25 21:53:12,063 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-08-25 21:53:12,068 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0 +2025-08-25 21:53:12,076 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0 +2025-08-25 21:53:12,088 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-08-25 21:53:12,088 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-08-25 21:53:12,089 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0 +2025-08-25 21:53:12,090 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-08-25 21:53:12,090 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-08-25 21:53:12,090 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-08-25 21:53:12,090 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-08-25 21:53:12,090 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-08-25 21:53:12,095 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1 +2025-08-25 21:53:12,099 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0 +2025-08-25 21:53:12,102 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null +2025-08-25 21:53:12,111 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-08-25 21:53:12,111 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-08-25 21:53:12,111 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-08-25 21:53:12,119 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0 +2025-08-25 21:53:12,135 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0 +2025-08-25 21:53:12,140 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0 +2025-08-25 21:53:12,150 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0 +2025-08-25 21:53:12,155 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20 +2025-08-25 21:53:12,158 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0 +2025-08-25 21:53:12,167 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0 +2025-08-25 21:53:12,175 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2 +2025-08-25 21:53:12,178 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0 +2025-08-25 21:53:12,187 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3 +2025-08-25 21:53:12,194 [INFO] ThirdParty:978 - Integrity check success = true +2025-08-25 21:53:12,194 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check] +2025-08-25 21:53:12,194 [INFO] IntegrityCheckThread:103 - End integrity checks thread +2025-08-25 21:54:23,679 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated) +2025-08-25 21:54:23,684 [INFO] MainUpdater:2872 - connection check result : 10 +2025-08-25 21:54:23,685 [INFO] MainUpdater:2872 - connection check result : 10 +2025-08-25 21:54:23,725 [INFO] MicroXplorer:468 - Change Database Path : +2025-08-25 21:54:23,726 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-08-25 21:54:23,731 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project] +2025-08-25 21:54:23,731 [INFO] ThirdParty:873 - entering critical section [close project] +2025-08-25 21:54:23,732 [INFO] ThirdParty:883 - exiting critical section [close project] +2025-08-25 21:54:23,735 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-08-25 21:54:23,739 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 851263224 Bytes (912261120) +2025-08-25 21:54:23,740 [INFO] MicroXplorer:468 - Change Database Path : +2025-08-25 21:54:23,740 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-08-25 21:54:23,741 [INFO] OpenFileManager:355 - Change cursor +2025-08-25 21:54:23,795 [INFO] Mcu:2029 - Initializing MCU STM32F103C(8-B)Tx STM32F103C8Tx STM32F103C8T6 +2025-08-25 21:54:24,779 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden +2025-08-25 21:54:25,048 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin29 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU +2025-08-25 21:54:25,269 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS +2025-08-25 21:54:25,269 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS +2025-08-25 21:54:25,269 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS +2025-08-25 21:54:25,269 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS +2025-08-25 21:54:25,269 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0: +2025-08-25 21:54:25,289 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,289 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,290 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,290 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,290 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,290 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,290 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,290 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,290 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,290 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,290 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,290 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,290 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,290 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,290 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,290 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,291 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,291 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,291 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,291 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,291 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,291 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,291 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,291 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,291 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,291 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,291 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,291 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,291 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,291 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,291 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,292 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,292 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,292 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,292 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 21:54:25,292 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI +2025-08-25 21:54:25,384 [INFO] ThirdPartyModel:298 - Start build external matchings +2025-08-25 21:54:25,714 [INFO] ThirdPartyModel:316 - End build external matchings +2025-08-25 21:54:25,728 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName) +2025-08-25 21:54:25,728 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Parameter (MCOFreq_Value) has invalid value (72000000) +2025-08-25 21:54:26,028 [INFO] ApiDb:581 - Connected to CubeFinder SQLite database (C:\Users\agone\.stmcufinder\plugins\mcufinder\mcu\cube-finder-db.db) +2025-08-25 21:54:26,106 [INFO] ApiDb:668 - CubeFinder database Data Model version=2.1 +2025-08-25 21:54:26,107 [INFO] ApiDb:669 - CubeFinder database Configuration version=3.0.39 +2025-08-25 21:54:26,107 [INFO] ApiDb:670 - CubeFinder database generation date=2025-06-24 (1750757100) +2025-08-25 21:54:26,107 [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.0.0, STM32Cube_FW_C0_V1.4.0, STM32Cube_FW_F4_V1.28.2, STM32Cube_FW_F7_V1.17.3, 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.3.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.0.0, X-CUBE-EEPRMA1_V5.1.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-SUBG2_V5.0.0, X-CUBE-TOF1_V3.4.3] +2025-08-25 21:54:26,166 [INFO] DbBoardsSqlite:226 - include board P-NUCLEO-WB55-NUCLEO as a kit item of type 'Nucleo-64' +2025-08-25 21:54:26,166 [INFO] DbBoardsSqlite:226 - include board P-NUCLEO-WB55-USBDONGLE as a kit item of type 'Nucleo USB Dongle' +2025-08-25 21:54:26,166 [INFO] DbBoardsSqlite:226 - include board STEVAL-IDP005V1 as a kit item of type 'Evaluation Board' +2025-08-25 21:54:26,167 [INFO] DbBoardsSqlite:226 - include board STEVAL-IDP005V2 as a kit item of type 'Evaluation Board' +2025-08-25 21:54:26,239 [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-08-25 21:54:26,514 [INFO] BoardInfo:889 - No configuration file found for board P-NUCLEO-WB55 +2025-08-25 21:54:26,516 [INFO] DbBoards:161 - Kit is not supported: P-NUCLEO-WB55 +2025-08-25 21:54:26,525 [INFO] BoardInfo:889 - No configuration file found for board STEVAL-BFA001V1B +2025-08-25 21:54:26,527 [INFO] DbBoards:161 - Kit is not supported: STEVAL-BFA001V1B +2025-08-25 21:54:26,528 [INFO] BoardInfo:889 - No configuration file found for board STEVAL-BFA001V2B +2025-08-25 21:54:26,530 [INFO] DbBoards:161 - Kit is not supported: STEVAL-BFA001V2B +2025-08-25 21:54:26,820 [INFO] DbBoards:168 - Found 212 boards, 209 are supported +2025-08-25 21:54:26,821 [INFO] DbBoards:169 - Found 212 boards, 43 of them is supported for Bsp +2025-08-25 21:54:26,829 [INFO] ApiDb:668 - CubeFinder database Data Model version=2.1 +2025-08-25 21:54:26,829 [INFO] ApiDb:669 - CubeFinder database Configuration version=3.0.39 +2025-08-25 21:54:26,829 [INFO] ApiDb:670 - CubeFinder database generation date=2025-06-24 (1750757100) +2025-08-25 21:54:26,829 [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.0.0, STM32Cube_FW_C0_V1.4.0, STM32Cube_FW_F4_V1.28.2, STM32Cube_FW_F7_V1.17.3, 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.3.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.0.0, X-CUBE-EEPRMA1_V5.1.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-SUBG2_V5.0.0, X-CUBE-TOF1_V3.4.3] +2025-08-25 21:54:28,910 [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-08-25 21:54:28,915 [INFO] DbMcus:218 - Found 4801 MCUs, 4801 are supported +2025-08-25 21:54:28,915 [INFO] ApiDb:414 - User favorites file not found: C:\Users\agone/.stm32cubeide/favorites.mcus.txt +2025-08-25 21:54:28,915 [INFO] DbMcus:224 - Set 0 / 0 favorites MCUs +2025-08-25 21:54:29,370 [INFO] ApiDb:414 - User favorites file not found: C:\Users\agone/.stm32cubeide/favorites.boards.txt +2025-08-25 21:54:29,371 [INFO] DbBoards:198 - Set 0 / 0 favorites Boards +2025-08-25 21:54:29,435 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 668446544 Bytes (962592768) +2025-08-25 21:54:29,558 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project] +2025-08-25 21:54:29,559 [INFO] ThirdParty:835 - entering critical section [change project] +2025-08-25 21:54:29,559 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0 +2025-08-25 21:54:29,559 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1 +2025-08-25 21:54:29,559 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0 +2025-08-25 21:54:29,559 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.2 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1 +2025-08-25 21:54:29,560 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0 +2025-08-25 21:54:29,561 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0 +2025-08-25 21:54:29,561 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0 +2025-08-25 21:54:29,561 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0 +2025-08-25 21:54:29,561 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0 +2025-08-25 21:54:29,561 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0 +2025-08-25 21:54:29,561 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.1.0 +2025-08-25 21:54:29,561 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1 +2025-08-25 21:54:29,561 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0 +2025-08-25 21:54:29,561 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2 +2025-08-25 21:54:29,561 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0 +2025-08-25 21:54:29,561 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0 +2025-08-25 21:54:29,561 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0 +2025-08-25 21:54:29,561 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0 +2025-08-25 21:54:29,561 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.4.0 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :RealThread X-CUBE-RT-Thread_Nano 4.1.1 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0 +2025-08-25 21:54:29,562 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0 +2025-08-25 21:54:29,563 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0 +2025-08-25 21:54:29,564 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0 +2025-08-25 21:54:29,564 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2 +2025-08-25 21:54:29,564 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2 +2025-08-25 21:54:29,564 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0 +2025-08-25 21:54:29,564 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0 +2025-08-25 21:54:29,564 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3 +2025-08-25 21:54:29,564 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0 +2025-08-25 21:54:29,564 [INFO] ThirdParty:841 - exiting critical section [change project] +2025-08-25 21:54:29,891 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-08-25 21:54:29,893 [INFO] PinOutPanel:1589 - setPackage(STM32F103C8Tx,LQFP48) +2025-08-25 21:54:30,368 [INFO] UtilMem:75 - Before build in PCC Used Memory: 758597232 Bytes (962592768) +2025-08-25 21:54:31,137 [INFO] UtilMem:75 - After build in PCC Used Memory: 821511512 Bytes (962592768) +2025-08-25 21:54:31,297 [INFO] ApiDbMcu:532 - Load IP Config File for USB_DEVICE +2025-08-25 21:54:31,329 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,329 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,330 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,330 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,330 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,330 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,330 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,330 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,331 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,331 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,331 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,331 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,331 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,331 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,331 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,332 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,332 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,332 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,332 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,332 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,333 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,333 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,333 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,333 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,333 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,334 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,334 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 21:54:31,555 [INFO] CADModel:165 - CPN selected for project levelSTM32F103C8T6 +2025-08-25 21:54:31,556 [INFO] CADModel:114 - Register for checkConnection events +2025-08-25 21:54:31,616 [INFO] OpenFileManager:386 - Restore cursor +2025-08-25 21:54:43,900 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] This download action requires prior login. To proceed, please use the 'login' command with your my.st.com account email and password. +2025-08-25 21:54:43,902 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] Run 'login ' for example 'login john.smith@st.com mypassword y'. +2025-08-25 21:54:43,903 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] If you do not have a my.st.com account, please visit https://st.com website to create one. +2025-08-25 22:28:46,644 [INFO] Activator:176 - + + +2025-08-25 22:28:46,646 [INFO] Activator:177 - !SESSION log4j initialized +2025-08-25 22:28:52,116 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] +2025-08-25 22:28:53,288 [INFO] ApplicationProperties:184 - Using Application install path: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-08-25 22:28:53,304 [INFO] DbMcusXml:78 - Set database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/mcu/ +2025-08-25 22:28:53,304 [INFO] ApiDb:274 - Set plugin database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/boardmanager/ +2025-08-25 22:28:53,304 [WARN] ApiDb:259 - Overriding images path with different value: => C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/mcufinder/images/ +2025-08-25 22:28:53,309 [INFO] ApiDb:250 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 22:28:53,310 [INFO] DbMcusAds:125 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 22:28:53,312 [INFO] CrossReferenceDbSqlite:203 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/cs/ +2025-08-25 22:28:53,422 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-08-25 22:28:53,499 [INFO] DbMcusXml:78 - Set database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/mcu/ +2025-08-25 22:28:53,499 [INFO] ApiDb:274 - Set plugin database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/boardmanager/ +2025-08-25 22:28:53,499 [INFO] ApiDb:261 - Set plugin images path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/mcufinder/images/ +2025-08-25 22:28:53,499 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 22:28:53,499 [INFO] ApiDb:250 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 22:28:53,499 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 22:28:53,499 [INFO] DbMcusAds:125 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 22:28:53,499 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 22:28:53,499 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 22:28:53,500 [INFO] CrossReferenceDbSqlite:203 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/cs/ +2025-08-25 22:28:53,570 [INFO] MainPanel:274 - HeapMemory: 268435456 +2025-08-25 22:28:53,656 [INFO] DbMcusXml:78 - Set database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/mcu/ +2025-08-25 22:28:53,657 [INFO] ApiDb:274 - Set plugin database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/boardmanager/ +2025-08-25 22:28:53,657 [INFO] ApiDb:261 - Set plugin images path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/mcufinder/images/ +2025-08-25 22:28:53,658 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 22:28:53,658 [INFO] ApiDb:250 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 22:28:53,658 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 22:28:53,658 [INFO] DbMcusAds:125 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 22:28:53,658 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 22:28:53,658 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 22:28:53,658 [INFO] CrossReferenceDbSqlite:203 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/cs/ +2025-08-25 22:28:53,681 [INFO] ApplicationProperties:184 - Using Application install path: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-08-25 22:28:53,682 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ] +2025-08-25 22:28:53,684 [INFO] PluginManage:310 - Check plugin analytics +2025-08-25 22:28:53,904 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses: +2025-08-25 22:28:53,904 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses: +2025-08-25 22:28:53,904 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: +2025-08-25 22:28:53,908 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1) +2025-08-25 22:28:53,908 [INFO] PluginManage:310 - Check plugin cadmodel +2025-08-25 22:28:53,911 [INFO] CADModel:105 - Init CAD model plugin +2025-08-25 22:28:53,912 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5) +2025-08-25 22:28:53,912 [INFO] PluginManage:310 - Check plugin clock +2025-08-25 22:28:53,918 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2) +2025-08-25 22:28:53,919 [INFO] PluginManage:310 - Check plugin ddr +2025-08-25 22:28:53,920 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6) +2025-08-25 22:28:53,921 [INFO] PluginManage:310 - Check plugin filemanager +2025-08-25 22:28:54,047 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10) +2025-08-25 22:28:54,047 [INFO] PluginManage:310 - Check plugin ipmanager +2025-08-25 22:28:54,053 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5) +2025-08-25 22:28:54,053 [INFO] PluginManage:310 - Check plugin lpbam +2025-08-25 22:28:54,060 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0) +2025-08-25 22:28:54,060 [INFO] PluginManage:310 - Check plugin memorymap +2025-08-25 22:28:54,071 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4) +2025-08-25 22:28:54,071 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration +2025-08-25 22:28:54,077 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1) +2025-08-25 22:28:54,078 [INFO] PluginManage:310 - Check plugin pinoutconfig +2025-08-25 22:28:54,163 [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-08-25 22:28:54,309 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0) +2025-08-25 22:28:54,309 [INFO] PluginManage:310 - Check plugin power +2025-08-25 22:28:54,316 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4) +2025-08-25 22:28:54,316 [INFO] PluginManage:310 - Check plugin projectmanager +2025-08-25 22:28:54,329 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4) +2025-08-25 22:28:54,330 [INFO] PluginManage:310 - Check plugin rif +2025-08-25 22:28:54,339 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3) +2025-08-25 22:28:54,339 [INFO] PluginManage:310 - Check plugin thirdparty +2025-08-25 22:28:54,459 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check] +2025-08-25 22:28:54,459 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check] +2025-08-25 22:28:54,459 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15] +2025-08-25 22:28:54,460 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1) +2025-08-25 22:28:54,460 [INFO] PluginManage:310 - Check plugin tools +2025-08-25 22:28:54,463 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7) +2025-08-25 22:28:54,463 [INFO] PluginManage:310 - Check plugin tutovideos +2025-08-25 22:28:54,645 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1) +2025-08-25 22:28:54,645 [INFO] PluginManage:310 - Check plugin updater +2025-08-25 22:28:54,663 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12) +2025-08-25 22:28:54,663 [INFO] PluginManage:310 - Check plugin userauth +2025-08-25 22:28:54,667 [INFO] UserAuth:118 - Init User Auth plugin +2025-08-25 22:28:54,668 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14) +2025-08-25 22:28:54,668 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18] +2025-08-25 22:28:54,869 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-08-25 22:28:54,943 [INFO] CADModel:165 - CPN selected for project level +2025-08-25 22:28:54,943 [INFO] CADModel:114 - Register for checkConnection events +2025-08-25 22:28:54,958 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:54,959 [INFO] PluginManager:220 - loadIPPluginJar : add adc +2025-08-25 22:28:54,962 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:54,962 [INFO] PluginManager:220 - loadIPPluginJar : add aes +2025-08-25 22:28:54,964 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:54,964 [INFO] PluginManager:220 - loadIPPluginJar : add can +2025-08-25 22:28:54,966 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:54,966 [INFO] PluginManager:220 - loadIPPluginJar : add comp +2025-08-25 22:28:54,969 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:54,969 [INFO] PluginManager:220 - loadIPPluginJar : add cryp +2025-08-25 22:28:54,972 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:54,972 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy +2025-08-25 22:28:54,975 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:54,975 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm +2025-08-25 22:28:54,981 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:54,981 [INFO] PluginManager:220 - loadIPPluginJar : add dma +2025-08-25 22:28:54,983 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:54,983 [INFO] PluginManager:220 - loadIPPluginJar : add dma3 +2025-08-25 22:28:54,985 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:54,986 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager +2025-08-25 22:28:54,987 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:54,987 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs +2025-08-25 22:28:54,990 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:54,990 [INFO] PluginManager:220 - loadIPPluginJar : add fmc +2025-08-25 22:28:54,994 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:54,995 [INFO] PluginManager:220 - loadIPPluginJar : add freertos +2025-08-25 22:28:54,996 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:54,996 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin +2025-08-25 22:28:54,997 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:54,998 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu +2025-08-25 22:28:55,002 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,002 [INFO] PluginManager:220 - loadIPPluginJar : add gic +2025-08-25 22:28:55,005 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,005 [INFO] PluginManager:220 - loadIPPluginJar : add gpio +2025-08-25 22:28:55,006 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,008 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc +2025-08-25 22:28:55,010 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,010 [INFO] PluginManager:220 - loadIPPluginJar : add hash +2025-08-25 22:28:55,012 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,012 [INFO] PluginManager:220 - loadIPPluginJar : add i2c +2025-08-25 22:28:55,014 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,015 [INFO] PluginManager:220 - loadIPPluginJar : add i2s +2025-08-25 22:28:55,017 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,017 [INFO] PluginManager:220 - loadIPPluginJar : add i3c +2025-08-25 22:28:55,021 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,021 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr +2025-08-25 22:28:55,027 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,027 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist +2025-08-25 22:28:55,031 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,031 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan +2025-08-25 22:28:55,032 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,032 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc +2025-08-25 22:28:55,038 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,038 [INFO] PluginManager:220 - loadIPPluginJar : add mdma +2025-08-25 22:28:55,041 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,041 [INFO] PluginManager:220 - loadIPPluginJar : add nvic +2025-08-25 22:28:55,043 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,043 [INFO] PluginManager:220 - loadIPPluginJar : add opamp +2025-08-25 22:28:55,047 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,047 [INFO] PluginManager:220 - loadIPPluginJar : add openamp +2025-08-25 22:28:55,049 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,049 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm +2025-08-25 22:28:55,054 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,058 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings +2025-08-25 22:28:55,059 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,059 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi +2025-08-25 22:28:55,061 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,062 [INFO] PluginManager:220 - loadIPPluginJar : add radio +2025-08-25 22:28:55,065 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,065 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility +2025-08-25 22:28:55,068 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,068 [INFO] PluginManager:220 - loadIPPluginJar : add sai +2025-08-25 22:28:55,070 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,070 [INFO] PluginManager:220 - loadIPPluginJar : add spi +2025-08-25 22:28:55,076 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,076 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan +2025-08-25 22:28:55,077 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,077 [INFO] PluginManager:220 - loadIPPluginJar : add tim +2025-08-25 22:28:55,080 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,081 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing +2025-08-25 22:28:55,081 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,082 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb +2025-08-25 22:28:55,083 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,083 [INFO] PluginManager:220 - loadIPPluginJar : add ts +2025-08-25 22:28:55,085 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,085 [INFO] PluginManager:220 - loadIPPluginJar : add tsc +2025-08-25 22:28:55,088 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,088 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd +2025-08-25 22:28:55,089 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,089 [INFO] PluginManager:220 - loadIPPluginJar : add usart +2025-08-25 22:28:55,092 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:28:55,092 [INFO] PluginManager:220 - loadIPPluginJar : add usbx +2025-08-25 22:28:55,220 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 22:28:55,248 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-08-25 22:28:55,257 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-08-25 22:28:55,266 [INFO] CADModel:165 - CPN selected for project level +2025-08-25 22:28:55,266 [INFO] CADModel:114 - Register for checkConnection events +2025-08-25 22:28:55,266 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 22:28:55,266 [ERROR] CADModel:125 - Updater not yet initialized, retry later +2025-08-25 22:28:55,404 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 22:28:55,406 [INFO] CADModel:165 - CPN selected for project level +2025-08-25 22:28:55,406 [INFO] CADModel:114 - Register for checkConnection events +2025-08-25 22:28:55,406 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 22:28:55,406 [ERROR] CADModel:125 - Updater not yet initialized, retry later +2025-08-25 22:28:55,409 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 22:28:55,503 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 22:28:55,507 [INFO] DbMcusAds:53 - JSON generation date=Thu Sep 30 08:55:09 CEST 2021 (1632984909247) +2025-08-25 22:28:55,507 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 22:28:55,537 [WARN] DetailPanel:346 - Failed to get advertising image, set to default +2025-08-25 22:28:55,616 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 22:28:55,617 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 22:28:55,617 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 22:28:55,618 [WARN] DetailPanel:346 - Failed to get advertising image, set to default +2025-08-25 22:28:55,618 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 22:28:55,660 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set. +2025-08-25 22:28:55,664 [INFO] Updater:1134 - Updater Version found : 6.15.0 +2025-08-25 22:28:55,681 [INFO] ApplicationProperties:184 - Using Application install path: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-08-25 22:28:57,261 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] Aug 25, 2025 10:28:57 PM java.util.prefs.WindowsPreferences +2025-08-25 22:28:57,262 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0xffffffff80000002. Windows RegCreateKeyEx(...) returned error code 5. +2025-08-25 22:28:57,262 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] +2025-08-25 22:28:57,460 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [2/15] +2025-08-25 22:28:57,536 [INFO] MainUpdater:2872 - connection check result : 10 +2025-08-25 22:28:57,537 [INFO] MainUpdater:289 - Updater Check For Update Now. +2025-08-25 22:28:57,537 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-08-25 22:28:57,545 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated) +2025-08-25 22:28:57,545 [INFO] UserAuth:171 - activating auth plugin +2025-08-25 22:28:57,547 [INFO] UserAuth:487 - Internet connection configuration mode: 1 +2025-08-25 22:28:57,571 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder +2025-08-25 22:28:57,708 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread +2025-08-25 22:28:58,223 [INFO] WebApp:169 - Instantiating new browser for Auth +2025-08-25 22:28:58,910 [INFO] WebApp:463 - Apply proxy settings +2025-08-25 22:28:58,910 [INFO] WebApp:548 - Chromium requires no authentication +2025-08-25 22:28:58,916 [INFO] WebApp:491 - Direct internet connection detected +2025-08-25 22:28:58,935 [INFO] WebApp:900 - Register for checkConnection events +2025-08-25 22:28:58,935 [INFO] WebApp:463 - Apply proxy settings +2025-08-25 22:28:58,935 [INFO] WebApp:548 - Chromium requires no authentication +2025-08-25 22:28:58,936 [INFO] WebApp:491 - Direct internet connection detected +2025-08-25 22:28:59,096 [INFO] WebApp:225 - Starting web application +2025-08-25 22:28:59,096 [INFO] WebApp:593 - Web application path used C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\db\plugins\mcufinder\reactClient1\index.html +2025-08-25 22:28:59,100 [INFO] WebApp:191 - Connection restablished +2025-08-25 22:29:00,684 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENVWB1.1.4.0 +2025-08-25 22:29:00,692 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-ASTRA1.2.0.2 +2025-08-25 22:29:00,706 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SMBUS.2.1.0 +2025-08-25 22:29:00,711 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST60.1.0.0 +2025-08-25 22:29:00,735 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F7.1.1.0 +2025-08-25 22:29:00,746 [WARN] PackLoader:240 - Cannot read IP mode file for WES.I-CUBE-Cesium.1.4.0 +2025-08-25 22:29:00,768 [WARN] PackLoader:240 - Cannot read IP mode file for Infineon.AIROC-Wi-Fi-Bluetooth-STM32.1.7.1 +2025-08-25 22:29:00,795 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7.3.4.0 +2025-08-25 22:29:00,804 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DISPLAY.3.0.0 +2025-08-25 22:29:00,813 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC10.1.0.0 +2025-08-25 22:29:00,819 [WARN] PackLoader:240 - Cannot read IP mode file for emotas.I-CUBE-CANOPEN.1.3.0 +2025-08-25 22:29:00,825 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STBOX1.2.1.0 +2025-08-25 22:29:00,830 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-SMARTAG2.1.2.0 +2025-08-25 22:29:00,834 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-FLIGHT1.5.1.0 +2025-08-25 22:29:00,841 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-08-25 22:29:00,842 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-08-25 22:29:00,843 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-08-25 22:29:00,844 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-08-25 22:29:00,845 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] 1 : Invalid condition id : UX_CORESTACK_Condition cause : null +2025-08-25 22:29:00,848 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WL.2.0.0 +2025-08-25 22:29:00,853 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-MOTENV1.5.0.0 +2025-08-25 22:29:00,858 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE2.3.3.0 +2025-08-25 22:29:00,867 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC9.1.0.0 +2025-08-25 22:29:00,872 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSL.5.8.2 +2025-08-25 22:29:00,876 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLE1.7.1.0 +2025-08-25 22:29:00,880 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfMQTT.1.19.2 +2025-08-25 22:29:00,885 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-EEPRMA1.5.2.0 +2025-08-25 22:29:00,904 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G0.1.1.0 +2025-08-25 22:29:00,911 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SAFEA1.1.2.2 +2025-08-25 22:29:00,915 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC4.3.0.0 +2025-08-25 22:29:00,922 [WARN] PackLoader:240 - Cannot read IP mode file for EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1 +2025-08-25 22:29:00,927 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-WB05N.2.0.0 +2025-08-25 22:29:00,930 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfTPM.3.8.0 +2025-08-25 22:29:00,935 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TCPP.4.2.0 +2025-08-25 22:29:00,941 [WARN] PackLoader:240 - Cannot read IP mode file for RealThread.X-CUBE-RT-Thread_Nano.4.1.1 +2025-08-25 22:29:00,944 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-ATR-SIGFOX1.3.2.0 +2025-08-25 22:29:00,949 [WARN] PackLoader:240 - Cannot read IP mode file for ITTIA_DB.I-CUBE-ITTIADB.8.9.0 +2025-08-25 22:29:00,955 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ST67W61.1.0.0 +2025-08-25 22:29:00,959 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AI.10.2.0 +2025-08-25 22:29:00,982 [WARN] PackLoader:240 - Cannot read IP mode file for SEGGER.I-CUBE-embOS.1.3.1 +2025-08-25 22:29:01,016 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0 +2025-08-25 22:29:01,058 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-MEMS1.11.3.0 +2025-08-25 22:29:01,177 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-PM33A1.1.0.0 +2025-08-25 22:29:01,190 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-F4.1.1.0 +2025-08-25 22:29:01,195 [WARN] PackLoader:240 - Cannot read IP mode file for Avnet-IotConnect.X-CUBE-IoTC-DA16k-PMOD.1.0.0 +2025-08-25 22:29:01,199 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ISPU.2.1.0 +2025-08-25 22:29:01,210 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC12.1.0.0 +2025-08-25 22:29:01,226 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L5.2.0.0 +2025-08-25 22:29:01,234 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC6.3.1.0 +2025-08-25 22:29:01,240 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-FREERTOS.1.3.1 +2025-08-25 22:29:01,245 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.FP-SNS-STAIOTCFT.1.0.0 +2025-08-25 22:29:01,249 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-DPower.1.3.0 +2025-08-25 22:29:01,266 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-08-25 22:29:01,266 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-L4.2.0.0 +2025-08-25 22:29:01,267 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-08-25 22:29:01,267 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-08-25 22:29:01,268 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : LAN8742 Phy interface Condition cause : null +2025-08-25 22:29:01,274 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SFXS2LP1.4.0.0 +2025-08-25 22:29:01,283 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-BLEMGR.4.1.0 +2025-08-25 22:29:01,366 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-08-25 22:29:01,366 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-08-25 22:29:01,368 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-WB.2.0.0 +2025-08-25 22:29:01,369 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-08-25 22:29:01,369 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-08-25 22:29:01,369 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-08-25 22:29:01,370 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-08-25 22:29:01,370 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : UX DEVICE CLASS RTOS Condition cause : null +2025-08-25 22:29:01,374 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-GNSS1.7.0.1 +2025-08-25 22:29:01,379 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOUCHGFX.4.25.0 +2025-08-25 22:29:01,383 [WARN] ConditionMgr:438 - getConditionDescription Invalid condition id : Cortex-A Device cause : null +2025-08-25 22:29:01,394 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-08-25 22:29:01,394 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-08-25 22:29:01,394 [WARN] ConditionMgr:1044 - genDependencies : Invalid condition id : Cortex-A Device cause : null +2025-08-25 22:29:01,403 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-SUBG2.5.0.0 +2025-08-25 22:29:01,423 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-H7RS.1.1.0 +2025-08-25 22:29:01,428 [WARN] PackLoader:240 - Cannot read IP mode file for Cesanta.I-CUBE-Mongoose.7.13.0 +2025-08-25 22:29:01,441 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-AZRTOS-G4.2.0.0 +2025-08-25 22:29:01,445 [WARN] PackLoader:240 - Cannot read IP mode file for wolfSSL.I-CUBE-wolfSSH.1.4.20 +2025-08-25 22:29:01,448 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-NFC7.2.0.0 +2025-08-25 22:29:01,460 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-IPS.3.1.0 +2025-08-25 22:29:01,467 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-ALS.1.0.2 +2025-08-25 22:29:01,472 [WARN] PackLoader:240 - Cannot read IP mode file for portGmbH.I-Cube-SoM-uGOAL.1.1.0 +2025-08-25 22:29:01,484 [WARN] PackLoader:240 - Cannot read IP mode file for STMicroelectronics.X-CUBE-TOF1.3.4.3 +2025-08-25 22:29:01,491 [INFO] ThirdParty:978 - Integrity check success = true +2025-08-25 22:29:01,491 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check] +2025-08-25 22:29:01,491 [INFO] IntegrityCheckThread:103 - End integrity checks thread +2025-08-25 22:29:11,416 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated) +2025-08-25 22:29:11,421 [INFO] MainUpdater:2872 - connection check result : 10 +2025-08-25 22:29:11,421 [INFO] MainUpdater:2872 - connection check result : 10 +2025-08-25 22:29:11,454 [INFO] MicroXplorer:468 - Change Database Path : +2025-08-25 22:29:11,455 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-08-25 22:29:11,467 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project] +2025-08-25 22:29:11,467 [INFO] ThirdParty:873 - entering critical section [close project] +2025-08-25 22:29:11,468 [INFO] ThirdParty:883 - exiting critical section [close project] +2025-08-25 22:29:11,472 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-08-25 22:29:11,473 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 176042152 Bytes (321912832) +2025-08-25 22:29:11,474 [INFO] MicroXplorer:468 - Change Database Path : +2025-08-25 22:29:11,474 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-08-25 22:29:11,474 [INFO] OpenFileManager:355 - Change cursor +2025-08-25 22:29:11,501 [INFO] Mcu:2029 - Initializing MCU STM32F103C(8-B)Tx STM32F103C8Tx STM32F103C8T6 +2025-08-25 22:29:12,269 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden +2025-08-25 22:29:12,505 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin29 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU +2025-08-25 22:29:12,565 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS +2025-08-25 22:29:12,566 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS +2025-08-25 22:29:12,566 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS +2025-08-25 22:29:12,566 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS +2025-08-25 22:29:12,566 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0: +2025-08-25 22:29:12,584 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,584 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,584 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,584 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,584 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,584 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,584 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,584 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,584 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,584 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,585 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,586 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,586 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,586 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,586 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,586 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,586 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:29:12,586 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI +2025-08-25 22:29:12,715 [INFO] ThirdPartyModel:298 - Start build external matchings +2025-08-25 22:29:13,108 [INFO] ThirdPartyModel:316 - End build external matchings +2025-08-25 22:29:13,121 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName) +2025-08-25 22:29:13,122 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Parameter (MCOFreq_Value) has invalid value (72000000) +2025-08-25 22:29:13,379 [INFO] ApiDb:581 - Connected to CubeFinder SQLite database (C:\Users\agone\.stmcufinder\plugins\mcufinder\mcu\cube-finder-db.db) +2025-08-25 22:29:13,457 [INFO] ApiDb:668 - CubeFinder database Data Model version=2.1 +2025-08-25 22:29:13,458 [INFO] ApiDb:669 - CubeFinder database Configuration version=3.0.39 +2025-08-25 22:29:13,458 [INFO] ApiDb:670 - CubeFinder database generation date=2025-06-24 (1750757100) +2025-08-25 22:29:13,458 [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.0.0, STM32Cube_FW_C0_V1.4.0, STM32Cube_FW_F4_V1.28.2, STM32Cube_FW_F7_V1.17.3, 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.3.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.0.0, X-CUBE-EEPRMA1_V5.1.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-SUBG2_V5.0.0, X-CUBE-TOF1_V3.4.3] +2025-08-25 22:29:13,517 [INFO] DbBoardsSqlite:226 - include board P-NUCLEO-WB55-NUCLEO as a kit item of type 'Nucleo-64' +2025-08-25 22:29:13,517 [INFO] DbBoardsSqlite:226 - include board P-NUCLEO-WB55-USBDONGLE as a kit item of type 'Nucleo USB Dongle' +2025-08-25 22:29:13,517 [INFO] DbBoardsSqlite:226 - include board STEVAL-IDP005V1 as a kit item of type 'Evaluation Board' +2025-08-25 22:29:13,518 [INFO] DbBoardsSqlite:226 - include board STEVAL-IDP005V2 as a kit item of type 'Evaluation Board' +2025-08-25 22:29:13,589 [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-08-25 22:29:13,871 [INFO] BoardInfo:889 - No configuration file found for board P-NUCLEO-WB55 +2025-08-25 22:29:13,873 [INFO] DbBoards:161 - Kit is not supported: P-NUCLEO-WB55 +2025-08-25 22:29:13,882 [INFO] BoardInfo:889 - No configuration file found for board STEVAL-BFA001V1B +2025-08-25 22:29:13,884 [INFO] DbBoards:161 - Kit is not supported: STEVAL-BFA001V1B +2025-08-25 22:29:13,885 [INFO] BoardInfo:889 - No configuration file found for board STEVAL-BFA001V2B +2025-08-25 22:29:13,887 [INFO] DbBoards:161 - Kit is not supported: STEVAL-BFA001V2B +2025-08-25 22:29:14,197 [INFO] DbBoards:168 - Found 212 boards, 209 are supported +2025-08-25 22:29:14,197 [INFO] DbBoards:169 - Found 212 boards, 43 of them is supported for Bsp +2025-08-25 22:29:14,201 [INFO] ApiDb:668 - CubeFinder database Data Model version=2.1 +2025-08-25 22:29:14,201 [INFO] ApiDb:669 - CubeFinder database Configuration version=3.0.39 +2025-08-25 22:29:14,201 [INFO] ApiDb:670 - CubeFinder database generation date=2025-06-24 (1750757100) +2025-08-25 22:29:14,201 [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.0.0, STM32Cube_FW_C0_V1.4.0, STM32Cube_FW_F4_V1.28.2, STM32Cube_FW_F7_V1.17.3, 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.3.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.0.0, X-CUBE-EEPRMA1_V5.1.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-SUBG2_V5.0.0, X-CUBE-TOF1_V3.4.3] +2025-08-25 22:29:16,249 [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-08-25 22:29:16,255 [INFO] DbMcus:218 - Found 4801 MCUs, 4801 are supported +2025-08-25 22:29:16,255 [INFO] ApiDb:414 - User favorites file not found: C:\Users\agone/.stm32cubeide/favorites.mcus.txt +2025-08-25 22:29:16,256 [INFO] DbMcus:224 - Set 0 / 0 favorites MCUs +2025-08-25 22:29:16,668 [INFO] ApiDb:414 - User favorites file not found: C:\Users\agone/.stm32cubeide/favorites.boards.txt +2025-08-25 22:29:16,668 [INFO] DbBoards:198 - Set 0 / 0 favorites Boards +2025-08-25 22:29:16,735 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 216300696 Bytes (321912832) +2025-08-25 22:29:16,858 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project] +2025-08-25 22:29:16,858 [INFO] ThirdParty:835 - entering critical section [change project] +2025-08-25 22:29:16,858 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0 +2025-08-25 22:29:16,858 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1 +2025-08-25 22:29:16,858 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0 +2025-08-25 22:29:16,858 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0 +2025-08-25 22:29:16,858 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0 +2025-08-25 22:29:16,858 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0 +2025-08-25 22:29:16,858 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0 +2025-08-25 22:29:16,858 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.2 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.1.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0 +2025-08-25 22:29:16,859 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.4.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :RealThread X-CUBE-RT-Thread_Nano 4.1.1 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1 +2025-08-25 22:29:16,860 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0 +2025-08-25 22:29:16,861 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0 +2025-08-25 22:29:16,862 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3 +2025-08-25 22:29:16,862 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0 +2025-08-25 22:29:16,862 [INFO] ThirdParty:841 - exiting critical section [change project] +2025-08-25 22:29:17,118 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-08-25 22:29:17,122 [INFO] PinOutPanel:1589 - setPackage(STM32F103C8Tx,LQFP48) +2025-08-25 22:29:17,574 [INFO] UtilMem:75 - Before build in PCC Used Memory: 191608224 Bytes (321912832) +2025-08-25 22:29:18,308 [INFO] UtilMem:75 - After build in PCC Used Memory: 254065424 Bytes (321912832) +2025-08-25 22:29:18,436 [INFO] ApiDbMcu:532 - Load IP Config File for USB_DEVICE +2025-08-25 22:29:18,464 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,464 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,464 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,464 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,464 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,465 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,465 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,465 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,465 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,465 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,465 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,465 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,465 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,465 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,466 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,466 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,466 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,466 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,466 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,466 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,466 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,467 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,467 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,467 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,467 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,467 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,468 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:29:18,673 [INFO] CADModel:165 - CPN selected for project levelSTM32F103C8T6 +2025-08-25 22:29:18,673 [INFO] CADModel:114 - Register for checkConnection events +2025-08-25 22:29:18,731 [INFO] OpenFileManager:386 - Restore cursor +2025-08-25 22:43:22,726 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] This download action requires prior login. To proceed, please use the 'login' command with your my.st.com account email and password. +2025-08-25 22:43:22,728 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] Run 'login ' for example 'login john.smith@st.com mypassword y'. +2025-08-25 22:43:22,731 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] If you do not have a my.st.com account, please visit https://st.com website to create one. +2025-08-25 22:45:23,460 [INFO] MainUpdater:2872 - connection check result : 10 +2025-08-25 22:45:23,460 [INFO] MainUpdater:2872 - connection check result : 10 +2025-08-25 22:45:23,698 [INFO] MicroXplorer:468 - Change Database Path : +2025-08-25 22:45:23,698 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-08-25 22:45:23,718 [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-08-25 22:45:23,730 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project] +2025-08-25 22:45:23,730 [INFO] ThirdParty:873 - entering critical section [close project] +2025-08-25 22:45:23,730 [INFO] ThirdParty:883 - exiting critical section [close project] +2025-08-25 22:45:23,731 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-08-25 22:45:23,737 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 462784464 Bytes (953155584) +2025-08-25 22:45:23,738 [INFO] MicroXplorer:468 - Change Database Path : +2025-08-25 22:45:23,738 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-08-25 22:45:23,738 [INFO] OpenFileManager:355 - Change cursor +2025-08-25 22:45:23,750 [INFO] Mcu:2029 - Initializing MCU STM32F103C(8-B)Tx STM32F103C8Tx STM32F103C8T6 +2025-08-25 22:45:24,209 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden +2025-08-25 22:45:24,358 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin26 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU +2025-08-25 22:45:24,384 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS +2025-08-25 22:45:24,384 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS +2025-08-25 22:45:24,384 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS +2025-08-25 22:45:24,384 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS +2025-08-25 22:45:24,384 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0: +2025-08-25 22:45:24,408 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,409 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:45:24,410 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI +2025-08-25 22:45:24,597 [INFO] ThirdPartyModel:298 - Start build external matchings +2025-08-25 22:45:24,926 [INFO] ThirdPartyModel:316 - End build external matchings +2025-08-25 22:45:24,937 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName) +2025-08-25 22:45:24,937 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Parameter (MCOFreq_Value) has invalid value (72000000) +2025-08-25 22:45:25,137 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 339205696 Bytes (953155584) +2025-08-25 22:45:25,181 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project] +2025-08-25 22:45:25,181 [INFO] ThirdParty:835 - entering critical section [change project] +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.2 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0 +2025-08-25 22:45:25,182 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.1.0 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.4.0 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0 +2025-08-25 22:45:25,183 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :RealThread X-CUBE-RT-Thread_Nano 4.1.1 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0 +2025-08-25 22:45:25,184 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0 +2025-08-25 22:45:25,185 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0 +2025-08-25 22:45:25,185 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0 +2025-08-25 22:45:25,185 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1 +2025-08-25 22:45:25,185 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0 +2025-08-25 22:45:25,185 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0 +2025-08-25 22:45:25,185 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0 +2025-08-25 22:45:25,185 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0 +2025-08-25 22:45:25,185 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0 +2025-08-25 22:45:25,185 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0 +2025-08-25 22:45:25,185 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2 +2025-08-25 22:45:25,185 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2 +2025-08-25 22:45:25,185 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0 +2025-08-25 22:45:25,185 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0 +2025-08-25 22:45:25,185 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3 +2025-08-25 22:45:25,185 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0 +2025-08-25 22:45:25,185 [INFO] ThirdParty:841 - exiting critical section [change project] +2025-08-25 22:45:25,271 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-08-25 22:45:25,272 [INFO] PinOutPanel:1589 - setPackage(STM32F103C8Tx,LQFP48) +2025-08-25 22:45:25,581 [INFO] UtilMem:75 - Before build in PCC Used Memory: 283533912 Bytes (822083584) +2025-08-25 22:45:25,770 [INFO] UtilMem:75 - After build in PCC Used Memory: 328193600 Bytes (822083584) +2025-08-25 22:45:25,778 [INFO] ApiDbMcu:532 - Load IP Config File for USB_DEVICE +2025-08-25 22:45:25,792 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,792 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,792 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,793 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,793 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,793 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,793 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,793 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,793 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,793 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,793 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,794 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,794 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,794 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,794 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,794 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,794 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,794 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,795 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,795 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,795 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,795 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,795 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,795 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,795 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,796 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,796 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:45:25,828 [INFO] CADModel:165 - CPN selected for project levelSTM32F103C8T6 +2025-08-25 22:45:25,828 [INFO] CADModel:114 - Register for checkConnection events +2025-08-25 22:45:25,887 [INFO] OpenFileManager:386 - Restore cursor +2025-08-25 22:52:03,317 [INFO] MainUpdater:2872 - connection check result : 10 +2025-08-25 22:52:03,317 [INFO] MainUpdater:2872 - connection check result : 10 +2025-08-25 22:52:03,545 [INFO] MicroXplorer:468 - Change Database Path : +2025-08-25 22:52:03,545 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-08-25 22:52:03,559 [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-08-25 22:52:03,561 [WARN] ThirdParty:871 - waiting for thirdparty lock release [close project] +2025-08-25 22:52:03,561 [INFO] ThirdParty:873 - entering critical section [close project] +2025-08-25 22:52:03,561 [INFO] ThirdParty:883 - exiting critical section [close project] +2025-08-25 22:52:03,562 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-08-25 22:52:03,565 [INFO] UtilMem:75 - Begin LoadConfig() Used Memory: 550479184 Bytes (822083584) +2025-08-25 22:52:03,566 [INFO] MicroXplorer:468 - Change Database Path : +2025-08-25 22:52:03,566 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-08-25 22:52:03,566 [INFO] OpenFileManager:355 - Change cursor +2025-08-25 22:52:03,571 [INFO] Mcu:2029 - Initializing MCU STM32F103C(8-B)Tx STM32F103C8Tx STM32F103C8T6 +2025-08-25 22:52:03,987 [INFO] Context:786 - Trying to add GPIOservice into a context which must be forbidden +2025-08-25 22:52:04,116 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) Pin29 (VP_RIF_VS_RIF1) cannot be retrieved for this MCU +2025-08-25 22:52:04,128 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS, mode=CMSIS_V1, owner=FREERTOS +2025-08-25 22:52:04,129 [INFO] RtosManager:558 - Registered RTOS mode: class=CMSIS, group=RTOS2, mode=CMSIS_V2, owner=FREERTOS +2025-08-25 22:52:04,129 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V1, owner=FREERTOS +2025-08-25 22:52:04,129 [INFO] RtosManager:558 - Registered RTOS mode: class=RTOS, group=Core, mode=CMSIS_V2, owner=FREERTOS +2025-08-25 22:52:04,129 [WARN] ModelIntegratedComponent:184 - Missing modes for component STMicroelectronics:FreeRTOS:0.0.1:STMicroelectronics:RTOS:FreeRTOS:Core:::10.2.0: +2025-08-25 22:52:04,134 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,134 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,134 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,134 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,134 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,134 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,135 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,136 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,136 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,136 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,136 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,136 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,136 [WARN] ModelIntegratedComponent:63 - No mode defined for component null +2025-08-25 22:52:04,136 [WARN] ModelPack:524 - Component already loaded: STMicroelectronics:HAL Drivers:0.0.0:STMicroelectronics:Device:STMicro_Driver:XSPI:HAL::0.0.1:HAL_XSPI +2025-08-25 22:52:04,199 [INFO] ThirdPartyModel:298 - Start build external matchings +2025-08-25 22:52:04,519 [INFO] ThirdPartyModel:316 - End build external matchings +2025-08-25 22:52:04,528 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Invalid parameter (FamilyName) +2025-08-25 22:52:04,528 [INFO] ImportTextPane:234 - (OptionalMessage_ERROR) IP (RCC) : Parameter (MCOFreq_Value) has invalid value (72000000) +2025-08-25 22:52:04,718 [INFO] UtilMem:75 - End LoadConfig() Used Memory: 566227736 Bytes (822083584) +2025-08-25 22:52:04,767 [WARN] ThirdParty:833 - waiting for thirdparty lock release [change project] +2025-08-25 22:52:04,767 [INFO] ThirdParty:835 - entering critical section [change project] +2025-08-25 22:52:04,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-PM33A1 1.0.0 +2025-08-25 22:52:04,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USBPD 4.1 +2025-08-25 22:52:04,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC9 1.0.0 +2025-08-25 22:52:04,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 2.0.0 +2025-08-25 22:52:04,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENVWB1 1.4.0 +2025-08-25 22:52:04,767 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F4 1.1.0 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics LIBJPEG 8.0.0 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-ASTRA1 2.0.2 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSL 5.8.2 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE1 7.1.0 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Avnet-IotConnect X-CUBE-IoTC-DA16k-PMOD 1.0.0 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SMBUS 2.1.0 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfMQTT 1.19.2 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 3.0.0 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ISPU 2.1.0 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-EEPRMA1 5.2.0 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLEMGR 4.1.0 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WB 2.0.0 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST60 1.0.0 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-GNSS1 7.0.1 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC12 1.0.0 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-F7 1.1.0 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L5 2.0.0 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOUCHGFX 4.25.0 +2025-08-25 22:52:04,768 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 2.0.0 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC6 3.1.0 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :quantropi X-CUBE-qispace-sdk-base 2.1.0 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FreeRTOS 0.0.1 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G0 1.1.0 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SAFEA1 1.2.2 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC4 3.0.0 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SUBG2 5.0.0 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7RS 1.1.0 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics STM32_WPAN 1.0.0 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :EmbeddedOffice I-CUBE-FS-RTOS 1.0.1 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.0.3 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :WES I-CUBE-Cesium 1.4.0 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Cesanta I-CUBE-Mongoose 7.13.0 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_HOST 1.0.0 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :Infineon AIROC-Wi-Fi-Bluetooth-STM32 1.7.1 +2025-08-25 22:52:04,769 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-G4 2.0.0 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-WB05N 2.0.0 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.1.0 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.3.0 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfTPM 3.8.0 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-H7 3.4.0 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DISPLAY 3.0.0 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :wolfSSL I-CUBE-wolfSSH 1.4.20 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC7 2.0.0 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TCPP 4.2.0 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :RealThread X-CUBE-RT-Thread_Nano 4.1.1 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-ATR-SIGFOX1 3.2.0 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-NFC10 1.0.0 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-FREERTOS 1.3.1 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics HAL Drivers 0.0.0 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.16.2 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-IPS 3.1.0 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALS 1.0.2 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :emotas I-CUBE-CANOPEN 1.3.0 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics MBEDTLS 2.14.1 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :ITTIA_DB I-CUBE-ITTIADB 8.9.0 +2025-08-25 22:52:04,770 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :portGmbH I-Cube-SoM-uGOAL 1.1.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ST67W61 1.0.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STBOX1 2.1.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AI 10.2.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-STAIOTCFT 1.0.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 1.0.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-SMARTAG2 1.2.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-FLIGHT1 5.1.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-WL 2.0.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :SEGGER I-CUBE-embOS 1.3.1 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-ALGOBUILD 1.4.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-DPower 1.3.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-MEMS1 11.3.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics FP-SNS-MOTENV1 5.0.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics USB_DEVICE 1.0.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-AZRTOS-L4 2.0.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics ThreadX 0.0.2 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics lwIP 2.1.2 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-SFXS2LP1 4.0.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-BLE2 3.3.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics X-CUBE-TOF1 3.4.3 +2025-08-25 22:52:04,771 [INFO] ThirdParty:1030 - CMSIS Pack Vendor :STMicroelectronics PDM2PCM 3.2.0 +2025-08-25 22:52:04,771 [INFO] ThirdParty:841 - exiting critical section [change project] +2025-08-25 22:52:04,856 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-08-25 22:52:04,857 [INFO] PinOutPanel:1589 - setPackage(STM32F103C8Tx,LQFP48) +2025-08-25 22:52:04,990 [INFO] UtilMem:75 - Before build in PCC Used Memory: 266651504 Bytes (822083584) +2025-08-25 22:52:05,170 [INFO] UtilMem:75 - After build in PCC Used Memory: 307543320 Bytes (822083584) +2025-08-25 22:52:05,176 [INFO] ApiDbMcu:532 - Load IP Config File for USB_DEVICE +2025-08-25 22:52:05,190 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,190 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,190 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,190 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,190 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,190 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,190 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,190 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,191 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,191 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,191 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,191 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,191 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,192 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,192 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,192 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,192 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,192 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,192 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,192 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,193 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,193 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,193 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,193 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,193 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,193 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,194 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 22:52:05,224 [INFO] CADModel:165 - CPN selected for project levelSTM32F103C8T6 +2025-08-25 22:52:05,224 [INFO] CADModel:114 - Register for checkConnection events +2025-08-25 22:52:05,283 [INFO] OpenFileManager:386 - Restore cursor +2025-08-25 23:02:44,683 [INFO] Activator:176 - + + +2025-08-25 23:02:44,684 [INFO] Activator:177 - !SESSION log4j initialized +2025-08-25 23:02:50,323 [INFO] LogOutputStream:77 - [STDOUT_REDIRECT] +2025-08-25 23:02:51,552 [INFO] ApplicationProperties:184 - Using Application install path: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-08-25 23:02:51,569 [INFO] DbMcusXml:78 - Set database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/mcu/ +2025-08-25 23:02:51,569 [INFO] ApiDb:274 - Set plugin database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/boardmanager/ +2025-08-25 23:02:51,570 [WARN] ApiDb:259 - Overriding images path with different value: => C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/mcufinder/images/ +2025-08-25 23:02:51,574 [INFO] ApiDb:250 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 23:02:51,576 [INFO] DbMcusAds:125 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 23:02:51,578 [INFO] CrossReferenceDbSqlite:203 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/cs/ +2025-08-25 23:02:51,695 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-08-25 23:02:51,776 [INFO] DbMcusXml:78 - Set database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/mcu/ +2025-08-25 23:02:51,776 [INFO] ApiDb:274 - Set plugin database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/boardmanager/ +2025-08-25 23:02:51,776 [INFO] ApiDb:261 - Set plugin images path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/mcufinder/images/ +2025-08-25 23:02:51,776 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 23:02:51,776 [INFO] ApiDb:250 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 23:02:51,777 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 23:02:51,777 [INFO] DbMcusAds:125 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 23:02:51,777 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 23:02:51,777 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 23:02:51,777 [INFO] CrossReferenceDbSqlite:203 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/cs/ +2025-08-25 23:02:51,846 [INFO] MainPanel:274 - HeapMemory: 268435456 +2025-08-25 23:02:51,940 [INFO] DbMcusXml:78 - Set database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/mcu/ +2025-08-25 23:02:51,940 [INFO] ApiDb:274 - Set plugin database path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/boardmanager/ +2025-08-25 23:02:51,940 [INFO] ApiDb:261 - Set plugin images path to: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\\db\/plugins/mcufinder/images/ +2025-08-25 23:02:51,941 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 23:02:51,941 [INFO] ApiDb:250 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 23:02:51,941 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 23:02:51,941 [INFO] DbMcusAds:125 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/ +2025-08-25 23:02:51,941 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 23:02:51,941 [WARN] DbFile:41 - Overriding database path with different value: C:\Users\agone\.stmcufinder\plugins\mcufinder/ => C:\Users\agone\.stmcufinder\plugins\mcufinder +2025-08-25 23:02:51,942 [INFO] CrossReferenceDbSqlite:203 - Set database path to: C:\Users\agone\.stmcufinder\plugins\mcufinder//mcu/cs/ +2025-08-25 23:02:51,963 [INFO] ApplicationProperties:184 - Using Application install path: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-08-25 23:02:51,965 [INFO] PluginManage:196 - Search for loadable plugins [exclusion list=, ] +2025-08-25 23:02:51,967 [INFO] PluginManage:310 - Check plugin analytics +2025-08-25 23:02:52,171 [INFO] AnalyticsPlugin:253 - Accepted Software Licenses: +2025-08-25 23:02:52,172 [INFO] AnalyticsPlugin:255 - Accepted CMSIS Pack Licenses: +2025-08-25 23:02:52,172 [INFO] AnalyticsPlugin:257 - Accepted Firmware Licenses: +2025-08-25 23:02:52,175 [INFO] PluginManage:359 - Loaded plugin analytics (category:tool,tabindex:-1) +2025-08-25 23:02:52,175 [INFO] PluginManage:310 - Check plugin cadmodel +2025-08-25 23:02:52,178 [INFO] CADModel:105 - Init CAD model plugin +2025-08-25 23:02:52,178 [INFO] PluginManage:359 - Loaded plugin cadmodel (category:power,tabindex:5) +2025-08-25 23:02:52,178 [INFO] PluginManage:310 - Check plugin clock +2025-08-25 23:02:52,186 [INFO] PluginManage:359 - Loaded plugin clock (category:base,tabindex:2) +2025-08-25 23:02:52,186 [INFO] PluginManage:310 - Check plugin ddr +2025-08-25 23:02:52,188 [INFO] PluginManage:359 - Loaded plugin ddr (category:tool,tabindex:6) +2025-08-25 23:02:52,188 [INFO] PluginManage:310 - Check plugin filemanager +2025-08-25 23:02:52,311 [INFO] PluginManage:359 - Loaded plugin filemanager (category:base,tabindex:10) +2025-08-25 23:02:52,311 [INFO] PluginManage:310 - Check plugin ipmanager +2025-08-25 23:02:52,318 [INFO] PluginManage:359 - Loaded plugin ipmanager (category:base,tabindex:5) +2025-08-25 23:02:52,318 [INFO] PluginManage:310 - Check plugin lpbam +2025-08-25 23:02:52,326 [INFO] PluginManage:359 - Loaded plugin lpbam (category:base,tabindex:0) +2025-08-25 23:02:52,326 [INFO] PluginManage:310 - Check plugin memorymap +2025-08-25 23:02:52,339 [INFO] PluginManage:359 - Loaded plugin memorymap (category:base,tabindex:4) +2025-08-25 23:02:52,340 [INFO] PluginManage:310 - Check plugin pinoutandconfiguration +2025-08-25 23:02:52,346 [INFO] PluginManage:359 - Loaded plugin pinoutandconfiguration (category:base,tabindex:1) +2025-08-25 23:02:52,346 [INFO] PluginManage:310 - Check plugin pinoutconfig +2025-08-25 23:02:52,425 [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-08-25 23:02:52,578 [INFO] PluginManage:359 - Loaded plugin pinoutconfig (category:base,tabindex:0) +2025-08-25 23:02:52,578 [INFO] PluginManage:310 - Check plugin power +2025-08-25 23:02:52,591 [INFO] PluginManage:359 - Loaded plugin power (category:power,tabindex:4) +2025-08-25 23:02:52,591 [INFO] PluginManage:310 - Check plugin projectmanager +2025-08-25 23:02:52,608 [INFO] PluginManage:359 - Loaded plugin projectmanager (category:projectmanager,tabindex:4) +2025-08-25 23:02:52,608 [INFO] PluginManage:310 - Check plugin rif +2025-08-25 23:02:52,618 [INFO] PluginManage:359 - Loaded plugin rif (category:base,tabindex:3) +2025-08-25 23:02:52,618 [INFO] PluginManage:310 - Check plugin thirdparty +2025-08-25 23:02:52,735 [INFO] PluginManage:359 - Loaded plugin thirdparty (category:base,tabindex:-1) +2025-08-25 23:02:52,735 [WARN] IntegrityCheckThread:84 - waiting for thirdparty lock release [integrity check] +2025-08-25 23:02:52,735 [INFO] PluginManage:310 - Check plugin tools +2025-08-25 23:02:52,735 [INFO] IntegrityCheckThread:86 - entering critical section [integrity check] +2025-08-25 23:02:52,735 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [1/15] +2025-08-25 23:02:52,738 [INFO] PluginManage:359 - Loaded plugin tools (category:base,tabindex:7) +2025-08-25 23:02:52,738 [INFO] PluginManage:310 - Check plugin tutovideos +2025-08-25 23:02:52,920 [INFO] PluginManage:359 - Loaded plugin tutovideos (category:base,tabindex:-1) +2025-08-25 23:02:52,920 [INFO] PluginManage:310 - Check plugin updater +2025-08-25 23:02:52,938 [INFO] PluginManage:359 - Loaded plugin updater (category:base,tabindex:12) +2025-08-25 23:02:52,938 [INFO] PluginManage:310 - Check plugin userauth +2025-08-25 23:02:52,943 [INFO] UserAuth:118 - Init User Auth plugin +2025-08-25 23:02:52,944 [INFO] PluginManage:359 - Loaded plugin userauth (category:base,tabindex:14) +2025-08-25 23:02:52,945 [INFO] PluginManage:283 - PluginManage : Loaded plugins [18] +2025-08-25 23:02:53,148 [INFO] PinOutPanel:1589 - setPackage(No Configuration,No Configuration) +2025-08-25 23:02:53,232 [INFO] CADModel:165 - CPN selected for project level +2025-08-25 23:02:53,232 [INFO] CADModel:114 - Register for checkConnection events +2025-08-25 23:02:53,249 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,249 [INFO] PluginManager:220 - loadIPPluginJar : add adc +2025-08-25 23:02:53,252 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,252 [INFO] PluginManager:220 - loadIPPluginJar : add aes +2025-08-25 23:02:53,254 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,255 [INFO] PluginManager:220 - loadIPPluginJar : add can +2025-08-25 23:02:53,256 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,256 [INFO] PluginManager:220 - loadIPPluginJar : add comp +2025-08-25 23:02:53,258 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,258 [INFO] PluginManager:220 - loadIPPluginJar : add cryp +2025-08-25 23:02:53,261 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,261 [INFO] PluginManager:220 - loadIPPluginJar : add ddr_ctrl_phy +2025-08-25 23:02:53,263 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,263 [INFO] PluginManager:220 - loadIPPluginJar : add dfsdm +2025-08-25 23:02:53,267 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,268 [INFO] PluginManager:220 - loadIPPluginJar : add dma +2025-08-25 23:02:53,270 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,270 [INFO] PluginManager:220 - loadIPPluginJar : add dma3 +2025-08-25 23:02:53,273 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,273 [INFO] PluginManager:220 - loadIPPluginJar : add extmemmanager +2025-08-25 23:02:53,274 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,274 [INFO] PluginManager:220 - loadIPPluginJar : add fatfs +2025-08-25 23:02:53,279 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,279 [INFO] PluginManager:220 - loadIPPluginJar : add fmc +2025-08-25 23:02:53,285 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,286 [INFO] PluginManager:220 - loadIPPluginJar : add freertos +2025-08-25 23:02:53,287 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,287 [INFO] PluginManager:220 - loadIPPluginJar : add genericplugin +2025-08-25 23:02:53,289 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,289 [INFO] PluginManager:220 - loadIPPluginJar : add gfxmmu +2025-08-25 23:02:53,293 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,293 [INFO] PluginManager:220 - loadIPPluginJar : add gic +2025-08-25 23:02:53,296 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,296 [INFO] PluginManager:220 - loadIPPluginJar : add gpio +2025-08-25 23:02:53,300 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,300 [INFO] PluginManager:220 - loadIPPluginJar : add gtzc +2025-08-25 23:02:53,302 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,302 [INFO] PluginManager:220 - loadIPPluginJar : add hash +2025-08-25 23:02:53,304 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,304 [INFO] PluginManager:220 - loadIPPluginJar : add i2c +2025-08-25 23:02:53,306 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,306 [INFO] PluginManager:220 - loadIPPluginJar : add i2s +2025-08-25 23:02:53,308 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,309 [INFO] PluginManager:220 - loadIPPluginJar : add i3c +2025-08-25 23:02:53,312 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,312 [INFO] PluginManager:220 - loadIPPluginJar : add ipddr +2025-08-25 23:02:53,318 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,318 [INFO] PluginManager:220 - loadIPPluginJar : add linkedlist +2025-08-25 23:02:53,321 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,321 [INFO] PluginManager:220 - loadIPPluginJar : add lorawan +2025-08-25 23:02:53,322 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,322 [INFO] PluginManager:220 - loadIPPluginJar : add ltdc +2025-08-25 23:02:53,326 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,327 [INFO] PluginManager:220 - loadIPPluginJar : add mdma +2025-08-25 23:02:53,330 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,330 [INFO] PluginManager:220 - loadIPPluginJar : add nvic +2025-08-25 23:02:53,333 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,333 [INFO] PluginManager:220 - loadIPPluginJar : add opamp +2025-08-25 23:02:53,336 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,336 [INFO] PluginManager:220 - loadIPPluginJar : add openamp +2025-08-25 23:02:53,338 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,339 [INFO] PluginManager:220 - loadIPPluginJar : add pdm2pcm +2025-08-25 23:02:53,344 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,346 [INFO] PluginManager:220 - loadIPPluginJar : add plateformsettings +2025-08-25 23:02:53,347 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,347 [INFO] PluginManager:220 - loadIPPluginJar : add quadspi +2025-08-25 23:02:53,349 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,350 [INFO] PluginManager:220 - loadIPPluginJar : add radio +2025-08-25 23:02:53,353 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,353 [INFO] PluginManager:220 - loadIPPluginJar : add resmgrutility +2025-08-25 23:02:53,357 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,357 [INFO] PluginManager:220 - loadIPPluginJar : add sai +2025-08-25 23:02:53,359 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,359 [INFO] PluginManager:220 - loadIPPluginJar : add spi +2025-08-25 23:02:53,364 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,364 [INFO] PluginManager:220 - loadIPPluginJar : add stm32_wpan +2025-08-25 23:02:53,366 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,366 [INFO] PluginManager:220 - loadIPPluginJar : add tim +2025-08-25 23:02:53,368 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,368 [INFO] PluginManager:220 - loadIPPluginJar : add touchsensing +2025-08-25 23:02:53,370 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,370 [INFO] PluginManager:220 - loadIPPluginJar : add tracer_emb +2025-08-25 23:02:53,372 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,372 [INFO] PluginManager:220 - loadIPPluginJar : add ts +2025-08-25 23:02:53,374 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,374 [INFO] PluginManager:220 - loadIPPluginJar : add tsc +2025-08-25 23:02:53,375 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,375 [INFO] PluginManager:220 - loadIPPluginJar : add ucpd +2025-08-25 23:02:53,377 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,377 [INFO] PluginManager:220 - loadIPPluginJar : add usart +2025-08-25 23:02:53,379 [INFO] IPUIPlugin:80 - create IPUIPlugin +2025-08-25 23:02:53,379 [INFO] PluginManager:220 - loadIPPluginJar : add usbx +2025-08-25 23:02:53,500 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 23:02:53,527 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-08-25 23:02:53,536 [INFO] RulesReader:64 - Compatibility file has been processed (317 Rules) +2025-08-25 23:02:53,544 [INFO] CADModel:165 - CPN selected for project level +2025-08-25 23:02:53,544 [INFO] CADModel:114 - Register for checkConnection events +2025-08-25 23:02:53,544 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 23:02:53,544 [ERROR] CADModel:125 - Updater not yet initialized, retry later +2025-08-25 23:02:53,680 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 23:02:53,682 [INFO] CADModel:165 - CPN selected for project level +2025-08-25 23:02:53,682 [INFO] CADModel:114 - Register for checkConnection events +2025-08-25 23:02:53,682 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 23:02:53,682 [ERROR] CADModel:125 - Updater not yet initialized, retry later +2025-08-25 23:02:53,685 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 23:02:53,778 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 23:02:53,782 [INFO] DbMcusAds:53 - JSON generation date=Thu Sep 30 08:55:09 CEST 2021 (1632984909247) +2025-08-25 23:02:53,782 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 23:02:53,815 [WARN] DetailPanel:346 - Failed to get advertising image, set to default +2025-08-25 23:02:53,910 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 23:02:53,912 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 23:02:53,912 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 23:02:53,912 [WARN] DetailPanel:346 - Failed to get advertising image, set to default +2025-08-25 23:02:53,913 [FATAL] Updater:351 - Updater called before beeing initialized +2025-08-25 23:02:53,978 [ERROR] Updater:1198 - MainUpdater not yet initialized. External WinMGr cannot be set. +2025-08-25 23:02:53,980 [INFO] Updater:1134 - Updater Version found : 6.15.0 +2025-08-25 23:02:53,995 [INFO] ApplicationProperties:184 - Using Application install path: C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659 +2025-08-25 23:02:55,571 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] Aug 25, 2025 11:02:55 PM java.util.prefs.WindowsPreferences +2025-08-25 23:02:55,572 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0xffffffff80000002. Windows RegCreateKeyEx(...) returned error code 5. +2025-08-25 23:02:55,573 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] +2025-08-25 23:02:55,737 [INFO] ThirdPartyUpdaterWithRetryManager:70 - Updater plugin not ready yet. [2/15] +2025-08-25 23:02:55,853 [INFO] MainUpdater:2872 - connection check result : 10 +2025-08-25 23:02:55,853 [INFO] MainUpdater:289 - Updater Check For Update Now. +2025-08-25 23:02:55,853 [INFO] MicroXplorer:498 - Change Database Version : DB.6.0.150 +2025-08-25 23:02:55,864 [INFO] McuFinderGlobals:63 - Set McuFinder mode to 2 (CubeIDE integrated) +2025-08-25 23:02:55,864 [INFO] UserAuth:171 - activating auth plugin +2025-08-25 23:02:55,867 [INFO] UserAuth:487 - Internet connection configuration mode: 1 +2025-08-25 23:02:55,889 [INFO] JxBrowserEngine:152 - Initiate JxBrowser Engine with user profile folder +2025-08-25 23:02:56,028 [INFO] CheckServerUpdateThread:120 - End of CheckServer Thread +2025-08-25 23:02:56,555 [INFO] WebApp:169 - Instantiating new browser for Auth +2025-08-25 23:02:57,230 [INFO] WebApp:463 - Apply proxy settings +2025-08-25 23:02:57,230 [INFO] WebApp:548 - Chromium requires no authentication +2025-08-25 23:02:57,237 [INFO] WebApp:491 - Direct internet connection detected +2025-08-25 23:02:57,254 [INFO] WebApp:900 - Register for checkConnection events +2025-08-25 23:02:57,254 [INFO] WebApp:463 - Apply proxy settings +2025-08-25 23:02:57,254 [INFO] WebApp:548 - Chromium requires no authentication +2025-08-25 23:02:57,255 [INFO] WebApp:491 - Direct internet connection detected +2025-08-25 23:02:57,427 [INFO] WebApp:191 - Connection restablished +2025-08-25 23:02:57,462 [INFO] WebApp:225 - Starting web application +2025-08-25 23:02:57,462 [INFO] WebApp:593 - Web application path used C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.common.mx_6.15.0.202507011659\db\plugins\mcufinder\reactClient1\index.html +2025-08-25 23:02:58,710 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] diff --git a/workspace/.metadata/.log b/workspace/.metadata/.log index cb43f9d..556d03c 100644 --- a/workspace/.metadata/.log +++ b/workspace/.metadata/.log @@ -2269,3 +2269,1309 @@ Reason: (18) Could not verify ST device! Abort connection. !SUBENTRY 2 com.st.stm32cube.ide.mcu.toolchain 4 0 2025-08-16 21:28:45.616 !MESSAGE Error in initializing ST-LINK device. Reason: (18) Could not verify ST device! Abort connection. +!SESSION 2025-08-25 21:47:28.427 ----------------------------------------------- +eclipse.buildId=Version 1.19.0 +java.version=21.0.3 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=it_IT +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY org.eclipse.core.resources 4 567 2025-08-25 21:47:59.905 +!MESSAGE Workspace restored, but some problems occurred. +!SUBENTRY 1 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.906 +!MESSAGE Could not read metadata for 'AUTOM1'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException(/AUTOM1)[567]: java.lang.Exception: The project description file (.project) for 'AUTOM1' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.908 +!MESSAGE The project description file (.project) for 'AUTOM1' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for 'AUTOM1' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 1 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.908 +!MESSAGE Could not read metadata for 'AUTOM10'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException(/AUTOM10)[567]: java.lang.Exception: The project description file (.project) for 'AUTOM10' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.909 +!MESSAGE The project description file (.project) for 'AUTOM10' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for 'AUTOM10' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 1 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.909 +!MESSAGE Could not read metadata for 'AUTOM2'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException(/AUTOM2)[567]: java.lang.Exception: The project description file (.project) for 'AUTOM2' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.909 +!MESSAGE The project description file (.project) for 'AUTOM2' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for 'AUTOM2' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 1 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.910 +!MESSAGE Could not read metadata for 'AUTOM3'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException(/AUTOM3)[567]: java.lang.Exception: The project description file (.project) for 'AUTOM3' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.910 +!MESSAGE The project description file (.project) for 'AUTOM3' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for 'AUTOM3' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 1 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.910 +!MESSAGE Could not read metadata for 'AUTOM4'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException(/AUTOM4)[567]: java.lang.Exception: The project description file (.project) for 'AUTOM4' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.911 +!MESSAGE The project description file (.project) for 'AUTOM4' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for 'AUTOM4' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 1 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.911 +!MESSAGE Could not read metadata for 'AUTOM5'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException(/AUTOM5)[567]: java.lang.Exception: The project description file (.project) for 'AUTOM5' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.912 +!MESSAGE The project description file (.project) for 'AUTOM5' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for 'AUTOM5' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 1 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.912 +!MESSAGE Could not read metadata for 'AUTOM6'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException(/AUTOM6)[567]: java.lang.Exception: The project description file (.project) for 'AUTOM6' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.912 +!MESSAGE The project description file (.project) for 'AUTOM6' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for 'AUTOM6' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 1 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.912 +!MESSAGE Could not read metadata for 'AUTOM7'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException(/AUTOM7)[567]: java.lang.Exception: The project description file (.project) for 'AUTOM7' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.913 +!MESSAGE The project description file (.project) for 'AUTOM7' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for 'AUTOM7' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 1 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.913 +!MESSAGE Could not read metadata for 'AUTOM8'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException(/AUTOM8)[567]: java.lang.Exception: The project description file (.project) for 'AUTOM8' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.913 +!MESSAGE The project description file (.project) for 'AUTOM8' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for 'AUTOM8' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 1 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.913 +!MESSAGE Could not read metadata for 'AUTOM9'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException(/AUTOM9)[567]: java.lang.Exception: The project description file (.project) for 'AUTOM9' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.914 +!MESSAGE The project description file (.project) for 'AUTOM9' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for 'AUTOM9' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 1 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.914 +!MESSAGE Could not read metadata for 'blink'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException(/blink)[567]: java.lang.Exception: The project description file (.project) for 'blink' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2025-08-25 21:47:59.914 +!MESSAGE The project description file (.project) for 'blink' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for 'blink' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:934) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:790) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1616) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2618) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2319) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:591) + at org.eclipse.core.resources.ResourcesPlugin$WorkspaceInitCustomizer.addingService(ResourcesPlugin.java:1) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:565) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:833) + at org.eclipse.osgi.internal.framework.BundleContextImpl$2.run(BundleContextImpl.java:1) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:571) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:825) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:775) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1057) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:387) + at org.eclipse.osgi.container.Module.doStart(Module.java:639) + at org.eclipse.osgi.container.Module.start(Module.java:498) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:528) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:122) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:620) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:348) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:414) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:41) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass0(BundleLoader.java:516) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:434) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:174) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:153) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-08-25 21:48:04.175 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-08-25 21:48:04.176 +!MESSAGE Log4j2 initialized with config file C:\progetti\autom\workspace\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-08-25 21:48:10.458 +!MESSAGE Started RMI Server, listening on port 41337 + +!ENTRY org.eclipse.core.resources 4 567 2025-08-25 21:48:48.788 +!MESSAGE The project description file (.project) for 'AUTOM10' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for 'AUTOM10' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:829) + at org.eclipse.core.internal.resources.Project.open(Project.java:1109) + at org.eclipse.ui.actions.OpenResourceAction$1.doOpenWithReferences(OpenResourceAction.java:233) + at org.eclipse.ui.actions.OpenResourceAction$1.runInWorkspace(OpenResourceAction.java:279) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.core.resources 4 567 2025-08-25 21:48:54.240 +!MESSAGE The project description file (.project) for 'AUTOM1' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for 'AUTOM1' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:829) + at org.eclipse.core.internal.resources.Project.open(Project.java:1109) + at org.eclipse.ui.actions.OpenResourceAction$1.doOpenWithReferences(OpenResourceAction.java:233) + at org.eclipse.ui.actions.OpenResourceAction$1.runInWorkspace(OpenResourceAction.java:279) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SESSION 2025-08-25 21:49:52.972 ----------------------------------------------- +eclipse.buildId=Version 1.19.0 +java.version=21.0.3 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=it_IT +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-08-25 21:50:33.575 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-08-25 21:50:33.576 +!MESSAGE Log4j2 initialized with config file C:\progetti\autom\workspace\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-08-25 21:50:38.544 +!MESSAGE Started RMI Server, listening on port 41337 + +!ENTRY org.eclipse.core.resources 4 567 2025-08-25 21:50:38.595 +!MESSAGE The project description file (.project) for 'AUTOM9' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for 'AUTOM9' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:829) + at org.eclipse.core.internal.resources.Project.open(Project.java:1109) + at org.eclipse.ui.actions.OpenResourceAction$1.doOpenWithReferences(OpenResourceAction.java:233) + at org.eclipse.ui.actions.OpenResourceAction$1.runInWorkspace(OpenResourceAction.java:279) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.ui.workbench 4 2 2025-08-25 21:50:43.701 +!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.ui.workbench". +!STACK 0 +java.lang.NullPointerException: Cannot invoke "com.st.stm32cube.ide.mcu.externaltools.MCUExternalToolsPlugin.isDebugging()" because the return value of "com.st.stm32cube.ide.mcu.externaltools.MCUExternalToolsPlugin.getDefault()" is null + at com.st.stm32cube.ide.mcu.externaltools.MCUExternalToolsPlugin.isDebuggingStatic(MCUExternalToolsPlugin.java:182) + at com.st.stm32cube.ide.mcu.externaltools.internal.registry.MCUExternalToolsTool.resolvePath(MCUExternalToolsTool.java:124) + at com.st.stm32cube.ide.mcu.externaltools.internal.registry.MCUExternalToolsTool.getLocation(MCUExternalToolsTool.java:270) + at com.st.stm32cube.ide.mcu.externaltools.internal.registry.MCUExternalToolsRegistry.getToolPath(MCUExternalToolsRegistry.java:235) + at com.st.stm32cube.ide.mcu.externaltools.internal.registry.MCUExternalToolsRegistry.getToolPath(MCUExternalToolsRegistry.java:223) + at com.st.stm32cube.ide.mcu.externaltools.internal.registry.MCUExternalToolsRegistry.getCubeProgrammerLocation(MCUExternalToolsRegistry.java:277) + at com.st.stm32cube.ide.mcu.externaltools.MCUExternalToolsPlugin.getCubeProgrammerLocation(MCUExternalToolsPlugin.java:116) + at com.st.stm32cube.ide.mcu.ide.core.ExternalToolsProvider.getCubeProgrammerLocation(ExternalToolsProvider.java:21) + at com.st.stm32cube.common.mx.core.CubeMxInstance.(CubeMxInstance.java:154) + at com.st.stm32cube.common.mx.core.CubeMxInstance.getInstance(CubeMxInstance.java:91) + at com.st.stm32cube.common.mx.userauth.UserAuthAdapter.(UserAuthAdapter.java:25) + at com.st.stm32cube.common.mx.userauth.UserAuthProvider.getUserAuthAdapter(UserAuthProvider.java:16) + at com.st.stm32cube.common.ecosystemintegration.ui.core.MCUEcoSystemIntegrationUiHelper.getUserAuth(MCUEcoSystemIntegrationUiHelper.java:100) + at com.st.stm32cube.ide.mcu.userauth.UserAuthStartup.earlyStartup(UserAuthStartup.java:32) + at org.eclipse.ui.internal.EarlyStartupRunnable.runEarlyStartup(EarlyStartupRunnable.java:79) + at org.eclipse.ui.internal.EarlyStartupRunnable.run(EarlyStartupRunnable.java:55) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.ui.internal.Workbench$39.run(Workbench.java:2733) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SESSION 2025-08-25 21:52:31.213 ----------------------------------------------- +eclipse.buildId=Version 1.19.0 +java.version=21.0.3 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=it_IT +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-08-25 21:52:58.354 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-08-25 21:52:58.355 +!MESSAGE Log4j2 initialized with config file C:\progetti\AUTOM1\workspace\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-08-25 21:53:02.875 +!MESSAGE Started RMI Server, listening on port 41337 +!SESSION 2025-08-25 22:28:39.434 ----------------------------------------------- +eclipse.buildId=Version 1.19.0 +java.version=21.0.3 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=it_IT +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-08-25 22:28:46.414 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-08-25 22:28:46.415 +!MESSAGE Log4j2 initialized with config file C:\progetti\AUTOM1\workspace\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-08-25 22:28:53.754 +!MESSAGE Started RMI Server, listening on port 41337 + +!ENTRY org.eclipse.core.resources 4 567 2025-08-25 22:45:17.086 +!MESSAGE The project description file (.project) for 'AUTOM5' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!STACK 0 +java.lang.Exception: The project description file (.project) for 'AUTOM5' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42) + at org.eclipse.core.internal.resources.ResourceException.(ResourceException.java:38) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:970) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:954) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:829) + at org.eclipse.core.internal.resources.Project.open(Project.java:1109) + at org.eclipse.ui.actions.OpenResourceAction$1.doOpenWithReferences(OpenResourceAction.java:233) + at org.eclipse.ui.actions.OpenResourceAction$1.runInWorkspace(OpenResourceAction.java:279) + at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:43) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SESSION 2025-08-25 23:02:37.740 ----------------------------------------------- +eclipse.buildId=Version 1.19.0 +java.version=21.0.3 +java.vendor=Eclipse Adoptium +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=it_IT +Command-line arguments: -os win32 -ws win32 -arch x86_64 + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 4 4 2025-08-25 23:02:44.466 +!MESSAGE CubeMX plugin appears to be active, Log4j initialization might be too late. + +!ENTRY com.st.stm32cube.ide.mcu.informationcenter 1 1 2025-08-25 23:02:44.467 +!MESSAGE Log4j2 initialized with config file C:\progetti\AUTOM1\workspace\.metadata\.log4j2.xml + +!ENTRY com.st.stm32cube.ide.mcu.ide 1 1 2025-08-25 23:02:51.944 +!MESSAGE Started RMI Server, listening on port 41337 diff --git a/workspace/.metadata/.plugins/org.eclipse.cdt.core/.log b/workspace/.metadata/.plugins/org.eclipse.cdt.core/.log index b7e6e7a..c7c7064 100644 --- a/workspace/.metadata/.plugins/org.eclipse.cdt.core/.log +++ b/workspace/.metadata/.plugins/org.eclipse.cdt.core/.log @@ -11,3 +11,8 @@ *** SESSION ago 16, 2025 09:10:19.848 ------------------------------------------ *** SESSION ago 16, 2025 14:43:50.178 ------------------------------------------ *** SESSION ago 16, 2025 20:59:13.144 ------------------------------------------ +*** SESSION ago 25, 2025 21:48:01.650 ------------------------------------------ +*** SESSION ago 25, 2025 21:50:32.110 ------------------------------------------ +*** SESSION ago 25, 2025 21:52:56.986 ------------------------------------------ +*** SESSION ago 25, 2025 22:28:44.990 ------------------------------------------ +*** SESSION ago 25, 2025 23:02:43.61 ------------------------------------------- diff --git a/workspace/.metadata/.plugins/org.eclipse.cdt.core/AUTOM10.1755360506374.pdom b/workspace/.metadata/.plugins/org.eclipse.cdt.core/AUTOM10.1755360506374.pdom index fb5f13d5ed91e04c1c31715648aa9a3c67c051b8..d1016db06bea3c0106a9967f9b21e7206a20f443 100644 GIT binary patch delta 399534 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Ⓢ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 Bfe@uPDH3TaNN)ln0Ys%(xxh#jyJ8m`C}2TF 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 C6$A_b diff --git a/workspace/.metadata/.plugins/org.eclipse.cdt.core/AUTOM7.1755290294236.pdom b/workspace/.metadata/.plugins/org.eclipse.cdt.core/AUTOM7.1755290294236.pdom index 97b720a3bc44fd65e1a0a5f98ccb3151dc64abe5..8b0f089f7925482a79fb4f8d01690d0511abf32a 100644 GIT binary patch delta 1471289 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

KHy~#JVcO*8ERO} z2^2#!4nN@UMW*$QX~qQoCKzBKMp2h8QZV|192S2&6tf^}_`f34`o}chj%g`OZ4KNF z;B_5<9}~|lylPcW|Kaq=G77IqL?Qc8n3bQoPJx|FA96D|M!f>z6ISK)9Uk=;{JInW z@5ld`4$!L!`jCS9qTs$!bMb!((+8uEXL5Dm_dbFyvrk>=5o2M3$)=i``*oYGpOLoy z>!X)H+wYru9y~T_{l1KS0;>-q84F~(_8n;b{yBd3^yzc>{kP<}eYNwajaancis|*U z=gyyTUGg*mBNrJp3syv|x_BV^TpF6jELd)^v6n+#z(_- z{!0#~H&)$)MXus!c`km=SrqQR$Mr%me{v+|ZSG$jo+N%HKQSoSxhRew^*X#_H7u=X zhGbsy8m%4JgPEA;cgqC?#ppDsPDGIALWeSz1-4*y?Vm4Zj#;;{P@ym~S^Sv|HyF4? z;I0Aga^U`H!(p^!@(Tsd3)~*yrZLCtBi7iX_*VpK6Bq_y27u_j{CO60ToqvfOM*;> z`WO<7kkN7)xNCr0Z1r+VFb+2PVXz-p$O6BNVfsJtmhDx?jlm3KC06I8e~{J>OCjC@ za3g@vGso2nFuVNoZ*s|S!ElqKb`yp)an+d1#oF&R4a@;Q5cQOL#sz5>uJRrX7BLJ; zMYFSJ25|pYIMH!4m&cP;#U;oGn4+n4-g zsO_iWDDSRJuk@v-rmUd+(6m|1MxmazEEoAkCwbF0OmRGgF~*br(`F_P!ADJn(KH*2 z9Bx`%Oq-dwVZfnQ;-YCb7Wu0=DdnTbIhNpj0I|Gh6MF0PNGAbXQBx|RV3iF=KD!e* zjAb#4#S#bEaP>AE<|;7Jq;0wpxI>I3={6jOGBF#|h&@JZ*BmzcCdMzv+|syNgaF%d->{g$!hbBav^Ld{jv z=em~B)NTL1_4Ny;&6+WN(VQ9eS4^EhfA);|Zhl?%pn)NHj7$>wOHBjw@8a*)aaR=1+nJ7>Lk54>v%xr7RP)i6GcN)0O`2P=uJIR>$eHO&` zm8XXJuAI$i0Y}iVC-Gj_E*2C(Euy-rXQ-7!O~}+^_0{vI&b(%-J9^%t1+${#T;}iT zv!~9iU$AK2JUp*i;7ZL*^@8fQrgJb>7n4Hnc?&W0cUcMN&7J3qrhK)NfUPFO|APQA zj)pGhmp}rj^k|-k%yGlJnBN(K|H7a?jI(nXE2~oTF#kVtiXvW!DK9yRm*}EQ;xVDP ztQ^gqCo>8~ZrH07!Q@1|FBu;rg}rI!iH%wL|4@-#h|$6%n1zi;<%}Pv6zR>_*uVcj zQ3OZUkx6z4laO@nhUcJ2wNfOUv2mM?NmPU`jG3XZ#BB#|A}TW0ie7yS zl+^>V@8wj2$ZSVJ1=e5?u>n5#BP< z+dyxQ_K#`n^is146HMvde!L$!gn#pjBa}Zf$-C?lCG5Ypi^TsoFDR=QJ@E>8;g7NL zeD_7(m&K9tQaIi*4NbS%`~SvwNVqvMB{OEdj>ugXdt1iHyB&@8e}A{qbRPAVF74OA zH(%m?g}1!o=+CG87~6y1xgIb(LzD$Rgvg(*Um0?eUia0(v+&P?Y4tKi3sDgA_&X0`ni|=!~c~QOh3tcGt?|Qy+z~F)W;DgQ> zjS{ui^UZ??V;d1z6wjR3u^>z^vM3k+juD1nm;On1i+Ix|@%;mFR{0|Se1kWZhi!I7 z71-sDp0TjVSOg@KnmlukfHw}R!QY@9G}+e;lbu^$IMwTtn*C7Ei~0>77@~?6Kc|Kd z9*72+H%;|6nwSX#2M@#qfyj)J;o2DsC(W3)aPE916@UEbP^?Qjm26pQnYcO>zeq3W zWmIndC656p}95hHHy3`>7zQ(xoZX{&#R-IQS~j14k*$RcgnOSl`L3CQ#$QgmVm93oNyvZ z-vRI#o{#Y347UG2MgHlC(thY?H2K`te}l z@KV>KQVQKumm3SG_|TbNdFrCb@NbeNM4bhr{mhM*edLh|=SG(rDM?5Y9t$LX4k38r z%o}IgGjvwq1jP{bS7x5frX?vANJ>(u$dsGTAKEa>>*|;vuMjmr!`yndD~KS?f05|S`*Nj%Hq@{RnoPf+Q=l=71z@}wV+C%>O%%TE%-;t~{dVT_hkDDo7yfeNT_wzm+Q*#z;t;m%%(T2dKkc;Ir}W6MUN;3)1HydPo? z{>p5xdFry3Bs)t|0G>lap}7B;*(g@&R5mUL9aEgg(TMQEtGtEsgdQs0q&g+bY+qR1 z@AiB&NKPUjvw$yT@#5T>T~`?e(|(D+uxo)TgRop%j%Fz-xTmi88suo`)%Jo}DoH}r zYN1*@-W-;W)?R5O6a|y`Ip~)|$S88OtNn7cN+1Qvko6elh`KrLSNO3>!c!vr*N=~3 zY{ML{%dCG%s}&Ov)D?fmZkCPmuF!Qmn9O1c!YmDQjQZEU#7HS!=|-UN4##n1#B`D- z0TK5UIDyRa#T>g?wn$Pbjt&h*XLZ_Sma@kdaFQ^HPig{VS&{_y&PBlCh1Ymp2#_)? z;cN=J^y3ZUFMW7d+5$?_E_q*MXb(89X5PCDwV1DHoDU&Lvhxeq_`Vl`I*tB54mx!Qr<7ykV}l zPzmf%%m;xw2!WV-=ey>5U8ca~U?mU~L*NPsY@h2bvOuAdREmS>Lom{x=3-gcpp)0n zvuTx#$qaDQkFPTru{4AmjW^A+Wf1z(r5|q+f9WHw3`(_wRiTl=WRE0Lu_xz3^`i_u zdQ~7Diai-my^{}s;Wlt-xXzw6S*-;{2}`@21@MQivjwc=F*Z>ZU^R@TVWCBrWuH6= z^mvGR2BKW^Z51=QLU0ijL(~)2fjC<7WSf)*k*T!fRAP?Z0nUjAp-)=j&KV8Ch^T4EnrI&WjkZ7%vZvcG~gkVaa7cQ`8Xr5pqDB>Gq z>6P{jEthwNlvUu;z|z-HhMK@dW~kk&`P677--iEJLKZ5cS^ih;Oz^% zQS~NhjZM@#Fqy~Fj~E#`S8hrXLdaomfRMLrLZm;6dy*4NKLM-x7JB8$*3{r6Z?p+% z!tYfKC!xU&RFz9^5_J9ee#HWd0kF(gg>V1nIT_=3dJV~6fnuSCn8-kVo>rXi8Tdmmk?1Pn8AR;8OEv4g8vRd*N-1ES!Mjj zd`1rZTju25VDLBu0Bj1_X%m1@oV<-?j<#D!mZ5(9D^oybwV46`#u)WgLnid&F#wwa zlx89a=+PzbV40i9r3x3TzR8IToxQqK4b-5Ze*7rkwAee!Txp^u|E#hoV<`Q|d=wgN zSfbKTi52Ow$}ahLr2m0mzC@+>2@{=F>3|vnYz1W6HrP_e5-YH>#+%G>*5##P|1|xwg8dTzV$ey%Fe@jzH(974urAMv0P< zkceRh1Qe~cIn4-{po=sT$%?WWHVYwvzt5R*?aYO<=)U-U*0a=GBvHg)l-Y{n$lqzs_bi%jUPBWxKclmbNtU{WYtq=JtR zg(_w`lmJo4^JdV&8MsUf$o54r6$F^{1U-nR9GM zVxtOSK^BVH;t`eje}!Tj%Jc!4UK~+TGGorv>n#S8C0#H;q#iMbjl!XvW@H;tE$Bk1 z;xww96f~Sp=0|VE%(Ow@LM?$$IEC3e5)BH>OJEAqJ=uxeIJ&dm##8{tD#{}ES# zb`?|{%{MK#hmR3kl^z(;s;fAg!p92LkCzU&P0~hZp^hCv9lMNGyl?CGjv&!n!G65K zgpGk_Rvq0b?+Z0|0lSJ}cTv^fI9py@s=Bo8v^_$oZF_{1SY|!qb(}x$0`rT>9B?3W zhY^oe-n)bVfl(@qdD&i`du4oAm^EmvCx^ttatf0p z_6r8$rufEKc{Eu-cr>0dpDzc7L$%0M!UC<}w~LjJ6bj%wVly(Sw<1yse!tbgB9lr> zy!g#uz0q4>EAUpOhm5N9qr8}wWVn2)zy_1LoDub zEZP(*+DnD$J#HI=G%)GG#ttV2%CulgmtZ21to%(8Y`Vy03DP5GwBE|kHQMWeCrvTA zRk6VH7aXmHv!Pe|*;NKM(a-dtT0{2OGP3I~z{FHSQh_tn=kLOrrv^xh!FP1braa|W zlvssQ02pIr zLlab9S6M3)b_zL$SJ@(lXAcBUO))OihXNs%Q z=@U#0Gk6mvPn;PY+yg`YsSmKJH&PH(-r^l5=z@ntvWg`(cO^Z5(OZ8~RBYKg7z_Ed z_LKT_Gxwkg1B_uowJ$LJ1iHDVfGn9%WD1i5Fhy0m&5^vhf-cf15mourB{US2`4NH3 zi@*his_tY?SS7g3notLYF8xG*#RFSQ{hI*h{VKeOTHY~W5Mj&KWRXDJQzEMa>~@=HV>k!tD_HduD$6mW@f6B&ySJc0 zSZpy!h&v~ulx}T!Zmam27Fcd$wG{Zttoj4H1?LF5;GvRMUkM9J-4O+$zkVXtru!Nj zLxeEz95%ro!n{irL!?nxH8vA)Zdjw-@QyLg!9K%sGUVzfk_;@HkVCU|R3XTb7ehE` z((<)qjEZaKZlg?xI1qHvb~yBYHi6sXfOm_a>nBnz{!K76`U0qdJ4?!e^wdve8#)%3855PJjyrAXQR$#l&CT`_*rs#@ z4|UbxKtWLgb>96*fG*~V0$T~}lQ7|KAAr7%)wJ3f?htg5#$dQcxHAny#+32UGG{oC z`m^d_iH6B5Bes5`RHeW%48Isv;B&~p2%c!NAWAxC@?)D$h}hm8td`=PX@nL**H4Ty z`PWVq{B<7iV%i0X-c}^q4|E&-DQSlx|~-rR7vcZ@^q zn@8Kk(dudIzRGcU;8B zuJdM$6by8WK`z!iVhcB!K9f1hZ&L5WTj{kc=P~`YX#N7yXHk0ERnAm^OnjG0pTewN zb9Q{KQH*c0E!)sZwH3c-qj7A9(`%&tM-ltm6#B+RmE=S$v4(Z&=B5UqN!LIL1Z0 z)0n%>2;B1)ZtO_@rQ zHXn{}<^WozB4DIqA^Mt7=E%*$3jnx?VLldWDV!FCR~DnD0(T2={ejzM;RS>!10zlSAmsaV>Em$%GIXg<+m;JO7u`bq|so0y~clwv@RJlevIZ2=D5 z2VArW*ipQ|5OlsmM*1{#vkV)%)_{RaGQetMYxOV*!fIp#H}*H+WIs}i8wZ@R8ktrZ zpD8J>DX9@mj1Q5aK300y-AFH+a_y!9A9ECaZ8Kef1soR&AZEUBX*Z1o?ox$=>8NT@ z70Iyr?y`vBe1@VfxP9tKkv?F~JIqn|iET@|FBQ%Q=HuJ|j#9wA0M;qsdFuy!0q?w- zg3uhKjuz=@Zw_;>4dF9STexwBz*Q+64rZghJ0KsXl)OGbJZUc$t_fpk&b^Q%i#Hx1ml4WQp5 za0rkgw#q5(H>S8N`(;@ST*x;nwh)9}b;T~Z^h0Dn+`^5+LVE0^D{-~9U3cMmS;?U7 z@xg$f34r(z40MZu>nngZDhAiejdST2;qnms%pBoO&D17^n{C^O_o)BSM<9&!-yywE zwbQPjz(AHH?WrvGNG7ll^rlVFv%oze*w99m)}G5`xzl(Rr0(Ks^xVu#q{j+)L(!-Z zq<==H$A*{=-=L?|tCWHuw|2~=O8X%GBYI?fDCput2tv#?1@#8z z6+xnw#B3P^?oTGJzcvmP5X}c&bWE3MYWS*6cwxoW>WJ^@gT=TOu=qx*f-}9W6U8XcdvLVDg~&5Tx01z? zhrAbvlVh+X_sm1yA>4f&`eJG(I1((-?ZYLJ)0@1BQs0X$VQGkvIJ%53I%rHB97aEc zzUCxDrebl(WMQvIhoMs+N(2_yfrW8K8R?7iNxL5Uo-nki+w4uGbBaUZBs zM?8fy43g#n6O1=W0FFKqM;Xx%q2q7G6-DLai!0DdNERgzt4XrSs9w7%>oY+%Yawlm7%moA&JiMvChXjUofN^ zC~boNu~d_1@urCp1f6$e+93`ypAsl7 zVzuqOqoZ*3Sj*KFrw;xrn|-3GyqOD|)o*i2v)I1mb2qR0)-h~?DD1Seu$CB6NZ#$| zvpiYpB}?Np43lv>6J46`Wt<_pMeZ^wPK3$9Al~Tv4S|5Pf8%!;HjhU$(xbPvfqf2` zC>(2h09%GVjNc5ndf@(S;c}m{1Xqj#zb}+vya?7eLA{qmuJL<$-Pn$Akz;VAkx!(f z1DZKRBorSMBy$mDjWUSp51bqyYrZF$qt9Y~)n{^dOB}yp=&6;V8<~!{n}HcTM;dc< z>u>3qgSOqscVthdMbevY4Z!69x6Z=l-f4-gD23Q|l^<093ydzSdV@TRUeHb-Dgb)E znv#^cAa{F7e#NJMOiNYqV(?=sI zfkrz$PO*U6p%^33FQLVmvhuPjJaob(S@d`uv8VcLN1S6Xzk8rFS>D}-yRs_OTa44k zfN_>ctKD=37+eS5e86G-bT%lWc;PEX@m73;v_>~?3Ul=STJYuV zEsmi+uiTjqX{8m*v3KYwIFePpWlge9VpG4ZHwws`QY>-lm}y9t{f>YL%n9_q*2)HX zVmbzC>X=|AHiT)Xs_u|gUB0VAM-CJc>j~UG8$*? zeeQ~g&o#|J)xvD)(u~_OQmB)h=%&bzI(LkpZE+-Vhby9ingud=IvTnPlPA!$QvQ46 z6&5-}k&dpy1O^?TNZd$m)F;FE=?{U&twK1RI3Z4u;71}OW?ayz^ym$cAxVCA&1thZ zRp2|$p`c3}IvkvEW(Ds7PM3;|8U>dk5cJWts@NFTrfSYFmVl@z2>6#w-i8G*J#WW} zXt{$U()ss;BRtc{ASk+wA{Ydr%D5=QIp11b#$ybZ{+;6TFt~KH1|Jml48ugl0(VB> zC`yW`$6E(M+Px7Go=ZDfM{?{sPot{+@`M;{NEwf!P|DKLQ6dKO2f`txd=N=NVTvki zxjV_})OgT?+BWMLL6K)PmWGt5EJz8HdBH(eIG75Ss|bUX(_s;wo@6<=Q3m>@mDxQ1 z$JhiP8Eu`#VEjCgr4AH2trM_hDAfM8AM{!wK%c*Z1>RvsLqx*IJk;#wH5$p=B~u82=xr&>&LM5lvRhq|E1n-=@lnp%=~) zIQ0SZr4Bc5sE&?C_!Q}zdLdM{F5pu>XF0|VYGJ8DWPFLDO*QT+2kI1Kgbn$!XTAR; z#>RBGl#zp|5-?dR7|>x<*5Ok29NZ=7df{YC5W`%DmTFD@*>jM3vBEcW#8=Rb>Edqt zQ9Qi(HKZ}Y@c1H%91WPRvlZWaQEk1Ol(>p3N8|UF*@(PIp z8n6=--qjV?q=6Xy9hTqeGr(orc*hLgWLFUzeO70j>W{67i<$`OI|L&w3tf)jdetT? z^U*A2>M=pr3k$_x^+D!4WZp2$C-5@X>V?v`f$r#nW7M)tG@Tho1z#-_Gf;Yw>ORo2lx5NN-t^`DujT8EUhqKB-ish`cA&tdKx8QJbgCg;XVTK&8i!0-c=<7 z_sB$)iAu5vq~OTkZ4>iYj-zGH6aXy`v$;Wsx^NLWEvn~R0RRc$BKa##&i=(D$1+3| zE&}(+d=`p~HQ)ofE?2(hV@I?v#pss#ZD*FLs(d~=2dVQ6Mx;cCAzfRYu_n*}N$Z`h zt?p>PE(h-vuZ5Yg=-Q}BnHYd(E))E;+zVi(nO#^(K5NtSelz9b3n}=$dBfjIRzMbm znM~Q7iuS@tA4?6hRqgo`fR57C0HsbyV-PCDd<%L2oosE*x9Me1Uv+zcr(%2k48;2%U@`C zuccu$1*k6sKP~@pD7a9~kPrhD3q3q27-PzlikST&o3l|PZ9mA~Rs>o7Sp#v<^A4d1 zCL7F91X=cw3_&^gpMcv21b>CXw_6HVQknlG09yVdSls-JP?#57;!N?SrlyI`9Vv5e zk;z6_?@Te)()-8tE~}~`6Y<5UsnPSHQ;3vVfQL)YC8`wnLeBnWBZ?;0RgKRaQNpV) zaYhxVrlzD(5A&p&eZE2@gyqgN$RSIknCMwUfr>%A;%iKZ`1fo+Mn4nXG^5oheF!?i zUg$&wJMh@o)=d-rQ3DtGKbQi8{m`Wgb_}%oqf#kl-`Q4PD{lecAw=~-AM{Kdr~F;^ zYs@rfiEcXzbg#jN{!*Q~$GoA8UQ|&&%DhKk$Tf2=2ag*7Z?Z@dUuzYT;j_X6F0wR? z!Q6FLkw~cJ^n!vnD3?_(ClqWDbUkkuJnjKQ2r2kawu z;qVjc^BV;J=LzP06wSzTOTo&gp`dJLwVV)amv^QM1s96cdLGuMr*1bmk%H24HUVO--8W3>s#wHh%oEA}HUizeADzCR}Fd4DG{ZS(T`wh~rEJ^-?qnS$$B6aA}1I z64>5vAij%QUhMH?%L<0tch;I|Rt{G+zPbbRF091|zlXITMs^>DG+73EUK7bQF66dQ zJ{6)nQb1909X$!MUBc`zdDa2s_NYaW1J@L5s3-<9a&I|8iD}o7VP>|qtVh6Ptze+# zfl+(B+|$B7Eore=3Yoz;#Uv@g=9o|Y_8anz>}GY?^wMSsenAQTnz3`+m0+PUb_P+b z6(j3W200wcI6DxAGQ~qNF*Qk3k~l@EroOtgvZQi6-VCX$AHRS)9O4nkS3G&YBgU@~ zWDBV0ZM5;Cuu^DM09hx>QS5dM+2TBP0+loSw9UqN3X%1uNUIfMoKt^pqbQD zco9do&@bUt@TlwoSlsrApo@>r85R5W@I~J`d;93j7}aX&rANTHU8JESTdXrg9Ja{?lIXB5{Dtg+|?K0K+VygkHRg z>4mN0J3dgXE)TEI!C`=ZRCJG<8Pc+oz^j)?PiNJbXU|adptEeujDH7Qp2AIL)>$^T z6?WO?umMq}`Ymr5-}N@0$orp?!(W-}^t!xho~#rZiv&+A&Pe;IM~ZKG6Ges2wslsr z$3qj@{Anv+h9<++j^5Hb;%LD1je@IQDE=59uugiT@xvIiNc?r;wq6))lJSM`)5+I{ z@?HmHyU(;e$gsmi8N;En5oyMLXiMD64ypOzi zEFR|@m(UK+a*Y01Ho8jLvU$>m{0i+ncI}L+XK1(P9kqxeyV7K#m!1NPtuli{eq`+Q zvjz*?hjFse$ru*|-w>-P&w>RX^OhsNPiMvXFppz+6uBUV#-@gQz~VW{ekHmbrvv%J z?|Sp4gN!h7dTASQvVqiYx{$Hoa4IULl0HTar8W8y_bK>%XFT&MuEJ4mRTVfft++^z zZ-u3XnEbWyE5Tn*{%E6rMK|Qv!?t|F%p+5g&ml%W*ZfPZ`ONNZ^3corf`@F@w9zot zuT$9op7?X@AWjd*&RcoA)Rf*9Rhl+3=j!7u;F__JG>8S9u42v`;hBHOW5wzm%xt^^ z_rdA$FJZwYUfv7t?P9@2HK0usR%Ph5=^uQ{0(=|pX2EF>!{1he;rmQqI)gcv{hR4) zr!&3z4yGS?fCcx&J8HS7Sn#~(nDdS`k^z}23+6Y9EPMm931`Bkm19))I_qC13%x7`uw=yoe_CHNSXj?Bi7LH1 z@qoeNC6k5bz7{NU6$|)cYq`w~X3h5~77rXyPmi;nGFj+l7lMV1ui98V?L-6!Cx(;} z^0$!~PK~=1ABO|hknz!T#sCSScQ9el4>d_QOG`vZzE;e6vvpcXe6z*P!(48Vzo1K>W) zK5{cggR=J{K<8DA80VRM^|B(Q{gdMR4P!??RD6M}&ay3}ikl3e94%;(z#qNHX8JQ! zi#p_#d;(@4xf6=LF9a}tS)yaOk2Dx!)1U;Pd!+`Es3qSWG#H<6SWTmY>W&L6&(oXn z`t^;ox?w$y5f^-o5Ug5?$Po}c*$|BTFz3j3q4{B{Ienhjq!bWa-KlcdOW{i8b*3vJ z9WtD0byQ3BGIR__Hme-RGxqIAhF~x{T~<|5Qe0VQ$(3FVGmZq4$nPY9Z;O|v%tW8a z%+Z4Yy{;H%g7Iblg_r(bQ9IFJo?*(4!whS@gAjk`{n)2u`R9Ev!>+&dsIfW|{coj+ zURDc5WG_UEL=W|w&kaRzA7;&oKu-Q+Ww9&M@{JnH?v7b2Q8CD$B%h0FJiB^0k zFm_~@2NkrVY=Bm(A#XlaZ~^g4bot}gGWz#nwb zGnbq4BJ{FpU@CjXTI6+%eSM!2xR>|AiX&r2=MOA^^e`*U4`IK2^AdIADpQcwNOB4V zS&Ky1{HtT?fSJ9p;3sZ(B{qt$ue*NU46$u6PF@m!EBR9coEM-$k{6XDS%79ta59Q{ zDJxuTF9z!*Xe#89f3v)&1nmaqo@o*_n7wVA;UygAstqs8)fi2p({yk!J7AluCa1Z~ z%$i;{5B$*2!KFnmMb_r}XN`vqaJp@V#G`}?*O2F!8i_1$=Ed}Ts{QSJD!ZLGBCG@fdP(nTq(jpOQ zzZ|Ff3#Jm++VxPSS<9d5=e)pteiH(@(fmys3oNh%(ICC;(dIvy8QD z#oqRNdN~U&62{FrjO5*{^ukFf&(hmXf?zw?WUH6m3AT?bwoid=l2M%eg`UpjD~yCD zKd*5|{ylHDs35zUax%});1d)WH_;Inl8nA!ZJ_mn$Q$wBARJb!F29~l-2`OFo3 z7^j2IV34taeu_$CDo zzy7Ea)A?$qL0}x5nMM~Khi09xwwK2{|67B=7`cB(KC7h$yyRIj$ol*InqQ@7hQt`3 zYG$v)%5~e;XOntT7b&z$FNKNOj;n+4cdqHk}5aT8lhwKQqZcJR@n~Fqe{wl+v#oyIp-W|8FTKpc;{pPGmg0a z#>ArsslW-BUc8*Y8|zH){Xu&~r@k4nCl`?bN6FDer^H#OzL8>uCQdKg37qWt)0uD9 zDRM`Zc`;bGU;U`ZL1mMN)f{d)yTSeEhuMvknvW}PIE!!OlK2a2T@k}56mZi3M_8^9G@?O=*#3^QK`k2%S&k`lH&H{*}pBFMAhhhbz8cgKxIv%iYevP=0c| zqepkVbyiv_C$MIUM=UgbqG3ig6473y~vdM}84FBPq#xSk(Y$&0~ z%~1$i-bxHF@+4z%Up`H;o`iIKxhyty|ZViXiK2%(1_0)bG|0|7!p8UaEYMNpc6inKQr5fBjs zxuF`YtYsJ1h8;ViB9MS}73=CQ>!PyCD$4&kXXehGypa8U|MMaDy}aklInSAL=1jTw z-GJ%CyPS_Nyd7n%ZioA&Pwb0U zqfyNQ(?n*lGcfl))KQ&tFzab4(;YS9Noib9(lOB&Tsps}hZc_4g1{jMrtT^?xB0%e z`9OAIcpW;AsdmOPA>MshGxrRHGW!kvg+zk4=jd$UK=c*A#LR**QtpyaC=@W9c}~11nD$fq`-rp>hvAk zht+w_H)t{@yw^hYPvF~c94n+|GQ(HD>lw&{S|mFI>rb!lS2GAzAq8Jjdxg70axmLA z5|zVu`v0=Mrd;Uc_Id5q?R&3k8i=BFL6E0H+=^sp{254w*FWsaK;XlXoFU2lsV)TM zto}j*NyYn`^jCbt6@vCjt9AYN2vNUjB>6ygy$mMA{781jyF$EzpO$yu*&Wg}zF`Ju zNFsl#3y{#;lvQFRzo83I3O} z3xNC}fn;LjdbyX17YQ(m)2r)Uh}4t96dx*L|DQLleIutC9ea8xnJY26!bH)Xuu9lParB1Skm&)Q$M8D^vs z?(?}XW7mh^xmw9Up!`zM{b(0{XtV(r3#oiM7Lxma#kqW`hkdC@eZbdKNrfRV9#c+^ zwExxT+XW;^a^STyZvbDh;!^==RXD2!HT5iQ_$z;4!7oG#^XScJORrx{ak5@!YejfC=+> zpKsTH!3PhHWM}>Zd_zUB8U62^i5V4*Yiif-!L3#k_r+~ivmk*T;e$xVarQg;Aq;^#1ogxZ{50Tt4C)q=!`?AR!nfx=6l)bvo(gI zFH_yz&S6(}LnleTNNPxw<}>Go;&FMn84Yb<7vCFpM(@E{Z#rM>94tq{$`jSpDa643 zKHs2lL~ba%#3kUvPcnOF!&w_HTp^eE<(zyeOq09d&O)r!?E6GceXj6&+n1?OoW$9k zjDY(``>-y--c%@5P-GHLdg=7P{8Bu8k>|7ThSp>Z=}3WtShL$VF=WC;N|nn_KdZ&# z24yPTrX9jA>HnMY+X@Y}KEO;J08t2Khc=dC+!EL7p;wtn&lDy&>8HuKHkIa&O3;k* z{3n{(rn}q|ov4>11PyDTR8a~zJ#7z_BbRXRJ0xEQNr%?G`C02{ z!1O+PFAhMih4<5k)?qfCg7^4_e2RVtPl^NX&RXOVKw$Xr5`)0>!E-QucLKz}nHo3< z2ld2r%F8Rm2}H`pOn1_s_oUFL0ulHB0)bLULC84tgrAu~+~k9JdM)n5m>xKI03e25 z07MMaophr_HHexH|GOlp6jBlaLJpKHi9ulc?v+F~Ty)Ci3dD!_edV=k9oa02J_^Jm z{HZRgB+7e*T^@|5`fs>Os3cNG3eoa@UjPF^Y_5Pf%Mai_mg#|mnE5~0_yRy=fbFE; z=gXneaCdYFyR2V<{_=lfL4l;q0hXhZ-CcR7;l8Ne$1%Z4-@&7q)!Y4`aeN}5zKYM# zcS^C#q7QJ?B}}+ zyGrfVP=7+1*(p`n?bsxGNNKoo!S&ZboE0zPUi#0#+noU9655Q~X!ZOb6HOF=oq|bH z+wEGcl-o(mwNo(JN|B3Lfw%L8xc^R7A#gT$@wBeE71$?Dk&}qP+jGHpnc{Pw>0q_3 zgv&EtS?;N0BOmrV6yn}*L<{$;_EzT# zE~u2_u<2e;i7cz$aD<-oX-O)#s_fWVxOb?b=9uPl7Cwf1*;oT_?-k;n7oq0t8mnJ= z1C1PI(%T;{>>(|XUq*?6w-GMi;~mXIW%kQ&z zfww;uVz;Z{@m89#Q!oGTAI+q;g6d2~WY_jN&M(}v>#QEMtbw1J@a(r!KEyrz9VvJR zm)%#2mhOzzR=>*sVV6HU4X@sT`~b%J;U8aYXT`Wzwzpz}1Z}F$5?;L?_i}Y7@J<&Y?!L=E+f3D(dL?W-&La8JU>_&B1zN5> zWFqng6chwocV8~$a)<7nsTsqoQ8%e_eJ$`#q7b|8^Z`)8rgp)eVBG%^Kp!pFPWcP+ zHdg?OgxG#HAM};y+Iu(GjN#RD!PrJIP8MR@z21pnd=Kj>RBe~?e*}Q}omUxnpRt`P zy;0yDbkuF#NiL93C#2s6QH(Id9t5EQjj7NBld;I|z&{Yf~F<>4u&mLh!Zt0It|k3VD>8RSJb=h4-|`Tn$s zY>LOOhx{la=exTPH6P}d-(q#4_8LcS;Tl#Q5&0E#jZs*?z^r4BS6B^qrMMcM-%dr_ zPrXj%|4E3=#`0_2Jk2NC<$@2Pd5~;+Hz35O3V9xwjlWYfMnrxCM&+;H!P>wkZ=Du} zmx{qE6};^hutL6Y{vsp)Dey>o;GJ_q-1&D;57s%pjCJo=ZnY1>o3A{7#zSKj)lDjV zS@6{m6&YHEor;Jj^%kZF-n|qmW~zvX%GMv!A|lZ!Q}0rIhzT~HQhaIO(of%5GWL^W zp0tH#Vu>;$@zqmM0zt4lbsvDeEh+B0W%URA)W@0Nq;Gad_o4t7Mn;|=Ua~A0nEEzk z)%sev96K3C?g7s>rU%|dW8Qd^T1PS>s?;}>%5}aR9o9v0SOeWfo)gGlbF<|_@A1WF-W_CAM;UL<6 zcWrD~uV6x-0mfuf)&c;h{sI1f`pOtIj=p$~Diy9E6}=WI@NPLkSNWTYz0PR9h)Bpu zRYS$Qv%nXo_^1`2&^m-nktG0tO=}7O=xdbR%|Yp?dKo*tX>gmVGFlG2i#oicNHx6w z)h2)@tu+ES7Ar4gS+BQz#El}sV>2!A?j9l5e<^{D5mW?Lh zm0H>r;6Z0X3cQPUwZ2?cHDREDLOHBPjltJe@f{Q5_OBG5`|>oa_hsiddbh(8RYF^} z6g#aiq;yhJPD9Fcuk7(XN`c(;GC5;pCiEKlyA|z4;WoTr+-(%b6ZHv_Xiqbe_J+LfKyEK%lo2k#-1-h=6dU&)JReOCJb?zF#jx2j${8zuD; zc%D`I;c?e^`%hG&zQ-2r&~ei06dyX!nl5tqrNf)8g2vHAZmD##QA4Lj@EV}U0eYf; zvXOU)jhBgf7`f<Fbd1$; z8fBsL`sx%QRR$ea^q{6+jZ6`MS`4UYh;&wwGBY0_d3>5mC^+KV|^x2l@X+&Fti#r)|rrs!((&s|nQ z-mS5*?(pde9o>0zn#H*5rzga_m)wM*hU#ObfoTEcj|Zk|U}|ifPb5CL28|sH6F8zt zXBnN{m?P=)j*^= ze$zWMN8r7wLfm?{(O?iIYk;`N0ZV%bes&D=djB{iZPI<}pZ#=j_LCm```!C(YhO8I zMp>uRu5GgX-d%a4)uSy{`RfLzrC^%Q41xFH18;5RE_?`kXH;f@pdq3B(q{qE6Bc2LR##Kwv_y zk5UrYbc1g-_-+T^tKdUurH^L*FYkwfN`Dgp)1yAv|62t=VHD;L2w9;D6K-|J$u_Fr-RXhl@ZDMD$OX|W$qO%FD6%{>(~8$zC49WM64-qPUmW-nz=v^lEtKiw zm|W5NT|QbXSM(6%!CxD>;=?qz`ahko;8)CKK|{}Squk&uGP*HS;BYIHTR*>_(iu#R z_!{tK0m(e!tU+jSsH5BNek)G;+zUi;)HAZ`y|~YvwOu5%JI+C7a^9vLr! z^H0nbIDCT;%OAw#fzChw1Ss~sUOJ!cHPndk|}Y1SCT@4fgH zwG!E`lO=ToQ9;!e{-{O=B{lRn!1o{^Z2=?%Ty#*9a#6pf)0>JfBIQ2t!4D>_0AG9W z^d|WH0&VL9BmqP?S5)sick?W(2RErV4Wy{H%$>{^I07daOj90#5KPku?97+Jhr+}W zNv8(Q`MGD^ZQHH5+0gRGg&Zch(VWO>wZoj$OFa7hvwplcEMs&=UKT1JiTuj-vxGAj z2T|tYkTBrz2aLxH z^=c5ddB;ONW4LwvTsC*gyeV^UoH991e}97SoY(5SZ{%k|7i&q4xF~GPOstvSjOT6L zWt*(lu6qXt;xF2UwMaw0c8E2Q&mIOJHFbe-emaZ1QR0#xL{ua-=N{-1+M2=OLo-GS z9GNe~k|$sd9xYA4BluzKER0wxG0-0|3(J&gK;ft^?&<54YeHpciPu6R96VCs$aYA? zyZvYbnkBBadIpH%o{R~*y3Gk8u7Ja5tYd(6F|eKi^%4=8Brb_`=UfLPv2+~=FxRfK zdPY%JO0u){?&ntZ4Qrl!#dakFc1=aI{pmDVB1Pb95!s0CMX;#Rtp>W;EF^Gbj}VLT zUPO0sMf6P9`fFHA_q%JYSc+wO0FKUrW;ATK%JLDibjIZHkv`Ewu9WMx;XC#VXHYsb zID-ZY=c+H=f%7`Ia!dDyHH$vM*ko=S%@`da|5;&exKmu@mRw7}5Y;C-v7RIZ3rNl& zto2>>vHQ`T39a1qkK+W6EGM+D30TD_={`^-Y@GYqR>cyXTd)^Wk_2Bch6ZUZpDdwk1dF2hgacH$QaI&XapM!bj6J$qB{ z4qIw^+wSNG!L8xT88sb+zq@yIqB;s{Km4h%A89JZ-LS!3U!Bm#ee|BN z=IByf^usYwwfGiN7U29aUImZWw!xdpqUr&s;I)_Gh;)XxWI2JO6+$d@f%{}!^bk|g z!#^lRH%LXdM29t}_h0pB;tNXa205_0O6wqJRvP8xMh_D5V?Uht8ATqsfzP>k)0f4GUv0 z`NoX6xVYZxQh{+y@P_Ii1Sc2LA)M{Z(K8*6P3+`o+v$e>G9IU5gHBllFyUpJLktJQYq8fLN zRzuFZOL)j($ytcex+Fj{LiMS5Wt=D3&7FiHXJc&ibeqDdxWY~QUuizNJ35%xc(R5< z7rYTtpf&}%u2ywKjVxF5MdWM-U%uiSEX2I+im%#zwsUl8$WYd|(A`kbwRtNV3bO_Z z5sMjJ)jD9S0k#Ja2g2$t z1A1cAToGkVZ+!Izr7T3x!+yj&`p`zs{mXdc>tR&h2NbJ#Z?8#rCmgWaw3cxA3Z3dSR?{4xy%g-z@R{&F9O4-^a^u>D{!>IgI}FYFi%t zM^Inv_N9gtQFs)bUiW@ph&lK8&NcA`U*ZTjeT;4No>}J{yvxZfH}wrGktfFItpLk% z`n~=Zt$VUmMxWiF(refwIzX%(!~?bOLVX9Sk=LyRT6m&&+-l1QfDsGfcpt5E?iKSL zx70|^n}K==`t!bIR=3x*%7~H0ki`BTl>m=5`(D*rt3>2wbMVsRg(7mnQuto9`Vsfz zyZ!j?Aig_<@7&L;o8@dg)r7omu-ju=sy#9d+)1ixPeE#1(Te^@r!Y{ZG#FZd-!GqlfYf1J=BPcN)1a1)NKU3Cdwh2@Z>_Ala%Xg6BM!zzzC@l;DuK_ zB7AfR1xCO@d8yGki7rx28F^4^-R%;MBqD$nx)J-BKTwB3=i0UIh+?Z(nF&NTAIJP1 zB?$!4t4a*yIpF~b94>*_pFFA%jYpWp6wf$=77CM!d}#0(J1^*IwiY7F|zi zzKB2p_`Xzp7<;C#xj@MwKa!J_%%AE)C3lbhLRRcSL5S_n7}Pqz8;|5JBzYQdF%kEX zQ+k!%9W}}75cFQ91yQ2wdm5rW;x|D2mRTbrt^mZw7l8OV(;eeSyzm7xa55kVuC7E!;9`jusKp@h={;!ZQ5$1Q1A8;XOr!+H$+6( zLR@p;{N6H<{VxhNP9wk#5c{o>5cdqP_`C2SW2tcDAU{J?TLUo-X#D1}t{Z(QJDVa$ zOU@Ay_#IGas4XeLF(so#4ulUua+0vf>Lhcf#TnGu{m@6XiFCfcQ!?}rU8PgrSL&8W@ z{21p|Vq|-TkL(S+mID3NOHs-*HBtlY06D-8_XI+yt(0)G=?%3E$_zPA;7UKAx2)f>sM5I4r^5l3PXZ+K#Nwu0C-EH=FQ zeu&Mg7gqK&LV=OD$WQ>Iu|0Z(uqu8+DBvMQET%=ahseJur0)tbIoDs@?i%m&jl`sN z7q=>-l5HQvhP%p5?D@(^)39glEbs32^_Q!eW22_-PUVYFSyS=v$ z{?-XvM6@5nW9ny);-@sa;?He+vQ_z}cVBTvb-^04#?>2v2E!8JTiXgzS+3f*YMo!~ z2JSzY!AYMc8RfM#9OxI1%SUBVT3vqfg<@7%dxyzwbok zowtDfcd#xMkvrV$S6LKfzEWvmKWu0Z5>dD4eFikd)o z&L0ujDMb0>epl-9pwG8634Fs9-|gT_kbGzN;ibPX#k#vIqc3-7R7SUO|9V%mtKH-i z(HFVNlcF1MnH24~FH}ZHo&S9ZYuox97rXAH=;rmmYwUhH={yZ??Bw&m179Pz=BLXe zBk;2K#f#m??rPTB2j%8YiEi9Pz6L%9>4FRaxABzdW}yI()5N`jSaR2Y+PlVEVqXM?T`5aGR%_Smm$A3iN_9h~*K3UkyF*)WGCc5NZDYy zi#AjqBdYJA!6pUA*YmAzlTmVB-({L1I2%LebxQC|Axg0rPXFW6JYN^)r>2)>=9lG9 znLE8=M*jS{=~L!Snmc{Y{MmEeBdz;3%g*kF{S_>}waCP$oPV$^v<#6NkDmK9!eo`| zi%gq6YwGlC&KEf_8{yxCH4uqNctVkv8J{GwC5a5^FXfpd52d^8wuBZmYh<5-u#`@i zJ*8a7gwYV!*vknqPrW8EAaJV3zej#Ip`Q@re^m?=wm$X7h50ut{!ZX879vmnmoms{ zC;i`4uuu9JF##jYc2VB*nQCZpKd6l#v$^UJL zuesZ+&s9#dm{>f>Ldwql{}4a(|0+J{i^s6PC?M?i)ohu)C=6CUEAKn}2m9DJ(Wyr2 zI>KIf*5_M@ZHjEfW?t(5hvpMk2AR)Zh#BibsspUP?3yL)j*a9`{P9zcEbycu5DqB& zEf!~Y#4KzOR{80F6z*QR!QlG`_zpo}IRv&8VrWyX*k1URQjAr~>{|SNrsQ2M1fGwH zWO+5HuHc`_a_3fDGqWPL-JBcdO>5UBM*n~E^oncB=G`!74z}ax#q{alr#Gmvu{TVg zH9xUzehfIvW=x(tWkKwm`E$EqEYcb0%%0PZYK#s0L;?9o*j)vHe5HVNMtAQfBB?)1 z#yZ7_6`ih4@CS>K?2f$=z_eC~PoRUK5~$-Zd5aMo5mkY+&g7JF-R!c_n(zOWR zmLx=pu}Xmr70n0dWM{8ts1X75x02hjC4=)8d`cqvLfTrT0@TLgR;+pjunf3lt8kJ| zuqbtbZ|V1#{(^l`BO&>(=dYclZ#5Y=#4l%bn?89xX4B+1J34C2|z^+^#r{+OOFV^n@=zg4PWrUHOJ8P1}@62X4mwJeYa1t)d^>o zMC=(~&(2EdK`A1IZ^NKGAxdrZuZFz4Hhua`M>jCLS%*!r&&Ia%s=47&lh7s9Eg1mh*c&Di_EW@W)RwYbZRvC7vDkHv3S~WTH(Yx@A+A+deH%C}$ z^ZYf=B+$Gy?a}uNd)X22VIr~a2JrpthW%#s-}L$G$;~8Mv*8Q3pue2%$G+)<8jY#K z==BOb2LExJ^$L-_utxPzU|CoVzSo$KFJq=tsHl4KX2o|W_|}0>wp!-PTdaMVy$}IV z5Z=~axC(z&U_8V;e96agX1ZY?f=tYZ1+Rtk!B^|^72Im@%~5>tunVX8JakvMRw=IH z?clJ7GDX-!14Og%eOR8__a71d4BY*K8Mr_0zWi-?sk?Vn-@pj$h1>Jx1k)akb0MRD zfb+5Ncv$rpkAF6hKM(HN@oUF~k~O!T*?-qNzs9px`$l}UTF3XYX@BH?)-J3?aOS+} z^U5mb&YU!(V%9Z186p|D0RC>Y?4$O=BHW*qS?L<+rj7ukRbba#^DV$om1DtREcaGU z#SlI~dw4Lyw+=xOnDQpu@-HV8?sREIq>T zj(E-(3{TP6yF=5=nGX775zf{q`PfaSy<0o$8PM_KU`59}E<6T!SnQeFSr~kCUeF9a zeIf(22?#dFt=uyq0I{w$^Ai9>mFJuS{TtQJJ^3hH0tg^>4z|T}KNg6aQ&HX?!*u+2 z1~zRmPUbfD7z{dQ1F3jOs_FpfO?|q%XHonIx*T&bf^Z{2dFJ*9*JRZwJS`iP8GxIE zGYO+_gc!qrB~$mxYy$#SY|e>kHVS?1Z<>c^wQt zp(3Ebjad@E$A?)1E>s7$(e0eKd@c>+8PK5$yVrIOe%Q#9qUkRv7(1{^QV04mhT)@l zS)qUn#JfkW?6(<(0rPbQ0PSJw9?kHYJ8fzFJ|8ALA;W;WsgL+v8U{*&ON*eM1pU5{ z(n5D-IzFc!20bgJ(V(Q!XzZLRsIALD@5YU$t=}lHQp2qV-75DAFtnvsgDt%M!T1e6 z%+ugPhs&7>uB&`549gfs0_?(Qn+YI6(-uo4(LP44}|8oECO*j)-3`hMqJn!<%5ZTmo>1-(r^U{R+lbaN!pV2i+3_ z<2eOmC+MGFfc}z#u^aTSFF=1)p|~IP??CU$D2(!bQvtw$n2YTR{6f0yR0~#_FyB@% zUP5bYu37K(sdIQeh=}!?W_lfF@h(+n`@Atp3Y@!pX9_xvOuD z->>^N0LnJ|IoPh$Y~4HKu*P!>h0R3VG<2%sN_wl2BmzV=1ph+12Lf^knSP5gf zF#OU2HUw&=>|v!k!9;>v3tAh)t=}K%G5xov`};76Jo(zinrX zZu5n6?POua%~7W|RcVbu-yioh=yQa9&0b-}{>nj&0TZ2n+@oMX|Gwr4VRdXF!!Wny zTEhj6fd`0biE1ANC?&#*u2R98r>0oa;a==9>xFeyMF<`1>o{C$55F1ohlO=zZV1eB zA=;nCIca#(F$fn=Kg>a%0dq1l*oZ&uF-yUaB%?sL{5G>RkriS{ggs`t5I;SlVnq)o zax#4>=xaew51}JZ`%}VM+61MEu=d9f>UXg*t5kkO31e`Y=ErHFFd>x631#F=dkw$b zI#-qEhIR1=blXG;acPVx7f#;eLcBF0q%!P%8D=(Ri3 zL+HrEW@0Wd23}#uA%^J(ZG@c}o(2Ql!j6R@<$z2~M^7Jv{=EIy5IXVzAc3>Tz$ChtQFS>GMEe1iBSMM;@lbndYHGtysx) z112&t!y+(j14APzz-_tN2+%1ja|OY*3y-0$3sHldOy36jJ)mD2LPs8^V~Hg10U?%c z4xu9t)9(TOA<(a6x&afJnBf61z?)R_65;8K?Uh3N)N@h*{5eh)F3C*{|Wj}psT^_oYw=8hw1+Y{TDoH^lC_c@GrWO+uo-^aBimTOHDFo;hSgGlTfN;Z zEr{kyxf1c)K5+F6sT5QcOM%15za58zt3zNwGSk<9z7h0`L+HrE^xHwd3qM{hQ5Z0h zi5WJ6;m=^eiW;>V_rMOreN$HE!W1X}uR`<-i8v@H)Bgl)}M~r6(3~;1ocCb^zHN^aG$HK4`M5{;FX?Cp>P7 z_eU&w4fGfxE~=|Hb!$a=S<|$|)!r^3nI6nvDB{R^`>Ak*{EdA%J)vwkpF#q&xP$_?PuCkG&0P z#Q@!bXO!GQaMqgL5H5a8~+Kfc)Y2cwYR{&WB$E}HDOqfRvI_?WTvPy6^&VYH`V8DIB?^eksf_dtJ_%lAt zj|?u{7g|=yOjFJ81|9c>5mw1WgI;L)bhHQ{4Z0M4+~h9ruM-S`&7dbi@~$j{Cx^tqG$<&~KE57z;H6 z?hD&m6M)bMi1Hc|Z{J#{PE3z7SFdslgIg9DOOIXPrKHV2sNAGaH|V%8yxuBGHt91BI_?W^unPa}6%ku_ zy}^L{!mU=};iq4JI6mCc-KFpbg9rD8JFP;~1r}~K=(sQ3Z57r7xznKIzVLplupY?W z1|9c>f3nc4%GJ-`u%fXh{V{|7 z7}`o)SkVBlnz*4psTvZVQe2EtXnL!#BK(GsZbxVXb`b_~YDd$tj8OQxHO4io;RQt} z_Y7BD_!ezLM)}?CWj}u*cnjYJJ!mq#?h7acbK$SFPubKL@RlI}yoDcz(BEacbF_dB zv5V3z?9&I@d!u0C5t*Nc*#ZoyMdj9*G;DPG3XT~HAgu6j7FIG1hw-67r+e&kHbsAT z{u2L|-;n;Mm{1Ibgg8K(ohSx+vhHk3dfEb6%o^3NhEU2IsrXeSS%eUUi=E^VZ%f)7 zy;y@T3NSs$^}@`}Ll`2N!8vkV70W>j`vT#*Sc(uZkb+@}7`tcS{t)l3`U;{Xo$9@a zWW`vy?-`|1)ST!+Gz=hQG_h9hL&msVgvLS&c)&b}EvH6S?gk?`C^8xr3+ry>&Nmgr z$Pz2~0u2+^cHeL1E-|7T$hJQXzNP?>vc9x2>$kk3SlU9BEw>2kS4D9l^zH^7_eF`; zXuP$;FM&8kCj%j?XfSQ;8uHOwf?5HXi;_baP_#@Z0bnkgMmxWL%Ptyh003{%KX{8aFx`()iqMc?F(U>TBrE%{2uyNo9*?i_Va}0a2qs*Z3(b`1_rAq5Xn7WGH~JqK~ZX7G`}Sj?@hhV8&XsOKkvzVy06c2k+PjqPH~| z5J6IXGQxvgpQFx+aQBj@<3IF^=~F3%Q3BD}w!BI0qx{`K0gYo*tx=yCj$*83pn$@$ zms_Lu8&-^skaTh+kZ{+Q8xAQZ`fHAhMWFr5{5=U4mxu%w(ijKZWB{cRnD+LD~d=!|lkrh-bV;kY` z4hugF=Fh#xW=cBCCs|Xi(qgE0g(e_L0Hc98wqLTU6!rLE>(ozd51=POw zpv|nbh8`1Fgt_~kS6aAb&5{to71^R6NeoN58C)6#T3p6|Rbi1~d#xdVHI045pg#io z8`cmku7tZaFBpq@WA_?dd%<1aT^wl*Sp+AmQ5=-{xx`Q|#ZCCo zf?pPglzb{HluL1Qi(cH0{|FdcF6hl+v9;ZI;_W%bWRIk=H; z8fO%X|0cP(G%)EK*T?GL-)x~cK%vdREM;7z)&DA0rBqrgN2$`vz&+mUnAI(8z?=R& zkMcTMH_5^pM`kv$5;mJN)p3yq1A67SC@Z1LXfxw*Y(fh_uN*hmN|<8OqnJ+RXcr$L zFjm4u!)=Yjk~8J!azya@$yquN(>9Q*z1!?WuC&4MUsItBtGx49+p#vc>6VMMT)sXWoi0wqno0#f%TY zxH}|^oZe;SVaCdd|NmQhzI!+;?8+oHmm7yYDN58W$H94w+bB*yW|qucCOgMg@+VzR zj~0!>+{16jS8sW)Z}U;(FmjIjD^!BRa~9)nl-w*8gXFkp#c4cP>lYWcW{{j?3L5TD z_avzY-ibfZh75rb_Bcd$#KFLSNlz&(7@k&;H_E*vCF}}!=bEr4+K9VYoHSx1GQJ^B zcQn;uiv`I!M*Ax={q!6Pj__Xt?DjYeJ4Dp@vDZS0@jnataq*KmSV93M=U63w(&eXo z2xR04;l`nKiKdD?BReh6y>3%jCk>cK6D1$x)3`6hPa{mga$@WpE79_Q{JR3&1z@S3 znWzDOBpDg-anPHHA3t?_ycb_PNV9ywEY7haUnU-?l9*2b16JyZrZA`F<>$HG?hNY` zge~Nky-g2R@df@LBYwo0ZC$5OX^%%gIX1$VUx?1?=^q~@zsI=|`^hInM58yve_CPV zLerZoeCay>PMi-53!XdWOm2+MP77Jxy)&g2eIss%baboA6O@J{>ca9B} ze7NrPDs6mgMnu97)Ji`P1bBNqo>V;s4sC$p2LRq4|Ekzw`ekULmg4jY`SN&dx3&ZRQh@yytjr%pLfP5SA%l4O5kXcZGAHbpihqQmM z%DyIU=|o_cJ)wixPQihj_<^y%4Q!O0W3qeE{r0Y0#351%70y>oNRhmrtrOG^A=wI9 z_Jl049a~hoVL&S-=U7wzq|5fkm;r~mdE$XF=0V^!MMm&J7FSfu2`b=wZuLzNW-czeP`XaZ3ipmrlzU>4{L#WvcT(sVc} zB{Y^k9Ly3VE zLeaxwTRRijLMA(PXZe#ZTk9Cu`85Zl?Fo+y;+K1zLojI4u!6j-VZ$==+=yGlIwYy4IN>jbhKG^kO|kV) zriSN~h7*zx*R43C&6U<2xNSTo zz1pV(2_>hljz8&AJ(G1_pjN(u6#Nhl@p_m`Y?+U>VCq@YT2xOqiV9jOIdz95AFkCS zMWbjo3I^FFh%1Tc8G&JX`O2`)Ny>_n%Va*14_S7}U{RfF%BNw6_t z@_0aOmtZzW92#{y$<0zRR+f|s7bA`CM9@OXse488;p)DQCgjF^5x?Oo9dW{IF&a-Pb2)X-OKx1Qlbd0jeVayIt}ugn}mVr=$V@!7;#p z_42SL?hjwZ-;t~(-D#*>jGUhe*IZhHdP+{6{G|IW@2LQ<39wUu!^EdgeC?eADxtny z@&xh9MhYSJL`!UW!>ou;ne5a(#GiE8GD$^wfNvwvVH%t8TUvgu`XL-Q_wVu5?t!YX zwq;&JlJO#U2f(){#)>WD4NcH&PizEfyL?S4M!YwX4_o1tk~lCmJRl-Q*NI)&nhJBL zeH&k`D-seYId#=q%GxhQWA+TA%CRUiF-;P^lARbM8L53Rgpp$HM<%RTraN`22JpYN zuRx$%^&OplFaybO^w8h$=Zofi?ETdw>8$ZIR(F zV2wTTA+g5X?t=nKPTeg2q|2HSo<-Q*nfQdH8I|9cm_jT{Y}g{ziMdF(LEuwjO^Rue zbSF-o40K5L>VNAxx(69v1OgDXMSmt9>8D_gJ@E~(`WsWAbg@odrR2kPHBQ3G=KKWs z4?`YkA$8Oz#G?KUTlB0H%oaTbfk(ya*G&L#Fx{yu@c~?~>*z&f_y`C<)D{_Yc35Li z{6eh8%Ubjh2nCd!x*}g-u4mC<@Sl`4qmH=eg;>b)FU7+Pcw*bP=zFF+b^eV0);iB3gf69xArG{WI*Jdm z2u`(;8(t80DbH>^Y#PLm28iz=w28RY3{C-xl2eD7zDl>^q@C(ZKO+Oy9Ej)%EDcCD zDkfyMOIwLs&2hEIGK0VN1jC(>`GH1 z544ba!r%ta{j)dN#iMUEWRWr2!5X_XU937{0+5zCb&8KHTH@6atg%Z+0Rf2GqQQnm zSb{Gt5Ub4d6;MFQsk=h*;kv5CvnUn(*drjCQAadW4y_}!#D**yE(LRurbA%4Se0*D zRKRqnPO{N;m8I)w6f#T$0(`42DwdoqumJQK;udUa>b?X8l$_c#{7IKvPIwlTf`7iG zh15};mOokMgZv<&wM!R^Ti!Pn%wPtmR`n-RfTN)7PyyC1#UM&F6iNLtjT(WB7ve|) zW~=F~@d-toG=Mqs|4nz{uq>>zOIM3q7McJSGlNrmQZnLtOC?(vst|eS;|~k}#H$rl z$$VUb7^O?A#VzAZ`Ky`k)CQH?A_b8uI)`<3DF)SA&_bFu0vTBNix=Y!XxPGa27uL& zcb`~!&IC{`0R(GLNJd;&{=Fd!H$cE600drb;SQOPEySo@`h-~dsj1*TraQGCNj_Xx z;@J*ag&1Q?F~)+1rzPuk+};ROVBv2R^9|sf4c6fvDVPD=2Z8&=%H<}2Cz$TkQp=WU z<+bM-h;vmGbiz8j^Z*cnSzEYI=3)gH#Y+#1l@+Ff{Y-ai4@o{;S4MeNh%vVmV=mD` z3`E>wRAF#*V#9U#niR|c_Cw$&Vx?mOIII91&;V9Y9CLoJVB_pktV`5_R~rapVZV%P zV4YohQmioJ8YraX)V{)>bXl>l0-J7QEWRQ!*cy;7QOU#fs^s{4;DnGCk!hXzA4<#^bWf zBrU{3#5G18j_%)Z6`nN!oPoUNV#Or}fU;mDGdQ(-HGt*6G+-gDv&*pUM!cSdWlekq zu+A>)AeMh`Drm0c%b1t`vwXX%LKtTU%kZNUwIGIAC?}8H4g0f%hU&1aC6l=dVVzwT zCzju70_ebWr*^aC!*%&W-#{vV)D9ALLs(~*B?1tbwS}=nm5mhE*=5OMxp}-93Mo0Y z>-m!|%VSg(!Z^EZgrtQSC?`n21U*;UufaMj>njCQBZ4x!Y?N4T9{vI#N>1%+{-n#Y zbH0W6uVEnKgR%n2%LWGP@I|`J$O@A2{}Qq6XR`=LG2N+MF8Od>cCS~5Bfviu0znJ0 zP);wn3j1-!3soUMo?VtJ1v3D|17*|1vTY`S5~e$~izOef%a%7}VFB{b0U+?|DlC`z zSbhoU3&gUUrF{8#HWX5FYHyT`xGszJ>ToJDESIzp3uSPwN5h1Mt8j*t%K#8Rl&z%S z6eT}{r>AHo3Wz8q13+Nb7FJ8-tY9Womzh;QWfV_A@v+AHxezxz+gy3)3;#@?=t|@ zK;ZMDs|S`0tW6u{?~{X{zqH*gv`hm?ghg;qRJd@p^y^2df!Vy zZ2fXX1MBRv}~4!R_TcGbzIeu5hsuz$8BoCtBp7*^Kl`4E9~-s2wn>LNt)p_ zGtjRmcxma2UN!xQ3{4>rwE9N$cQ09L7;(l>avFJ}#L_1XBcPO$Q`=nf;ktBJLq?oM zew?TwUJqk=q|8S~K$cw|BbMG}8UclroZ6<65!a>ZswQB7UEWpF>KoC|eQ&XEM7aXT zN}`abyI5*2RYEBxr&fW%{n8E%7y$$9^1hN+8_|LD^T-cbcKKkjG`gMRxG?D83sR~u0x^RW@dpwAae=*W=n6HrLWIrmbmwTDuS0IUp6{JtfL*>CI>D>+ zFEHfK2YmzmeynLkl~Ul(w-)2*sH};l$gm9pz4?~*zwvI)O@%7Ca_jr{uBg)R=*~C zyO-Q(7*S&=*?~O!#3JueHgdsGO367YKk0taje>TP&)?OB0e1O*$*YanOIc*Z4Ow>i z0kMc4ZPi_T2j&e5f!v*g4pI37?nSb-T;IVQy*${IY& zXZ+TV^S89iPsm){jR?ybF?*-k0#7pCIl91;E@r2Qa5i{K`B%cOAmt!xgO$@@fhR$a z6tfdefoGJ!xmw_?zj13|tTr$^M?vGt`n@P+l>64$u-K#%ayTzPD|4~*Gmzd~%rcKs zK^rCK=nTn+>#TWR{Q#;B$V~L$Ry2`}BoLYHitb{T`OpUx*cF)M9xe9;jxp+|qNV(P z#9k3Gb~4VD9u%{G6-{*gATK57=y<<=hTP@V54vPUKPH;>^Ga4&=b$pUB8IZd_QO~b z#gKJIaRM(T?s7}(K5_mZKUy`q67YtC9k$Wj+S71Gwh@md%T;JyUgk6Qo%u3Rcr(6u)XqHj|3wMsj`$`6Ttr!;A625p7>7|pO) zDTvYv2I9Rw(v1PTU4aGUqaf-GRffdHpl=of*PDn}OMyqu_yUJ`<$?8MG(CrCvXx}P z1xr3Hf1Q>eB)B$y=Wk$NQ^96@w*x{>`U;}WepoHPr)LX$L)nNw#1J$yzaQ>kIz7?m zrNjr(0;mWpsR3Z1BigxB!O&3&W&V4X*Q~*SjDZWsF2Ys#FYv75jk*%v!)+L%}1U9}tO4Oa=Rtf@ggNc!8emM;HYw zFbW<4t$shEMG6>rHmhK?I;Dy!I4q31fQ8Q+05CRI)QQAqCV&G9z!Mrk|KBcTAsM(I ze;D?TfL9y%4(H32-2!7}#aE)gxfch8l+*)weBYm1Eq4QK+E#ooY4t7a>&{LNyCQfY zgFavxQePeNpA!A+HR`XJ?i|@8`Ec!jV?zdgg8XNoAH3S2Z+-be7-LsL07WjE;gnKv zkFNl~MI;Tver+W-f$0Ic`Uds!stjkOWWEM#?6d}eUPUdviRf<|004-Rb42zIy6^XW zLl$DVt;BvX@p=YS1}KXhJs``jY$f`AZOU)LWIW|X3kx#!!)qgDx5I{TCBh|oo~^!x zH~=aeW&Z!m!pbNqlzJVEvnyjoKl2bY08w&|1UE=VT>D|k9RNbQ9hFXV{KbJ8yxPJT znU58;0zFamD>p5SWxDZ1l;{`k8Q2N@*dL~+rR2%gGkNlSI5t$3g=rc8k2{nng<)VeH2K-9pa4D9H7=w4^G?9P@rF1U=AiJ^zN>pnFcS4Eb z`YVfNetLkY7nTV}Rft6PJ11n!h`g-dIYKuw^?qMiXahia4v!wG#3eKr%H~2Dcy$St zO9lo=U>1wshfILenC=`YQi6o&U8Utq)ZG4A0oIT4iw4ZB70gfqa(w}*yxa?XKbPSb zYNpJ+amr+@z9R3P_``UA1iU)`e3_2{P6K_l=smy$xL9s%IY&ll1#$ltwDbW5zu}-_ z#waGR0u299!n|5Rm7xH`f8}NoXYR~FAtmRCY%6phhewN*{8_nqSwUGgtN`&qCE_Du z)(X~99_2_d{8v6A;%+f5*vw?-NFsmICGJKXywmxsk*5YSRc|5sWV4L~cgT#H7zukd zK_fXW;#(VWIx_@KSMC>GvkU`*ut+M1 zl8m@^`AsYEn>LrwLlE!~6o6MN*sJn4_VfQq=l6qi%0CJ7zRH8h4_=i&Xjkr&8M%=l zeyDs$bg3~A0x>1$NPs`-(#0=<@%l>!_#*Njm%JL_Ym$ZKV|cIpKy>j-00$eOkdkxw zd&!6^UQF$E!!-RRD>w-LFC?#4a9Faif_FgwO2qzP8t?(rox|U1QL%S>@`LC6&dCan zLjd9hV%7>iF%*0N`Y92+#Z>T>Qt*YZptzxK`UUd;3i;qA`Mj}JsgSV+6c3ygvF36Q z6jE{yD;2c&}Me?uZC_4y8^Lv&T_Ok^*Z&%{j z1u<&@O{4}=0QB~x?xM4K$N>r|Ifqqa!+mFrFWL`GYWe@M_x|Bk6<7c0N=Rl0MGX=l zK!50l0>qF&kR&H4Skx#%Xb)Oiv89!^v|>vuZFwtg zc`H@grY&!qTGUw67A;n^QDa5bsRgpNPb^SK`gb?CuhS&9axqmAB>K+c?h)3uNBaOvWyf;(;B)pYnA{eV{lk^R83 z2~dXHcc%6D(=?xCAPIOrjphl7cR!6BadO%YYC?RD9_uNH><5-%RT_Un>nX?*KBw&q z9)DWbMT&6QE#SWe{9i!-?+M7&jACIX2#P4}A9fk$8wIVtg0D##Mk&I{;GYZyp!MVz zTJrOOms8qaH}Vv(2SOnyr){ey#Ah1fjrv7U44P8l^*+AY>dTjzhA=&z)b;zwnR_>l zZnKN9RQQ~>8jnBqnvmz>KpC!uvb9hKVlM}aHKTZ_2zWiE4z)d0ZWL5`3Wop2lOHHT zEN3snntZ4Y#GZl*BVdIupwSZ$=*zzj0r$c{(0csUnokTY2fmet+mHCcU`|fk68Ywj z(C}+K1(ALEvJDXMh$i+FG-yUqP!GJ7hDUfn7oF4QiyHQ8Pkv-q4&&9b$FZ@^#GZof zmV&Jy*h|Cy+jg<8d`_FGOrRdN-cu0SmBVb$Avl!otIzBF$6C=459vn zV_2+R%MWSB!np{6b%Y$8A(XmC=JjZX=fi8q4;~WY+1m#h8`f2pkI5(M!YWCRi(-syb1#i& zXI&Z}8^F0wi!dN3K;YvuW@r;HrT`w06b(ODRyKFh?1HkH%WD@cUxw3TUH`yYVt`Aq zAV^^Ff0l(mJuqb;-o_Df{JV5e#J^LMQU+o%D?%8wOsDTN_SEiX9z(reADocq%?Z zuH&Y|FVhQWT-0&EbJ%s!9K%(I`Lq86&NKo3v69!W6_v}Y$}=}Ct*Tq@)mm+DPdxnK zd+DQlO@KFEdJe~R-}!EOpYUhiO-~Fz_Fj7b@P-d@_2swIuZsH^)hN94z4W2sFTcnC zj?IyOQ^J3JE+#QN=iT&_-rO!e&c11(h#ET1J2+4p$j8~io$i@Oi+)*(rHRaePE)IOY%O$q|k~Ae7GUT!J4F zraQlS2^=plcYgU2_+a3VM&f$)hpVFb-PAPiq|gWlBtiftM0Se6F>H0-YopwC_zryW zZ@?QPaGCvi9)1y#X*%zYAkbsQ$2jrR{A{XvR0Cgp5&W3W*eSw*9|Ol`o1gjxEJQ%k z&hT&VotSimetXV&5r;x|ewu6UsL;n_{RU}gD-4n%UnXBgXvJBXol`G?Hv-SQ1il71 z7Urb=g^S-!9~AEWhxEim+k|Bx2|x4XwS#9mFXE;9&JmXohv2=PDVM-=fhTf~vu?D? z?gspN`6al90T0J?r4PQ*c`=Th*SjxH`$8A+w_IF$%@pgtdfGrYX*UDQxi5Sl{LcsYfrrR706oy_ zKkiB3;pkXi|G_12tU0}|U&r@|Of~l_oHp2R1|8JjYd0@cL%`QHudX0G^z`+H3o`+m z5T5sL`e18Vn#-dU1|$6ut4E2UsOQ1%Aab3%C_Farr z(O4oXD~9YhGB5*8&C5$&P%y2mpkRJkVL@5(y7fF~mFYqc9FsN|*YdqQXoqBb-P@<4 z3z$|MA>b1)3vQlsO&-`;4(s4KK*fjY!(=Yf|Ksdn5sx#Ij#%U#lN6biq?p`$(oJ!J zRwwiS*uei@2^c(}>pxW&l)jNa#|ZH23r`Qg|1oNlo~ot8Cq|KRTd?9|Vh@6FT2{>H1aTs>^0*ydni-QSKXGHwKfRU_ zlN#=ek0DZ~)?lIkmrR87(ql%4@4m*RVqtqMX)n}4Ni#R+n_|c>W`F|!1#c7 z1XnBSaTwn=;9G%TMF}_4RSCRQM+3fS2pT}}00_PWf&_|tjS_kTcZCxlKZA2i)XMWj zU)$rKX9DGN#>pM4!21Sd>?C@kkp@5tmjUyu728Q4^EeLIxZVHKt1v-Tgo-_a77(pGJgQfs~1vo}V;8+v0@ZDI$A4qEU2;k2VeQ}gI@7y(D5AgB8 zZw8K`UE|oQ@(kFE6=(!$nvJ>9{68aj&xbgX1t)cQ_&$9eCXT&SE82m-g7fxld_QpP zC*jm$wc>OX`~dJhz_A#q7^M5IEu(NKlRU?5f{R3eE#+=hy}^dFFf}B zKoJ}!DuhppMuYzt@H{yQ)6d`$BmWTa;|K@yEM0}Iii&10hfvA_Rvdu>Obx@C0Ra%o zM|HwDwc-QPQRS0N+5g(uCa$Y(*& ziP!`jHOPB{|Mm*1|7XvG2W_hCE~AV9fs z8LhyA)yl*u0y?yTD`3cq^T6u^2BK{F*ydtvO0CQUzQR8*S&HzCF|ZvtOy3^TClUJ= z!s=;NI1+LY2y#FW#LoeT`*5JETA3RK?=miiCs!5`ea<>tRt)Gi8GxZH;knQ@yzxfP zXLfsKh@B2Tm>RiLE7S01?A}NmOi~0Zu(-W433wBVz~bj(;iHz}ezh_gcpW@!Hzn2RxK!@H7~B2VP7)8Nf4uBlj!LfIpN6g72V` z*e*iFksKt0ARqYGaGz%5$Q9R-73Y8#M!`{UxQ?vo0zNAWo~sQ&1$9Dv%-vSpO`!K z6$A1iUm!1fv25z$h_b3GimT9r8RI zaC?$x0E`j?%7Jfx1plo(JAycLh)a~*JI-ryMk zqr`w(;Jc&XFiH%l2fil?4x?ZI%D({wdqFTFU;vB~1Db*F!;|8t!~6*KolHC4Lrl;--5q`Ahu+-G2lm@0WeAoz+xbuJJPz!4=GM^`%w zv6!=VyniG$_w_3e<3z#NG3DKc>rR}9cLo_i@-lD){r{-*Aiy&oE02NTK3-n12#)F_ z32_{uT6rA!@Bj`T<_E7@c>-s&eLsMMNATmoPZG`lZU8@l{$B`AfS?UetF;9Pz$Exd z;HQ9lNBinYCG!a02D}}QO8rlOA3TDe0)84e;?zcDupRxs5VV7!0|Yp9FM z$&vH=3b>2;L8mH!C;lXoA2OX!zsEk+DX}?%AM@V?D8Q5%$3{AfZh(N5k*$D_m}CVI zq$)CiUlULOr8rGe;lxL05q3=a`~br((go91^9hqU2~w4e1b(xe^l0Hc|4oL1BoJH! zf+Zl>8ab)t;~{Yrq$;@8-znpE>DQ5%<`=L_x}hj&bR{B?>i@QR>N^UGN{+Y$Brl-xY=lQbc@IjorFE2zjPXU5Oyv47bL zinQ28xWVMpCKnx{$NpeWI}rmgOjp45d@=@tqpON4dhB`=WnXX%(}Lqk8*E;yipBKU zW#R#B)eAwXMZnkPwC6qJBEc7HoFlG(26wO(4YcPq6LDSeB^E!^R@0v6ZGPh!981Qh zO*)JILVMacB74ZKr4?Xm);XwvwWp6$c&MEN4AX*h4$ARYi$x<_0fuQ0=j(d;HW?HsE!cSYXZ(;1#JUOS?|HkLrj5jME;$9uVxKU2Xs|!7)sG_+H@qX_xzo zxZwLNd>`-wwCi@;!2K4!ANWDqH8Erp9IyxufZ!1A;+J~893HgrgTN2dqY(xkvhYK| zkIzHXsMLsdorKdiKH1en@%8OimrnA`0aek+dpxLhBPx!rz$uHu-5^Yw|C z+c#VCD~?+@U!RN#-M-8wIAIasdf~#D+c~%@dw>nZ8IO_{qI_|DC5j{F_KD_v2NVGp zk5h_eH$14~-1Z&Nx6>nB%RLXC@^Dqb@=k~7k!qWu-6CiQK?gl@jg6nS@YBFM=@BfI z`3hjDF@Skh#Tk0|oQ-!{cqj1CS$g^Ej^b}xDP|-yXueJHl zS@=2N-Sn{g)TQuuS$G%b{}t!y;TvrM-4;PNsY;@j2m{Ys_<7)Q)M6V5de1;ytI7mw z;b#KfA^^RQBYuEWI+j}I8v?0>-vASaTz=SSAzvrPl>E@bEBpAkTqnhpJYnOB7S7kn zF*q^TuS1nd7M@f9CI1yug102RN>-U{D%mJtKV)lTN@}>0$&z<=V51^??85Mt=d*@{ zb7qg*5dO-l@z<^VD62lpP+dSB`t}{9z7a#t%-y68yawfZI3)bTh{ zm6Pxx(x>nt-24H&CTpkk)i|K+=%Dc_;nG{irG`8DWyFQHt){r&ep{%VM=_ByX$xMa zh3zQnwa~qs1e3gY5&N?LSK(?PUscZ2Qc*apOI5CZdI&#ObU1P8SHf|X8)?hWOyLNQRTm`Z(UJ1aA6xF0C&e(6L+(`N z77Ye+_`eEQBMNxS2T2TA33>O?7IzpDe51h5qo|@LZIS4lp(w#zkULfR5DWsbm&47P zO%xyiW#ul~GSklCeS$lW%JR8fHzV?~6d^LFD!&AIzycY}){kBMhj2BLgU?w8+y{YA zQ1d@*19lk$FtIkN`S%wq!iT{B6bwo<58aA_ux67S?gGKLsQCq3!4rZzJKuNZQ}ZS% zL&=@0#O63-fgDN*Ly?c0X-*>l3Gh5i&DHKmE(Chx+u3OZ|G?3yM z@MA4l48RIN!JVC*nhu|#(90Lg;d2o1XBY%xPr-|p0)(iqe4P*tOZS12 z!`~YPulNe?bBpM=pnnVUfLR%g!%-l9I2sXxT^3G~i{FFkZ3?-89tD40U}tB$eDg*JAbDMS%Kpg(_3J;5(0r)x#06m zxc7}kzuarZ67@-ss zTsQswVwwB^^g}dlxVd;-vX_%p2_i*Y35jaeC~A7eDlcf|_0g-2|PWbxUJa zy51cfCBE^9Ws8x9KX(wns8w)J?Q-I$=jb|b4^qUlV+z(XrRl(cry7ZO2N- z)CCz(t1yo41g)0|YaB%e)T&+7z%NkynYhm=z>5Fx06B7_}^FpUxdK7Y4a4@Ie)}&uYzZy zFYp@N*LeJY*1vPi8pNw{CLgDVP=d1VAqKrFxU+M-9}{JrejSz6YCKA?>O%-0?`A$C zW{vQ_ZrR7Sd_?Qqw^0Ru+sMCB)8TX7gKo5sRey&LY`^XV=o$PkOCScU)tA#cH<+LZ z{KyE@cOv}Hx@)91h^=h1vlEyURz%Di;l5x={|M3t(mMBL8pffGle2S_ro-pjqo#a{ zV5)-20=nj|zDg5v3jwoQokeTEXO#~W#JyDu9)G&L_HmR?xVv;*hTIrUfLQc=%ZR^B)8TVcxj3z7WSZ3( z;4g$a(0aMdvE*j~pGA}Ifc%h0kY^O==>-2XX_je1uwAV#hCpE2{>aEQl7W2Tmk9)n zSF1}22i^L802Fd^T0hZr_{@8qOk^5Zt5)N^E(S$`H>J%EyOC)`Ns(rjvYG{+a>{$j zR#Gas)7tGT+2+<&L$nort7L5 znMTa5u%wrRx|#CgZRw`Yw4U~)PyC1Y95?Hp3v^@}Sguy%nOvsztgpA^*8*>$iGP9o zRF9xp2%OeGcnWUra62p5u23@t^cc2U5}SeVrJLRLEy+=f5!mJnyx;Z5gP_lVJYc$( zSdnRD`JteA;p{?TM9&}os4(`*P=~%NU)^fyZGoIabaSKaslE6O%bTq~_w}M^yiRiU zKK(m30OH3TC8yvFO-AkWI!W+ya$5gO)8RAs94ZFxX#)XhFd3*?1Z77wvF8{w6Ox+8 z#vG&EzuN{L62VUEv%Z4gxXlL(g{xnHJYc$_cmZ(2P76m<83rauM)LF>)^bGOA@HB1 z++W!GjtTCxKBMXInY-NW5A5hH$PeK`N0MwHoh5FlI^`0dK;WO^qEAH7};JNM25Y^$g`swDY2?ztgJkgjnBATuXa| zxZu2;!XK6(nbylohc;2?86NUdqxPH)*YGIXSJ3nhu{6 zes__)ARnrV8$W2>yi_G?K9(PXFjbXB6MktcNEHI7RnOG!T3=cX0n+^MQOn(z(VfGlIc-I|aMD7shwjs=oj5I;X1dpFsh=faavb@L!bn?} z9vhw3<*p_gk7s(Kwj$(1t;R!POzY*P*q0wdMpRW5jsJokvlY^uD447nJ+@Fy5bJH#=xOspHr!g9?h9$;gd zY3xATz$&9ad!7Hu{-vv+0`wJ708FZr9jV4Ou-fqB{dPBHKO_s2VBU?t?GS*uxfXDj zOXIt+UjHNpR)M~SvhTGGY!=*UP1SVx%!adc+iegXf+27?D!3i0#(5uAvwiM&1{k~X1h7SpuHvm3V?}% zXw9@+Gf4)zK;MTl@~sR&Atz_YWBLN08L@5#&VxRbq(Pm75|7Hw!J0Vz6Dxo)wI-R; zKeQF}5!~6KSC9Cg^zTX35zr>UL&qQ=SReyguKduNL`y**FlABtH*E#UMuETdmHtJm zA6SzDo-`=gq~)*ynB{n5#hO(8I|9eVXQT5etfgxu&Kj=K4}_SRle1&JCdB9H-?_~! z7s7KjCONP};b;MBO@`(Z4<&=XkVe~64`hgwv*S)phtJWQUHO?IFl1^_7eUW{V2vL7 zogKIN0w$R6T$W z@O+I0%P`!$YFxg*VGFrhjJB7r({MNF_1J4lA!-Rkr3;%aA(I5 zO~(q7-IBtnz6PT@V?7HBk6!VZvZmSy=Y;SF6O{=A#1q}OX_?31J_80}dJO#s!x(YDwS%Y%l0Zc3C*<-KSYsudO`a?7f zOK2hQt_TV_Igfm-3Gq3s&TTCFz<_xPV_HGa9(&CJ%_l{$pVayU8s<6gj;f_()_74wD!>P$n4vI~k zXua>Z<~YL5_?2Gx#r|N-nDZG~{Ln=>Wl-$skS(AM0#ZDCd;uQ?g3Q=KX>5Kh^(=Ub z5*DZVGQ@x&|A%F>i_2ygmV%6{g!=}zTJt6ZgdrgJKM3e9!+M{VVDqnC1b#gEvN+G; zm)9&W8U@D$nR#P+X+hcSxh2zQ&YxZKnX(15XU?5kvT*)%$gvfy=_2P%bXInfS1LJH z3c{dp3Wm`U{9i18{&a|(TQ+@x#m*Bu%L8jsC*S<7h2t`)AZi$%bCv=>;G+nNklzRL zPg?SMVi8mjHIC0amV!C+3fVJmicpXY1^z@)NCNUB;sD9SMhNU2%qaOxv85qG0S56m zf99&z-vI@|Ktei$b_NOy=9@y$6RQXXSy1p_msAiv5K))qA-jknDnfo9zN+k;}0!Xwa&hDRjfT>_s9+`o|! zLgr86H%)L_yz_822+)^v@?*^u`yIXWa5^X|HHG^bVZs35{;hzJMBwPi-w3}m_*yT< zPRmF5r6_#YhlmdKoe$Fcqf1k;kZ2(Mj;=|8IQwvy>{rv?js zT|aVuz1(nz|8yZ{Xo?{W6z)1a$n)zZ66GgaT(0nI&&4E#>k!E+)FTKNN9!_nSx$QB zEIEJQV*nSIXHt8_obiKY*!+J1|E`|=;l1yr_k|H&d=RO8XG@A_BbdUX*@a~@X3v)&{Z?201x2&6>~v5d8K83l>ZTL z%%zbGyu%qN;>KGv+qYdvA~H}$&R1h7{Lp*pBl99cmBGje8J>APWvnLWE8)J)*CvJj zhN+JU+~VuMRRXI7t-AG6R&9jD58V9d@1FcUEpp=rsdc!!`pUae1Vk}#ZAnQK1Nm1S z0L7IO;Wj*t^Od(;#29$)Limn%)34+pXh|W@cSgKL8zBghuD)`{0&(eAz+&v#mf>Sv z-P&5;nh5?U!2fbj{v2JyA_RE;iV%QDa=y~81^B&Fi0kNET!b@bz=Rp|*3MbF*0&(C z4SWxwk{WxO(39UYAd>&b;IEJ5AE@iJ7o^5Cq8{Ov(6?Q6{hMs(RGg4dw&1pT3ks$d zO`q?Y8j({3wfag4_egHUJmfJNuQ4-%_s`&+7ipsu)0^o1%G`ro%jQfiDVP;i_v^@G zY$QMKcG!R@0-_o44|4wUaijp@ey)M{xx0$y1mq@?aeWDC8p-xee85~~xT z;CMhmQ~}W|Uo~z~{_ctc>qJf(4fAtO;ER-7OaZO7t5 z+^zRa+^z7pKfrMKHx9M5U>482W=)-6IAiL}I-v9)HGO9IUgn%LlSQ!u?6=i(*i4W3;g?h^IiXcKxDdhMokRnjK&8iY2 z*P9lY0?78qd2y>1m8^qeuXpEP+fnuZ^l-pX5O_F3_WUW_w{~KZ1R5P6vH}szKFJB+ z)P+2qVc&2#vIQl#&YLl71{^fgG`EO6)kEa8fJ$v+WQ?g`*t6*J#cwR%8{ew8Lcyef z0xta?anS;C)82J6fZzQlrJe5kL{+y^!ie!b0Jbbf+|WZn6a%fm zZJYs5K7Q|EV8|;qRlOeyMh6sV7kl-@R3pEg1{GW?1BW1=pM0?rURRCgVk>f7gaZ8D zBL`Lna0=Ln{+4uHN{{Y&K+Cl$k|SJv90IP?u#DVOb@u(vhpl;2S~J(!qUqC%3-RaP zL`4k3)mZLp|G>LpxN2N9KI5(kBTj?QOtgF>g0o%elcvs|&t`mP0Uv5sGJpD~#gGVL zXCUl{z7e`FjKT*)BKWWp*M8V`lyRkmwbT65bZedK=01Y|JovFeWG60)kdBKN6rkN; z3%DD@T>BSnc4NRl+54Iwo58MbA&lV14P3ikNB4xF^4`Xwivz=u^#UFjZ%~0%qazex zm}~!>E1PeUhyLG-O6cj9pn(fY@Pw6J*&}pg4egJ?IY59vBmypGd@cmM;To^Mb<>U( zt~mk^bOqL(A{*dGJq($!hXqCM)G;ClSVa5dSECu=$5k{2MK(TPfh9jm^(n#a${(XG zrSuT+zl_TWTlMUa>)*xVI{JOl-P6lqK#xU`2p3s_A*1A=3jEvTZvX#}25GwS|L3AX z4zMbxv+ZqcBz95UUp9vy;UJ@Lers6b%_up9Wt=*H&W7AM(~5$@9W8cscRSdBo~-p3OL&kkZ{`z7J-i2=v5wP8}8q>9rFqJN-7`6b>z^LFk_LJF{{jt-56oPIq?60 z;yRx4We9&)<=Wbs%C+k&m#x2{!pHcE?*TaVx+_Dz-4AtlH%-2R`oxHUbCt`MEv;Eo zc2`|xRc+;3TZqN4?mq9bld2&ayh_JyaAm97T)|Zh_Ig+8=p_ zm#sSOg-6kNAK-cmO4WdF)k!ZripCR(M)WlbQi<-m+KYao@g!{a{m9_hOI!Lp<5;Oj z4m1ItAAkX>28wEC;Vr$F0|vk-C{Q&?_-iMc`Ne<&D1`!5135Jvz~=&2>yteBX_5g| zlL$PMXa*kil}BJa0w_lgId`fi3n3KKL7>*>dw8b7@m%y(d6(n@CO4K z$RV|{O>p^`b{$3OP_UY$;ro_iP{s zi%kwtKR8XC5^(Vn6xbPoR80i}jTX{S{?GG3x!|g%Txcjc^mc%t0t!$J+!|_XiIUd` zil7R=rE3Ls9k^aW*u=IJR2%*(@E<}vpEm;hEOU_I??n9{csd}U9t3)Vqw3&+0sr)Z zfoT^uKtUdaXW?%<@Bx8J*bM$(7zIa(`u~cO`9IGCTMd6R_*+r``y+r(1ObF5zib2? zMj)x5(ZC42#R%9A0egu0VS76QZw0^J3{iC`<9<&D4A^b>K_~71>X!ooAT$}SLsE6e ziLU;9z<|AQ>-!q7T>^Y;pdZ)=1$_jUkG_8j)S><0M+h~9Wmk20c!c^s5U4~4P;uh4 zf;wFHof@d52cdxLNG<-3Ad=PQKpDgMF~soQ8xR1Y z$$D=>)j`-*_Xi9-Y6KjC0VnVTUweQbGLxqp15N|SBU${PXTWj8e+-X+)pUbkbU*-v zB0_E4YiJF1XMpz$;3!vATu!R4i|7ix!_5D93fh3TQQVurYZn9e1IFn}46jI6o{C4n zYS0X>$O@EUyL6?h23=+iim1;k0S`dA^z~^_P)c;!>;QjQ`+y%1>`$;$z9o%$&M0t1l4-hT@iaMl>8y+FNx8NgvQ_*KnW$VY{9`ULPU{Ej*l z;_~AZAM9wlQHFY*Q`H>=jyLL=&NJ{lTzm^A8(23Vmx^FwYa%Ntb_Z2$A#>;yHzA@Q z;U6(JBLDKR4{GB2J~YF`S&}ls!#_+QxLhaF4D+hG#`{<}U#HNF-{_~EG%o%m8mgDX z)P@F{(asM^o8ca^)%pzFFKjC}CSt_JaTokFlNON71jc|wT&Ggud|N?^h4Xb96;8A9 zR14?pTq?}6@ige=@pqWs^o*Yj1vr5e&xvE!`H>v(BbMnqqIK2T#!eU*%Uufi)cQ>1 zFnCMnW*`H2J~DWxVZ@Z+V>^SW+;@UNyBIZjeI6D3&bAO0#KZZzgbI$?c%BwKEKa`T zCznzIn!3)w$JMnpyGC>mzD(O12lnt!&tKgyeD3C>IdBo<~Fe zFX#@85e_=De!lz(tye%r!mrK8khFd=4K(K->HKHFkO#HPto8QO%_flA=k-I>=OnM9Y0~gBX^yUFl~U1K!Mb1ctMx7LNg`eSH@lqoi8M88oG1S3x2bQG za<2{?(^b_u)i-~QoUo{O6;7r$RtwsLuGS$*+> z`EJ$X|M9O@8BhE?gj#=u)Tn-*$#TIn`Nm_B=M(d=;F71{0?M5;D{dhzMXHE02D(j4n+Q9YKWvcR=oM6(PxBGe@Jg-+CeRbu2E(*2+t+m%wm<$3qskxX4T1nL+3dK{hF5_b( zTgjORoQ&}+7qJM3XbrDNIsm!HS z4ccif`u6*`bIY}G43fAVQZ@U4R{)=gsjk|u}nEUG@`9my}1>jyv z)m9^j`^zFA%@Y8jn9Q?sRf|e?->)JCuu$Qz0A3G#i}2@o{E#X9RlqSa-n%-2ALS3B zBA^-s%^(;c0%myvAXEg@0^f=lU_Xx#AVP(|9{6_PYlMHX#}Appk72NOH|Bf@fddDc zBElUA3l#y)xZZit;T?@kbed^ z-sNXv;pfQVY?Tgq!@&1?cQd*U z>@#;GUBC|j|Fm~EqC!$j_iF;&s;Jr{AgJ;Q1P2q}u;E@x)t)A*UJ@|ipfPYS@DAYp z12~Lk18ebDmrAtm1<$~cwh&hH{SvHGwMRh^3K#&R1jm?Lmj?Xt01h7U;2!XwC0ac` zV8AhCU@mcr&&whzd)mESLitM$kAq;kA;M#Nzlm%efOV!tc;4=XM5GqA*5FO2V zqG|r2E?NPKMe4{Qcqj#nf3F2R&;dM|;yQOj$2p=Yx9S^0UV+vEI!!HQf-bBMB3faD z2T*gx#m9hm1OIM70o)D+sun$6T^!c#Lf##xmJg-U4B4B=Kwg^2mlbGD0HvbfECfLF z#C9l98}@nzLa7Mo0-iv0^S=WILa6X}1MdU;NTh)*Qw%%@Jdr3jnGM7ppsRqb76s=) zkVJITe@7}{rK|vgR9!Og&jl1fDJy^+RhNk<^s^#8z)D#@&l0y_+9r$nD9Pl7=Eg57l-xp8-rJ^7Qcroxr0S`f`$j=2n3onG83e-|o zDg=cfD8c)b*N6cpJp;fb2IK)RCAtP{8W9^YPOF#jXih?D;Td@rCkYu3CQvju+pd5HT@bLlpP%82(fH$E24}CkJ z07^wbH3*uqzM=vGAXEg@0^f>txaR`=4TirS_;#Wp?*#ZEQ}`Qzx1jzH`DQ=>go**p zAlQwKw9^3r5Gn$;0^bAt^8x-APh3R*z0 zAJ^vs3ZPVqpcSJT%CrBotYBlNrvOSt!EW$(1OF`K+cJRn2+e$-pN@j+VS)i4|;Ba})*~!4ml0fqvu=@RxzNUU z0lz*_hfuGu&!TD$U@Sr5#J?EGz&YTE+^=fdAfOlo8v{A$0s*kPeGrfYd`zH~bQ29< z#U|?%_ej8lsGRkETog;>Sa#z7E_6sw$d_tEAGCj70$&d=Y)GK{>-4&mGB-)m2%TL5_Awz&gF|{F= zwqCFakZVrEKPzAHlMd5X1kd#qB!dT)_sY8vkE<2esdOJ6V&EloZ9s~Ls||czMEBv; z3Lj6^E8sL76$B}M(lNU4i?)I^Fro6Xhu|HxA(QUC%{DN@!udLj?k%+OObh4hJi7Nf z8_$yY4{|uf7|=%d=GZR8KO0cF*oAPP+K^9MuCN8<8k`Nx!e22pKW*cA24{YzEu`kX zHlC06?#el<78|eE24JU&cdX*49H-R_BpeUcn-GkD ztQ(A9783QE){GLjAK>zDz~6RbA@>6%7$l`EHwq5X#P@9lyFs(pC}_p?KDxQn6~O#^48Ly1 zYSU4=`FFg4-eLNIy`b4|`1j!Y0Nv!a61o3}KuIa18K9l`WR)l*!)K=oUcz%=4!#s{XZBa4bhgWO=l^y)>d#FOec+kW4Jy= z*ZkO4aKiBKl5e%Co343AHoH&>->qF&J#WRFrIl+J)M78?lMs5^C^&)Z zb{h3}Tfr#{=j#p{^@5GJ8w1ePkkmbKH0t+yw@u4G&36GtemnTj(g+3q8}wSUSXf-M zZdp$Y^~MwpSq7%g@Z6!-4v;znVQNE{5r|A|I7h=q*an@oaK7#)Y*bo3-#KG&kuf-x zhFxJB+=bp4kQC`T@SmrYcQwDMGu;*eU&m3334X70eBLM+Zxm!w%F7%M!+0FR)y6(X z!FgOK&=5R};`OYM=izdlNJE|z+|(H`NE)IauUGfv(vTCjf<6$CtQCM(ZA_xUCu{|Y z7S7ixH29k~j^g4p#E~y`PazHd9?Q>kbC8TOEj0>I92?Up*-S8G*LUzgNsSJ_c64aJ z@RFg|#_3`!1zo1$Nx^jn^|yOd$nbH#&Y}KeY@;&77#jQsV^lfyA8R!f$W|M3aZ|Kc z@c79`De-aMRqnu4k5}3@W@!R0S14B-^C@wstsuuJXfXl~Q{om|K`wX-p`gj&hv=%y zwE`_aPvas#2iN83NkzU}Z23lk-k6J@e1NWeM<0`>1r&m*7z&mc1^elWMq9xwjmw;b zX-nyfS~~-}LepT#K#HHdm#!%1420ZbD+beID9~@##81W<-2b!{lxUn4U_Rm`-$|GM z)mDHa=QMbve8o?0rOQv*8CVRy3gB@DZ=uT?AU}jM&^cV93B*PDn0;@j%huZp%7u{z zp?M?4Pu@zGRY;sybY|FfG0&lv@%~BO`lYp+nn%>0_NcA;D>qhGvwzCQ8p$sHG2YYCc=Zhf-gY9zyH??vL^^XzO%$V?&vDfs!ysT_J_UUKv%fhm^I74kbNowQ;+=S+OYBlq_85wo@ zF^<|X5;!P;W1o`u{C!!=)y8(n`Zr|d1!%49`W2OT`yj5wP=E712Sbp5)hC7yxXk+h?fO9@!|&7&O4@b(Py2+peBLpe z%-9|eZZnIp;2tpcj9o&p-P>cumTf`N)VVXuxSdF{+d@5tx49o+kaj_QOLsGBkNzcf zA8zDRaYK%RSbVL&EDcBZF(V|c`uu~V2&oj=LKs-sIQQp*+?YzKN1MEi(&PMRBXPSf|3TrGtI=B zs@l}z;nijXupM|awkF=j2B3}Cnhda^TY-N&kb!zFAG?e3dAZoR2$hL~-JSv{d>` z@c+oq2LwQ<2-pLH1MtQzBH)B4076B;Uf>5&qu&hh?>GGWfFA{(D*UHBe#jL5{lJf* z{D(gu5Wqs2xeyz8OR%+39B5{TOfxD1%@N>Nf?sXw@D!kFNi#bPe$=O-X#x4*kqjOH zf9N>&M)+Y3TL7#U3lDpJj4K)q%fr z!1DwAER&7v#O+3X7xq^8uyS>eY|cnCgHRE`Lb`zm%Me0Ez**qu@dCyM;m`F9fK1^( zhk}LYl12p#fK1^Jb%7ub&vMp@fI?3Igo=P};0eG-Mhak|BH%pmK6t@GitwIdm!D-a zKj_q^MBse_{E*4~ArPufCDD>r+5YYmdzg2mu)7peb!aA&im|zK$lu%%f)o&7_o(hD@KWH{ z`kOa`rvg6&{5bF>*xdO>fIkg5Hh=0)0yi$OHj) zf9g&FuLhp$Z(RtU1$;Sh>@H7&hkE}Z;GrDg(}81Wa#B5T+`UD3C>MALeSKXA2pT|; znRaC@2B8 zgn!W~{w3GL7_KpCEtxt$G;?|h-q}PTo13PWc>^{Ccz1A{77Mf5RO*Vc6qG^%iq1{( zRgv=nDDdU`;@LnWALYNPLfF-&a#xI{pd5I;|9c!Bx#s`eX}7Il0$xgYDSZXtua#fb zCe$G}0oNW1;m4E*+@G=kb;!+uAwa#5NoNjTA?ZWZ>%%}1HIsV2pU>ax=Mgvqn4XxG zB+g7LWtb@TVn7JX3X)R3DPQqZ8Ytsubh#|RNg1|)X}1;tTD55pUGu(Kh7cU}f>X*D zBH-)8G|I$S*JX6jC_r1s4nq8t zB{b@ctpJ@67V~uuF=TH#LL=REcQN3wh4b|>8hO+;AjCO7Vie>-!CojRrIFt>I|Cx% zC}>U?1xIjwoJM520+|1ph4b}E8sYB03IA~;9|u8VharASF{NHGi*+F(I02?pM!|7h zw^6EIjWd-H&`7I+6Deo79d+-oc70MA*Y;54q!(2z%M{!R<$>vJ>&Yh{p+ z@)reXi~^J&wkYDKWYCbiZ3Sn+)NK@;!F3l6o^2~QXW@K(o(7My@h&5O7vy6=nvzO` zC3JWQmWu)1Jb^L_x^RuI-`!;v{Je$pbpj>-$x;A%NkbZ-00YjHBuX|>si!qtgRs5C~%-4 z846BQzlpZ|LhuwD`T4jmqN_hW*A_6#BH-)AboGrkUZfT9mc>2TKAwDvt{%ayL{@04 zYbxg~UB5c~tJLuWWfucmC6YkSiFGGmW;H7OukI-~_MlYnSwekB+v*lu_+l)vZ==MI zY=?Ze`R}r_qQdzl%qhimp7ZP)W97UR_X2axK;fzpYmEZDa8o-bHHreP%tOH} z)^JG$dy#?XT*{$~h z6=CB^?6ak_0IdGP;nPc9?H4Q2HtZ{AyXL<0R#N7y|4>5hV9;R`VD39_>H2sv>FD%E z4>i)wm+M`3Gf4i&+V!$3Jvv1=^Ih;;^Hvt2`TdQfF|NS*2nH?$yjadVQ+Qo)b@e)I z4VXQdT~q&|oeOO>>uSWF2yNY@=KM&0M%K3ceb7t@Vp_A6V$*I$PnGtbp*3F-_?5uV z89;VLq*x)XaE{(9jG!I>>VMeOyMFk$t3zIovl)Xy+TQ}&xRfE!-RN=sID3JSZ}5#P z^gfP@yBj~!Y%jUrvFoK*hw;k4ZwAJ*v>yh{U~gY)TZD1k#hG^+S1hfosx7PZUxkd2 zkKrusaD;rU{7ZA_`M#UG|0KA-aiZxjzR}VXX9F+#f*$4%;;2i#p~nKS(YUl0@8jK7 zSG&BdEF(j|?uXs1x9SI_g_zt>jUi+~Y(EkXo*U{h-y22Mwq468P3>-HrCAZLEOb2|tO7M8~BV)`TXzYDE)!cLKP_m1j0Rp%xyusJVhEZ^9eNcCc2IBktYtB< z)!=xfq3JB}bn0y$f6@l*7Tm#c+HUHN$Dd-t9arWJ3H3g$-zU_hdtoOW?xtQj-c7s4 z_u)pKOKl(Z`ZD~{tHN8DVO$b$PHOXBtSl|?@!F;0F9AzFkS`E~sMlZVvIIC&s>`Mi zv2ydWfNJvzyrQv>Qjn`IgR9L4uz`00g5sdyWEA`$UXGe+_}il3hwyThE=aZc6!1_` z0opR&m*u23w?`3hgkpDNMTqf+geW+wVCW|>5Km5w!OB683>*V~k{o2z8S^-yCoMEAW8YdYHduNx}iLQK>fa)37n>cAP8 zt?RsM=o1A$3ml$9QVoew@N>X*SEL$3Nl^&8jEhe~KynluZWkA0BGQl&1&78iU$v<&1cEE7A+>|A@&M9pf)2W+_fJ^!QmBn zKyB{A^EJ(NGu#hgZY{=Yh|Pg2OB90pwIQ6h*<|6|Q3qaag8kD2_sq zCY4NWJ`KD!3XY10N~Sh<0I!dNXQGl}!h_^oceCITb*v#v>X_ObLSE4Y?P|1)k z=#EG#UNh#+NUEVU3Z9EseLrRJ#ZmA);I|ljNfbO^dpLv&rW(ql5Wwy1VpK5IP!R=( z+r`DHz^kI*aJ#rT4S01Fyjbd3NP4kFcsaF)2T<|g0o8zu>OJ_Y;Q{nN z(u*ysk3xWo$Ca!h6Lq8^3SLjW<{%etf`Y+(eZj3m4HVZlKv31tNp$^pvE}U~C3|=? z#f91u48a)?WCjSfQrvI;ZSb>rpYW*wz8yGzM^X*vfMd-fLO~0~4F8$IyNIrP3B$Q< z079_E3~w_8-BAd3L%?eWKOY6(Lvbg~Q`?Oo>!DyT@OhfQF%I}ayqj(turEY0*vICi z8V-VhH)?Ex{S=d`Zw6FjpD6eN;M@ZClWK$~d+;9wz6sJHzcDEa9y&yEr*aKJaukBY z6!&`*5w9@?2g$xbLo5TG{!oydYWUOeT*X0b#@QLb8GFfh7(AmV9%?v-N;1|EWcDOz zI8Jdd>bo}8m<4SB?2m@OI#JqQJ@Mj)I>iT7v!ssdp~qM9Sy(-yzLJH8jJ3 zB0Tvq6t!5LPQBnZqfX!npxX+(7*Bq1U`ZQCI6bry)vz6S3GjXa{H(MR)qu%$V<{f| zc*Md(n9ZW;a5GU27*ZP-gJ33_iLIauIFI!hu^N{|!MmlEsD?ej(P{PIKQFCBHS7gm z5s8QRCJ0T3n~7@JhwEAp3_>%p3_#P-wH$N4#zb^V|ASUy;|ahk!G8dFLlnG^=0^)r zjr9?DNN%zql$(iaI0S;N5d<1fl2)P`4g=pF1;?xXXeFxQ2=Er*H=&i-2BuKl@BWD! zFwQ_LaDLrTaLoV312`lc%}6yI1;K9Y3=TpwvIV3`Gg4?Rs&P*gJVRQMLTgctd!yi) z(u!2W3E=zi?9C%+MJzvLDjAv z^EDpCb22ZW71?;6v?A5e4*Zahd-u8AwC-F%oYeEb^a(Dw1{R_jfd;8}?&v7^EYpfQ zF_%Uw8ulP+IqsZ2ew=wPt>_GJw4z~-;31!&*fgWFAV4!3x-}r6#5ALGz)OMS(T4~H zrKS~iQSW@zp_Cu;y`yEoV$+Jcfj7H&$Rb!`nh|za@==R>2q@RhhzA-@7OqC!hx=YE z-Zxg`9vRcN+kQh-+K2Kk(AB&Wz_@Cx5;kZ3!}84^ldcY#D8*6U!C$0 zM^dp2tfd$pY|vU%V>9qsyd`bn^}x{#F;K-X)C7>AuXoeW6 z;`uqr9ttoYz+j~slSxt!e7kOjJWz4MtK~x?1~VDR*o46`A+$qV!9Lv# z8*{XUgHE6s+W3Cm3>$L|-oTG7SO%hL@?gdT*+SIvL6gx8Z5&M#gP9Cu3sK1jg@OcV zn|ERX8p#>6D2jl?Xoe#N@0~j$3Vwuoja@3Zd<;zIB3Q8hg4>L-bUrpgpt$GINb^VF^F3PwEeipc+`HzJ5fnYtib4$QE>NV|*A=nGNEP!_b zf6?H(fnUduA6fj}z+W=>9^ew{#lp`Mtxpjg{zpn$Oy~}Lf+qa7{#s2C6-S+3Kk*Vc zg1(J?=Mp%yRsUA-P{Jo^Fd!qc5;i4*;8h_=_#`z7j{H`iGdOb6gFl&iO|23XgA>i-KnWM?FDG_~7Lz zIMxTIEd~nz$32@Bg#Zf#WA7FL^3m_}k#(Rc2VtIcB~ADMHz@te0|w>-Zxz;r50*#4 z^MLOY{jd-nMh^k`u&|d1i2FfX6ub~Fe$3#-z^~_?((<604`4>Envm10?&4-TzxIOZ zh%iUs`9O%L)T(I-2qpvw%zOY-YSmN@96Q_*0?d2>Q)<;zfz9q$0(hyOkU)`YLS49$ z?|y9q7PA4E|6?|ynyNu?e}G_#o{(TNqMB-f-yXm*AHdx&PexQzJ@6X>IEHiFesk_s z-wxpNR-)yBD&QeZiIIEN)PU*C9|8iZjREDrn}L5bfY%xWDu8bV-W0&=IfuaTO#B^L zz@?|P3~0dpKi|0^cky?iLS1o9KtQumP!Ajxs?Wb8a4vk+)PiC32wzId{>0iFY1%Ho z@!pA>vMcp-3Nq^kZwQO)6uXss95j^|r%+ZE#e174O|4LX-fqoPf;-o5psdf@3U+IJ z`IiM(|8<743Mj6?t7Llwrz@K^-n5UhMkCy{hwq)>5vV5I9yRT!tid+HJ`2Y+_CK<& z0v>L@dt(34C-s>k7ax!)le}logW(VeufyHO2^_+Ah_d3WNnq1K;c#m7RGa_F8mQl1 z6qg)&T@=P{M|mNsCcFy1k5Wc?79ZC5=TP365KcNq$hxlQ%$D@_YG{b z_?fmNz<)|`7|3mxtvMSYXcq!@AseTfI%Vn2H}JH^#RDwtjNrb39U2#YL_*kcgW$e_ zorXWeF6NU`XM{kWTWo?cn_B`ncN(bGRsRwf_j+nR-Ee{ueFM(P@A2xGeDlW* z&rqLOuLyBaR#Gz7?vwv51PYzV4KwwgqHb5+LJ+UMC%BW8N;iz9e!c>nlm!89yHueh zy8e{atWdE8$DSr9D5C4(XpcW63p6Ny7@(TEL6Ab%KVcaFgIGY^M|T+ksdW8TYu7b| z=b9P+M<0Wy(e>*nzQE042+vI$0~L%>p$xiyu5DlvOz!czxl)2kBFiRT%52{cq{$^3;Cfh(fwj44pRG~Bwlu%~5ZDFo9 zKn%DUri|HrPErNc*UH62I7aN?5CzsUAiFDmIJA-`O78~%UZUs(KJzZBu z%2!Y-xGo~(w%@~a-DKMXi#0BF2)XUIldikL_P`RsbrBT;|2$oX8{=hOCB3O!8}JLg zJnAHEr)%G$(Y-F5>wRBx3};Jsq8H8~9?LOOl?%vu6vJ$|`J-{o;UmXlvcuWu$A!Mo ze|&u3-pJ%fq-Ks6XT-;MhhModc2xMW=VG$LcfS-fG`ylSrr+##1dhbE)&xxGkkl=B zg)a0RQseRZK+I1mrtkY^1Ayti7-Vk2(QcPNS#b0Ckg_!nf zpY|4Z_fJ5JPUcs!6w~iIo_Jz_W4izH>4soMW5{;Uy$U)9bo&im8yppbMuhl{(m=odvHQ_-5A%52<4xW zU!8*8$Pf(IiIr!EpU8_H9De3#Ocqzc0=xrYs&%|VYj2)Gaj({q^T9Wx72(q=pF-IKIm5RVvM1?*P=uB){MJ}SAPMz>7e_HMYj{x)KiRpvUwp0an|f3 zw}6m?LAwH2_bR;JGigpnHb>V_(IKzHHS@`bz z#}6FDHZ_wP1>?Vqp|Tnwv+#J3nlmFjciY6(;Xe(_x%}p4%$e`_B{>6|@a@kwQF&nG zg5l)c+s1j5bb)oe>g)L2_`#tICqRj13XUexjETe@KZLAr;#-gDnvrE4L~%a5ME{RZ zk=5zSLQtJ@L}y=6TT{4v{j!?M>RR&@A=&chjDp;6K>la(jX$JB`DA0K6|sW+@T(^$ zqO#6HWi1KcpBz)Y>yz&%Kl@>FOga|vq|oEG|Bd3d=LuuH`WwvtSPS9L0gYav$8GPj z=>9@#3$(atz%RT$H12_37TqhLgFDUoXO4s0;5$AR#H z5ftMe#=;hivis}(EY-q!{V~n*j9pW66F0Ebl;+w1+#f67V_F) z?n@cj;eD6Kjv2v5V3hHUmIM*EmAv@7;dc{^ zk49T$6(Ac5vPmF&2(BD&^29~(iFb^t9)~{hPBfMx$^W$_=WfW^2s!AnTKf3yV_o@=^=dh0mzi5nNFDuX)Vz3SH!u1~8*rd}=kt%p2twKt3v+m#6ul+XA`= zL01jBZ}@amdwF#6st$CepxX?(&B%MEp*w+0{dV(>;r5ZS8P0^<@wttd+x%u^YJ!Z@TSeUoYlc;8LmF9U%F6JXoQ%vHArp=*8%EQ}cu7#nmqI3QR z=n#S_<_DPHY|?aGO~OZCjJck({wa%L7^?LaOkO^Pso{esi2nTzUX;>x^ivP{f=4Yt z=UECm%-|mU712kdExJiQ-If!ihQ15BHqbpy^kJMk8A8@y!BAQJLd=NpYtO|bEws-7 zhgDNhyG=HFRs9ZD{ejdtJbTcB%2T+(>tbjMoa<(H%b!7qf*kt^=(d6G!*J~Rn41>C zD^sw!X~^OgW?m!F`;UDeWN5F`H|g@=jB>Ka-z{&+PfkILe4CHq6tC_MUzmvTchgll zp9?1@$7Y9jCdcZL7Hw1JOK$i`=pI8IuB2p=yz*(92-hl}c5_gqTtZrZo-Z~z0E9l094t?9y*A1O$8@KTP@bxY5F#~3P%IoZ`l&tad9vx$h zz3He+rJ@H~Z7a<Sit4Jjey%m%0$(?X3mAp}) z+l3N3QqqwQI_^=~|0*sn8LP5ok}?)%XGOQfb0*Qz#=b~rE%qOiCV(^ptJxRK&B9w? zXU-TiCVEumIHU1v;q{G+JHvz4hkYEgzQe~4dn?mJDtN7UH{j7rto|e`q^t;9nPoML zVn{cn#1_@zztBAl&a$ADSn#d-0b)oG(5;g)=(~1(n!{9d>uhw1UJ!01NFKF&s#Ac5M zg(v5>Phg$qD(|Rq`IFlB1q|LhW7Ldvw)JH|D)1ryzYM7HapUzbfB1i80L4%Wy4qHp zVuZNtW4s^nqR@|=5RS+GRPRY8Ius&{E{M$ux`c%nyJri>u6$*0u?Sj=37}>_TWQhK zO3~4zZk%J&<-_0R@$dV)>bGum`^be>S(9HXf9X>xY*jAS!WBtI80LEI1ANLPcH;?o z-TZcSR31Mi%${t}b9k}i+7J=+e1QmBlY)etQ`AloRO$J`M#44YO%Y@a935RNW@SIi z`9U{O;7(pJCF73LR@!yJ=wH{}yXbg?yKj)DH7*tUTI0!qwR*3+9%W=#Z>AfMN4d-D z>DREAXE*d}dtu?!+EpUx8s5cx{0*UXHlEB0j%|>NO^M-(keSg!&&R{Fom-+;-&Tao z#$a?Wld!O&q6Y4rRW)ZmLSVGfxJ+wg=&N>^5T6T4Bbk=G3r_lGW6Z-Xr zBBaJ95t497gglPHWq0==nTiJr*#)jyivyWA9y=0TskbdPjst_hV%?YhP_24m7Cv?xE>{cfe2AtkSfkW*h_hXr(o zVh#yctdaOc_+aCFKleO! zHHULZT2YTo_g~dqVo3F(9*?>|>5q(i*{FHcy%i_l6dgM1_D}}6jh~8eNo2M*o-KC& zX2h0hL)Kjn4bZjrX3A;z z>qfyl?qJ7Gd7;bO?!FL>HBgtw`ia&yJ!8E5w!4>+e#RZ-+;l>k>3GLI2;``5{=LDU z-1yX(`VPo*-i7eXzo2ndWVTJ*lViv!t%8HgWI-&zO4ug*y0{SPQJ zH-mD8(PMSDmt}GE zHI_b)@LKng`(=>#xDWYrM$*SbJ{t|p=HHmS=-9{Z*PICUprY}gx;r|Y!>bp){F!^U z!};wTquS^0@y^Weie`UK$gr73d%kdgfs;3imYsKxb~-bkE4uu(yNAP>Ii@J)0-qEW zjsF)aYv-lMjs2J0G0tJVi$1;Nc0$~G?dgnX$9jCJ_+IaH^_wbq_&n1eG z7t=(Dkt;$$4$*+^ACiU_$Vhy+X`3Z#`Afw3uBA)$J9gt zHPe5!>r9!Pxt5}Tk(Lfa~5CW2k4;|Kg~6Lfd-+$qzg51DU^jV}*; zVT`%9;CH|b8{gl)PO5RLo1;Mpp3vpqqA~pkXT;>@7$jKlWC?`$Z9S2DcpCkmA z$4nc$GR($z8hjHKAIk8<%l!DPnFu4kha(oOi3IB ziNW?LvrTmn-!C>k6qT(D72g=_M)|aj@2~bUJOF!H;kQ1<{)J%7QH+bxUH;UT1lvfD z`9AUSZT%E{&nUiC;2Uh?`>UOmYjO^hwwmqL3-c?+%#MzF$_ZAevFuYe*)Ku%8YO$D z5UF3O31cqn?fv-<+4#^`*}8@KToa?fH_DICDx=Z~xfY{{90Nv#G!AVyCS`kHP*Vv~ zp^TOCX%w70U9oq!1{E4tB}*^2ss zWnV)#_Zu}HkTzMt%zP6pKGA3c_)xDA-yU@DdX2U7b+9sK6f+L=F-B&C@g2p83aaNN z!Ofd2-~Pq7S+b9>5eC>>Q6sZLR8T#~h`PqKADoeso3-;%;eAEgR@pLZd)nhgY;)C| z4<{#}K*aj^B2I$upGtZHHUYh3<5MrxHm=31GXBT-adWcLXQNi*Nrq;%EJ51VA0gxyqG_VC18gzv|PH!CBP?fXEJ zpj$pcF_{o_O9@&4K?{^1qWjuM7x9tMwlNtpaD@;Z{x%iLi{>|%tnUz1?PSR+YD+<7 zqVks$^S&ip+lD^CwqVAzJqWILBh@JTeti2ZKAJ_>w$)O62(I`a?$2i=v~jfH;!S%n ztAmZ$Y6;V}HHNTyN*J;>eyW*3I8g1*+yXH3t+n_>1iFsfP&?z$_WXzkxBg?}v+3jF z-PBi1Ma(ELKA;$p19*d6W%|cCb~~n(wF5Ne#C)H^NCSKwCEs3n?ST**pG_efikV4O zbg@V1STH`Q7-O-{WVOvw`GuBGHrHmZJFDfv>8K&$gp8DXfe7CW6X37G5u# z$vpI>wH)FV;yJX{^iP&u+j=TuL~t=9OLNqftw3g{YJX_nwXWzPj_|`HX(FXU( z0pD;s#qF{8gjj$(`1FVM**1?}-@Cl6H&71jWBq?a2E4XyEO9~(;%W}+75c++>{}_2 zek79kwpE7y#rT~;l$be$BPKPrcJiZ%9c|lFLX5_YVhQNHxlbd;me7iE2qr;el%N_A zv;f5O2!Wt7A+jd;3)-G2#3Q)%vV8`+pWyYAgT4nFM0*#_g`A~IPLU83O*z-`Ug>-G z6>Vg|LyEBxeg}Y2wWBQ#2{8eSF-Q!1;Er$a1vVTp%nF-t8^=`OM zAo?HcPrX?i3t(irhe1#wKKVq74Ov!0Shm`ylj++@`hO{U^j`Zv1bSpF(?5yzu0N@c z5!1Jq^l0_iuee+O5Y>>U75#jyHCd(R-0k)hD0=j&`(rwHTe+e~$E|8ByL@SXr_G9f z4&=vxUbTZw$6}k$_x`&B0B zz0mw^yQb&|;%TEs>K=jJ4_Q9?-so3tyQ%2YFpu^RwOWAbJCNTRHP%yygX*rL>J2K) z8qq&_pTI4>+uV{WA_k)c3i?NMM2SFESNs;T*3QiV-a=yl<|k!Qz# z{EBZXVAy@sRIT@Z8vIQZe<`AEtm;h4aw6)l$G&c78RswNziRU1PFe5&KtO9H;3z6h zbK~c$BIpA=(AyismzjSC2tbaiv}@a-V7puKqpc3c3r*i)8LUk$d@K{@y zKcI^9M!@x^0aFse*x$z(^rLNXf|qHv8$!)JQbs+fKjRm~tHGp|((!B{k!Y0ac4k(Z z3790e71;hFJdq2$IlT`Jha~|0wsBO8FA~~K7zTodemI(v(UiKSz$5R2&sMDfIu+Ek zRNzNJqvw;hufPW_M!V+x0F=#uMX<0sz}H|QD&Kaqt=)xXUZUw>12=+Z664W+1};+u zz6>0R0lz=KLK(OXI1PtbvQS1CvdPXm>+(@JtuK$T-=gZHKJ( zt^jI}!tae;h@edkW~j zZ^t6)iUcLf!cRef)Km~~0xm`ivHb+81^%77rDht4J1D^E(6&QX``-facT^VK0PcMe z0|%_uC2Fe_ysuLDH3;@F-oOw4NTu)_;P3|c{qav#3NHhPH!9#?s099iPSE4p|+348VVvSx|!b)3(2fFD=h%Ha{k->)+P;cQybVGqZ0lIy(vq~04~fM=ipymVB+Ps0E-H6^O@wQ#RlC!JFUV6>SFWfp;nmn#F#13z^i9M!}) z^l3_i;US0q0=)szSeA8Y0Dd8A+?1e{`ii@?MY#~iOEIS{Z40?c_H)4+=|0qB)$ zxiHo=peRB2;Ff;K*6)l@Lp&p}ZlOw1w@RLThf_aj3~U%a)>s&Vr3^!=cs{~?(ve>k zHLK>S+sYN(J*+6Hi>HRGo1T=7Mb(#t-W65)!+#3x_4T+r>rhK=(1pX2oA*z2%Ut_r zFyb*6BGUUp}VJH^qz*e@c?EVS{@d>^ui53^Qclo)HW`p zd!j49z6VQzu;@K1+vxwGr&;u#Fdx_JyI?}D$%FX-+{ZDdF;_9TItelSYvTlSIc;2r z!G*4#c~ssYY8iJ2kgj*Yg|>J2W}|Hn=-U0Ojq43?AsWo1@=$P18%tb>mz272%#X&l z9!S^j&uv^EgX?{h2Np((a3g;Raa{rzmM+!bXlM@+7phm&8?Rpg*Oxx7N?(gGqji5z zwDvkWX(_^(`jDq(^zITH2WC26M_idlr7f^7>S5Az7whW(C-l0d#y1anBKp{enh48)LC6hL1g1+KQA?d^^dF3zZh?#nfjC4!^R-5g1W#M781-gxv@tcoGiefL1GL?1 zee&`i1bwtmUdSbD*_yT+bK_QW{|23pjHYQK=y3l85Rw`7xt!GD&#A zCSfilj5hf(OO$NuaFc{YNLc)+8xqj;CXX`SgoHM`V{8)8p~;)>lb{VyIZIu3x`Aq3 z8W9uINXuJ|;*L6F*aKK5m*%6#3KV_Ld1FwDr$;nBd6Kumhe>};9ye_aZOJ=tj!}@} zSw0Cq*Yf_t2Zd`NsswdJHsQCavSnJ{Ym5tQKdUF9EzSExMB+gNm;LdOJj77a0$9{Y z1g%yTG|PfTb88we_w>X)tR`fvyM|JiHBqCY>0XWqiu_qP7d|AkG(0G_@CQ6S^PtXBmwX^!iQfy(zR6U4(Nro+Fr4ga>ReNPQd)aQ5p$%fauw14O#+3%$O4 zy)Y*ha|WE)O=em}r1@57#y_+YtL1^VY^;cMQDQGDXM6%2UG;s-E&hmKL{-hgKj-V( zz9%d^a=Hk|lfn0lSMGFdWDKIO##24fUMW#eN>vtJ^l`w`^eizI2`vwG5G)qeau8AE z{@+Aorg{|si^Z?y5$#_hG6noJtda_TQv!U|aAa4zfIn;keiN=o zPm9QSGN2gOzv5O)E5wFIPPk@wWn0UI#(-L`S6e+@<4jE1v~MoIR6YC|PL*#H6&IDY$+f z!=|>@a#n43eO|ml%P90`n#!dY#x=L2Q59`>dx*nWrT)K+HGMp78jI#=@64styFY{B zsBp1ZLVqS&F1;{TS8@_xBKR<;xoU%<_4PC{+V^nO=EWDr!RBn{0N|)KMnu}o9Fx|w z|Cp4XL-84mULu)E>oP2LJ)sUgEv&K7p9z)gGK>p-JdJ}#L0C`Y>%N}Gjd?|e#epo` zJqR2KfoIS!r4<>*;?a&qy0#mg(!9<_(!-t|;Q7|l;+lw7XZINJJR|fK|CNg|jQod~ zX9aj#8ZFa2jT?z($Td?BDgbTwV(_d1&sAE8VN~AZXdJ8UUJnk{6j-^z$sCZ;o0Dmb z?&xS`yz!u;9-Nj7YWQ*ZJI3E>o~E$tluyTQ^uTtnf(~?4S72I#7GxMvd2AO3|9NPI z`+3@d2SSuxu8DO7EyAGn5&8;*IjyNM(zbC_3|jl3 zuRyPz)>IhfEgX%Iq7T4_mVNjSwv0;|(o4C9)I zRPCt+zWw0)-qSEk3P9HSk41 z9|pNA5FNZ8V{yKtQ6Fv31KhRLqb4c`{)_^OX9EU~$rzsA6R(v>96XpKznx872*jaa zV-be_(#vw;2DgZn_jHG}p|E1C@r|@1*2lI7g$3(8Xvu~C(o1sPhGOdrwvk|)Z1f+5 z3gkw-qj^)F`NzV?ITP5&_U_J}VW6KR^qAj`qk}lH@S5e^eo&JDHP?~YT)C>l2>q~I z-5RQswkHeRs3T%-7|jNI+C0o_J1lOL>OCXDeGA;LVD`(tw&TvUtQn8aolN%lnKKsx z@oZPj&&IaFo~FHdjfWB#oD>a#Qw6Qx&{u4PKy!`9b%YT5sC)8YdcOdH%OG&GQ8~kd zXJBX{h!UnRM3cB@0fYrZ7>1v|g&=xLLs(S}TIlez4ozq;3^$`X8%r}hja_=Z1Y=u< zXTFiw*3qIVtk|;zpHGD=3q{M1aUU4b9!I4blZJSjdPURsEladL{{RyzAS?mVS3HBe z2iCHY|Bod!j6ujpWkM0XcHqBetPRF1^m_G7%osAr?CMd>HQi_F(-)rW4uuDy5Pg;v z%P?%S)|)`k9~lbO$fykKZUtC}=RtcTy4%UQ9BJSlLgNASvcDdJfAGHJqC!uM^k{MdfqW`uTv#Qn#7~RRSJDwspKwujP>;!@Bj7h^e zLq=Ev_4zskqJG)-Fa%;^%Wr86G9+oS2RnYKEDwJj)FjpT35_~z}}`nTu;I06``fR8j$Yg5Qx5QT!_(d6va)G z+m^uKBsZ8a1rvdXkycE>KFeR40%75;2t@d=7y*G#ngVeh{-X*u z72`a=B%_znJBI@v*WsG~QC&zqP1*1!4H(Ql&L*cVJ;5|;+j|6h8oHrq2o%*Y6;*yJ zGRL{10@LdAK31aSkCxw=1fsJ9zvm0MVrYOXu0kL+P~D9lV_>2F_*9HGrDiRE zke@IS)>bW2Aq#Jlh4g?$fWY4&uoxCDGWJ8Dt-ID!S@^E;cdRoC1$FOtuqg^QJ?JkY zAN6eSeMZb!PmA9AbnWw-`YfwrZaPEx2!D~^_6AypmI7URF#>}j-{_)WV&<5h>G5L* z_Zb22qgmGn^U`j7WCK)^)U zB%))IpTM&Ct4h3W#rLgdJp4>fN%nUGRk^4D>n}5ojz@n|f4q`SU;zZ8$~BM5zhk7+ zy|f!T>-kyWy9K_bMzaZ?rfv24cWivS(t%#-(@b zVNjQkF(KY`r^nneW=!-nXspjiAIU0g%c1XaQyZo@2aEc~g$WqPz5=c%gkEo^Eo)Oa zUsDn@636uEZ!|pGt(7rrf+wmHigM~S&^~7L$YKpBik60L(14Dsc~o*?D2I9C#+5Mh zl#2dgy+@7LvOMi;6o+Ew6!jg=tL35BP)rXRW*V~&b&E3`W1;0!&~Fmj7iGqpNt9*t zU$bdB11)<^9YTa0LOOVcIR7Hp?izO{d7_Qkhq^Tnp=#u>j-7@W<0iRlrRM(^Fxu)E zL#2~yWlE(jYpEAQfVZdk8l|Br}6%y@Sr~baU0K7@Lad? zw8Tt6**H&h>ONiQWBx=_Sa4qpl7^%`EG?K~lZKg}{J(tC^p7yTod#)@_l1j~_fSVP z-(qZ=%y}`w$F|Rj`LD`0wpoR5 zYD*JryRYh=+p>kr9zSoAQ0_rz#yW`M3&lT*7U?*v$JMlsqKVG?i$)Yv`SNw zjj4}$>h&vx^1{|EPuqv-Zu{YSST03p1?U^W-LzA#wiKI<+(NCz8{M)3#bwO85LK(% zz8wC`)34_+)_=^CDro7rx)hb{|IJBXj+l+4jz8ZVxj)E#| z-(zj+YvQj0Un^)=U~MU0GHvY&4BR+1&4YU!9}2xeFXQWJo{kAD5i{faHh|+CIO4!@ z3C7bt#HPeT;OGNmpJHt(rqr!{ib-Pnbdre5r$G;6>U2|LF*sg>jVHhnZQJ?Sl=u$t zLf$%ATZ&gESX(EP#EUHP4@m52+_5BL?7gp8&}Piq(nt~Vca+*}*_3!5_&dPA1&&?n z{*LzHM)nM{@fS#pF`k`a+IRsRnAF1l&>FUZ_H7SsN~D0rga6oHT3d=Hoeti=8u-SU zB=AQFtY*}k>FL;&-H6fRKD7VXuv%Lh;?IC!H9MZ#zF%>ZAr%i~M`0#B&3JaEr!DjE z?+X5(z~2)5LHFT@5pdhthMhJ*`}N zQi8ER+ta3@J||1KcAz3UWng{7yFzHIg)?UdCc_S3cS~d3t;jk?^;w?KhFULd@pSK5 z5fqyNT~ImyE#bQSkkI!SB4n1aV_$THkv_|lV~m~GF37vT2aLW2qoZK7wAu0!Ic0wm zK3x$Bn8jIg7m=_@$Zf)vm-myB9>6h?x#Tu*#9?jPW*oTMUq;)HQRMzK7Op3CMxvzy zaG{Ygc($jXmlb8QGTP5vTY_!3inl-z?PqQ(LUDmI+7Mk^avgXsaM};u#K!{1=0n&} zU0ZTZ_%>8G@!7yf3EGfdTY~k<)`sl5r@p_XQf0mpD1TgGckF5U-U3Vc3qIj=22n9;#o&YS$GH})^$E$g)<=l$>i12LGy zp(jNOJ$j|la;|CM1_)Tnd*W+L&M5)3le4J+-HrXISg@(Sw&d)6@GZbM@TUCQl5&O9 zrv8#&pF0rvCPAC}YfH}f;Qcr#)=BBt*^M)Y5UXk?f-x zd)zFFjbRZYxVCBs?KXVHn4X9!+$I?E%cGG|I^UD-l~ORqr1w*jw8LnZTr&c+ToU@s z9Fr4xlC?6H_^ksIruv*mgm$2csQH1s8z<%e$RzsQIE%FAalA_N-q}c0WR;+p$|TA? z4m}Y`YZ__1`nYGfvhKfvL2=!M_?$tCz8IBDyio+kemP2mX1Y z#we2(e*4q5EkGAe6W^6xT1=ve$JjBGHEgu`M~Rn>Lrv4>M(`M4$pz_S%jX9vQl(a%ENn| zP^(QEYs7gyt&E~(o@&N8uV?CbSwdy=sL!cm5{v4)M7V<|2Y%rp?cnsDJyXV{_UWAp z602nY!SpiU&>9wGi0bQ1W2lg#Z*jo*#{%iE97(=eeGsy8en&NkN7 zuQQA``k@@`r4=-1DeM%aRV(m{>WQ{EgOm8697gVH1+R$em{zmWU(f;949BV(^?9&c z^(jw7<%3Kqn5sZzyH>DWRIhFGfnr?ah%}}@%WUn8&+gNK`_igNIa^Cwo)yDWTf&nWnoaaY!1spoii@xb5cNe5W!`o zn~H*eN@{8OvSV4yji@V@zBC1ZeX@wPZ=(Ah$FMU-VLp`sHviEUN z_D)zUWN8Pxi>eRX`Jg)aTDwb}A^@_qgO7;N8+JT_aoV8CJVL)GU!D#1#nr+7>n?>GhzOr6$Jyj#dhXzpB9ybj z9_$B=9Y#oPW9oBO2Fe;pIv8E&gLq@cK)Y7i!_a5tvUK_i?M{u4nSru$k*PwxaPV^x z+Jg9PwfMnjnOE;N8ACKxq!BYzjc+++q_0M8^zY(oVaEE^o>4KC2IED98C`Hg;v1nq zo`YZXco#e?&^qGNmzt~^u9yfTVSIyRS#=?yd~hxB7EJg`gkmsgb>UFz>5xgp@~-Lq zM3uknNtB_l&sxlM^i}1Gh_tG%gKHqu_$0quxbfrjp7woRk77Yb>{MLD3=*|7vFJA* zyeitfFNG4W9h8-bU1*zsiAbkeA4;JEXVs`}EL!7f*H^}+9EnM1J_#XrL>0df`CM8^ zDMhNZLj|JB8(g2su#-Y(y$+$3U+{E!SXzpa_Q7jxDOsh*z9w2@TT*h5wDc+q)n}=` zCjPa?)>r-j#Pp5O`Kt=FdGZF4x%nPgjzrwutFFZt3&GOa0pTQ%mI=vfuna$oY>5Qaxo(HRIF^NK7`vtn0C<;YS z8i_NTjWrrB>{fZu^i@pBmca@QZ@{bKuv^wc;#51par*Q(MCI>o&STAKOrv+hYTO2I z8GT>$bQvZ?;9nA$HI{$rEABf{omQhtx5!3YD(?XWi$vu&1BH)fUcFlognw*&{h}vv znDm+KF=+=NEEacMy5gO1d7_3HUwSNN91mf(h)c@9Fa?kynja1nj_GO~dRI(SGrfj};NP1hJC2L5cZ2pdX0jM#Q|NNUKpxHyJ%)1+elxMW z**MszS~7Pi2a~T@IY%`LLdMKS&Sx>4^X zPapQJKK&9i$&A5_+MzE*<y~^JzIsqQBlG)deO`w|=CAUx4rzjAxzUQO5j@o(4m? zYB_XTqO;`ip8iB(8xt$;W`r>=lZWBb;d-JHSE8y$VDm3BjouaGtR_Z{TlJ!hV8hc) z#h$uThxAk0^%-ta>6ongWfE6HD0=Z+YEEHZ=Zc6}6_|uym4b4ieU@jG=t#mg!_#=G zzV20_zjzd%--TWPPY)==c^!OKV0S*mOVJa;`ONEB6@Qi`m|sCZ&lIlFg+gDCnfscE ztpZH6{Q^fn+(+o2jTL%+P2qgv1EGJ43_z|pR~VPNHmEg}nhoRu8w{Uo@Sb+Kjffa$ z%M;`Q9r`S{sZB)8rIqY9j~!OEUsv#dm|?Ws?5S_;+oW8k&q!cS>GLn3AyHJCEH!XQ zArJUqm%4%X6qSYsgw)|UCegdXAq_F-y4jOBSo-@47~08_2vfDg86w2JOa7QJhsabmNlpDYM7CNd*i4GXoykBUll>{cf-&cm0(nBJPXQdB}bSZxbM z(qVZ!P4AkINLnEMvgBp>g-vgU%s7m~O`eC>^=6pm<587rCXp06^jRQOM=fk??{B)C z&e6N>L^U>AR%3NuK{dwJ)QpwPCpDlQ$j0WFT+3dR^SPK4HVu1L^61NhS2{N>O{oT*P&s)jZrUeEmOa^u;r8b=xZw|N>U39_3_kGGgd zzn=n{`on4@*fj_JjEAHR$G3SJ%K817g_4m<(#!%hZunpon`{}7$_D7n9{vtDoSqQc zxhPaVJ4N5~BHYBa!{0K$p1s*LK=ge>)Zy9_Ue{-yOE8X|v7J2>kGWl!6y61!)thX_DEh&%9|V&<_6_aT6l6PkaXI(HK%A zjTF#&G}_VV|A|^tNxt_y$BP*oT48TX0iU==S@FY$9=^qw_3Y;?x>`$ZhGd8HbyhTU zEtH}$-k?f9#b+VaF$RF^m^LB_*GP&)3_zL*Lew@EI`+a%@i^Bu0JaYUa1T zv<&P5?0(hLv{DoF642%kI%$-|HE3e2c-2#z%L?Tv9h`#*Gremr-fCeBwZRr!8Uib6em6kq1LSLq7=hWSTxSy8>h?4yhmr^keXH4Ja@c{KJ!-a1SNwa|+xinM%Kr z!@u})3~M5SxWqC3yu41gf(q9O?c_Pfu;);b8X?a(W4&6TflFVbqlyj)kFx&A7}TeC z@1BFeWvN)lBA7-Ba}3)cD*05X+JseXC6gS(_EBAZU7v^%x$mKa>%cI^EL;VB$k2Ni zd#E&QRSK+Jb__!&$)`ZgB(Z`clnzH`5T{|6CqZta`A46OUKts9IRYi)K59$BWk4+yD=>^K-0H}jhnI4=HkP`>(+bbw z%06&!vN`Sz=HP3l#HDt}owrFuqf~grk@+2^EABNYKe;EofsNk%*(2&&=2>(FqDk|a|EB0BgQpF!Y%1V2s5DL#Tag${Drk#O+e zc8tL8<1QoYQD<$V!D?rI41CQLh+Df>lpbkq6Btj%J4PHO!_PcV;dG=U zE@3=(<5OkxExhKX=b)iI@wmU`8!AO)Gic=D7;)0BqO-ipHg|`-XvfGAg=0gN6?1Fw}B4kSs#LWN_b2M@7YI5LY4)-@LLx;sX$WnC3&k>K9ffTL-| zs2=iF**KEP{CttmpkT8-G-W%X9~_OTfQiDjJ>7BquHBoY6hpcjKS^#>;HCMf_ALXa z$?I%jHfYlvrEimg#xH}NF^ED;gdD*Gfj53vPWZD|dUEn0X0l{t^IxWs(j289*&V*X zreiVWjdhfM4;@r|h8$Ur3zMPXuFb29l|WpRhokgoyH{meovxv~*7@^D;kXE*VjyvjZ}PbN7oZ&JCMcH|;1oQ49F zEh|jUGXq~U1@5p5M4_dF1)>o=QttSUI}zFI*=7vqVYmJ(2He~Xp`Pg%Sd6Z+1g7CL z;rI^Q-}>s3>+&kAxCwdZ9p6o}Y`%*N7olLX&E}g*Ag;;7@!dR|z@zFa2|S8s?Z{Qf zci)nq!xGU7ZCypJ(9z1cj%TTUU8)Sfm6A9lBbA#_(>LIygK4Bl$9Gq4<^O1?yvlmQ zAn&H*yL-y;4CJJC~fG*HE?vOT!cRHX_u@^D<4t9*15J~`S%ULCYrg!IIQY?Y=u zUM?5)I8%U!)aehJXwG*!52@pJy!>yZ&8onUwk9SS7<@j-+5R&okge6xcpDxMVR6p( zKiYA(4et)TwX;Kn9q%mh)CIs&gqHD`vje8{Fs4N`P-#2boeA{+HpY1>rN-F-DU7vp zFTtiD0W|T>4p;38QfzoS$#c55+3{4H0hz$vPESu5Ks!T71JY~;i~>Ptr>Cz7PPXuL z<>G(BeX~K^!`ZQ~axo_$13YQUgLIzY>`0v@i=UL5_*|T)J3B5AAzmK=DFp#sq(6az zcr?Y?@hNhVGH`e&#>qqa5`^Q?RA`tWRt_wEcF1`Z8#cKTBU`EaBP z3iNBkf#2XP#6xXC6U+o0Mc$JET)=RCG{f1s(gdH2^yLT)MZo7r=Q=w#k+^H@ZlOOI z$D@6{`%a-R!?`QL8toIV9mQ)#$Ck-#qHh--u%urj?4kPgy({;KdUStPi^ctiqiBzd zU<2(Ip^n%kA|lzsH!<$qD05vaDig67I-&PP4-p1&|BhxQxw}`-`iqJfW&5UFJS1N- zY>M~F6HCDsX@DVbvJi+{aG~T(X<)9zPhMp{ec4(OTPUiKGbO&0aTmQVz9Hi6@o1kEdK0p=jlV4g1=4_3@4#Ed48?U2 zwR{Q+75)iuOjt)u6>+KZ{**MZSmK8XKZTtQBi4wxaWY;dL77cKIf(K_+zPvbQ#J)> zfftClSL_PFLs`fQ&H*nJafKwG-gl3+m2reR0VpK}?1A%8P%K(>u^R}bj8h6P;8P}A^tT%b9?L-Vl*tV(9<_S_OqPNxz{^F8 z)piBQYo$PcDhK#k(PD>P0eF-G{i(&k&xsZ#KKaa}qCq>(t2)N&r#(@&q_vi&8Q&@A z;Z{B-?R=)kOPmT$QMRDaX;tJ48?DGKaqOz4FDqvmt62NxmH`dFR@27tjUIs{0Otwxh}k&5AR1ohsHl*XRG0{JIKU?2JWRBH)*e4; z5~lzw+5od}iq?DWIC2jBGMDpk9wJ)5XU}DlNjTM_`S^s2)>lOqvYGp6bF#CtCUP1o z{5P|C6qry)Z2Sz#I)nhcBVzC}(qt<@_e*?*oHx_HUm;>p3j?o^R0N5Y)U`NI5v|qY zDCyK`jLU#3#Cf=AQ`1&fk(127DcN#*n^s)kb3jr~GS0bv7U!)+n}>v#>PwWhKLe6# z-^4{Gl?pc<_SIQ2K_Zm|6JcvaMj z6qh;(^vIVL0dDNzT(8?ngkzr!nHRURCrnHoH)G;7Y&k#%+h4I|=EYiRfNd#W+a}UL z=|KcY(P|Y;1vsB5+Inl)qlF>_1RPCwah@vLwv#v+NLJIKFPC${blx!EmqI;q6=*hb z3JD{RG~DH@GxP{Fr4%eHE)k4i`CEj7JAgs8MGC0T1l+XeQdmNQP#q}QhN$)fEh?EZiMz`tKKtOe5oK^-LO zOi|im$H{P%zB(<_xM&Ce(pU7KYHbW>_BimL;_6I~1S5PG{VT7Crq=mt#nyTDl)%XU}Er7ld>p45yLw8A%HLZwl!^QPpV`KLu1-bGZW zK~0^v9gRVZ&bF@^RQ(@ZmEF`nGv;Q@95Q3d1lq{M?@$V;q0z`uC=nu)Itd#@d@~Ls zWYVv_v*wN&oHcvOxM}_8O}F#=+M?nx79d+KoTJr?Pv9`Ia=B0cjGlvfCE~6ZHX`fO zzxSA4gE^P2{X&b;eeDJDG&C>|%fLuWzR0}AEo1yZj$_KDV2mPLU`yb~AfOrqJY=%_ z!iWkNQb_mM#jwlRmtn4mr@3eL&`%tO>4OHO3`x$gn-^dp9!^~q2l>O4{BZoTfZwEm zKGf4R95~eHLiYHdYy~Pi^WiZj^&Qlu466OM&>0S1g>14xlpoGl!Wp9(NwEE}Lfk5)Xl0*?GghXMv@ zP^1+vs6aqQkq0RCTJd7w69NpFrVJPhJV!X@-3u@vTN!|^P4V(T9PKTvk_Mo|QM@vc z0M`~M1E%48HSm=I2A~Z`7EtOnJU{E0^Lc;)Im!U&!Qqd4DG!$`1E8n^0pX}{*#nDl zo(BO70}NP=b(Xi0h1Y;@5RTb+!b0Vu4Inrr9NF&& zxUd*FZs0s6fS&=rTD=StE@b{P#Sc0hj+s{i_)oEiHF}WS5BHh^PO}277=oCfJV3!2 z;I9k4UG)Efmn#qDiy&hy4CoW!p|i?E1;7!+Ce9ndath8V7Zrj4rNAV(XBv23Wl^38 zeh>m?j0?!33#b8$U|Vji%@wn0e{2FGAFeBam3ixjdN0;%`+}RAc&bU@gL4H>_I^Q82 zvmlm*H$i|7NPE2CqYFwwXS~YDPrz*@;3f`Qp%ngDj0Rq4T1Iak;ShNr~-wQARMll`*yb17y0XTRV zj|LtGypr(xxtN%kpa}?C3-Rmz00CfPJPvp~@L>Tsco=UDyt5EDP6y!N;RK?WbgVn@ z;og80BGoJ)9t5dE{PMp50T9Xp+`tonPY&RRP{z9hPZ8q!KLc>^FrENB4Y+q;00EfT zfX*OTEX4o54=?~mv49ld=|X%M5x@_jjHdz55Tg8z031AwrvuMK{Fi415P*pZGC(j& zh!6e~fP;x~G}p(*0)Ht02M^<;fKLS8B>)Ex<70tOM*P2jGJpU~OfV4y(}Z|`N&r4t z;gf-91INuaf#aU4sECL8rvaZU#Cz)laPTmm4SWIO|GftT2*AVyb3u?J#F(yIeky)EetRlpLJmmM4;4M(}wy2O#urMVz zREP&%0-0jN3;1nOA)j;w9(EtRkY5%R@(Jb>bHne07vp75>mk1-+JAbpR0RcP{5GhN zPuc>Hz7Kv1IM!GkI}JSQKKNm~C^{<0Kg0YXpLp9t2$WSID91Z#x{IJS=b#|& zJ~-A><84$yYt901av%I0zaA%OO}@}d$-sYL{|OwHhp|V`7Fxo3>^zpD!nujr^x(LS z;DRJLb^!*S!-h9!0&px?Bmu`z>>xw*{9gcmMd7!BU%>X;*8_0u2D9=5ZvRLvZu5O? z-Mo@9a1BB9CEl@A1_QIPQ~Ef+AkvOq7h)I6cnOCV@Of%aMKgwO0!JlO5+dbSz;6Q| zfc!7vbl*q7U6q2noJ#TVF8>r@X&QMT=!FpA5ccqA0eBF>G0gUu$AA#4 zQ_3DLiA4QB4tG&Y;t(WI27+iJwk$;8@LS|s0|#*h9MtsMpptmtt?z>)FzF>vC1@>6 z-S@%cgxB@h_oPxD1G=e~*s44%flwG2a$+5XghN0#5kr)gf$?l$$jP3-$-qDyN?~Bo znw!9pm$BXw7vHMBj&?yKp@K#W?h?=|ZGe6B_+d2GFUi?G&NMVqPrwN#KYl zh0}s>ax)!TAr^J7S&g&mqUPUn!MC;yMZ3hCiVfeeFiWBf^^qdL5eR{GnX|WGVaH%paKq|c>h?)CsYcG?}Ni=t_SiV z3yHPydu2_OuM8-Y%4`G@htko=8XQ_~p`QSW;~Fa{20s#0fxis=vV>{5r|r0x%P7Ct zY}`boK!buab^?Wii4~lI0vKCC0aDFbSPuMt9x8_c8&v`>*!aC>O?L_|oC5=}a4Ywm zjljfljSWC?D!HGFVKf_X5jav?!NBv7PgV651Zo2CT+xEeq4B?TA$2J5a6$oAmDL<&X#zlP65p8$*hsxpvjQu3fuVBttL8+a2qyrFO&|4Rd|DGSkIC^-v)&!mNx z06f9S2Hpiu9{S9`M^kcB8d!=LDLH>1{=3q^(jee4M#@LAvJ_mG7M6y90I3Z$0D{?t zXer5!qU(dAB`*2+Z%YG9!+^sZ!2LW3x$Hr-q~t}(PsQ3a0F0c+rO_aOF@XwTIlHhl z95_;20gqH3B>Xn;S^fsXaP}bjgIWo^0lX6F_Zbka6tqT=z}gA|!c`0)1>}tic$`#l z>@093rt75u4@9X1x`87x;P?8ukU9~lN`ux=3@l~=xMDM~2~rpboMIs7KDb*28Bz!@ zkpcevXwEV4&`RYXM0Bt3wVGQF!qRvZ#mE9=Lj?iH@{q#eXvxqYNS?;sZoh#`X=heI zHftoS`!s*~RC2f&!b97CM`PvnwRSYi72E|y2SYC!c4?)lLgZ`yL$A^l#x?wErD;O! zT^4|YhlXz8)k>jkuOk2l4<@-tk5-z2^1mnAYOQ#htu&npH2i9%nL^;@HbIme1gXTq z1OddXm5u^FApi#tpVh$eK3+cq5!jGVvb9q0ax6zP0t7%P6X2JQjMoBi@Nf#U zAs`noFFYQQfR)OC#lY7B?+{=BjA8>mF~M30*aSRaqLFwQ z-vE3I@EQU9;9-0d@N<|~#-y{KeDH7rR^t7-r8_}@g{6K3xr!hc0`f38{V4zk4-41{ zJRkT|0XTRV&jVfnym0^y9>(+0|0^vNA|YU!jF_090C+L*%m4x4VZ0D{nGg?M4Zy*} zcrox(z^4V^;9=Zb27=Qd&;tm-!~~~+pAn+R?f@J-jGqQx4!nH;4j#s-oS#KS6&U2; zA>0dQt@Hv2CI$!q6XzlFijD`d>nHu*Gh+n#%H@0%T}4fq9Dtu!2AqZbi)c*`2grv` z7=Zl00D>zZXd6HPCQbnqmR?1#_O$>UJd9rfehqkZ01h6;uL8f0Zu`ptICx_3QvTzF zj!v}$2*8AAX=!DxR(cmZ2wb%$C}cfwQ;1>zL_MMSYeZNh8;Rd$ey#K--Xs`;%?ytR z@Iz*-w*Uelh>kF?zko7a8}=S>2%;lwlK(B2GGqun>W=a7p)wX;AWxocb0I7;ifdUAkBWS1pO{KCX zLIit&M~UDb(|}`>38K4aCLj(stuXrSfY|6U8Ez=|^8hH3|7G2Upe5c3D2ipB9r@VQ zl^4y>O{ubYi4VO6At^XdaqRt5gvMG5+!6=Bq)l+_{amj4kuL5`<{%rM0DnB4Irjcb z$d!RCpT>V>qu2l_$9bA#k9y=>3P_MR4A9C*S*l~t(;_t4GJuQ%KjUCV*%&9lNmsfX_o2Hk{74ICh`4?ruA!ZW0a~XGke@C2JDBq6{(l)+B`uW1D;;@l z?E-R?05=3IU;(fHWC|eumSL-2;}|$veg!W#^=S3 z*NYSZN9kG;iabPZ*kL7|IbJ`d77{WJ-VMyoy_YzC6xlT=Ye4*`W~U`Hok2*<)m<;vWHg3#oFviicTz z{CO6?Rz|d^9IqlAT=ck)v@l;13`ODXuu}vLoZ;AUNiCk^6c$K4V?FRZ5tQ-0W5>rL z3<4BC8C8xHV%==nT6|7BcA&EK;phi&0%w4~fDPQSh!W^E1yFE708)t5;Rf+~$BtR{ z6rPeeDr6@5H=hq#ZtBGLt0A@OA0#lz~3BQj@ zInh_RDz1sT8cU^qqc=*^(Jp=-?^5J_jT~~7X z^0Mpo);@fNRKW6&2PyupKKviNfn-CO!s8)|Ak{~30^6M$r+$mVqjF!%CwQc+FtB`J zkqK7=Yob=-;b&ZBk@(R*NswkENCQ!dX!5%qPq*ReETmZ@ zJDy?TlnL7LG|{||9nVyFBCt$QU=ZA5sNKR*7J(FyAzJ*~j*n&Bx%?NQoj6S-qU8&+ zx|RvR6YcPT^XXs_@_{TmttQFpSmL<<%O1{w0oiyIs?9RK1?ucQE7349~tz67ka_(PsI&fdni+g9t`n6O$MUDnmSfIfX7>W{8S); zFJB7WOMg;Ce7s2ZrErUl0L}AptaSFnb8UDo@J#{uP9J`Pf^bU!o+oiifcHcc2v&>u zCH55LD*~k8L^SZVBK|3%`CM4QxXi;-z_C#IfA%aal>Ezj0Yi&i zDF4eu(2IB6jC`pF%h&o`TnC%0i~Mo z<-jN7JWq7~%vKSdh(q}&0;-AV4_rz&uY3YpO971I9B%Z-sfsoEaSj>&IAyDeuLRyY z0PjrY9|Rl&2_U}7H>Z3CAk~ad5g}#CIKR#K1hX+ZK|H31QlTI+fImg?Q;enIgwPP=KwlP?YH2lTQJdECm@5&^BeVhiqj6b}D?h=>U=Vy-ENtLO4-i6L1RWTSQV#DS#d?bIqW@ zL!V&!1xo;*$j3GRA75VrA60eze_+D9Aqj+#$v#OYdkCunAp$DMUQkg`5wS) zqM{QqC@NN3DT9hitraRL2$Y~zp-KgJtEf}~5%(2T>Pq$hJ?Gqc?`GQH|9w80d71CM zXS?U_+laBFPMz=kf5GgTb_^8n(c-01J&q36hW>PR3!kB}~i~-k~@wr1Mg{hZ@dozL^b{K1 zS@##JfGjj_%7lWc&wPUS-88x{WyqN$8i1w7r~{|*wkY2B(CA;e8XUDaG~AYf_q{aw zLI>Z*=?(^qPzvImpE0u?1-7L)IKLmIF@J^s`Dwf@)d_%i5E=6ymjE+OFz5t4g-*W6 zX%TJ1Z=%3GC`sArzNeGr*hQPf+robQ)Msx&{8T#mN%&tyA_=zTO90sczGW4)I~4>z zAP-(jVxesji?794(2HbJBXo)(IW$G_sAwIUd6#_i$0_UiLV`s6N-&LB3$uVn=#J|X@SEUR@$~qKc(0UYe?j~{e*DxY zkHb3_A@aJwA-;qS5+F2F>jKu`RGh&O5E#fmk&BNl)bn!L0{nQ}8brgC+veasN@I_4 z6&y;T6$_C(8K8l(AbV-dUoxjA#9$9rzVd1{(*?64rMTIasrmwr(FJMS#*p{bQ7oxD zvGszqZDTDy7R*5_IwJ{3p5vvv+s5N>4Di?;NdYF<0Fw}4Eaq;oYrK^JlPGlYQvOAs z3Y-GMZ@z$yHvV*BLKQbA#h;3`f}L$-e8npEwqEzSZ8{j-8w994CyBuf%U~WDOu|X` ze@SA1Ja>~WS`;FcKPSY(7lXgb}JvNfufM0uqx_HqQtCYk#~_1;nC* z#d{EUD^mr&L^hlS^s&)x@ezTP3XYN~j{B>oF%|FM*HINpK-`U30{0{oM=4bIfnBoTN4X}kx^GW&24 z;5glizy0_aGXMjAylvZY-Aen`^dH4U$71%8o*V>Ew-P^qd3`BXEnlO*^P~fg6gJJD zwmGW^B^jRpIf@VLZRR6do4|1oC{4iMK#gz)iqM62MKk{r-f8D$cVSz#kxl5Kdtf#U zZ-?%QU-u2J3aWd*ZDuXn1{f9QJ?f#=69HkmC+8KMr?67VVs$Z8!Qlb%-~G}zr{&sT z`hJ=gg|=S(1!Q{Oq5B8%ZH^g0ZSK5Px8JoaPOFc$4T7DHVV-%E`iF}#8P2V*mz4=&tUrp`iAEC5#j83&2=v+UjO%QCl2E#a@>47yv zJuap6doWJeGALXhb%G5AG?G%D%EU+=827k`I-H1hNlQ~seWS=GOuK(A!MFiux<85c z2I@4EBB3q$twKE@p+vOqlM(U<>b#6aYbvbY?)jp1+eLIe4n*mO*(7vnak7S0w6Uyy zm1(q!djCKkzHTq>YulnWX7TyW$7_M(5{a%G|0iy`J_q~>;98uD`W&*Qu}gilUBG5H z5r&ye9U3#6AsJ2|NaS`_-TTKL;7fu30Q`mj!cEsKEW9fLelu9j4Dgl%J?fj}&^jUW z3~H;%n4zk>0l~7cBm(ARX%gBzGoI)?%=On{qOog-|A9}y0>Tl%uLX{!1pgI(lB^Fj zb=d7(_lS>|B^a2x-$Rdm054~@egN9iyS^z%=(-cJ&T&3!_X{;t)?QtD(z2?r>s@tW zS?*|X_mAl|n<(oiT^hfoUwu=X9$F#bO3-~h$IYG6^Ec;TG_%JP(EA0=Lnen@WG+Q_ zzhX6cS2nji+))2mO4J&{bb$nHh%T57>hd7&M7~lD6<>UO{q`Ufoa5XJaq%$xx9(A_ zrO4ElNXzsS>gR_z81E4?CS5d%xh^JQhz{mv2a8qaP2x=H^B2qc=}AG8vbr+ z9PS3Ic>$A-qsi1X;qN`Hgxjyqy}EH!eIS0#MPx2JiV#`&gPBJ^uBFxLrZH|POjp(2 zO{St6p>l|3cDA-yb*g0v@wcDae^0XLL8*WdQ^A!$rW#E&JZT=KRV*J@AC=S*R?8)jd;MJ6Jaj1I zgAl3%Sjn+0bD-6%_`7w{?D(qjbtZn}xcY*C1m-4YNA={XY8(?$y^+$d!kk`wdn-mr z5DvwsPCbX*HM^41`D&%*<6UWxB{&ciH`Nmma4cnD_uP>9AUD*k0}{&A{De>u{JljP zPoVn{Z*oJiCyAJnB%gCc9rqJYrk|_M) zO~Z_B%YiHE8`J$@(Uqt%0X?*WOcc?gzfgE4wXay+czwO)iC;^%g5Wq5X5d?j!mo52 zRiW5NNq%#EljhZF9IRG?d7F?7rIq+=pdLJ**Al(0J}MPph=UdH$8`c&r!@Qbc;AM< zA80TxZw$p7@6c?hpuKa3C}`v3S{fVwam2-G+{IVZsMC=RTAJ>zZw%P%=7c#U zY{ZmcHRfK2&2ID-f%E099^OrKJdMHpH}}O@8@_ubflGYQ8?zsH%b-8jA4uhK1qt^0 zNGUEjh!h#Uf7If_$I+8|=p2S&=?{te4x$kMSH!{IX>*VFI{2jwzLe`gmi zn1#O;l>URb@Due-QvC~=JyUU_6+ExG(I=C2J#}PvQ5;#B@hf43d~J1R-JyOUZ1T6* z_!r{)O8h-dS?eid%Ie0a>)V{{Q$d?mPE>0`h;t!KCWTMbp0{vmSs}O_@|FJ^gn58a zfk>$VIgPFck~VCv=%+t+Y*kUn(C684}$8MbKrAuOGFq z_M79X1N`@@YaRTzinl~})i-(Ut9(wE$vabmcz3|h@OTH`qLM55o!2VZ@}fywt;xBr((H_ED?XN;O;$)#j|n0XQ(Cma{YEG=|qlP6eGFV z*vEWwAH?4*zDvDbMLatG7#!!#XF9&MQiFh%$$bESmr&Lvx*|mJ`vo`7y=+-$ItM4d zg+c}_q%6YmjV5;rW#u6~;!UsHh65V}Aq*CpcsHJecT{<4%P13je=4@TQ9npq1QMzz z&?vRN71dqdJ&5r=rDFs?)Y7=8KAIvW!Jj?y-d=|F^p|3Ukb^A2-{Vx&UHx4y)qQ(~ z;`e_HY%%_}Qql1`h^zQY!Bf6`mP~jlwYz!;6-}n>A+SEV#%YXbeW(;mIM|nj&0g(Udj+L}^GE4Ty5dgRWDAXyFHp|o zP(d1h1(kk+F{+k9@7AB%He|Ye*7E!J>U*?_CgcjQk_aKzD~tju+(PBobLDX0{rcH$ z=PZk#{z3iV5ca9Ymw!-yGn>mi*?`-XVE1m@kwRGCI(-I6?4p~{s0~@%+xtR*@7)3X z04@GP2kkk&$G=H@n44+seI+UWE*}?Kd-qCwJp@_^?9l*xPWE(^;`=7i;`eoJqcTAE z5Dd(YC1NOVUjr@vM5iqj-|a9!*uC!)y2LWQsrdUAhk{Vf+k2Q6&!?E9;a-OT-uHe? zi*cP;U;$(+t05Ej_I}O;ocMHQWn&M=9mA49xYSnhX!6 zDjbY5B%uOWnzNB{c$@*^d;4l>(RYpwIe`U7A~Cmpy%dih__)3?;j1iHKqZV&-DuH! zuAIFbycYOCTC~#P0YD;CjZUbk2(==KN>d;OQ#^A6Ejq=OV!q&_DkSD-(KrfCiAO)LZw$CB zuv|FZ8u7P|7S*^GU*Slx0{CWHge?MrLD44m{Q~ybw@l;54}9+G0+ajRu@s>;Q1c5e zm(32oj=Xm|QS-x227^=qmt}~*UE{~Me^Eau-k4LHGEfp`gA;5s$W*o_gM2AuIG^oB zp4|UAHUAm;EI#PV`dJ~I9uVL7W&O`>&nRu#cnB@9Q0Sg@@hykz_qRQ(sAc(A^~blV zFu9kK_wfeGei|(S-w}dzRT}N4K?gj%{cr%JdK+E z;23bfmWnh!Lf%=oL%t1k-3#_=Kh|k~vlD+i{%@kDzqs*NN*F#OpR=_Y_B>tp9<^_S z8v026ph1cJyB}5sDPq;3w!x)v3k#egX8#Jsxfa=f6l5Nw>+ls?{_pz6fC%%4JUcMP zXPYB7INb*zN!_K4NfS2UrYh7~ZV!w(j6duO4k zaQ3n`WA4TrXnfGO+T@Tj5%eW3S#K`>V8`aZ+)F)BQI`|%@J3BW{M~Qs&kJOSHVH?4 zCyelL!C{Ua-yy}>Kq!Ab7z9(0@QtSLTnoT-2}g#Ldiz&W^Z77S!pxw|IM)Ooyp5mc zW@?K}_q{^}e(6&|R$zlS-{`nICX?_;!~Hr1V1}LwMlbe3zpUe)DD7djvRS zS&Le!rSXUQ^=(4l%FE-Of2zNy?Vb0=H~s{-Upb*=PMmvP{DyG9 zb0N!#@ejiy)SdC_9C>*-exbg67=M6YaISj%L-{4II$oX2vGPuc-@q?ulgB^IRL;R*C4CdG$$>-S{a3B6jp?)`onYJ28C zT9)_fcQ-7Qdsa*RfPTl1gRPFVT>jgB=e8+rcfk%!6y{J0wL5!zLX)paXGpe6*l$;OEu(et~Nx_23 zVt4~J;rI@esdqJ$w)Gaqf0y1j9Dn8G(CGN~yBZcJTKQ&JDjFI2#I1CGxTTH}-=LMA zjkycp+#2>`lTcvYO?BsL9+3u1_N|Jem*B-3f&Y=}P7ZnrCL0|^#P{-l1U?n`pQ&yL z4%6epN(o>Pj0O1jNGrf9syjyOB*o!;Rsh4yvLB(kTvvd*eF217_Ft(EWfA8EjsHhq z0Fw<~*^lxH?U>(zV2MP4qX_}lQy^# zq%IgW3*tYbIQOGq9TTplE>kg&6$JRJ1Yi@1Fxk&imx)0Shb0yPzrMr@@HBN9p-VMX z!zUE~beF|t6$tou#lLz|@$7$6msl#L1Oc!y(Wa3w%YL1@U|c-Fxd(?N`t&}_ z;5Dk6ALe&;Q{Rhw%@% z;^$JT9ph*QK{RRJv;;D#Mz3krv=3(}zO${xv#Dl1<%JTy5k?)#NsI0`KOVa4H47+L zx~(c9L}Z{KMZWo?CgSwpIbG2s@(M7KfX9Tp5r*D_>>Ead4R|{bqte%+agkF?)pzU2 ziPA@0;L@E(*QGRAc>B;kNeBR5COnd=9<$w6m9S4B0GOHZ7^-^E6`;Wppd0Y9RE6QC zDZYsZ`T`jAA5C~XRb3nizygVY+^2*vCOmzKy01L4&CXB-@D?e~09IpW&A@_Jqcpg<^f2*H; zAaP(qHt_TkmaaM2waI7P(_}bNQo(A}ot4R*fOcgIU zC17~I;5sOUY8V4k6>D7!EKpo5&!?Ey6sz3=ASfE)2c;?>_ zU^)ZMLN0@B18FDsL`90JrUi#;Tf<$S@ zOao6wD=GXpDo0N;V1fx?VFxh`0@9IV>KhE`&^@^jdV6q9+eGp8DKe|uOa3+!XHst zf0x1Amcddmz(m6MXQ-^!%_;9V^f6r*K15})3YWoq4g(xY5r&D1T?QXn2G@YW2Vn3R zMSpPG3gOQj21w`dPZT}k(m&+T{|NXm6pP|=*T4ebC;>DUO!ik`@GwR9IgN!d4lv*( z;v|6dH2y7$?r|CXrN1MQ){-^QY)fA0TUc6;Z z!>IW7zt)wb`71LK=SiLJ-7!zTx!;FT<}9Vi z7dR*@NaNWmfJg{o@I+p9O$g_dG#-L9#^FS_&!EUUr*21EK=Bgbvw=^b$h9uMz~Y<) zI6CO|@f3+k+ujz*&{znd?l-9C+uc5uA}2Z}8rlMkOVx?w;fc9OiEDwyii-u%5P2IK z;_%hLhn5Jg7MKko*3ht`R!+231wh?z!XSpH=tZsjC7b3PmfyS;@*yD4cV)Q&B}=XK%q)N_q85rF2acYdBY6X&d?ma;m`>a@!5x3dA?T zjGK4giPYt!t;Pio;H9Bk$@N zRQRE5r^g)y)&QSPg|=>0GwhQ4et1HZCZLeVt#7@SV@DhtS_7cPcI^gPi$fDo2w#f; ztAa^hIveF8aGq4B38-ao(^jwTWPz-2=X9nwR;eC zYa3sHz4E&(23oj>Okte77Xtx!qX$27ah1H`{QzYL@!ywUc~c1AcjrC%IeABPq(K!_ z#@@|n-sACZJ^?MsXDAX7_*?m>5yo8E$}xC9qyi zjnA~p9UsVzIs^uQNSM-Ya^qJ@JZ}Xg$KxINh|<2(&0lK4TEvOkBtnr`i*!zJAEYsx zT>@|#<=qKpM=1R`BvHKak%oM(_>>ImjztKtlXvaMcu%GDr}WqW#rr7^L-WJNW<0Pn ziyo!W!d-&%M@D;X8fg3zH9qXb58EoEn8H$8Xn-LCcq^2EckoW?aE4yWtT-DO#jv>I zd3dj+4zmL_P3~yH&7AH+hd(+z>e~5KjV~)c&>AmTN*!LLm>!rVjh}HEKvs>+5+WTw zB7b!X#ZeBtDU;*Q(;P7}KO{EUMXnbCx!;LC){rkYR^p-#r-xuv` zV#1zDR$BcQfz%Mn?BeP-O>k!Ky|oVbILbW9VUHCo9N*08qm=QPd7bM=vy?vc_ujf6 z@kdi;TGWWvD${00AcQtCiLO?N5ZNsUm25&jKDZn<_HrgmxZD!p)6nTC%>rcQV(?<&lLoKphPx0pzzX2l@d0T`?_}oB4llzk3T)TQ( z;IIYTD15CpA2j}}f}1&K`vQbx59&;X26#gmh>7>({Q(L;?wa^5#l^%2@s3+e-*5%s zI7o&$>Lbi0{Ie?n$KfTqs6ukT#^0;3e+QSrhZ;Z_e2e!tD5u6{fcbAc-U^tPzYlJt z+|z>fawhjn#6gP)p6;~(N1Eqe3a7{)`C88{g;1p$^YuLSS=c}coc z%Pbh@3!_;< zZa&ais1#x#nD?m-AYMKn5m9rZ)TD_hm?t(<`PGh>=XDmw-pN6!S-yx${Cp0p36nX~ zBpiPfe5-3#R6tBkLI|~RJ#MRnBNTd$iSw#8fS9;Hr2Uo(F*+Vts7?jI6fi&DK~$=} zDH;gS0}6nK_&~n+LD6`}2l9>;T&jhZXbc6#Ix6~&Q!iiuL zrZ9kyc>mgq_Yx|4##P`1#i4-ruRVA#r=kOa0$xkL(Dm+k58tC%gO@1sJ(Y?Ek^~PR z(r}vu=#xyu@Cxc85r7MlJX-{xj6%ph(JN8j$HzXVy%|aAmIkojt))Khr)Rb$zq57_ zE{}oIuPql8+7q9l5_ojLWunmbnzkmGP)WC-R>AbQ(wB6?^*B%!LmTa4K|)=u1n&5i zejhwYrSCZHlf0P_07N*Uwrs%rnN<3tn^1EFH*<92g^5Im=){bA(&ZXo^6Ek;IFO=~ zoc0M{(JKr@!kh6vnWC55gb)k7ir=oa7I+30*iR7z3oLMz3f{CzzWF1vjLHH}y8%q+ zi!1Zx+XmNpmuJOXPrw=g4uI~E$@@LFz(uJ1VjYN64SuUQ1mwr$T~6f?a7d!c<2W3j zudUvKEsVGPm5)|+aExR4^p_((F4&I!fzqe=1W+IP0qzqa%Kz*NfQ}^NXz7Xo=#i8^ zqT^^P;C+H~XM`Va8RLvsJx`NM6BKa){f9vxy~*;YEdwzz%G10Dt%*Oy`;%0-%r)@? zO1NpAeDg=)Jvx4-0&H{`u*2R*<)63;Y*C!6%!Qj-pcs|^n^FQ3KBfUsXYylmpP}*} z9TQ5VL=vHX&3l+C!j1yxpghidN)#}85cZrxD(LPiU`wIeKMH;6&EW2Czwu@Ao)ZD& zuIQG>soe{hc4)8!xD}iCk_yN^vT!N>e~c=IxEi9VBS{1e^Y)9D6*#>tp`Ztvg5U6w z3V_}eRg5Q@*^y=oB<9Dfy;HvV13a-wpKlU(FSky<3jF|a5_nq{`vP!W7Pw-*3Sh1p zFH8F6_kz_#r#;QPsc?V?jvGmhN1y7OA1k_@_y5U!udIyE`;g2Pr}8iQ6rE2ZAY4{) zc*zxm6DW$_dfo5f<6i>r?cnK2II8$7w0F;e@+fDNf6}rtfJE; zSM7#UKjKHbT#TcIzw&oD>w11De)*4#=!0faF~23G%1;6QnFa9`zA*_;g?9S{H~F2= z(KvytDFgJn5y0f*J3ov7#eM+A(I62V-}(9QM-1Ru0*Z$%j_>>k@VX>C-{Sbr zk0On5M4rY+ZN(NqBxQi_eDt6@T%8DD@u6c*u>P*~L zaMSx#hOJ1_i_ieaOMuV?n%`4yPNlLZ$yE3WHCS+O(_fWAWthqyz-BuiAEpc-APZyi z=TI3=ObGB%iqF3e?WYRhr%~B;6q6GpQ~<0UVhItz zYwL!Vvg2-hf=Iq?y8&vYv7uJLX5xY81MLI`+!rc!C1>lZxU2LYQO z^BI)D32XW4m>1}1+ab$%R;_&^Ud9T9-A#mj4H!u#{o`D&5@UbVx6Len${Lkpc3lAKYl zIEeG!EHL05Q>FlWulBeJy-{&zqgmDy)V5{al_`~mf8+OXE zE9WJXpf(l!<^T`5I3@-K5A2lrwf1C{{@WH01ju}kVlrBx0p3vwue!}=kok;VjV%Ij zQHAqqiL(34^v zZ*lT8b_8mGdq4o=g9W`gUj}&|WdJ|sY8^`9_l}o1d4Ywyz8L~S0AW^29Y;GBhCl(1 z_kyl5>R9SZh<}6t3a0$;m_Bs`%_)f_g2@%%jL1gt4v;m_u*P9fs`$k&-c@k60B?UZ z1u@)0eYUG%Pa6PKp{*%6hdT6j@!l5aQV*IIoJAcfIk$6D@aWX@=bbN1N&f%Ol;2F% zf4SA7#Ti=U1q1LmM1gqzX>}b^JHTWN#NQp77StiEDL)C1=JyP=y8J9#FoJ&)bIS`p zGO&&?z(?!PqAe6FxP&s^ca_mbrD;}&=D-=-$neaL)*%JsECCeGXrh|})KFWTvJKkH z!$T+V6;p_@xp6LobDa2RA=NFXV29_sbGpFFb@8JRVZ)XFT3VL zzCTQ}IH%{S5MUc+t|1WC z6fCB6)b4>0O*Vc|vZX(u$DC_?O-3o23n1uaxs-k{R$K)H7Fz-r$~S+c-L4k|D1jyN zyAA>(KNaRvT9bB~6~~AN9(VgNZZ7K>_<^l~k(b#5rr=(}1X>#tf9HjUf-csU-kVKA zMQY*#yo2~e7iKxSFiZ`ZfN_KV zjj8?;6Rez*(8 z*Lodwc)@FwdYf%HDD$T^fVAN7Uhp=hUaK{>;yV?e6JoaVq|VhtF%^GaaGB!AxU(t1 zZakDG>=lZ?90-6$g(<+fvcr)vg8;8-0H?xC?Mk^*d;)JO&H|!2VG0frj-!(u*~;K; z#jl*4kdN=5(Rop^z&nDgfDoqOJ2D^GMXXBTJte?RADG7!!pi6u1p@{EE`{#7QsZ-T`=qf5HwJ4BL{rpXpO=ptfAU3B=FYlc#syR6&7C## zqA8b_Yj|0(@d@L-kBy#r(cF2Loj)TwWY%xS&YC-qgNUHlgI+HQ?_s5V;%Sfh45?CN zN~cg2@M>>Q;FMNsFGGQVrf{hK&ZF%UA>c{#D6Jcp=u*KRb4=g9ip&2$3?Fyi&ohMhiY@ED1}$B6pp{uHA7IJ^J_i&mgE0MeHQ(C|_W z;=O&BS(Ijbn?d~35x)fSD^wW%^eqt8-`K*1QBf#u3|lzH8hkr+*qNh-3_EYs&|^h| z;Q!tr5HNt|!!gNxc2_0FpTN!RXCb6^=uFYCv1y!#eNgaCNfdmF@ku=Vm_nGQlf7VX z`D=D69t6BMFeb^z_28@wQ*<#}SvYNtV~7?{NJMYlM*amwFiP2u@J9Z}$EV?pjX(1* zz&}OlT|$ycef$#OD=hvTOCqN^$bF{128A&9Jk6FVw_HG3r|P-ZdWgrRh;uy{bJOEq zyrWyyJCP+>z$*k7hev&A3U8;Zf<)24_|<~Tq7O9UQf?i~0>-2*s|++Jo6A&67B#EA zy?Kcb8)4xJ?;IPVEHL%S@{MWH4QR=aP5Uvmv57#du>}%BFGFO2X#gPQ2kj?!j zbvVIIg1-r_t^G^zeh9Uf6ee7(G6Ph*V4!)O9qJqEQ0y{zT5wGw*5*6P*yk#+Q*qI7 zJ>GHoS&NH5ZxyVQZyD;&c+S-j+7-wEHb1a?{iJur|?dV!i)=sll+DMZ*PvN{G7 zgZLj=oRa|lfU)QF&aRJqCb%R4tQ|8&>6B*sAesb+Yyd7UVeX<#N_*Y4z&CI|dKRB2v!pXhs9Sxx|KW3gLA-|_SrAG>jg;_bAnk2a>#@a;T$w;n1!cq;u z8bX_to4zNr%+;_$aCS0N2#2af8*ef@8K0zwMMur2l2^Bz`RZeR%X|H>jfZ3_d=K#+ zNBSS{I9E{*4X|+)N#H12QGF7#jjZ{x7H8*zBUMJpbab2x&c>RF>ETxUX!yW9#V;0=v|YqT+7ep4&BG!&{oMVNl)z*7Nt7Gu^XgqJNHmp-_T1s^6FcQc2&G0Ys{?gMX--r_HPb%LOK5MK zqEB$HFxDp^w6uve0G2pC*hvV;N6)GLJgnllwvsa=GNLK^im1n&ATvr{`~>ma2Jw4D z{fS?f#`)WHbFI z5LJDfWC0ZRVu1{F$gTj6z4EOD#E=>C5a%Bg8AMciOd^ljVl2{2@(|}A6B$ZWJSjkHU}AR8$Ux1+;A0}lqebJa05MyNKq|?^kv<3j zQy1V+&{hnPEgwYjhQ~yf0biZaKue*>ND+V;$&>d@k^p0@0D};JK2hG^G=3ugvs5a; zPy|?jLw~0w34meG2e%4s6IlVga}t9Iz@|c?z5q>PLKDHTL}UXxv_B^?XciM1Sjt2;1IJDlX5`1m${SeFM5f|z zEAXe2EVx80Xd=^rKMwp)SWn%Gz)}Q2H3esqr^Crf0xSc*75D_jGm@Qb1#q;ZBMmqP z8G|z!=+U>LzY_Rijmw`I1FD|yb6w%PH+{fkqicn3p13|E+fo{8+GQ~v1Ed_`~%aTCuezag2MR+)C&_)QQR zy^6>II%TT%G!)Hz0s+iYabOrxYpyY5LDz1*I^e9El%u#elpj z{&#i;{{1{5j()?)e(>4x^LuAx$D2NC=+)W({rAxQbHw{G{`=T~URt!v5yG3^6YafC z+rZr8W_p;rK`PwO5RP$Z2hB`zT5BA_Dvl(JAStldvQ>Q0^W!6|DbBTc%rXE$4&Xg> zK-4hBYiaa4ofj4XiaQ1jK+F^uaz7yukT-WG1OzQpT#|(6I`KOLuU6bI+CeZNkc$9y zNd!s+_a1sl1uVIrMx)(7Bw-=!KGpcJ0BD)w9^6rJ1gv)GBX<=aE4WPYsfKk9focTk zpG2UCL!gdK>C;L0v4VRKq0qv^2TYGfZ4n4q@6boLy7(j-J=jhbsQ~>g0b7Gcn`v|( zyZ@W3=i(C_0`TzSU(skN>iY-?Y7(wc3*p%A(HYtoSNg-9_$ML$?ewc}P}MU5by;lD z!MZS0e7X?uKU(4Of0l{Vx`OZQo)(C9QIv&FO6sdXV6s1u23B5DTjq)hxrIBgRAiIt1XVDNUz-w8k=ZD zl{#FVmU3$l;9mf4^yQToUueeT*KO?J3JrnF-WGEjY{)jnt7&+;YtCB)_crRRxhcMj zhP_HzQ+%Or6I@DB_=hRpNyA__PGVK+cBOBJLrn4WH0+N$kfe>=;<(Si6oVK}W*#=h zWpJ0`Vl`N(GM|R^r>wv#_d4?RA6#6OvSH5k{@Nr@8;Bx|C`2F|w~@MB8C#Is^ke6v3-xF*Z( zh~Gdbo#Q48#^0De4?l4V6u&_y4QZ7u&szo)ltJ-ZG#H~GQ~Yin))z+5VNE=iF*6DX zgGR}A8oW&jt2N*7>6+q~CHCNZsPhnC@V9bofG;2wOk2{22A@dnx%p$Lv0!uW813{Hu1h;L-L1%vD~5 z4K39Y!<0nn#7(-^Of^FqGY&`N(7?Bxnhs7X3`77<`++oYtSbO=1q&cJ z-b{E?!%T#v6KF*Dd|0H;8FgY|;RiULZ-x z9}THG1Fm?pGT5Y}K8*MKl=KWrcGQx^8edWY!j`;3{non*EYbMl1`sAXkosZ%89CKf zhLD&oz->yyNrGc?`q{Zb6#z_tYcj#&C2OePX>Ka4aN;9u=@RPK-A(3|7C(SgLLpu9 zIQ2t;U-3&UQI@Q-0bW9Ya!B|msz+A@5|RpVzas#cl`f@vWXQk`*4X&$W7C1}qa`Ynhbc(BLL#>_Akzsa-SWd95E!(kUr6&)Yoq3Rf)C= zF6{@@L#AX0^}Wlfi=d*!m#P-EU+G8GcdAn(mTY(8v)Om?Wh%L>v2}_aP5``@yx<2= z0d_e!-f?+lU-UNulf9q0v@}SB7uOPD-Hoo34|$KLC0c9Bft+U4gpOGgekqBj$H@= z{k|e3<}~ymp(%kdr73jmWp3&Bz2GV!gh5Su%n?_>qYjSu(tPSQ+QAV%pbuK55$fe( zLyj*Y7;=En6kA7^cA}miQbB;HDgj)0#E&TrQ_pvF+Eh$jn&HPcrKu98XWWh7$&YV1 zY-uI+T#D0i0|sFUAR4l?rQN8fTQou=Ujr7lv={Zj6^23lh!voZ6|k0i{K@g5(x@Xq z7*nzbsK-hi&lC`-^a&UQ=BLNlfB;8e0aQQ;Q#zEo?{ZDtO&M?!!n~$*Bz3>u6|k43 zkMS!!rgR{6k6ozwP)*oJ3Bbg{taK1{KhG7g!6#r!Rm<+Uq&Wm0Am~hz^rrvb*ps+ z80*J3r5LT}Vc@RVnI8}s?+`%X(&^L{mr?}y1i@7U2wOUjx}NPSFiGQ!0uZ)zK6MSd z3N%^)F0~58W>DQ%PChQ3>IeX4rL(E-Q&)iLJ^_QU{M6m+#-HKDN7&LPK7GnjV7B0@ z0ECT|zD9M0t_JgzfM@_|OV?1B*Ifv(m-X#h!JdKGx*N zH>C??7@WGya0xU!1Q57%Gj+ikVnGrtR$S`umB6=B7mQ;C_!7aj{>HHIKgaMbu|f5T z>Qu7vdMQU@V#3-c$_WT8vjT8YdKe5=Q7uOJ1AK)gaG}KIkD8-ydAFz?hXVT zMcIJ@8#F$$x#@=VG1V_o%}K6_H){YkF`73fieq{YK!f;!|L9^$PDwT_iz$5`elLBG zsvd9+z0KlCM2rlY$~{!|J4y|q)>ltJKa1_eJyy&>_$=73v{&)ozSHt zkGX3@hXcg_`G#@Zw;+gikNWpKM1GShhq&(jnuEUv{B5c@4&DIi9DwCGpZO&-W0znQ~Hhs5ck8?eI{B-6BC>h+);47jK^RXqT>tj4aS85Xz_!L68Hl6F)m3E6@^R3cyJKYnbRDDt^heP=k%neQK1OI5wlWk5kg1b0rE$ z{8$45jHQUZMkh3lEigy}NY7#`{>OojiStthAFBAJxuP9^U@=25!w?-QxOCP~(3|LN zDnjEVP+*M4X8~ehW}=NaQo+?=tOk&~BBQ`3P~jh)vKDtoiUz>>9!V3$Ns4n^e1ZzV z-AQO`qD@rrrfY#oz5q!7u?R4a3Ql$fXw(2~0raa(^li$=-OPaxOmzg9037S6{^ANS zT?OEAKy-^t^gYU->pJNSi$9L^M?uX`9#+HzCYr4bB#jyo=4HYuFHSC)=Lj$z_yWqq zits={)O~O=zHO6*GnLJh`!5$?paN`+v56+(?GSEB^385#B^sP!5i}4is3dxYVbs5Pl`$Tu(>AC5p#ny&^_;qU$N=HrK>U zH2~kcT8s&sSEf_WIj(@qd;v@p)nW7_3fpsdLL%S_#aRGU<|c|&GJ9Bn#7fXxF;ILi z#WUL-*FMpoVkW9Jdij`FGtqB&VM0&|qu0;4lnp2cOmvgrf!Q%6&SvLT;8>h%qR&&f zH<(4=V0y)RtOki0w9V2?OXzzl)xj4)a;etQ})Mh)@xCmt7i-` z7@Q4|z01YX|K()mQ+3Ku1)fRSOQ@%KHdoJP_AU71EVWY@_#Y^I0zBU4w{3#zTL^BR zrdsoY-RL{i8O?-1>*v7~xH$7X;IC0x5+>wg50>^hZ9RRd)$aeayF|Ac_ggFuL~E_4Ot>VF!X{QzjqK>S^lHO9@ZT>S%w zv$La{vLTd(qhl-l;VC$u1Q2Iii2yhhw1^yU=lUN6knWu3rp#bfw<{o5|11Ff4nD>Y z*0VT%$JPHd>vx+F{}RFVplGoG*Xtl4C0-LmKY==RadXR0mH~1FoZOVjX@^dB|3z?d zTqK_A<;g>5bZpJI3Q#MY#JqF)S+dHlJht3eCPUY~gn22;nDQ0>^vG zE&HfLi{n=a&p1!2CY}y6okFs#!s2TZFm>pxxcXgLjRfGCvc!||sGc(r;#9%W9?T## zIhc^jIN!y4TKr%lI=0EVcyEip?c?e9i2%0QSk})5*c}8I=J-|F0KugcM~R)XBtq#a zPAQI3T`VAu{gKc}bNhX8biu{1KZ9H0Qi;E?U&jtmNHiQ_86a0ge?iV!Noj610zYE{ z;#cq?Q-OnP+|hCPnK0mt0iW_VpG9f*$iR@$AE!8%XMD~{*^SixOSn}u(HMfC2>~w9 zP?#AsX4^jk3-Ge`_~q9O$gaEwKc0s_WFPnO9gFe!`BxRFV+{mXCMXZD`#}k8%C4u> zyWHHMlg{oE9PGDEZzGq=4gAmC3+7l(2`RCThaWe>sb9;<$#Q)T>Jz>`2Ve2)j;+o~ zPaHNq=7O2QcrUIokcWjr{x=oJQtFMaP}d7AJu_Ivl&z-JDQ*tDQE{;plB8@crFM6H zly~`);8_F{g#h?PG-l*B!k3z?5yGk(Yr${J@+6IbHvU)@8T<7sZhm@VVUE zV*{#UUx}7OX3QOa0Z!AN8_X;a_Z69=DZ9;43A&c;By+@7X|NYpno5 z1~w0?N}&id;CXQ@jgaaP(wef@X!s#ksqxwYIq_R>9neu!XI1&}Y6C*U-$~MB+y(Rg zKbmL}qlvQ`jL@-IX0Tq~Z8hOq;ccr4zaOF@xBf3p zUi&XXLvZz}qzSG)P_w@*VN_U{yd2%Id{@}_6c=G(^70Jw-gC|Vk>wE-d){s zU_1*h@n1vyY#OwdnW3++Ob$62_eLIWB@&CGYytCjMk> zK+VLj6PanqteF>HG|dSRxY=j&tLlq{DMzus*3lRG^P}=2Vaich;mGQEtkZD?enG^O zI+&-^KxlQB_om}M{2vJbW%=QGzQl9fn>GQeVk#|M>Hn10d+B?LC(?4tl%tG3!Iic~ zakef}#+0Lowl%F771Hy=Q%Z@a-S;+AaOo$*I+$D%O&~3|6YK4@<4T~n#B&MMU-{pe zVer(cb1%5`(gY8DC$e>UPx(>gIcfM z_0*Y5s*q^FEngm_5(2%Y!BKUb+kS4PXl1;dVVYkjKQt2#ik=oWD)^C73io z2`hLET7Wr6Vgmea%4Z<}T0pG`Tw?J{fWyq)(OPMRB@9eA#@&wvHIO>q7; z<#%D90k%CeJD>jTz(2JD{0aCPUj7Sd{Qz-G;C2wW7XhXu5xC3ZAkI&fmxSLd46tNJ z@yc(U^~EgUpMX!sH!S(mSe)!Q4Hjl=`2wugG(u9C^2ZS1L`@?fUkd_gr;*SA; z3P-oPTR2#=CoTRY-k$+poD}~li$4YYRg93m>*F!?{%0UL8kL3ce13|zCYkm*F&ztP z%J*Z7#=<1$e91C+1~`gZ>{Co(I=*FIwU&e9@l*I!!g5>*vIcJ;z{_&_fCiXG+5F-Y zcuNE@<><22bjKEt%}E06w*tHhT0aB7B}ssT=+K;l{RJb1JQb8uNa)8B`Ts*O_%kek z!hs*0_6P5D1o#w-*Aop*{EnL%3R~e{0-wyk=#z6l74e&|z}LXXTM%D4BXlodkpI7h z04UiK5AO0pCUgk=Xf-^D?1_=}tUHr5{Mi;jmy-9`K=f#_?$?cvLdjc=Ev_duBYrvd z7vQ99;6eVc@GOI$5ddS2=^wXd0H#_#+yWd6``fQ+T|S`95S+^neo}vxgm+f@pkpdv zJM#t8ck(}&N-n^+sVG5!O-TY2S{$p7E2@DnPr@<9#Tr5p@8Oq$!w4)$A_<_i(nq*w z52JV1mSnv0RFA z8LvVo##CHL$FxcG894s28vo&`%nI={s2BEq+kp!XP_F^F1BgKlQ}KK1^_h$JS6s#& zAY{co)C;G?4)Fyz!Q$K);rORhuZ4-4nCYLSxb*+fX{k7qV!h6C0}NNmoMWPUU94xq ztA?-+E&>z_i8Uru&t0yDrwA@h0bzDA_58I<|8&K9M6O~ud5=8Zn|ju}0nW4ntdej3 z=sAkQd~}5jT+CU8g*)+g?{1eEm|(3Yg3wMY6bo=U^?1k?3JVT_OR`83Ttz)FOs%6W z9REVWRcIFQTI&9-%A`COfaeqVeXcK)yg;V3AV56pY=03MigYma9{Jn~H5rj_rtYnn zUM{!_bs>BqmAXCe3U!s>D%8b@e;;+b!4>K2>rT|wpQ~U3cPh>fjzKk3@mK0PIx(=u_&pYfgCm(t#S_%E z!gZhf6lVv2-f2r(6G-$yWL2x&dmHBCdT|;*C*jm75XiS*rUTj)J?b_&B{Q zk^{XsUINLGAEYo9k5b)aH|zb?!T$>UMZUP&4*9Xv^y% z^otJuB9a4_Rrhd({-@%bGQ|L#pk4B)!w|^yD=iPO@mUzKR-8q?qS|jxU9m$w13J?+o`s}RSGjZ zi0`dOseI2&yicLpoW$fVrvz5;GtS)=q=Km&OEnk*XQOpgp)fEylbtXANPb;zyywgT z?b^(gEmbjpIs>VRBVqgpaoHY97bDUlJEk!!Cs7UZiJu_Q#oM?Nf5Sn(2k;2hlu}TG zphjU_ONFa|AElbCAbyOC2_b+gL~4twBUBTjpawyeBDiF*J3(MNRsZDToh%L)%^wEi z?V##+T>-)tpM>EWw88OI<8m5KaVUt+T4lZlU=1LxsUAbsf1)%S0KY{nj%tBV;iz0p z)lE+7RKmx_0_>8gtSe_w^#m8MRD2{%g~wFN{mQnAiy`?cYb}9Q#Iwz&5;r)vNlb+? z-c4|WDRG18a8o&ysy!z|n z2|z*?##C;ns-~Pt!RB6w~)A*dh;DlUAB13u`cTgod z^c-LP|0G!xeQT>s$xi#KIyO?qRCS`t_T)JBB*kTA`cU9usyLijna)OQ6x@6GHEY$` zRPhJbC{q<@zeS~BD(6uJrVJ|}lhzz?WEMb*G89v$auwf59F(u{Bf-JIR8AEp6@6U> zvmFN05e8QWba(N27Pl)YDx0YMKT_1$9!lkW31H^r3vvD^|5sum0&BRyCtwg(@U7H= zHBhTJX?&R@UV!k+sQen8-cY<*}jc?CGGL?I&^k=<{M)A#le1jXsP1P%eMK`gG zK*OyXU<6v5d_+;@4l2bl%mMzm;!-pW1ip((?Y&;gV0#e1@^RoVQ0ed7_&c2V+kqdT z(o1w@zICEq4gnm@cQcM_ILjsQg5Y8yoCub3(*`Qp?po*-8~*?lr~!lbspL0q66_XS z_WNR^si|tjVwv+OHROBo9%TR%n##>$W^A*O`+QWxy~;o=z@GduVIPp=0|x>D__V0X zGf?2a`~;`g2S5VC44#jrigA@H$7;C%!bPsQ)J8hoy}WTPd(dlB{&JMj-&d=;4C zl#`oNsQCA8^>IXTO!=E=3*tAOMa39O3oP)x1du8kwXvzfXi2Lo{-}c=1>Q`>=3_K4XU5ySmhLu@I2Wed(s&Z$uAoSj@{m+O z=`1*x#wdABb%bzsN_$@il+KKM4}YZ@rK*yO;O`ZQRIbWbTypvv(66N;jGrRzQ2Puj0|uaFss>RJ2F?S#R&ZHRgM!jjVKgOG z$|_qLqwrDz*vAedKp!gnfP$VdlHJGgZmQ-}p<7)bJmb2CL5JoGvz>-(RfEQV_)%-2 zkyP*{r3a;P)j$ovCW3iP)fg)H(A8j&6#y23HB9xxd@M=ehp?Dh2+eZP;-_E%Gq9z7 z)kuf_AcXmz3g&^nUmAm<5RjbqF#=5BL9NPwz*xmc9Ds#B2ae;hTH)h^_{e3ZYI+hr zA&8GmW~ycg9+bu)$O1@Nfpx1XHyx&eTuKf38Z-)SE~^vm_#^)<*ThpD0VaUKY|4Me zwa|1&0Cw_ul)s5$L0JKbd<#H&VQ{-kV75bGhT_*bMFj{-d@d^B52k82<>Oe_z=HEF zz8MxAiH6$8l#gox94}p<0l2Kd(je3SW6I;{a^C_?f=f|>V!~7{ro6XEiUQ51%?{2r z@&U@TV*pxIK&V;h)>SPP;pHQ~V0>LVN)13WZveC`fcOop{irkJ*LC$5aG-O-IeybI zT56z#Fja>s_wTMaD+Kp=4H#Aum@3p9zjN)eQt?f*gr~s(e(p_fre3A=xrKxL$xrSK zZD80^<9?rjsal0V8z^@$nJK=#P{y!;SQV9ca;p<7NVrs4=fq!w|F=@kdv5#KC35u+O8}V?s}xg~^r4(~t_gQJ1a^SH9t!`*#a~byEgVz1RfG(G?6h#u zVqpu)!K^6q_zCj>VNh!9b{M>%0bt3%0(%5Ev+od02;A&6AgcBXt}eY80v@ICWv&k$ zumW^~5TBsfg8(@5tq0P;I%an`?t_TU57chhtaioR?bVJ}597SQgkz;`g*k zkE}2YR;cdfYuGyJ8E=c9WEIXu+}CD<%^s>oV*^zWrB0`~JW&h+m$4iqim9GNxH?9< zvXXF+L2w>_fuV_gph|M7a@o3T(`{Bm@jlJ%c*l=o$r;DdTLE>Vb&Aj5=NWvye@=PV(S5W&C z)qTV?vybAp_-O~-Jj2?|f}WCRFfDh}8cN+1cn6z7@Ht4h#Gj8+Da~gp6YhgDWKdBfM3<$hranuXX!9vw{2 z0LR!C6wo|{8FD;k30vEyD~D$VQFyXBho^T8 z$l}ak1KJxW!KG)7=L3QBc;#e8j1T1X7VZ|d!n$ZOzB*9)U!8kXfEygvD|o?Le5LVa zF?w%`jcYESsCdmhqS?iin1N>6ruu7KtN5(N=es!Cv=ZQ31ZZyqcto@8t%R_F;y(f( zZSf}Hkt7B`1AoBcXo4l*(JcQNy4*anpf!HtW3Iiw?9oRYSiTDG%&tRO)=4hdJBR~glm8T z8=wFI%7}hFK8ZlF#fyQXT|cQQ2`{sF8SpMxlk{j3US)A~*=tV24e@A6CMLpFfG(Ix zpNuJ7_)JY-qBA!5iyailz~$PYS4C&cPr}h&;`mr7VQP-YEjvq-a14yD%@7OA$9P_9 zWGBLv!Eu%VnDaC4tRw=*V==?6IPwis6@r)hQ~er$Fz^!K8x%kNUrF(CF{GRnxK;5} zufwhkeoeRl&i7YiD1(!&3A;c;6vHQ9on+$E$XkP?NjxWyNb-?0Z2Z#@ zA3k()8;T(f904!~bh%a@rsjO2F>&jwHZRniE4bnB8f5!13zG2j)z@o0;1>a}PQov+ zIKFEZ08fkA0Jip8T! z3mlofW}Sn_5}M7ol3j!Vi*YLU(Im-HeWDaF)jvasTHrI27&HNY0CADqYcSgXUwE^n z4>~pX1MjQ!6ZxN+$}$b4YsyVcI6W<%l(s0B*R%^PGvZV%7R2NG&QdVoyp1HNS%vtx z6RQ=z3^q!h&Sq&FMfX%?K zO~O%ka1wD+)WE@qpTZV||N9!OK>(yt&3qL>12{MuCJ%|bBFqjDs7(@ZgB1XbYF+>y z`G0)94}2BXwf?=wBxjjd8t#U~5ir2@lK z5W=-p^Q9#j0=GH=q;tyK;NLfgmk3=d0^KeLC_Uv340w^0;OknZPAZIQic~*a)m8|` z>&@TFsEV&S86Gq;m?Fn`i!81o$K$Ko^g^C0sE-M9a6DwZmbf4E2yk<#P^ z#!TZozhV^`5I#vLJO#s2igMZoE+N;eka%L#b;=u-Vm#%k)T{0_)TQ|(FxBCg@uK%v zQ}=FJybrkaNUc1?T3U#~tVKiMh0k2l%B8r_I#=Xj-)@t3}d7G8Q9_&3dP=;JC+cOY>NOGUu9)F3@hGc5sj zVd+`mgOnf^$TGjgxl{zqS3KRHp+#%-C*ah~aX-zd@>FxJY1Fc?^m`bbpAqLdPQYp4 z=kW#}F7&2F=q#53gqAK*q9 zKwDvOOgvc+UY8Mpn_L9QX?HDnu8Tl4_hAKU;225KZnAzWy?}(n*6u3E?=^;dH%<_f zRPE>fGv37?78NsfSOmT)Bj;HXpNY_Luxd++eL3GQ!eMtTNlkLoU9=v9w$9^!Pq% z+lch|vJKNVLKtlP!o2askE$JQE<8yIw#q|VSh|(_%ro0Yr`8Oq6^SQjE1sTkm-DB0 zxU>~q+6G%H{#%{!NAaJfc;uh+lU5etfBs&i$t0dCW}kbG&ol}B=uCuN&nXvMIPwfG z7(Hr=OUwPC_AYf z?o)vxBrNL#!N}C?*G2%*=aiZJcj@5E7-$c{d%-U^iDlydmoz+S2@V+3bh^o3JrRSy zrWsiLpfT4yrP{)g5A&jgyV8rG4CuNS9sXDrJQtiOvV|j`@NrxIVOhS*;eG@Z`v$g* zCD#;zggPvnmIbF+D1xwbk4ZdF8#_cG#X=E;rF-!|)x*zom56f5`HH>ISY<+xRs>~K zIqHanKP;OJ!7=GYAfhRPu(TJPN*dwo>b`6nxx_K?{0qdn&KzFNS^fy(8CgXIT{e<9 z-L3+{a9{uXvhN!6?f=4n^P3SUJS2gOjJfHj z;053aESMQTt0kQTH}RUA9tNjqM*Kbt{sZt|gHuCCyq<>JMqYM>$@$(QErM{wn`s8N zZd`40E+T=a7ePR@3XV6&h;=Fg*P5IQ>B^$5--oFY-1;vE|D#F#a)Zh3XfdW=YK{{% z@*6Q=P4?<)OVRK341!z0p8~IS_{$miZTd7zqKz5z2%>e|!Hm{%2a{4Fu(XS4(aWUp zWYoylV$g#D=YC~RdIk}GH~5?2-Qd5@f-}9)I&v=fZ?fRj8*M$zbIYEKab3UHGQ8i8 z6m(Hx*|yjq72*eNH$`g+%U;fcKWq+LGng`Fg=oYrS@6d+0%6%&aO#VTfY<&B3lRv* znAGr9q{tvHW1>O?!m@k8ugHQE6^#IMnzFaD;6z0uz$|9OwGqyIGnGTaA{}+vgBUE2 z3_P5uXh*^oi4iwu!Cxi+$yzn4+e}B zglM2tw-o*-m&4y6^6%hlGCCr1tsT)B_;W6D2>vek?XQ*$#AG}FKXTjY_ zPi(^xj5eP9DcX%lo;815niw%H&A{U1nf!%iELN5`$N0Lg+1^Mi8GGbNlm9x_S!E0Y z=aVY0lUi1skUcUQ9JyI>=D6Heod0@L8XmW_5vO3lH`-sHmu8Tv1|t~iA3gv+_y2*9 zF*z3$Sxo-*;$*`xo=-DUSECL5MA~j#&qlbRo_K~Mu7+S&`hX_EmpD_0!V%AUcr?^= zPW=}3Gum7O(ZP*zEG)aoB5Axb(#qh*KqdoLIO2B@|4;nbrgVZbxZSibqRoPz&Ny|( z{||nKj#FXTwQ#+I|H^or(kjg0m2+V`<4B!T`0ey@WW?FvKLf9K_?a2_x!}|+ws6D; zB=FS?{Cx299R3k_d@5^4+7aKik6o7C0l}v{ad>h1KqZ401Cry^fvI>S#Wx8 z?WJD^Z}9N*+(=5-Edy0p_LxaLyVEm>@LOyIWRQ~W5P?KRA|PXwkFRTQoMb=2DAQ?@ zmcbw_dzG$qTox7v2nK_&><{1*v)~WtSP+)Ec7%$7lG+!MO2!AmC?O0-JcEBi#{#dB zv(TY~!Mh|dBV`a1FhHEclZ4Fs!*YlnL5%;Bv7iotBf;r755b>u<;cnXNT#F5ES5Ix zH*!>IBWA`?zA!TIazMjA_d@!5nUm2aS^^K}gyh?&f^P(;oDRWXvTd0*o7=%?a7+V} zQqqreKm%u18kYS4gGJ83$C;@zD-D@^=62Agl)%Sd*GXwub~U(UKoanAzJkf5R3@ak z9SgvRm}4aUSin0p#vA2`-Htwx(OCHk=7m>9DA(dY$iV+k8+*uud%7L{ZU)X*Flp=| zZQA00 zkufJ6xh)I9#Wn)6jwst9IV38qCF(k2R-C9@PlqiTwRkck#Dqm7a4tr7XGwslXatzO zkNkBOoTz97z6<`FEI3io2uN@99C$LbjBl~EobfOm`F<7xYQEHR#=~&r-?HF$n4Izd zu(`82jK3%;v$v6JT?VgZ|4Hh9pD`J=oLoySXFLo?LUagzFE}SiEJWtb>&=4SM=d`c zoY%L{JCFsx-&S%eb6B2F`#bX9j3S`svsf9H89LNbb142W_>16Netfnh3;r0mtd!=1 z7iYnra1r1fdgLFe|Az=5ELz6PF?b^jPPuCt-w6J87Mya|GQI_z#qmSn7-J)~-4jJuQ6`4hjWXwg=Nofa8Rt;UaM;2bd-XT^C-=pF2Qd%Tm}y)%;+H1xoLrB`%@bv6*F>+t zl5XBPNr$4b?xH`KH zg03uhsf~cFddqf51c-`6pq!j$#fgeUpuB+c&uTzaBmz{Fu)Hx#0z^e3KuZYAJF?(J zMIt~;2+Ox*!Ru@U%9AA+bY?NAcdg-laGK5`Ih^HM!{5MZ^@rdMw1#Omb1s8vt)YCj z&0v!94a*lmaAbPNEVR+APYXvPCuAs zG|QJ6liwPD@m_`w5v3<9&$8c=1z%`ac38Cv%U5KBw$+{`0Wu{S;7lvgTa*PSQ|BgGn_^um_xszk7?3NL-oo-l z;5}Jza`kA^zcmntzSyswYy>+tNioW>WgT|A@7>a4rCmb z1t;s;U2OqRWWmY0X0sFgh!h?V-sJtTHBv~kFc_UONR5fog~{Mu&ROB8aar*9xZp<( zVaxs19>ojgKdB77?`l$;N$gq#o-4CB3NK}VbCMh9+qmm?6g9#ccsQefauN7B;Kygd zsfEewz*(#0YfFdvGpK8XUjZNNaMF+Om?$!NhcTCowv;f6Lqq=>j>8Tmmg3OR6P-~f zXTd2B4LxJ+D7q>?W4eAxdFbL;y03aOQkQRPzlyh9=|j#KqY%6@`oP;h^&l!M`@i_Kvx>rMV`$Fctv zy{TiqK9ea!)uHm$SumWBDzYKkaQg$M{Wv2)cRPT+KlBOn|liJh-E6U6u# zii?17lqB|Db3&dkfHeje0ZnUkgI=>w&QB?1kwFYpfFyRe8pH{lYjG8DhDrRkK`*Jt zI2F`IKyn|BdeHR$KVJazX~BPU40Vk&vEOVq{kf;ies4#M;36%%+>be1V#`}wYWm-2 zjz26V@M05=o@EYO!DZ=RNEm;km(*hcKTtg9`@b-WYo)S1X9{>XXN+HA@$ZyV#Nxlr z6!2kG`*@HFxY`-8IQJBz#i*A}0e5}OObNJFadUJF_yX`7ja(9s6IhA_zxeJc_p|gU?S9-0KlwJL<2B$Nu*zZjR;- zxnD>f;4w>&U+Rn$p{=CUhtc%^$KB#r5^ArM@ePYi{)^v(;0e7BHZvvQVTbc@%u}nt zpHw^+@L0+}93{5*D?U8s|3u0^93{5N2QvtsR0GLDIO=|C>A?*A*Oq`v7><$(m#f#= zVgbKVTqI(L`nLGMWkk+y1EKVg1M^WFBqx+a+AMz{VHfJCLNMv+hbL@3~C45hF57XLzaz{$g>hg!g?JgOAl9PT;Q|ff$!6K0ih9 zcaK19%N1Yu$R+MgeZ*PHO)C<;m92HPdaZ>oaNEa_^H|q?`v~o5^q&;@Kh@9HP^pY{ z=9q(C1!WwHIw9$RaxVD0UP6h)C#6D&fvo_~ncSb=Y>xS^*9%c06xRx{P18Q6-Yb9V zgT*CuFI&9OD}U;P;I{mwC<={S0dWF27oxmU2D)FQmp~$g;t=DqUu@(ONQ@VGIQvs} zo1_2e71s*zG5eK@#{y^?k-yr$ ztoZztKNU-G@u%#=(X(TJolZe02GWLYJ>c1Eu3*FoaK0=AI+96wH|ffIjMplzbwJB| zfjR1SzYf$Xp40pZy&Tu37rtnYnrB}Erqd}I+GNX1Jg&d;&ry71JT;P$csTk#osEQ} z&St++*QJN2a@b&T&7ovwuHv!4*|9(4csP2Y;`8+t7t+f>s0k>+Y@)CtgJ7=W+RKfW zXk3|r&$Ip#q0thJrMjvc3usc@Mo6NOG<{Bz2n}&(E29}6qa3Q3OLVbs_`0UcymKC8 z#a0X1zh14#hrMb&`Vxzi4aq_{`XHoeNyn`pg4!OdIVz3 zlj1BD#so~NA+R}=+&tm%s2k&!p0}x^(dL9nPUDO*$5~owjtHWRX(PSc8ZaA^>Kcyz zi#hyv?){h=nR}Ho_hU}q+49yFo5MTpD|mGQ6H(#lcXgnaK{_1$u&zzaOhx8?hjU?o zK{_1$nBtl-+eoEzbp(vkvdQAc@D#zrF~R5uP3}eWVgeQTnBq1vce1}N0~b;7%Y=Kh zMEN&l-wYIfd(J~ysDYN9g!wr&P=%VnuPv?wPnz5(H!D6rB~V6s5>S7!eKo^hMtb^3 znMqJ=;pn#_+@15F*eaC%O#c3$r!{c|UbeU#bux!{W2rX4T{GCWu%V; zzRF2?oAXab&FfEUU=<=}d`m_GZ)vgQ+*hK%x!<6rKcHXGam~~A{xYKvN8fAmu4*&9 z2rZt_Q>SFpZg5_{?uW;keu13x$d;J+9sN!Hb7n_y_d_-TGmMu2gNLL4u5j*OMMPh7 z%pXi&c~HO{|B=H#c6c$r$C&&YzHz1aj~)J*3740c+`r1QR=&x7$K)pu#~_t>Zi1;~ zUlWeoYl4S@_)!o|{69R7H_e0#SDJ9l5hmDtWc-M;;A0NsmhQbKaTT5LnBz>a>Dkns zNh*E}Xa3@kT{z}w6Fj&^{Oy{DHDC&&21lT>9D_455@6sWfe@l_%nTDe(3Oz@bTdj3 z*a3dB2{t}$awHxugW(v?{AcV0-vU0u;kxEwBM^?^%>RV#c_kTN zKzK(Yut9O|F7OfoID(HSjlCxT5T_{IK=2u^hTqrvOI|4jQ&6Hwz4V60nSuLkM(R96JYA>d~4 zUt|=)44(da+#G)9Cj1wf;Ah9jk0WUvITidylYiH{;EPRg-(OBOg=qr5g25ULn9VI; zA_f`w>EPc5zZiTO_!D*sc3u0`b}W^elz8SYvcU(}-g_RI-@%HT9@0|zCipq9d44hhtcs8*>#n(*pQ){m@or8Z!xmW909eltEn3tTK~8IOf~@ zU6%#_J`W_a0Ld0s%d zFN9!a7W^6~@cZCvvf$TI4)0k3*LRtq?QaxxT3foo)sz_sxC?_HXVjFNjrrC^bVUW= zKQzHTpT*DoX-)ZW#ltcGjQ|q3_qYuFhmQYd{CAjO{oMH0C|d;7fp1=Ea`&vJK77pt zck_B4(VIHyS!WV&uGbvsKQ6RlE1f_%W-tlQGQp4D%!pi@b^_s;Vc-plN1Z^@Cd@2> zcY^1>!z69_9uu^7rIz0;z7d=^Y`oI~PCt7H&V;%2fC(>Ru;xk0pq00ciNaLbx8qM2 zc+o8IeLl`Jff_m%`KkR~0q@CzcY?Qq(@4i`&w_U$kh^={ zS!TkqeZjxv-er-D`q8aUfONFGF(}Ru(5(W(F`eL&!%VzK1%zX|z$HSN_;y$JcYzau zbvd?f$yjP5umc0WseBb7yuQE$YyXixl#SWRNRvkn=0dO^{Myugch-NG%Ro1HFE}SQ zX+^NxWuOQAKnnNT{~nhEsYnM?25}kgbvf8U85$GZ)tk{e_Nl;d%q}ueXo58tW(eHx z1n$Pa0=!-X`t85hDcplWWn|!0q61FgUhwKH_(3OdA2<=blaKfM5kRzbP~jN*m5O{5 z{P1)-Aiw?7YpDUhVMQMktbRYe2gAwY`QTKd)mLWVeH`8goCvHwD+BLq1tKJ@C^f-t zf6QqAsJ00(ovA1?!L8?K5EMGR5WLs~w|t&~7dgBLyafE#47}Lk#o*=O-!pv6oGq$^ zIO%i+Az?*>32r_jBZQ@npai_u1UF_1EO%wx3tk6akzNTYcWK5_0mF*9f-{#+6Hw{O z_#g)JvJg}|0p;McO>o0!89A)A0!S#VXawJyx}>hH1W{%N*LvUkE%-w4WTrtq2HhAu zjX`r3f>|y?rQnOe`RHp}1{$2eTJRrHUfwP^!I`9Q1NM4_p5rIYw2oWtHte_nq zg3kqS1*_)oKo)$S6EK^udV>j;Z_5zSK(Z zE#mD~K$6^t75hza+3zz1>~I3Q8BVEWhu}M%fF5uv*&+BYCty4L2f_K=WLgAv>y#}S z@{z@`Vy_8)a6|f>jd`5T>G%!D_5r^r1K(@sbYqC%*upIMKAS_L8;&*L=VWwr`@yf4 z@}G-AZWe=H45R|i1JBQbA8ZXM zQUx3^d3l#)!Sh{&_Tpb)f<@cXBSh3>(ix7Sh{qOzuZmxwCX-$!q9!TRW(>pS`%G}j zo(zHl8)Bx+;d1K8A$Xxp0HW}ELVO8tD)!5mL`^9dvMyo?c?+%N5WLt-&}lcJ2$!$G z;L8~yDj@it3kRmp z49AWKe+Zn1CbsM`!FQIXF9D3L($gY2%?Za&Gr_kv>S<9tbsald4MKjyv2!r^Rs2E^ z4fHhbJ~(J{-(?+f>}e*Lbbji|I&F+&XDS}@8;81gJ3=egEI)e?gX-yH1;eL6n#BI;2ej~p&)6CMdxSWXTi^#rvF@p|9QrI z_A~-WKQ(b1`z7v2G>6{VG}>kB#~0 z!(>JRkSf7V7~F}$!VCgP6=$t_>^fuizmb9Cqd1Ge!FG7NB1gEugE&zR@9bvUh=;-mQ6;O~R8 z?4O3?qqsEXzk$!p!0}Q1eWtGC%8hw;Uxoor8i7|J_{5mUdChKG0z^ge55fNdUX+33 zqxdIuwKzVu+2KrgP6+j~fzTx`oMn=UpZu5X+b#E@_^o>yYRHx79}pqovD);6gj{fb z!*LAckM?BX_$bcMH;#e)(RmqoKIN|l`4}*gx9`g^z)5ii_i+s5?aMN7d=zK!9>+l5 z-X{acNAUu12J%PNXW&Vk)SwW9VhqYN3~*As2)u-c*E=(Cd=xJRuK=Htf#bud7c#ho z<0_4L=&f`-$xvu3!{0Ed#vr4|lKP1s3ZVSIIbRiWqJaVs8lw1 z!g00WiL|n75*sLvljg7yyan98r#UVHa!mq49*$eWy_f4U{NYr5u}S=j{YJjT zC2GFdP5ajbaMBzsfM5+vkUY}k3@lErRKOze72v!zE)8#ScnkPSE>XOaf#ak8E5KKQ zr)E}e=~|rBU?m2tF*r7Z04K#)fp;^XZqLB+(F`mDZw2RRjWmH|O7S(|>y4StV|I!s z-O8~zsX;3SZ5UjiL4cFu>%ljG56!^wQM?U&qcL?E^8)cvd;|Dq@VVAMwR9~`YOoQ5 zc3vC0HzNU@6yFTq0p6T}TWj;8!L8s0CrChb0%Zb(jV`^q*lyQ$sU@Hmi zFlN%@83~Z63fK<56MS?Aj*sFyz;_u_eLpzkPuz@fQiGis?8cxtg8(PRcY*IQrt0nt z93RE0Q(N|f_s_ub;X->j`ak%C7wk1hO8T*Yy~dpN2B%op(@u%Nu_vUT%8uJ-3Ajoh zjyuSm08gb~-VoB^?ZU|WHuv3>iXW7{o{GJS)L~{$kFW?hVv%s(Cv7a;o z{x|GdF5t94P{<>Nzf3<19#5jf5U`usZ%sWoH!7w1lc;9kAYap+!u}`e8IVj3$B!-1 zSpuHikbW9Ho<#HLUU&ZtgHjCmNN`#LMNFZ-ViK1LLAfzGJ!v@<({OwRH@w`=sW=zQ z$CvB<5;;+X$Cp_AOy-nl=QIBsUma}v+6l-yQl@e2HBs{j&bzfNzshy_$y904I|CByNx!Gky04<}iIYR^FS>w^a` z^99ygoE(PZg>07Iun{LvXK_t{Z>n@w1`p2g{p&sdI>!I;4Z#CURAYi!o`LMI4j!OM z$9RK_z}E?30SU|t9@uG)i6bx@pOr-5e3QGnj|nH_2OBvRi2WNCPgDyH?Jv=}AlUel zIc#PsgmbMym9!x#&xOH8PIQN-@Od_Yuht?!a@(x8oWuzjLQE$K-0CN=FqJ?!UdR^fEhTXR&5mG=OJG^BkryMy2`uvb#TJ}9N@D-T&c9Oo zKLo4@e(_hIV2MY-q@lA}ZW-|imRVeH>*9`$@%X=N^n-V{4ze;*C=kj!ixm*@1XXL$KdBaL8~J;+YxLG?)#F_rwlB?dPmUC zuh@3z%^ z`UKrL?d6{3?I!pASJ2A2%kWeLwp;&MOHA&rE7;$y zcSOYgJ2;jk0nOo7{&OH`9pfw9sRWWhI3BXP_Mr77lQ%P!z%IoN354T?tXJ%VBG{i1A8?8M1cEY_OM7$*Bh+kV`^~-_nNRW-}U9I+3ypqy~MAi`xH+M zW58hxEBgj(S+R>Fu;2QtK*UrQ=p7BQz+U=)O+YG{4l%-&6!} z4l7Gt1SGe;!J4zZ2vqh_Tp|#T-%kV&25Y|TMWC{;_16gWvcF4jnMg&TGFe~^L}6tv ze?`HXNxs5D510MoU`>gS7kRksmj`RO0W(gZ*y2Pe)My+C?)<`wP_mL)h-_!(n%uoC z#Z9ja?&M*SI0B_OF18`86taro4qoFBCs6L;vR@he@NOR`GAV!AuMU35^M8>)^B9s-|HtZ z&%^BFum-_?@JzVw|1-BRYc(aGg{<7e9 zZgh_YEV6a%zgB}Sp^mi#x9zi!VkE;GzQ-kzU#1Ll_ZA9SQ1>HiVB7Ixj?rIhD_O*T zOR(y2KY?W)F8eEjTkrGn77v&GmBFoZ6?fUT7iD?MEHR|mHa^AlL* z;j+Ibxb;{cmz+l#kp0%+7CxMoBagn?9Io*UWPg2d3%82LA#C+<*>4MOxz5Med${ax z2yXedkGFZa>~9Qi5rL`m|H=)Xf$VP%ZdQenz>OX*`|ZKaJWdb`-0b19-x1ur!pGY^ zT=usFH($hU;4wjmXCV8X!OgRMf-N2{`(44!)jrQ2iNXnegBvG!v*OB~mOuuR$^!Na^xmx4f0vg4 zT$Ou*8&C21cY8SdmHWAM>J{H$j~XPBTtZ(JA>p6+)Eh~^jZTQtx7QH2yR&FjaHQhyaa?S zH@M+EKLOSUWNUnvDHp3Jbxpwy3%v;q;SZ;`yCOJ&JQmC*;QjVmqZgxZZE)6C_vdMv5?`xbo_%gX@nlIrF0kPUvg>wFoJ$y5wfPIV{H% zqo&A&*KIdB7g5ev^Bn!t-F%YdE8O`NPFktB*c2Lhb!2#Tg~{LkA8=WQv$*-jCgqS< zPli|XeD#y9X?Qq+iOe_VYk>4|kqPC@|9A>KZv)SZXaeOB*!e(S;z^AEsK$9un7qRj zuKCpxP3!7HJ9U!0oY|pBI4FTH7V&xIhKggWF?yi7xO4i{Hzso8q&;>-1P&g6n{1 z%+~cUllXOH(11a`bsCV1L6hBoE5c`k&vN(>@CA1NKM_uynP3ym`8iKzoWabA?TAZE zuFb$)aN(G3a_$rUA*nm?g0}d_?g+U*+6R@de<* zG27T2K5p@IB77m3aBxy98BCt>zt-TA$emD=jlfYnf^8F6rcRMTIANJ4a1`G#ws;G; zkVFZru=s)qUjZf@5`icAwGlk(N|QHVBearZ!lC}m|0b-m1gj&0RU8wNh+wtFe-;s} z1{0DNq zY*74Yo)NbZ+5jdTQiT2a-DvSsBL9sX6At{7T1K0#L0v?!8Bj!fG4hwF3kU7r3h1#0`y+xLKp}|;wkv*2PDHRBOh_UDJ1kxl z`R@P|j>vzf#m7YcJHdn_X$j03cE~+uRz$E1P)Hm>wXKB5d@CZ@4JIVB>Fa;W?|z%W zVuQwF{=bJm;h0Uioo~#XRlIzEg*oO11~bL?g29m#f~8MjU=!e7$VXX&eU3zM!aK*- za#rMBKd>KMNXWpzwcxgv_vH~r>)#6|99E#2bEOLG`)MTb0N8%c|HWYF=Mc1U68ele z_Grd?Rd^7CUUkx*aE`6z$MQA|?Mf#aa3MKha%x86ztQC0S1-Mg?I|bbf(Zxsxi^7t zHn~6RV~!ge;rS+<$oQiMleroX$a_Q60%Bmo}(n!}3(?we)$@hJaH z5je3ge~>8tZSZa23r)XontY2FfWx6U>-BS925&a~_(r(J3&FW{-x|!eJf1A zUq=K*7(k)~ESFC#2Imu*ygS(vhzLjoKli`z=N|0)cA0)3ME)h z<|u2>01k=bAA|E2h@VxP^KNA}|je62UbB%^HE@JE90Qfx{vAaNl7-YF%7T^n=OgpDsa0BJb_Di7GDGo zhu|u3hYCF5rbyso@Mh)I2}vU@LHPg8YC8fc|0Ng*$s&{c!P6$JT4wTkdQ9Ot=6IXH zGB6% zQ6_JuDVFkI$)AvrfV{Y=Y86k*pK1n-kD3wxpC}}Y?At1;R`Wfhqs#yzZ3V0b6OJeW z+Y=7pg^nb^@iqJjhw%TJ-}MOWGy@t;?o5*ugI4~81cU!$w5r13_kGQPZ$!0tJ(!S0 z3D}-+!2BqIHZb9c64+=HxKI)h{tf&I2l!vFfggOwE;Ha_bL7mV8f*jSNt8f`O@L?hYy$0I!XXKekt*=t=bHidMEyVqm~ce=cDNtFD|eEXU<;s-LUA&C_BT7`d!1nvV9l1ShIEAX>O;C?XSK)|OW z0DrbYd=b-Tuop}?oPer)#gl`EM*}X&0u|tJfa_RM zRi_a+@wg}gmEdp)E|t8hp8LP3=h0ErV|&Unq@L!vTV z25v>k0!4y#KG}xcY$p^lKM0kB%dRq?sAfLEd}7G|x%ouZ3UJ{7fBrDW|LT=Gp(rkL z6ADf?BNClZRIeh0drk3I-GoBs2THpDoC!toKiyzd)ea^cQ3kds|Iia7{thtVSi<cI|{B;rkRxsgM!uh{UD5^1FLNWA9ZbDJj4Jag0 z0y}I1mqZElfC-69pt{W_aCwx#b}-?P4DegML+2AiuXgi^svTg$!TO(0D5_~jY(qQT zgraIEppZlY_F6m|uB&!|3CR-I4EJd>9Qr$BM@!}hp>lw0Gu*GuaOgWxGu#6XM^Y5Z zgra({PAG;Q8I|E)41@$+CKS~qz&31B)KBaK6Ou^a0gE@9y!l#*_k#&XB=DdL9CleG zuor9}?OzN;VKr;Mj0MB4j}#ujKu8cE6N+jGM8LgnLQ!=POh}x7>b@4IE~)_d!Ybi# z0;&tFfG3>*<_BTbLE3*xK%o_|%?V(FAfi-&OeiMx(Fw({58Z@<`GHI_EY5^tQeT-+ znBgZGJD)(1OfnRg`NSjyunj-k%_k5PRwp4z<)FeETo>h_5Cce3IjGbe4Ckdv+D|Y) z2!$k-fojdb@J&$$ioxLk*ZIUGnGY;5!+TsSVtzpX4~ZDaXjWZ|L8BS|v8&}w5JCnJ zi!-5^R1QAZl=N})1;!4UWLTUD#iR=GW>ZoV;T7O;2)_(A)peS|k|tM&s=5Cw6cP-y zr>m~F21}y|RO18*xDGbevor!FZBYbj!7DAUb*MojP|_Ynpbi|4R0d~j21|YyWsv!| z%~Nhd`DXLAe=$$$!MQh_H;hy*4Z zF@PkcaDgg3>C8ysTyRJP*AOxvU_0reNZ>qhI8p+eEq+5Jun8Ov5ugGWS%D8afywFx z7(gNhs*v05Xoe>}87W){4v7emIx?x$3Vb6H*bEMb;39Aml~e?N7ztbi4hOg`;$@1T ze1sK9`7g!*5)q&ZcdNpa$3!7q0uG7bDsYbqJb79qa2Yrp;PR5Qa8ip+;2t-hsBQs= z!wE2R$}Ikv3Xt+&!JkznmqfyXLNz$0$W17iAB0NMq7w?!$W(|4#VO0&go62j08ju3oPKN*kgOw}J}^ z1gTeBpK40aa1#pbEk}zkP?*MBbv{vgj+;*~ILRDC{4M`R%P;2*dj8J@Ayg7cfC)wQ zW)yasQtr&q;k0@q$Ako&3598VSSJ*vi`;|)dzoa!33S*5=*X;pJD6}p{97#lO)5s%pOejiMxxuJ<3z(2ZIq0$p(AQi4PB7t!64+`Jcp}O`7npDe|7!T3 z)A>Z{uQ>m(1X}@xBub#iCh$^}KsT6>L_L}|2+SiK!g zI3oUC%3sF()8$|Xppe)EOyh%^0AE9LMX(c0NF;%75_n4|6lF)b2}SiTFyR1afxdh-U);+tQHOg$b6!|R??&yG1g5eAhaZr0NW3Y z;N)|@BmiNkB$0q3E8uHR0P}-TIU)hYR)Dbl64iUh7BJl=`P)n0r&4}f0Lcs(< zCK;-b6^g_g>vcjgVvDg8ib;jwkO+ZHDEhC_2=TF0yFf9i2pkS@ZReA!6(3m;Wk50k z2e|gMlWMvC%efn$=(8bYf)EOc7)TjUs?!{doEqhzlw%TV1jqtK{}oiy1!m-VZbHHQ zAQTS4b*!idZ!{wrjI@<8Kalam;>;)dFEdG*P>lSEn=mkV$RxuWFrnyApU#A0Y_>IcxxjLvR&1&kDFI5;z+i4sa_l*<=mYL<$=*fCK}p zko5r(_{&J(TyRJPSAh$yz!xHc^T6Q%w*s53K%O_VMbHEehu|VGIf)4YTls$?g$po% z1OuyZvEri!L;@FrLm~oXxSq5`1@g57SBIK828ZA(aG46^Qx2{bECPo^1Q5Yw*uO;; zj*3pLCN0JQ5-|{k{hfdnk-#P3kbql(E3CkuL;{zA!yy6?Xc}!lF=}fhumv0r!8h!s z{2OgYF=|Joa0LdCV4xF<{-v70=y7gB!Ob`_$%q7)Ib7Fa8+}?NU=_F(CAVlKuI;t> zqi#MiX*IZTtTZ{z$xkrYudlEk-5qsAYXF60rM**W5*LG(t}7{@1^bb$4r?fDqwV^D#?8J=Zd!Gu-FPXdbEcZg7hZCh_O`#J|?gTvM8I-6n6>u?2a1!F9-}3NM@M0_A;w@IdF-LfK zIe3W`aB-UzaLhyxub}_0;jRRUz{TsWfMevfIkpTF9g;w~$(ha#0oTqlxlhbCrr#(Y zD&=zX7rRa37q^(i1A*2H^UZ$tmj^C$J~Bt<3m#!Sl9}j`Xe?o}@NWD_<^uuee>K%6 zXUueydvlw~shG=*^AQBFIfAgJ7JMvtD|jP#gHM2e9jj8E+%L)nsm>yB?zv6#ucwkw zl;fqoh(FI~r0^u)B&(T40^BUfmQ#W8DgW^d1m_!sV+y#Rvzj-@?f~yFi4=k0L`4#S zC(&5|{?iP9CNU2TGhvZLbD=TCug7l_OcJ87W-bO}OgM;DtePfcirUPHX$j1;c+EUH zO1n8R18<@z-ol^z2V_e;5WmJl`8kOY0iJrvO@llYhj5mCoR<*np_T1gk9m(B~#xRH`;7eU)>&lz`RF|GLAeL_HpX*cO_S!+rnl&i_v-|Ka~+(wQpa z9nPO=dkxX9*=>d=-!b+91P$R%N6;M;?C=Hb@(9G1)$C5+f4B4Ri2Wb-EAbwSKgwN* zC$%7e`~QZo^()a{N6;1%-0auleKA4JUbPv1sqeqv`Cl9RFYq(aYw<^Db&t(we^Js5 zZ}6MZ0Y|_Rira=)`L+0<;`$5+;R`3{o8d#e2oMqNCmx#{xtrmKy9W>?!jp4jf3;2a zHN&FEY}6p%5!lsV~XN zEoRt5UL~SZg_Da-;-SCC1b3N!iIf0Z09)d*zA5~qH~kzI>+!@aPe7d%ffUWT{8bvo zzS#f87hn8)>^CR;m*Yt#;2h;KnaPryYBQ|V&tbVu;I!S&kq9xXwF#7BUuP16t=oV5 zgcFkC>e-p_vUo$sI5{GE$0 zSiJCy-RSRKe97W(H@hQ|yZyDniWpaYQq|7pgaw;(QCAm?W`bY z{*Z{?6#uswK%GBf-JLg07`*PPTPF;41N~%X0Zr(<80f{zWJLlMH{y${h zZ8uFAo+MyeC0AKr)!2ebyD6q($2F$a;exH;ufr7c9+DVeuejB?5`2pp@-JUwo8me1 z;~F>QUB2SvLL+CvP>pep8>#OWd-@jrhzrXwMVihJt>oL@^-_GFa_&|46GT|Z}JWg*l8yIpBb?3?EwPp z@_^lDViJ#^D6q!^_8RW9?!WFlfXd1HJYc_>@R+U1x!qfx%-$3(GADc;nQI56sXUOf z2qzyjl^>XX>z*#G88zPZ6oQ7exu)`FOD+G`?A7MWu5P*8-ZGV?=D2m|;n=UXPjno| zzGnP0=J<6(04i$>JfP5wpJ!v5bH}-kQDf(9`k8V6l9+a#;H#}I_9#lsIL7OB$rEZu z9a~%K0p(`g_;piGs2Ou?t?O_B!`ezS_IK<4eSFQBeznz}b*5VD}@{0j9an6^rzU5uNgj2j@!62q)fuv*`}gy-H9Z5Y;B`=c&-`q*19+Q z*NmyGo#!2HGGmsxm|S<7W3%0rH9FpK=5>7jx|aSm!?k#9f(t#0W;6N`OCbj>ZhIvC z|N1x0=xQ@`-H`qgv&Ej{5;N+hb#E5bj7iom^A5L|QQvctuGs1LY_DUD`k7IOQ%qm% zHaQpbxo2q_wJTHpyw=H-|J)QPe&JMyuS&=396p^>Tl|w@?P|}UpBee4O8`(eJ$d2+ z?8T27Gx`4LdKCTM&F<4SW4ej zI$0_v5;qs7B@otbFo&)Cs&JUxXJ#97&6hIpjo{NAPF1*OR0h5oe7MD*rev<^pMfXa z&0%Y~GRu~G##UpN{X4^;1N@hcU^n=mGw>}WFu>u>#w`6j1Ly1IYrk+fRcGmY>3FiX z3xiLc0o8Bmi|GcnTftwl_!(W`k7wZBgf=w!Z`P@ex%{2fJESGVVQmk?Heb+uQ>(Bs zmrY2$m`iZVe>(>IF>tMP(f7?@p>kyu*6sl3Vdyt2Z35qaG4*X3n*bGcA+wq{D=gl8 zV(PV47T*QVqsDKRTl}KaeF4mpYN-r-KP&&uQfsgj_3CT9*jZ_)yI}|2xZWBG-Ee~Q(sSK9ycJm^6%j6WM|B5r6nUK%_cLvKJ zmg!8AiI*Bw!~|-*C0PF7K0&Rfo0z&=f6b7;o9TBLy9%WKb@sSS^{3REaOMItokpb- zGsWu_PfXqB{QqL6|C1+!brD7lW_bh+kkpzPvwZ@3H@3vo4r@2$Ei>br5Kx9T1N4rv zsencmG2;o}zfs}D)Z6q|W^*(6SY0wEm}>zgmgc=?Lt*&&-f=bI%ChzsvLAihqZ>hwp;M{lHe|f3~$t4(Vs^;k+=8 zK(|M*7lKZ6&tH9l9!KC-iH00$?)k)z;CAaTZwTa(7BeI?k2Czo{5#<6;gwed)h=lU ze{3G8^+UK*f!sZ3TB5;!m)9Pfm|&MZE~ltd=r!w$%>x&@GeZsWZp9PT*31n4i+NzN zTZU46kMnQgb)@nT-Vf@`1JC<8+-nKA#aOq&FPR58A&3R+a|F`W_VTyYJb1G2zu)=0 zNDO|~JUG_(?{&BoCG$@+_!;wHi(iHZ)WCKm2T5SBdCFnujgN&A~rFB48GKC`k^nN&?6{Koa#cW1Pu_>nuq+s#EpW9Axs`+JMmxU zp&ma1v+Z&9Z^XaeJj9&{aUEz>JQ=Qd#u}dZv3ckNKL>L?f_V@$n1^Tj1oIRRXI<)k zuQU&HwK9%Cljpwx|3>q$|6;DG3k0YApJt~-;c45=!<+mZEc6JPA(&?#{*5o7S@A@v z5}8ElMdslb{Rl4d{1@ZDz&tX}_g}2(<7oThL}`6zw{O}>AN=f48~#iso@U%(36{u8CPFHdmWZ#$omjYGK7BUlB&GSj}?Cs^eKxXM^M z!?fS(`>*!=*Wkaxv@^+$>j2*m6N^OYI7d`%+CTRRT0MgG5Uetfp6?T^cYe0HCQ3(} zN4ax2&On>zzXAU>=FwMu{|&bNCrb5{6Cow$QQkrw6KwPdHbb!9JT}88*z5!pxZi>1 zv9J36?Vf)J{u|6=kNN(t{U=K8oGek=*F5$spJ0ne&L zzsvLQ!N0>ieuw9uoVwK#oMP|VO`P&i^Z1W_f^JLjHSS}&=xy5hx#p!yz43gikZxr> z*M)rW+2+~Tz2SW7c2B?#Y&*@fUL8n=Q+GH4kh3LD`LlU8tq$ze<90CG1woH_?#o^d zrtY$SL+$nN#LySab6hxyi*UE+zX$&v=D7_if7<`lJ(gfdp8Gx0Jf{~acH1+Xse3(w zec10Z&!t|X$hqCreb#TVof9U81m<~e`iKSW_xyV`z30CZ36PgCPVIFBAGzOunCCC{ zLwvv^IH(Ce-xU#v|3T;XzWe>aJkL$ODFM^0yGC$YuBO*L!1?P-7&$0gVz51dPYiy~ zbPsbE;AP4*E#ERoUp}pmCfI$QCxBzt|26mfy6L{ft3%WJdj17)TEn9I&9)*x2h|=yEd=Fe+a-Px)H;7#iA~WRX4?|qzs~co$G_5SdlvuH`Tw+f zOYoHstYOhrX4}ht4rX}-4G`3t7o*G18o>tV|9j_usd=%~_n+100#EA8>Gb8q82JXt^OcJq(pypC#`kgnkP{my@*`S4Y5ESR?19@lJhAmV3pbL&uXWwcmA%j4!X(gZ}R=yJpT>&uSuHy(Pcxe z#TzWaunVl=pv7kYHa`LzJ%Y^;tT+4L@gum|`VX}$>SoZl%>KXnJz=}&-+_N}gZapR zWAC&MN8s)P88pj$bfz!Bm92)b6N1g=BgTr6yv_ID<^0_m&%iIt$2=<)w}RcC{~pHwX*5GubNN3>yM`U?Q!)__Cm17 ze8TmIxD0zOL4#W;9C*L^gs&3CIXK`E9K?U0>E*`G*#DsOueEjq*O=ZyF9UV>CFtBYCh#T zn^XkriX(r@zpjM80`uw3K0%2iaKq`q!RFID{2Y`<1o)QoS7bhY(DyHQ{zqE70e72E zANP97x(er?ln_?(S7JWp-rG0_m6l+l8;%EDXg*^NC(c2&BM|>u{>sf~jlRDv`^3ag zoPaNz&(85PP-l-PwG8W3#Ap6;d0o94BqqA?yl}Yr>>9raW?2IDZ&VSV$%NvI-F8M* z*Wmo$(BC|6xcls7uNBnI*5gTY2Dg#F!JT$B`+`Zo_r8HpC!`G~QQYnb_6F5NGqu>v zXQXsf0rRk}52{Oi0rM12OtkZXyqeuXH80+ZBiJN3=YLAD0D{J#dW}!8z!7ZH-@KZg zLG?X8!9qQ5{hRTh7trFp2sAtYYn=b~VAA2f|00f)z9m=!!Gd7YLZ4uoXbO)1o zolKmAC3@VPvC8Bfem)W08eDvZ85rZs;DkdnDErO9#Xt1bS!v<-eN!mf+%#eE(Gzmsbwgwem{h-TH;#xQ?u*|A#<7Gf}smD`4Hh zC8wMCI~H|oyaZ%_MR3V)`~TUROMDzo!BxO!_E+jxoMQoP(*7d>?d-1# zF6D8CnW`>f(h+`M~>w_Oq)WcH(w>W{k|L{E?Y_C}nTy~rH4TZW+d^&hP zBDbK|?c)9SeS*t=V&czKB zoi+kq@q;cxOX+EOq`0OoxN?cR zvslmnHCG30C7E6d!LH!STf7LUYH*D}Ir#42%Aa`=n4ZruaLr*Q`+I{cxu}(jkcv8B z5-oN{l~+>{T*(_v=YO%=eS~p(UrQi4)cxMz%9p(yOfT?o_Nm2J{-2K*dU%O&1Xub? zG}DVLUPS#GzlTb`Gg!jeH3HrF|MX&K@LQAn{*8pFC|FXa26i-?Zs!ALP6zlc;Dy0e z&$#SDhL#HX0MV)@|H^hT36X?Jk-$<(pb`Tz7f zOP~qJenoKgXg`5^51-3^ZE*D*A9wSCIh^k7sw9ElVChCbLXs)w6dHkr?3V^hpE8HX zA7Pj-sxik^RK4cVu!YmBgQeWzAeBt}f$8(C zzh+SO>w;y0fBrwc$up4sxxum`KZgrEdCb_~uBe0tNhTs~WnTeaxVvB18TG^i+T+`-9Kt%E6PVzko00OoL z*WB+%V43yT2*`d@a82@IKL;(If$T2{u6e=7S9thJ_Ll|Myy@dBHDS|uIvowKp`as6 zCcVLEy5xF=tHf*AZvnr;Cy-oYpp~S9{e?l2SDwZZ5GNs!R?^8|b09ZR#kfQzN}!GX zl|eGCA6aj4jbIo1i;_W-R~N?w;=~F@@--L2%>gYm{;bsW4VFMdDEn)I|585mw6{g4%vdRPOuL_n=@BUjDN> zSWb@?hh(cYkeF5OV;=#_y^twsJ0bfmxJ(dc2g`ZzcD`g_`UTS0a;(?Q@tCPHIHbN+ zCbyi=oM*xrb^6ptGMw2+0=vw>{XFn41Y$6~#~M5mKio8sTk^DBDZX8Cy{}%#rvHEJ zy?cBW)%7;M2+7$X6r&&n5+ET!qM{@r+#+Zo2@nW~3Au60Jp_wN6$KSNv7(?Na??Qt z3yMM|Dk_qwK`EpywX~vAOBEHBDk@bKcZ>mo@AvUhxE^(wdhD_B1FixX46v|KN2$kCwgLw=!P9zvo^zweI&&){ z0uEUMz--hJ>Ve$y4LEG!xE^(ade{s9L9aa!{1PC9jXFs^YHbDJc6QOzx>Sk+#pZTa z6gXxHU}jKoqOAb3mD3}zhK*CBBdN#PHh+{G#)D74$h_s~j)kPYi%$uGxER{2(H*J# zKP>?e=nG(GU8wt8mH-IU2CO&SiMsE!LW@SX6C7{k!=esh7DwH;+X6aj22bJDpBb7- zcgKppLP(&efC%eL-LbgZ%K|8*75JsEz}2L0rPza`V;JX~K~{i;#Z&icTY)$xFgRZi zpzgzLJYH~du?S12?mcY<`fB{?YF`2D&gyx1bTaUuD}b4$PI%{+$|Aa!OAA|9APdk1MY5B0DyJGI4&TY7wC!?FgYD2ymhKuX*WjeJlY(pI` zHEpX9Oc7Xnpqx~XcjAg*o1n%iA|C8 z8Dey08QH=8h3Dq!HKZoynP}#aMv5SK0=ZAU|Y^RT>-B{ zAkyIoAP|8!ut{WBiEK>yBdeUEf%Uz9{=xxEt$Fh^kX)9xjm^#etF>4T%|p}<2Ph}iEi1)vm` z%hR;KV37zDXGq8Ai}j7AxsMIOz({h z@+;FuN#C~WI?adm7)o(|WmqG>>*%2-q~Aup3ppp96^jSQ2a#VQ1>GheQefABY7h19 zYHP7xU|nF>0>@Uc7us4h2rg0(pQJ|bqh3F-6c`UjaEw;lDp(@lm*Tf3e22#Ir(Ff~ z*g%N1DC+fhj;5-+bMUA#muRoif~!>n`r8=l)naSeY-!29I!L|#W^1{}(ozfTwFO#A z$kt`95MA`!R;@F7U`f>j<|bTRb-)s`7fQraFO-+IPTd`Y`z0gbF>k=zIH4E)|7Itd5#!uh#0ld9g?!m-M&<+F&eXo1; ze8x@0?i?o2*R{C4a>!BrmJ4wd{&OLhWp>y;aY$1q&g_($w zZ*p;pyV9x`tQ>G%;`cyU9L2c{`y_q5kE5KatYnIF2b+THZdlg{WM|d@ikpc!K(Atg zp;o|DaHtV?0mm?!EJ6ZL0jA9wL2>P^!kpFD;Hda0V=60!_c*us>t0Y4U|w0-6#EH= zeZB(R53>hugJ^xk9=AgIAyDJBE=;j6*?5YjU^1HOe^4yq27Lb6mV&s>noO}lys^zE z7-kWGSym>+K5gT9MuD-u0<+9Lmbf@m<0gojN7S+P);J(*oW&osStS&VonZ?o@ffHq z2*ZdtHpONz*G6pFxq9MQN*K`)AKp9~?u)ZTjtS$vUjH0IZ#qL-adALjj zWG(dhXDuO>gKmG2{pcfWt`Gz=yJ|vgEmdo!vrz%JMhlIWF{YRKt z=!W@V4`nUKXD$u3XPvXw2pqWWQ~A%ku3%Sie|>J&QvJK6UxWGwHw?8O;AO4X49tWb z#lJyAe{CzU+G4O?lo-0+lyWg(vq`VXDE<#L3{NP154!y~8?YJm4;l{(*bGe9i0LXh z5R^S^psj%Jz_kY&kbXT4v)5o}>5fX{TUiJVyT|75c6zKpunDII8iuXLq#B9^x^E8z zzc31{B|IFmT)0#JE-u`I^jm3oXFGk9;O<-u#V?~_FW3g`G5EXs84$(aN!b6;5}8ZQZ3Zot0{fsq6Ae$d71(bC{87`z-$27R*!7QJRk96XykR4hS|~bv-^^BiocXb+7URZr7|1Rm#9Yf(upRv>TweS>? zahd((B0HIJw7)!1AIXJqKV5dMRmf2A_y{CCCjTkEKV8<R~G zgGbY4-`E})fZzGHPb?S)4ddvtFKr7(=!7wDTi%W`XW3blu5n4vomC2D&a~5KS~&Xq z>|vB?uh~N9rf+*=9@m8NM0g_RxAocMdgy$(S(durq=jwFAzaI4Egq?f*ran73Pcz6`tO*mgP~uHC zg9ZBcoYin4N_4^|I{!-Bg$u!S9z1x+q<@V1rP>~>m)|2l`oZA8qJ9{vd$lN-y+{M1 zAqEGqsGt3mID3iUfzfXn1`hR`X1j2ym3}$W*Hga@wuQ@0`kk6C;Xdm3r0+rG|7s10 z0&Bov3H5U)4#dT441=c(gT>Sj5Bfa|ve#PaF&@ZXPW|o9D0{t5KdQi_4^sb;o&sq9 zvo~4{Hskvm>VLCs!DhoC(=eD%{TJC;)L^CGiuCKLzr9i+d#g!rR<$KuL;d%<2Jkc3 z>}?i?XrNhpkbt zi^Tu~3J6THmpWwc(F`(A7zV|Z^haBPy;k~tNWYVk?RSu8?=$H?H0j4vvZ*C{4R-c^ zi@`xK*h9%7)#QL-@QPtDl9EGe$w7nbLQ{|9y16R?s|y%|2`x z=)y(`sdRowJwBotjM5oyGJAcTv z2*2?W$js9h2~m{xAkvqgHVWiKYJeGFOs}#}QrZWW0$K9}4`gDU5g+kCP}&h)joLnr zkb_{Iyh4EAF~*1LvXn019lV|Lv6(X-%J30bHC@|u8)b5^2e4K=%apkN2v`dXk z#{Hga?4)F{$`n>@9|lXjzqA{F6OkAAbnBLau2ATrBBMZ8N!^^i!`s9 z?oq3pGEh&|)NL`;%>TsfbHH>RJi5R-JYLGFHgqV~`RS zpW$Zjx+1JL!1Fy`__G|P`^hgzH9A*}O)qz5FCLr}B=(R)lr>4%wq1t;$=~^y@I7*B z97W3)rdx~8O8FKQi76Ue5${T zBCCYYZcj#3#Pzt|on{!Jn5km3C+QLFdiGwYmz8P}^)nf^9TM>nacscr>Dlo7d*B@wBSzlrC;n~z)zOheV!AF}D`5m5S;JX~z zIIESWYKr7xwnomwQ!Z#<%1Y$Cgb$R!ljXqsD8^&%r}~NfWEq9vd2Gx29JW@*evyIa zbBS`_Lcv&of>DivfvTE&4ZeR(Y71Jje;`Pr<1uPC{0VAzt&`BHYxY>EHzo?)zZ8x5 zKYy1a3;k2O_swI4|HfhcMOSl|i`6G8=UY;x?^FFStUeKkeSqIyan2ewIKCHWK$>l? z$kZ7y$YekZmSPo~zJ~eTJc<3#X5v+;L#t>z_K-B&c3Q7)|LMH`oDjG9%2~q&ZjHO#;`5X)E;tR~~RF28 z|39hlPa1MHo*iX^@#~zN0s}9Q|K2I;cV4TmdSKUILr2-Dj$@?%(4?el8R!!c)(f~j1;RE{1*-1;ZN+KU6wXo@FE`>dD8h@vWONg;( z_{wcnphs^op60T}Be{FM&NlGmSYLr2@X453i|&vAO`~;&3%F|uJc-=;bsNnr&|?r7 z|J-NX@hqYZD^j;&mAEN+}=_X|rXl8kxK5_%`0_4+S`>QZ}y7Ru{ya{dURz3J9lxRqo- z=qFpuFwmm{k~Z_DK03CTuKlMfqWo?;1uf}*t0=MFZ_uq0wZW3^wQTx1utrx7HkQY0 z>G_*>omrqR_o~Wgg?WF=pb1 z1^(=N>bfejWr$*<(o$^Y4+%%r67UpTxCny}DP|v89I-B8tm#UbveR&@nEjBJdPaL8 z{!24W)>KjcxKRHR4j6Ttc|(YK|cb^XV&^S z`)PBp#JS6shBYLf2g0hN=YfmSj$o!;*9mBo+lg+%s8I5Ji*y(wC@L}rf@ip5VcAiu zA7H^@U4bV!tZa+Ns(gcn!l2;TN}q8w26X&Q2ygQUqax3N0#{jdb>`O2wfw)$d(K)6 z;7yiAMV^J5lCjrXjGyrC?gCrz!g`mmExUfHMR(Zjh$sqFR99a+zz1<99{6!V=#Q=b zZpLzAF?PK41pXTW%`F#mKBt_{S=D#v$RJzLV9}idT|HCi+Z7Der#?bz_qU>; z$}Ogwu)H@>6!~Xi!RYL=g2_2K*=6H$$BqMu@c+BVKX3^v(j;m5bP=5!>sP;q2#+wT zEd-9;=@DWxTsm*n!rg<#V|cHUr|_qsGc}H>&n@*Du)wc|V~NktC}6GD5QQ3|t@K!l zGj_iv=WT!R)Zh;v+dhbfbnHR%D1pg4=bN&%4=rMQ*={Q^5>q2M)TQO}-<*0=VB}fe z52&s($I(;wwY)iwORqP_L5?)^@)V3bxB`NI>m^szSvIG19;rub&$Jmn?bnk*`-w+O zoe`+S-#8Z<{1zbcFgMcQ_;g)*`4zRnAF@XNjdKgPi|*0+kTuZx*LCxP74v3S#m~Na z&g`pegvM)&Hb^m%@jrJ(xzp&T{icU&z^s^CE`K#0`<i+66DnH1v;&&ufREFGQEEg{fwkME<+O)%wVtq7mbJD)l^b2jwszUpVY;}SV% zF-_n)bn`$EPw|Pnd_h0Mj9$jrV4&e~k4%ld5M(d=Wam9@?nUgvoGG}vw8W>wDn1nE zi@YDa!u&T)i>;zudc9Q?tG9;b%Ag;ah>3}DbG-C)9#+;kr?N7#yPmG6w%#1&;c>$Hh)rx7c27Mmudj?~yLo zPQ}XDOy}yZv7Mb;y2UDI+@F&#cwlAh+0HB7VtXVrLunoGN=i@E1ZeboOH>&OT;#Zn zIpxT1J-S3MfnGpH8W?%2+$6ebkDf*s93u~nbEAp2Cbx`kGV6FXjtK}(&x1q^+*Iy$ zbQ6ceIs3+C)Ok`cbo8V!$J~K*(^Wy>HRU>J)-wftGr;an`w;*WvfPJGanFeWdDIF*}! z#nqY)-C zZ~4DL3nONK4H5XX0Mq%FH6=gKxu7s2Dd=i(NJ|&HS)-GbZ$cw=b{#eBH)=YZ^JSsZ zvG%veMDRQxQsNMChmjti7SMWD9AnhfBit2@Po#Wa$CT+2oWzfuZEG|k&iR-d^W9+D zY2Nj=V5jVSThJN7FHZbqllzyj8^D4O)v{7w;5_65%8;`8fqS`9(R| zDbDY6Bl@_$7~f5&6<@Gg18E346sbZYL*MJFmZiRo8h+4!>@4^KbG*hG?2GZS_@J6G zt!wId8IEgTzz=GCAq~O4-ff3_1p2O6wcP0o$mOLB%n$~Q$4XGfbP+BXH`%#j(IuUo z!&hXqNP(CpTAGT^R=@%^zJ`Wm+E(a$VAV3$6Eau=wpa)>9)Asl01Ne0s&hKMOP|Y3 zsTpsYPmxiGG{2z1@7gkS2dY}G^kv-XR`MD)WBiSf0@O2owx$%0cwROBej0p>&G8q4 ztCnh?zkvpu^^H>K zA)F7@GE>vxoc=G#2Mq1}!UJL2knyNEOzRo*piU>oU>;+93#ES!W1Qr|j3&vcILRs9 zA*hxTU(6D(O<{|;nddI?H$sboyNbSgKi zz|b|;7iC1ZdEn;MDCZy9mY+-;E#g{8O-Q43yHSLAH6FwKmNCA#j#k|r|DFDw*8o+X;XNdQWfRZ?wtynE4H)E=o5`l!h_~BV-ZmLKLDzrj`(UD) zu$fXnvAuhjh*m8zt`d}r?d%fJ(zRkIY@Dza3W3Xrk2L+Hy7< zIp_LvW}7hq+c@DM*a8c+GtITL;D4~wxU<1hU^5uLPpRclz&SJ{W1rM?o$XCV57Z8G zq+&5`>*m7L3Ao{C0j-yrLC$~5){iVT-iI2|lw#gkCWQ-XX*Dz%pHp^8rD-KsVIo&dv{(tA zoq6qaO12Zs6!zFkd6C_@zC2^A?@q|&!<|UtYrI}q5B1nmuAn^06q>CmUbg-xJM%7J zmb#;cER}Z^VOmoL0y^8Fm&!xA-u<2?#5rXI8otJ371(>izdgt^tp|qpfy(KmX5>-Y zQFe%_C*Z+{+WlAg&!>wv^QtV)kkj+MAGu!UE!Q8W_0n7QOmupPF8Wo7qI#xO?S8}K zbuAsiY^&dq@b>?iV~=2DG5xa-wTc-MRk`eqS)T zASX{?5wiwtAc|9XVji)?JOuo=G{7ElLo6R^_cNLf=K;5zX-10hhY5L*!L-a@tGPob z6gyrdH4zLrG^KG|EoZxTF9yMUsNIigdYlI!r~GWkKsfINaL30BtbQ}^nEsvD(p9cU zvH659`bw{*)Aj6x;A;16Ui$vnl7#bP#u?>iBJLgd!^EDaPU?hW$ZvrUqyA=Pxd?z^ ze5l>#W)9c=KIdYSS%-TM&W~x~#RkKGJbXBXD`lc-4tAST%3RiXrF#-fkc0h=4UE;q z(MS(kCuO#|!Ygl>i*kPo#xK@;MfxEY2t9=M9@Bg$zY=(SE# zt=SSTYMjCo)2LI6yPgOBB_*0hRGXoDJ+-@oFQrs&`%t`o$aTliIy+#(M3gb675+gk zNuO8(J|Z=#HziKC^W#gw)vnXNfKgU+G4VKfd`D{6zkD2biry{q#IN=5yaK)|p47}u z)L#P1&^$ZopAU(a#tR(yP`m!2sc}wNfZTB6=VmnNAwXDFeI0;L|CUVX%Dz?{Xz;)%Aa*=k%C#e zNv9~*yrV=K1xV#X?YcwL;oM^fr08-U+8eM1mv`5+%wMYGB;AK=pR=j4)MFdWcwm8X zx!gEFEFWqYro_zAqtX)-+7++~>@cQv&A7a?P9c81-Uam??sF4xswtN~9|w2XR~Z2-kxkjsbKWePOQX=_!4%X6XI6~HTm zj!)Ra#;*vMPt?C>PeMi5Myl)*io+%(?C!R>b#bm9+#|Ldk4C>qzTukL)#oRdoR0#8 z??09da3(Lhq)X$8n=(eo3`g*Lp1d9){Dj2*eh5j9C#NhJqmS&uJbC!0g|k~j@!|gg zPi+OyI(@9HY*JBfR@vB^c||o<^RBtpWp4zyc)?HLUzRynbc^fe6fL@>lM{DK#v&zp z;pd9(aoyS*F8DgC3#htoh)8tW+?sKpraD^YY>30pU&clx2H2dh%ADJ}y4+6Pnz7U= ze<&g$h9OsxoU1D;=hVP$P}EtmI--m7RQHJUoJXf+baN8AN5ne`^%i$G}tj`Zke;3lf=OvX3i~}Q_>5DFD=d50ov2^TDuq$j; zosD4kRv0@e{prro6G^?&&QweIoT1iM@X-yQ&WF8spg3@o>0JM9Qgq}Gse=ohD~>0{ zNLBlBxSp(nTwT@Dv55Dpr0&|;EqA&}2cJkf$C-INse|+3t8KdW@m413%);U}qqzRg z>vLsRyLqvhx~={pEj*34j?3^E8pL`WW>OXnk07Rtz1$sioIY}P4&Q8cdL*JR{zo{6iZa?eZI)*& zjtgP^Em$uWE9K-IjcwEK64vdrR(O{c6pj|ze)Ex!j`WpZS`6lZfph+fjQh$(#Urh; znK&vJdfIyA<7v$+xA<)MO41(9=N9gwzLY=C1VA{H$*${ z^0u_nyzj+US63n}Za>RW{$9FT7FM;vMDc2O0#fyDKaK^gs;J4sai`gBALL-bSq?k4V{SbJZ^VG*GT^I$!w%q42JfjA z#ofdC-9WGg1dE7XsMAZ$oR|mPNeI#NRget^*;qH+9{w&?lElJJ;00B{6RB+o{()Y(G7A$z1+zkMqvywZDax#P5TI-E|#Cv%NE z^}}KcFoRV1D+&}~Lb6~u(Q|K6CsLJjTyqP07&S1oEf@*>Zm417Pz_?3k1F3twDq(R zlk%WD$`&!u0Adu_slw|(RtzyXJTVZB(!-Xj0^FHzZ4+uOixzw&@EoEiUk<~OM(|O< zaTB!hOM_$TXTn1n_v&%9XoBS^R~<$Ep}ZH|M)YV`6Vq}?*OdaqL0)wjco*O(laIDF zD~(*dO!8mle*hd0SvGu!{I@MZnZU{=mH#nt^zAr7FO!&lxy!i}M4OQWc_Y>LBWg*lqx`XF{Ll?7H)!l2XY}3``!Vb4E$w6 ztw%nTug|FWYZ#l3Vxv(d2&MUs(7aYW(=|jPuMhMs5IEQBkD< zomYfK>N*ALi7L3cD+~Z18m0==6IIYv7oJ753R}d(DGzz7Ks`~V33w+9hf{9e6yg*p zDw?44DePxa8ckR`(d1*`=L5ekR1?-tH2IWNIp!Ky{8gN?+SP=$6HUGVe$c|9$*Rq^ zCafoG0*R{pkVWZg0_|86NL1wufZrUZ3A8J1M5h9uVc`nhbDmjR?xw#8INm}z3qGq@ zPqcWvS=$axw){FolT;a4s(dudg?U7`FUPP`|>t_Z`CCh=oPI*jx$ zV%vrs3aQ40lYwJN=d6>!e@;|9|C?|7>+c8qX(_nj8#Qn`kEv@V>HR+_JmX8mP_TM=_=}i zkb%8s=zajp@xQTFdQZhP?Dy<AgBxI(6v{hns$64baY-+PSoeOz~h0pL$vo7VTx7*XGQt~?+6?V;EW>D zXBX8OL(<@oxwt;<8DbQLbyL3NB>ITlOfh`rtbablp-3BryUe;2$N@oQj)`k<9eO94 z$ML|^fyZGpkbRy*SPwo_(MtWO95ef>=uK*pN7-(ARA4@e@IbO|1bFnNrqA?FxkgXa z+@dBtrP@bo%r0DSqZjaA7p&pm7NRFAFv!%7KWTnAzknK)g^bbuK$pjCczxk}3$c2B zuH3J-^>8%bt{8+atEq9c4O;^F_%_YA2r~$EsKS-QXj`n_64>Yo;YA<8(EG5m8RPq+ zll1&Au>Agk?ICJ58!9|)#Dfo2^fo;|);wg9V)3Sh^Y#1mym7!-Kk!nBlo1vcu8WJP;keBu-@*Bf8 zz^^oQj=5swE*8mrGF%tWBZRu?$Ld@Jkj%$%UA%xAuCVcW7LIFl?hUCnzQDq9U0hFF zjG95M=R%7B*Tsuy3+w5Y4J7atz;*Ew+VV>qUu5BYy^#<$?5zt3)HNZ^bCRk0dO5As zYekTCyeOr3sYjr%pP-feejjIjv&j#6AX>cKBID~PX~lQG998^;h4b~(wBjQhf6~IA zM0MFuD_*zpr*%~-Tn=oX*tFs$9T%h>g(9V@(6)2wtlSD_FVQBL} zr%?0)vw@Y2)@4(!htN`cw4NCn}oOu zfUzhDN5BcHWD(CxT8===<{7}WOTzGagL8VOZRUB)pFu&_QE1vc22A{fCUDAI>|O(W znN022tQ}FBO&b9J(|5$9mKf&MLK|w4;m+jWhU5ntIMIgH zWzF`|223&gY??LBJuLVE44>d3|e`*FM_N!7f)Vx?E1d7A6BgTQ!9?bkXA@ zlOM3L>HrERE5O1I@cgOe@4W_Rdt30?ABOLp}y&8FXmiZe${b&gQv(mHZk=ragA<*|DlqpT-`CDH>D6Db#k!ec@gyAy9Dix0_ z9UqU(rnXg{pP;cY5DlSBWs1!IqJrRGI?vzw`3b#zJs`6bY(nq>7LM!E zVf4uPww);!fAA_D!PC6LUpoo{eE}dY&GZPQg#klfLC}^~@;oqCP~8H7p`RYKr8C3u zOu@NgsuFhQm9*|RQZaiO2HBbc*GvTCs?w`vhPbU${#uBm##wT}v$U4hJ!=~})8MEW ztW)W=JW*`vS!tyQZRrhRc&*@~CmIhvunDBRw#_)|O3i@vMC+kSH_A-2?})1{1t6?+ zGp)mPi;rJxDF9)mYiQjx+khK1&P@k56QvEbZUPU|kG02h?(dTa4Jtg}x%u0qcqevm z#vOXHnETTA_lvUpLcGBHsPSkW7WL6hhGZbVtJ1ByD}&LhbS*txXvrv0fMu`#kuu#|4hr_@C6<(=z;@N)YJvE+8r(n|2cxI9X!>> znfoNIIwl3jRPm{EH3L?Zm6`gqJhbq0e4fU|U(9R~t$N>f!~%n}0Z?}8bF}J3yTqWL zu!3Sh9j>?2s`X-kn<4d@Km;(eM`_jVoFSR}?UD<*a$rdS??n-%E~iyXtvx2NuY`x^ zUMMVYy1^RuLkCs8+Bj+v@F!@6d2h1RK#28mTu*(ER(z)IG$r>5Az)7`IE{}Lc;r>( z_LlIhFc3$=X;qo>%*A))(?$S03QnmULAV*Vs@8KF7e~P-mE&jyHU~g@IEt$V_U4cS zOKwyy$_T7ka1&2V9s7%U);WZ8oQ=exUcp4HIZE(~UaaoLwg)31`#X)vnljmY!nwON zBB}Qw-DgjILno5#fXP!&@lFZIj&^@FQsSgsy(eVq70hUwqxdT~C_QiLUm&X+j zb3)SzEG*nL8Fsi@vhC7Tg~);RecH^Nbz3Lbo@9eDO z1>@XMcI{+rji7}958Io;l$mKaY68*Xdhlzc;g8x{tPx!8z|&K648M=sw~2V*J-D4$ zU{3Qk0!W1vZ708%l2drLtkr2n${NtTO~dcBr8EkzcKpp1Lc=d`i)2T(aoYRf2-Jyr z-<0J-$)1-j#*H95Ny8It#%~+OZ+VP|?FC~|6iQBy09#<%U0K*J;lr^J$xiAA8TZLp zZiEPV#}a~`b$TQX+ieRuX@vOG^H{WM@;=C#Pe*UXllPuKbcK=0GpMYlN7Jx8iz6iP zp?3UU{_|;Ank@6zDo>Bmn9lW4x%pZ7Lg@0J-cF~3zbCS~YI+(Cvu{8kkPo%vH<}RV zp-HGs>=#y+3oK(Iz{_BC_=gUmWtWxEKO3VrNMH|5@1ogo{(`ldekl!gXNCmV4Vv0v zvJ2Eh{v-{Xs_um^NGFGghizQ4nbxysh{lC~8u(vHLt5Z3USBC)00i=`3TlU$wgmZ* zEmk$2ZmKcg_wh~*H6@gR0vO??cdM_Ss9hf;+2W5#IkMz6q=7~0`klM8d@W(4ai zmw$wHi|mk~zxx5mP}}U?7hE;RTXwL@OK9-LcD`RJxZ3fkreig_O1>j-+}ce+{4@#a zxlIABteM~TF;<#$?Cmshxf$Jv%dQ0J8XEjFThtOG%2Z8!OaHf9#9-}obfi0gg_eMH z=b6fgu0eYT2G_KuT4j;91nD;t-ox!TXOPc_eZ!KzOiCPFWpACpB@kv!e?`-JIb<~< z1Hep8{~e{f(VSwi9)7AF%e5jnr(XqwobtbCEbk#6gGtl(fh{P+EQI<`&Udb?h=^^~ zB2yN`qK!!UCZ$)~7X3~HxpyY~B^}FlQD$1P2-Zx02cmC+XxC$}NqT7n=D->?{c9R@ z+7|Gp5im~^;yeiRrBW!_jv4GuV8#|}mj+(4?r&}ozL|s*{i(gycDimOMGx4hW<=1S z4{SBQHfs3ec!B)-4ra>i^QBZ;pcW}+uX+OXy zr|vW9UC+!yHfuWS91q7`(`I0O3?Cw;AEf-8(oWb?vhiCU(iCbsoYUU5nxz@z^zS_I z^_x39w?-8#-NqX1Ep zRdQ(HL|aWPdBLG}Vhcyg6V0AZlXu&5W1nVt%gb;f~;H$4ECNU3{$>9?w_>ddOf* z`1{*2v`KYh{*kfMU&uG(VM~sKbib#IXWMdgFQs-2_2r!7%7G0mi!qU7@5kV}`&Eno z%ZOHOM;Eta{wVO%zBC11ZdD4P3{2qfP!QV{5s`Q&OUpuh5$h)vT9p@O6LB59fm(Paqi60wyso zho@kw{?2{?FEz7FUeDF`^pWX)Ov}tnA!@fARbD%^a8&-3^iW2_<*RD`O8)byzr1>t zHwKT=p>;ELU2M0!)ERR;W2FrE*#k3CA32>?a;nF`Q*yNaNtDDAwV6Ms{_|`nlnJhy zKl76I@8fzI4w#9ygfY$EtIt8N&6`JbOWcFTYLe3v6_{cXvDBN zf@*H`@!eLlGV?M0J2p~~4Hs&+QZU)P_Em=4NX&<7epVCWoY>LL0&el}VN5Krw}v>R zJEWOgbUN|S!=V2?B_e{uYw2MSAFA2V5%#3-^MWhj86?1mL7fGcB z7Xqv1+47%HJ@Z`wpMoAA#(pvjzcT5o_&?hZ24onNU5G`O3Jd`LWFCGaX|#f0fW8C8 zePb(lT5#1oL(}0L=Xv0J(02xZV8TCW@5o?0P}bHGa2g4^QJn1o2;@UG7i&74<9O34 z9#*mPWxX|~4LGwYFFRYOV-E+xOqC^4+&Ieu2;@UGU!e(cj{Vvd0PWdJjA;Q`9+6uH z%3}3TEC9Sz*+7c5*YH3dAF3Jed(xB;@QkTOto=;537`>hW?NpCq?3t&L{gRU6#Im2 zz(B!O^TjTEigm0)UN#6yT>=>i7Qr1>DK8tU6JkFE**D>ZQ`GYq-}D_yyx=^iXWxjQ zorQZLY<|FG&cVw%cRyp>gYcaa!o%wA?`|yr|HifmRrbCLt?i58?Kbegxh+C_WDD#2 zKWv8}`yTw{MhG(>ib(v=+aGi>J0Enxeh1#B2Uoa``v11+fmaAb@sLdsc*}!+eTKLc zQleW6{kAqdc<|pzT^!lcVB&E^-rw+T(%Jt-YWBT`Xx-v>&yiOVxc;A!9Eg@372Ey@4+5W0n5@2e~DE>7`n=D zMEW%-_!Bq=vNGrsER;BOmH#pbzyJgo2U!g2B@A8Vze);A9qECY=8Y%X00~V;{JF}< zC~J1dR`4Yff3EW11>P5UI>(;}D<^vzF4Zwyh}BZ%7=}O4ouf=G9CMHoUJ7@Y?`Z{J z4IHza2ys>Adt1R_HG2qATdI6B(dtw15O>m^0rF^_A24VD zKHm@Rk}TM01gr(V6+vppB@602{t(I`Xd)FtB_d(IN~|&I)0G2oecM#v_~Z zV<1TOqe#TUojQvUVyDUv0Pl?~vK2tKaTX!^SCyY^1xL1V7M1ho6yw1#279%Jh~ib{ zM~H5J-VYxU1+b9${P`(ocP`&;|WP!~9*}{>IaKEa6ZS`B>K^uqFk_9lLqFpQaN#N}My}&!7 z{GY+#lu-Z+CqB#sgO#BQuu`JH2{4EQepjdhtduBl5~aK~97>4-r+~+!{GY*~qj3@3 zSkVPIzXsH@5N;C};(z3a*}zp8jxZ`NBM7lp70Gb%XDB0f`WS5h6jc?$0U$U;ks$=o znhOa6MO8&gD|kF`xVId6T9Mug-d8Jt0vh=t^WPO(NLeZNAitU+STOQ-4- zQ-IHF1&30iKnd^#L^tyGBDM#h6e|#fAXTxDXg-$#RXxS?0F)91%7NFnfxG!#(g3>->{0*in{nKN)GB?>G7 zf5z8`DFCHPgBT7KVq*GA>2#`qdgHUiG@JV4f(s0N#Vro^zQM@5; zQs|hGhw_MHR)|+tb0F)SZlS~WAO|-y0}!f;len+g5ys#sN^dsXq>t!eD1(Y)5by^G zxEKN;EV?$Vl%FvC!KX4BICkP$oly=b2zcE~}z);NaB}%NZ>J63vXrWmQxS9K1TbXe)^N&*97nT~-KDR(xmG0q^Sw zVbIZ7a1x$afa~KS7Kl|-9_JMLhjAs&wS?1X0s0nlE!9hA^S=s@l#eI|x zS)Lk)>vVbmJ1EH1eNY%A3xR4}ry1e=Krf2QI<50aRSwV$cqxv=S;WiDkuZ?-DZT(K z0an$+=zhGr#mCb%Uj!?2P;=CTrF8!}ZZM887zPHDVc~sP4v3YRl~ZUna>HjZ!r++o zgte+Nn^wE=c#=NT!udLnR^wfIe)?>U%W6+Nc&)6a)p$4p9QiK{##s!QxP(?m*bMTF z1$aD%SmdY)4Yaz0c?FrIpNuqh+5jvyRaG5nWr=OT6oaz?dH77Hl@dA`bX^Q;VZa1@ zT}~^LYz3xUIA71DmF_OJqCmOE*}_T~Qn7iZJ_BS1-)AA`maaD+6_WC#VY{lv9=SXt^73B?`>7a5P4h3+TSbYy;+5_&neX z={_uI2>KeLZT18#06{(77vcdFSr1a(7zG61Y2iD8@1eUcv2nba!{grqd~cBMy3i)rV-f5D z!9KdHhmG&G@V&tI(-Jp^TNK!5;roCepe4Vy(_?_+DX<@S@E|R@+a@?*5gY))AzE^! zjUTk|gTN2dk`M(CS@M#O?67QqoPI7W-_wG}vO;keEp zL5r_5I2S^MGIP+cJi_Da%9Hf?Bnz)R;p4ats>)OJc)Cq+(jwq%qQ~t;)}Z$U@O8-; z+W4cD9`te);^7rSquJe$5j4QdM1e zqDn^+3eFa42AVb|43GBHqaRRJ19%=wM?^~cE>?QfKULK?j37n`RO1U`h^m@Li~5?F zO<@qH8E|)8nS$#DG7;vrq*d`6=SO%|%qy7|VNB!WeSJI#;i@WyZvTT#kZcIx0a&l9 z(s?4x^1uLtvjC>*CiwBvZ9OotGP0qF*R1o;o)swz8-V3-i7M*SdKRW;D< z>r4=`Fc_g3j0GJ+XjIi!nQ8Ma%+$DefO$=(+wZXr%r^Laod2v%3Ef_6_1Dl?ERgQB z8rS>i_B^XQMfd8L0cJLxZnp;<5GV)2k2y>^Dld<2A8uj^#egaJZ8ba;WEZipYM!dI zTwG!Z*u|6aDG$S^TljR~b#$A%d|L#R8=U!<;4_CX(`WIo)_71{R1SiR+%6F~$SHgA!3MC3dMy1^Rioz!ESQ3>Hzn z`yg5@Txf8%a1K7pd8*J-5aR)HF?(aD(Gpr9t7LM2sR4?u7;{=1U@?{_=#N& z8?*qfhE-hUT4XNM_s~{L!Og(Y-@k2FL&(!E;ym1l&mNwvv>J*gi@`SFd&BT%OTh-o z!r-eUvBom2hr+^N6x@pRM`W(jSFokb2w(-8@Ht9Bc*-Z>y6a|9Gw_3$F}E$)t8s28 zq)j+R!MWT{@T1D_lhXz{37fme@F1W2Mg--`fe2$&%DKOq)(!Jp1^%w8PM89*7uSdA zmYZy82Q8ehPtq;5HV!#RuNwW;E4NIg$SU_CpQ<{n8HhhxaHAF}Q?I_cM~nb=#~$GA z=$4_jJC15x%-sjPBi+)=ZWfOj1LI&IGQT*QZc)@V=ytxMU3IjvkhMKUH@nN=q{yEH zQy1s!E_Cxg+rm?VtHuc;NL9zs%`LFdy-TSkon8!tG1YNAwHu7|EQG~c09y!as{7K- zc!uNS?KCbH9>aAq-HaC!`8aOi`QXrEgi1$YOTwG4GZC|F0F+nNDaJrnHlA+kWe@UU z5fiWl3fl5<6Q0E;dKScJ25f;SJ5J_?eFflJSAg&uKsSDEc?beE4g-;WsydHu48CDo z*jE#>kUqv3%CbR%Xwyewwps;B6fVZ;YV z6)vRUf)3VfKy|ty*oWauI@;B_H2+5%XUoAr6c~W(Oq%ZoH;9WzSU6u#r}=-h70eV| zHD0C_#Uv-qf7LD|*_wg4nB7?|v){gp$7!60FDM_XdJfHBYkM$HUz52Ji82`^9N31AdCrCFOunX-$L~MOdu|v4gvG%26r*1D1gpiaP|OOyM(TP z-}V4Hf5ycFlYuX#>wjx|V6Mf#4uibv1$6ypKaV)Es$Omsn1}0yG_Q}3Grf=V^+uZ4 z$;KB7&K^+J<>G~Tc!E;p)uMWxUOZ5Z4Jq@=Wq#iGz#>f`c{~U6Ze8fQ4{QsUXk09W zH4`?{b-%MMTq;6|!-K0a@BVQFUH5{SE|DzW?&DK)UlL|3mRs{FY&{Ou_?0Ha8T&Tt zz~SoGK#yT9V|vld+-qlFbM5STH#*BoBN8t=qz5R~Yjje{MRv$mDhR2m8wFR5pZOv# zbwf03s@Eb#6NCWu+_u@`xDohHDj00LeXHU4vBxq09nvv~tS~Fy2uzd?c~QNTs%;kc zt)SjZ`R;ZIg6}lk-}AZ81$PO^4YIDRb0bhs-xiDGPT+?rf0nK9Ui`KnY2NTTB1j`#Ft?HvN8CSyrOsYf9#b)T$<#1~0TZ#t3dtcn|L6W-BzVLBJ|ch8wpa#&{HBjDyB0HE|aA7*MCv z;3%7Wvf;j1)8U+cT%3+Uq2~jBr!Ue%^O{Q`4YZ#2riT^n(ZAGWQu=4$AMX*Q8v(cZ z0v3A}g_Y;B*$C82F-%hmOZ2}rlPUdHTjfl{@n)anMXp1j9v8kwVB!$#?d$UWdoQ>a zxN^SFj_4G0U6pOg&4k=)O7CmSos8c~!223sE*=kg6|`oG{+;i^5G))usF{YM{CR^7 zq~*h%DB$Zfhaxbo9UjihzJ?JsXzO`a!E?-XPNO>_I7QXWqqJqVg4F`6Mt52X0&XxB zsHPJ1w}KxqafBaEEH6_J+Tp*hLrm8%8BvY&^^|s%EpMKYH$(pODXmcCo%tSWwxtIB zR3m6Tdlu+)%s&WYRLycqbK}&dvegTLeUFg(rD?+1n3{*c5cdyakXKm$yZ5IH|3#hx zLAFlStff?Ul2{0q8wLCo@Tq_LDGOm;%|yrwpE8oT|Z_+skYP8U$C3!5mG9b1Gs0&?dH$ zhp?_@Clms$XW>>$Km+hSlxjD+5Xgr$z@?OrTmxZT4I+Yh@QX@-1}7w{7~lWH%hDx_ znk@yIz;HjM{LQv-k5NDe#qpPv-<+9+2tean2kW@zHG_*>GE|7QetyM^e0r2qy9H76;>-SbrxIE>$pLWtMxQ_3ZF zyJR|E9$zBhH!AHArG3F3aQPnvf5=yj30e@&7j2R_4`hKKk1HOkjUdGzru7);j$0Qp zC{x>!E_%eyf|J5mHOBh<~Pp zukC{mx<#gS)7M7obkdNW1Rg^dwYL<6!czZKgRY0Vjyh}N&hI)Pt~+0eNfeo(-flN2oOxCes=E)jrma9|Dfq` z?&o{J3a?@hOu`3q^i1n1I7O!u{*!^%Q9s`UnA?RwKGgQznh@u{M?4F%ydT8^XkUA+ zru77rYZ4JK9r!%z`+;2ub$70|@9O0aFP;Uf0>j_Bw(zW2U z@h>0|0Oe~RfB?{X1}xI)#6$JK*HEJA?t{`@LLeV%`xZ@zbK<5mEzs2z+Sj5WF|8+H zxlShnmIB{MiFQi}fqba#k83)d6HDYCDu{;0j%4L5fc9LFnAj7rRwonzYk)UX;^nr7 zHVUq`-{lL)wA+ErNV63@Z}D-&z6DMPkq6R{G-x1aHNx*UQB>+7>c80PERdKFwcW4s z3G=-y@PCvn_#K4d!?d0O+cbYM0ON_;eUxxD4Djv(VUZS4p$TzLi1!49wF57K0Y2M7 z>j~H?>D2aV@}E!fc*PY4G$DP3&cb()9v{%^0Ce$y9xzC624z(3L5jBr6wsItwY^aO z^C^Cn`xfqlSFQ2gEY+71ZhLv7F1ggD3FZ08}es`d!*kv=}# zZp#nr-#IiFA-qwk4V3VTorQWlptcY7(#IjT!hNZBSRVceVfZkyXTedOP%OY`X;wRm z>tGkc6N0Plsh)sX|E1kwS$G`$@d+}qC*Y)EaG}rO=bnP0ZTYMrP~coB2wFG&ER#$W zJOR85#a3DhLSa7C_I`#CN?co`4vgPy}=V!2s&mzdV$ z-&dy-{_((r!>EV5feqIJ2;@U;@2m-N?$P5Xs?n?qKo2i5ttTKwrxO7KC~9gp^*F~i zV3^=)yV7)Mgs4Y^Rmx|f3r4uDdf^*QfOGd_T*|o~>o<`H`7%7d)&%2nA|bWoYnk5u zE+KjU|6fCnHVX``_n4m%Z_5IIOdaA{aE3yh-hKP`*q?X}xr?9qn(}t=HW--ql(%Q+ z>#slce)9io0l9UqBmR#ClRVO;%JE< z(Zez!SZE?tFzT&aN)dOy<}ZyGyk0Y?TL^p!McnZq7(`9Y^8_q1_##pRBY+o&;Y&3C zx_YE5@L)K>L9GDZnWP!)3}bLe zD}eVcwT>S~79f3bUK)CZk~R41%K|XaPZs5fIJ*Ehh((p$e(l z=@5_~R!vWs7jfnxMhNd}xpJQWB2K9VCnXD29c0YjNWqAS>5_*_y*xans}bVzBR_`= zCwAkA)d?Psszu$=kRU8S@}AYivPvf z+rU>*T>t;Gn{YQ^cr;*ufB^zTLqPY08tSF1O*Hbk^mtO+yIfHqD4hF z+Ni10ii#Q)5tV9eX-g?p+EPoE+GuG@Em~AWs#O2)dANJ`uKE66|9!n~?&f~ZIdjgL znKKVNGn)j?wA^HtsIhX<69$4hd-BOD&U74@JzP(YRe5^@$x{00$ff)@z;nk(YV0OdlR9Z=GOix+{9j%`v> z9?Uj-|Ed4Z;zD6h-YsyN&w?CdK_&?lfo~4DFxOZx61=zrJkJ=A1jNv-{}QPff9q4faBuvJp)-#YVcBUYC%q30AHjHh~QplG4=Fv-g6U| z1!cy9V(`r!;N`}G+2C6`z^iluc*j}1N!ZzPLo1i(;cDFv~o`e1UnEQ6>R3y)&bsX6l?+CE9~>02q?JID6k!T zpRk925KusFxm616fZ#v}1bd7Et>6bcz}t)hJHZcuM^J!ekX|9%YZTZGepuMU#sn0Q zTW*yCdmx}g@Ew8!Mu9f)_73oaMgiHH9ToP_LrQ^aPk}>50qMnK!p@i%P(W_ERSFz{ z;CKfFM~ngo!B2F6w;KfxfuCeK^uGdGaMUPp82q%b2V3z9M9@kra0G%g-z7jPT?X1I zWTFH7gi+uqc%rZeZId2wuJt@{(kO5YJW1H;xp4{*|4$nQjzf_A9RjJ8R^SA9kMH6r zr8*>7?<`3X_PM`~_W(-iT5uXXL)ZiR_!Xf3qm}jm5$f-~f&}2nS^*MD{Cl?!@E%$L z5^|Pg346e+(gU5ZjCug2RDXhggR>+}*lEA?^(P|I>Qqg@x3eSL||j>Re5 z=XZdoYYQ>NSuzIvk@!f5)vCim7{4Dcdh_b)+#PMu@;7_9*5I7^D-@Q4~5qLosBFzYOt9Y>(?9NpugXX7j>5O%+} z=<)ay$Tc2JW8l#WJ`4}~@jUH8x@*p;oqnABR~F{$1eQ=bKd6JCTOfe~@F#@Rut_+h z(>uTmjRy!YA5;swuN=Dh6(}+u$Of;S0+&}_bz~%7`2f&+z_4v*J|5lB2w1cyx z6?_V~9DjQjG?@fsHEa>qW4yg8&VpuxH-m2jzcqlj7`z3%O;|trUjW}`vPh1udkE`J zMqY8_fAUS`5m}M=QIfEh-WVuEJB$TQB(PIh#X$>O4c-dA8+>}e13L}A6MUbrX1&dB zh&T&(LvR9+NOdb&FzeQUfIZ-6z-1xaE3BD8549P*4g3K3vVaHn8U=QP9|lj11QOV1 z1nh<2ps;4t2Lv22xXj~2!YVouzz-VyAox-6g#rAKQD7hV5n)Y_oDL{(*bp3spj}v( z6bJAl20wy_N`*D%NC0m)3LJv}82Frk0!Iyg6#TfbA{R5E5SInV48bu7P6+E_R_Djz z#|?fQ{G_lhVl7D=e!}1~8&88T3E(FUeiHnQh*+bUaEKFd+7J*ZZWY2B&4Twh{EWdV z2e&2)E91y}sv$^)AYE7&+!?^r44wv_0nTdSI0e!T zo(`TVtdaKx@C<`zF#f-FBm^{;aRM?8K_&vSgmwN81NcaTj|3kBJ}`i189WO-TUa9= z58z`AK8Eq%tvL`33lL-*f@}oj3hTV519*kM88 z-UdEDfH#2S0W5WH-6X8!j{+WOl(@|QMn0P%s0k2kG6FV%ZvpQTz&9IwGx%0voyAKa z<7&|sgKq(E0v{2;w}MBchFkeG3#-ek0fHtYpb5MM{F(sXZ186AZNloz?w2?PS`6L- zz8!o?0N+OcN4aPl1UrP4^i_ahyAiM*ycPV80KUWEJHU5>_Y2^y25$x5EiC800M3?M zoku$%*b6~QfM7QQPEd;XfbSDl=%oO@2mB0J1D^xnnSnCUW)#>BeoR=M*q#~Zp}q8f zWCC)n!=vyX;Hlue*Abm`w_lF`C6gjZ;l5A^-fj^ikT^`Lj2z`Y z9ehB*!ZeMOzfM_(5I5}z;P6O(c%8CL@atl@8vjcsMUVl(NFiqbJ4T>90F%Nq!Lz_` z58&`9d?ff7@Sy=59))LtXY+_p9&o8WpvV7`NfC^JAP0h39)TL1N+yM8gBJ*K!yf`T zJhBXw2|jt?1pz$Q;JM)W408S+#m)F%GARLh5X^>PZInQdjwO>)AP0P>5XFJ!R4S#i zFcrKA{FXo#lC26a1TPk1R&;0(f%SI*93F)? zfNug<0~6o)Uot6zMhG@TkQ5LAlfpNFZ{YyS?ExGfg>MGm3Vu}phezRCz?+2l-rL~* z@xNqJ1Y03!hG2R?089#R0&fwb@RI-zkHVY5w}Ed7;P5EC1$;YrUyj@mT;E0uAxw&3 z8w5Lqn7S(<049ZR2j2~TZ2*TyWnr~QJc>7_1ZxS|s%jC{^C-#|j0lYXWz|v%>>zd}U zNhXEw13xH4{;2>zJPJR6g?J->MF59Ku98_)4gV3Q>>_94AB~nBqHe#(B+@aF_~8Z) zE*Kv_7hHB&3xLikJ0?W`V*!5V13t=^Ch4nxi|8-!yew`9-EaN zH3=MHA9^AQj0+?{qJt^H^@l{Ls!)htKM_6S5;#r*xPRUm5?Ia|pYvkpN2+Rk0-O^x zStXqK;jNVao|6LvCqYsmNQ8iezCA~=)W~naX%yfHO-{;8Y=4o>lD_ktRRU+gQDA;D z_;W&>_5FDMrO1+5fcFwVN~QdF>Ktz&RwurN711lPHFmbYOkgSMbh?BDQc2)(gk2Xq zLQ~<%Ox0cko(BG?5cK)FNLeNe9^KfZuOu$ll%)h(d-pC^N7=M~f12=P`Lp^o<;w*dPhoY-3`Crdg2a$zF zwxIxvo3AOpQiP5i5V!Y{Yj-&kf9G5gdhu2fdiEK-uIu@O)cX%yFkPh;dhsrI?c(sVNR?UEFI{{whOBs*GQvtUNhK91r|=mXr(dz+ z#Ws=fkw{Jw>8v}Ugv(1B82hk8nK^3>|{4ceCb3!JVpEcC*WHQ-Xyw79QgyB z@|Q*E`9CWl^a7`&KmWW4y+ASeiRhK^!0PZ2Md2*HPEj~3R%#LaJ?n09j^&nAg@?Ky zF9~xPvrKI=pM}CoO((UjqVqL-c#yC|kO4-UdEkq|Zv<}=p{`8g;RYkZ9efJldX|niuZ#*Oo#J4Qfvh;3g8cdKLfr} zgzAVlnWtm8=biCNQ)fkq)|kIt{wTWR9i_{4OQX6xjI8H{D4Bw+cF~#FRmbbXvyG(; z9}nUWPJjvZY-fYp0Oq%y%c_-kS*^E}W5*9BfwSP~#w@mfHTm$Dz<(za-~I|b0elSj z*$TI+Wx2XSmAn@gC^c2ddtp4DY!Y4WqU0HKoTYCn+*xtG`j&sX)QKLd-1T;ES{6QE z=QXEjFa0B_5pPyAL3(30d&TbdX~Q8pOaCmabAJZ@zUZ9W2!1t@IBLxw!9NB+2>vd3 zLk#ySfmBXj&I;{gdEezK(KYJY;r@yKv-Q&m~!36;9rQu14F>~NhtyR zQ}F+SbI!`@S4F4lOz^(qY){!QghSc4(y4H(w~5YIB-4nJ$Kcmjf6G&I*@oKZ5j)CN zOd{5hf~=kYg^@vRIyGZ8y|L{J$S+!fTmYV*T2ZtwL)s9DHW&gXTP#*d_9_A3Or%ZDK?kuCE zb4iCd81F2bEjn+B3#Pb8Ud{?lDepViiWJLDuZX&2Bz%P`j>_n*;^^SMGLGunhqlhL zA{9qvyj5{D4yRRER;=QvjJGO|#^FWatWG92%6O};L3hj8h)Yb)O2g!(4Z*j|8bs$D z3~}36M4JU{lb5sN0`)EbbUsh?qDE9kEh&bvN<~>2jny@1hK#btl5%kRzeHIXjWzDb zC~NR4a4L|DnM7k1Gt>9Wm}&58@U1Fls@N)Hronxd=v>#9%!Xl`Ncva6k_MHuvtpRm zfxk(Al*N<=&J@!+7@J7xW}t5UUP`(YZ3S;8qUM5gPD}RC0Nw=Nq9ZDiS4Gr; zcgPrZX}K!K&EUIrL?!a7h&s?w_@Hu=C(iOsN1`OfU8H zL@#+cD^g=xj3;iZSecuv>}^8~bAU4D5}Q@bjfzn?zn53(FiLDzVKj=nZL7lR>5>Wx zXBnMy87v8^Dp;o7DTC#uEbr&CU0I*kvb__Cu4 zcUGv5y1xIrEYu~d!?`6&wId{YT3Dzc1FDKxyeX0hY_jqszn=jo&=TELppC;%3uk$< z;XfJAFO?qAfzmq6IxAG)SS$66=&byiu9Z52&>jdSOcD}RnDi$~g3fZfzcNe`PSq8M z_W;k(VUlpFuKrKSFnMXY+g2SdU(2K3Nzf$xb*e-cpCTmUEGHhza7x_Of~sXW)!rcy zXZc7S+z4bUxb@pCgPXw#$IEkda3ct+;1 zX}nIxu1m+MDh;!jvQr`w$c87JntqQGIXKM{<@E z(zsN4UA`BICq$^-S6-K!AYA^1qEoc*$fA*68@{CUtMUb9^C~M9ByBF_gDvziRa}+v zGOCjDNg3IB6ZkBm*iPY`$KJ^(P6hG$7RzfG`$YRe?mD+ms{6azaBfmHLm}Bf>Yx7g z^uS(es?~habd6=J`66Qy%uae%<{rS^9=8tf zm1!j$VxjZ0PvvFCB&D(pJ~;UIO67Vw&;P4fxI*#krby}hc}yVH+9@9+Lc4rAV}rb$ z@;lYH{1e))bZ!Vwh^PWlo}nOrYjxHw`dnIxhxXGzmZz&~5!zoz(cdM9%dyt3Tu128 zGhYj*fycC57&GcRS<2hjMU5JkV~k4mNV@;t9KfhDqCowwGh!Q&?5Ifc8?|hQ#>t2f zk;lQvq~%%#?X*Qkeyo$!Gfkc|uZ$XWg(^@x%~XvH7-WpRLYCi-VlAZHbZhyq(`VT6 zz=rUI0lKng!buAz%fqmAJ~^UiXC&y?C9m8NK3@-j4q*Wkk#a!Dz)@Y%p3b+2DMk&5 zVP1&KDKGQIU4BR?rentS?LK0&W5#`@(9MSKM&S(IBT;ifF=)ZLfF;pi+*ys`ZUb`p zDI0n`HFReb;#<<6?OxLuK6hXWFv$0deyR#}yQ?_+<~uwVJ>#$NOo2S0uPfl))0@=oQY?#7MbnU}7_d(nx$m9!1dlz7I8 z#9x^y(*_aRQ7%GHjv@?Dt9IwQ-M$}Q<`!=Y_qcj_b&NsYCCsJE#pN#<%NJp137@Sr zZOIZf7cN~nUb?hYxqd(nw`2IUMG4HeMInCG?Xrmykp|o@oW8&Dkw~~wib>ZwP4l@t z5nuR7)UBi|m2^q&e`LwQU&Kxsr<}ezBx(*y&afXqx9qs08*qTzz0l{@q((~Ca zABs&G#U!#+cBk|uOF5$wIjTySPv3ztUc&qjDb2FH)QZq^?IN_CTF}~Egci$h_nyaw zPko^GC1+(gOMi=~Uy#l!(s?T?k#CF{@`X(2*Y2o0!+i!k$t|_!1)SLD6CWM=4Eewv zaVI{$9hj^-r(Xd6g%op_5;J%uw@aZ*M$BUYx~C-F3Qcztw=$Q&$L-P_JYUnu^1?ZN!T{eeDb$SDj-0rTuE8M@QoCRZKU9pd!?&f=j`_NnAfsv(G zFm?1N;aqSLzi(yJHobQ#>stykmCsqRMdN&jj*wN|SsosTQ*TyX%gpOutwFb?jF0^M zP2g98S86;onvLTU*U@>1kkfK2p1_QH%)3E^Ue4Bp>aXAl>8#}cNxEkz>|y(b??lI?in76L^D4?n6*6RQmSP^IH= z%6jzbHJir{p5p(|Kg$mF1X|IGB++ZS>`?plX8!+q=4)OirVsmBRE%sZEfIR~x9&qf z2v2fb@0Hqq<39U#c<`VVA1Nx;yIAodQU{A(m-)1+aDVr9`0Od^^mn6*RH$O2rcE8# zor-~?*Es=2D$Yg`n%P|x_5G!uB3h5n+&i{}ua4XdYg!Ca8U7WMu1m{RiSm*&{*ZQK zvs1ym9PU${Ht9E#mzS~tpE?ych@SiX77SLnv*xGjTmI?!5;Kq^{En*_jlO9(j&^i^ zvqvcPbyob=t+^+Bb*CR8d#wBV@5l6yn6g%3CeV~>45cgbL{DOJOtl;>sau0^u7GD{ zKhg6+a}bVFJ=fsUG@7A``J(5NpeLuI8RosbnJmrM^j*}KRPAeb$-SsX)vqXyS1nJ` zXs-+gzDxAX@_Xe5g*$6vz3ra;@rvj5IXWq28ck5e{h}u=eq3p*Am+8cCqipm3E$b8 zUaQ7%_T?k)4flm-b)th*QSE->hKEHe2m}=?HJ!@sGv%cVSLy%dlt|@Yz#I9j=f2uc zH#+Mg-6<84t|Fo^r{eqGy*#wSSmG$CEMzv=T-}-8i1D}SU**H&iamV(Cc3Ma2l`utinlR^dRqLas0{OMQ=IQ~ zmpnj(DtU+qRdHBaFvPmjefNRzU>QQCLh?#j*si|ipYFV1GNyou>q>#W(EnR>ALKXS zZ;CHr;g>P~-hTdn>faUr-)JU(F1ja6{(WL3>fvshw2D(0FdPG(7NJ8Ko*>n^sHl;7 z@n4-6ue;$9Zp#m)Dc`z3`C)i?C&E_68Iu?P)~ejBqnG@rJJaxQbb9xpXL*;=BaP5>5ec7*E=i_T>DIY& z0R5={VoHS3jfpKv9L83>=)T(&p4#ay%v%tX9mTTX*i~lGr}BFJvn*IEe}n1&5}l(p>ssX(9UN2wL?EZ~HXf?TDC7$Q zl?;cUqtjNLL6=`;q z7H8#}D68l^SoDsmS+9QA(~@-WDqBV8ZYCBgE!SyW&JrNYsoW!yyyu@%{%uD7jh_6Z z_j#Hitr!-qKb2cCgPGC#a>ixEH1A4eS;}Ybz0Kj7p{h)TJ?ehadqDrlG1a{d-7%D( zwh8BI(`C?EwWxeSsTT0Enk=2RTe0h`zm5M-ilp%|r!SCRmY1_~g!-0$xJw=h-{ge0%hcbKb-iB-?QG~*WHW88Q%OwO zPBZ5osXw>x`3yCxXJUI z+=(Deik_jUe0JR6(r3HD(}crNMo-j9pPf*+_8BcrRl0E8n9rmS<>gcn+;nGwe{K^! zV?H~r1*lBj3*qIM>KAZE;VM(fP^XH~ggQmiS0AfbD)JnS!mI`O)C__Ym#mM~)W<3! zI$oRJ63)Z9&+IXc%rGEK3}VH~P1X&PpPp8ZyYmikQ_r{&8~ zgBhXc67&;}NVEuHtGt}52h_Lx6B@u%R}Y`8epd>TyP@Z<5+OMsDbnF#5dLhluovVK zhW3iiT{d&j*%tXs^ODmFzaEt_aCVHzw0we>{AVz4H6+Cy$43cDFwl?h&clLiW6; zh}EBj>rMNrD~tz7FUcMi-3oby@*ne{Zhw$Z0sQ6sVQ41{r$2+?0j@_!7?vby(YTtH<>QAsbcKT70TBkSKfE~ zsd*-$@R#LJy77nBsrpoOBYJp!dF06}lwYpC<)3bg1h4&R7gsBDtKQIn>fq7Ct@>DW zQ?EquoBI~OXJ8t+nX%Ioq|B}S(4GGi+9yJ>Q}t)}ttaVWSG~{uJMLFch6lUJPlVG| zPnDjdQ}r(qditOzpj!c&Mg3l-C%T;KbspY*vFPJ<|KN32(qKtNr7SuP-J#{EFiEk%36So*0VaH?l{33NM4_SJosuB7@@o+fyG%cvsPqf?evJ?nnPnbA&a^7gq z7c9(Cw$c&nyNUa&d9WZtUaqcWI3w|hj3pJh=)6;O{n*#7m#wZ6Ae|xY9xS?&DKP;9 zV>pg-R&Ewuf9J;sE8MBR#PdN{M%3}X8ZG)em2EidZDuk{JwolQcDLq9`pT?ESQ$3H zqBp|nt!iE?Z{qX`bWG;XjrK+^y6EDIFI6Jc5;j^?9`riH{vn(-kNSK{!8TEUI(&X7S)6W- zo4i0NXXOe8^fce*>RK(jdbLL?z~wNgk6zs_F|STmQEi3#Ig~#$3X86}a&YBWlEPG3 zkB&d2ns3o`UDTIUGTZ&^>F~9YXequzB$WMyfz&pcgPu%vd+32A7nd@P2)Aho1DZsDvqbN<|)Ng|l7W-qvknDc6BRpvW zGdiKCmd7C70j4O8o}qq>7CA*%0^g4{ZImvHqjf8v3E!^b7*@zD^yF8Xh`(L?_={6C zpi=dql^xu!6z5pg`?=x^J?-O1*I02hJrfn@h-sBKiRAz4svXhg?KcSi1A+8?Pl046 zLSseYZS}jedbNjlE#NfiXtppNBd>&;$9QNn0=m8_nTIm7Ux%BEA2Z0d|6=y+%< zGMFCn)WN+gzd)T^QD+j^5|Qj4IL|s4G4$!5p?(i%uo)9G;kvx2m>>GY+`=?_H^kH- zW*konzCcV}rgiRF&Z-Q=6v-KQci{8k^PHqH{Y2831b5Q&;U)JS{8{3_jJrHJoyO-P zryp|e70y;V8-t#8pBiory4qPq_ve|bczlqIGIH#8LfSNG`rPr8rxZ<`Hgg=!rLt|E zC(K#35@DAi>@I}8gRrps?l5Z*DzUQrnIVMGZ`@@sgfBQ(WK?=woyOcAQcW**mkdy;F%W--vNF8Mo%3RN zD5+iVadjG>4;OQVslSDb8IW_2x%Av-1_{VV3W%hE7W_VROTu0%$ z0Irp8O{U^%f{WhX@PE3m?+g!JATox;xK=xG{Rl3&Hx3bE;Jv2kNlWPO8tI+JGp)Gl zZsBKafI>kJ(;TLTAokkD%+^fU>zx$nFrEgEvd6X2{KjexxfxD)~1>2mL+sP&&6V*D1@sB zDSe9&MZoV9JqArC`L`Hd&Dqcq?)p-kHWF3(M0c$Fll+7vR|_XK$zAqx_<})V2$Mb0 zJYIbr0zN=MDFU#m_j4k_-7#EMssF*Z7`{aJADWLw-S8#cQUc%S@KrH}rA6#L3%(=6 zB;RTR!w!0AsluJJJ3N&1T0K6eW*04_4WH>v_jp9~ag#M)Klo7RoUh!s;Ja1~N{{hv zpdYfj2YijB_YpIPCrl>FfOa~1*tV>-vC^|T6M4f$@KOX`jKI&_XSKlfp1_1M;_>Q{2sG12ofokPR+f_gmxeqR+rb>tIiI)# zUkwkQB3QM#iQ>9i_Ys`cH%bZWO5EhKyyeH{x#Isz<}_qdCC>TCz1zriR#X31FHmxv z)r+{-^QwuP$c0WDwM_XpuP0cv2krM{2{NfZ=lsL{=GAb&2zp8#6F0qNWD*07&WW1{ zIOb9-19+-TXXj%DeeP54fnfF$$pjJIq(A6p?Vhi%MB%QviE_r zf0;Gbq53Lh6E4r+A=g;5hs-bAT{m$^Z}$%OlC#~RuZR0jQNjzate_vR^{BR-6&dYR<7>33;f#1l|S|^UG$IitRjd zrFy8IZ5VRfPZW=n?etVlBL~S<1?>N7cq5z= zqB|a{t#TiFBRt+-xzv6Cjqq5to{RlZau<@^`xIK+04M#dkxyt&CHX8RUGALl`tZJLPnFzz6Bpc$XO!c zI_gfHE{tMSiRh=uqb>Qv-bIu7#=4-Y~*v&#+`lLpS>BLsh!9`ta>!Z zKm362hu|lTsD4WRwfsJTh02od5pbHTIGj#h_0?vx9WyyI3Iq6ba2|0qT*LPZN{1*v z8c7EcRH~;!a5>+*;t1j$M8M&4s@T$X=M4AvKMTL34OjyoVWi=FzW2uSEBOqxNWumF9;z#mdIk*M3r32%q$ zisPA;(eHrshJp*}QLNd3w+F-$j~9N=JB|_l0K!!aqkcFfkWf&I@GRk+KNjW&>XLK$ zCMEnM@ON}wTJxl-OAXW|@HpW|Wen@}tMHZDA)mnZuC79Bo-tL(uqm26@%KaNm?)!xg2B%a+p5uECzOt0BzT=BE?z&2HQ3*fg38(8y0wO{Y zT~jNZ5&w%ZOOH@boHc{Nx9}YSr|U;XbRhis(Or7G6~8u~#(U11VY;rZJ7DUXUulAX ztb@wa&;Q?^UgN%brdMyb*Z%O8s*bOj0v|b}JWXdrRVBaN8^Fl{<>^;C@N`J`7S;BJqx96!>dY0lsa1YdIGoOT8b}3t;}?PWerELZ_dCRJqIE3J-UG z`Wv(VRb~u&$xIB@QPjSZi5tLcRVIe&lH)T`+4Ozzh_0&Z+D%pU+w>&(25KYgDQl0i zMde)zL5r%5=Wp`Q46R{&T`>m(su>Mj?&&Y5Cll|ebJrhW)|!=N&YFkS{NyOv&}=m=*M3Hr)xHS|)S=iQ{ zG=RGB{n^NltQV*>?`R%c869@8RxA`_- z@+qOdzHJwhPhJU+psoB~_8u?r=A}OL!cH38sR6)hd4+0s@b2U?ru8N6RVHd>O?T$S z{(*-x(TYBdcQK8+<{@{-SnV_)iUfH#o1(i^F-@ zz~WYokGKK6djQV`f85}6z!Rf5aYA_@PsIyK5vo1r%kHQL@>OBdcv}pYg^^*E+!ro4 zMuzG)Ns`#`M;`G}Tg7J^=L`Lu5$8?h$W4Sr%RHFm^m2LD$Ntx=|F`kWF+Vx_a5YQ& zXDJz>+9vn?--o|9QF8H*i5&kiPe9bH<|JNFHCN5#Tud>G&WhA9T~gC1Lb+pvbLLYa zb{}DuBJJUD-=56H$n{n=Rj6{i2pvA-KJtffKlgBxbzVdkrmxtJb4%4CnZAFpTf;dQ z4B$h5R=-1cVq9V2+@j*SdE<)4&7D5^hKbOV!561{N^}~xT{w;VMd&ID-=oy=SBlLE z)oSps+M$_~^WbY2&L3%yFRFQviQaQWQW}d{CJz$!!oQk>VB`?dG;}rh;|Up#|3*9W zC->e%;Y%Y?0W}XZdvO(SBVvv!|9xTKe1@v!)F*rRZsxQOf-~C7|AoRGg?m*G$1v+# z+rUc8HV&j}mToW?u`P8W?O4sz(O+~N|8#Zd+`Z@o_$rzwh0}~mzt$XpfETQ%Az%@&Jcto!{I+50EcK-R`6STx zUA*Q_vgH!^w~#Gkec7^`EO?Yjl@Dcdl#icdeIezGf7IzU1Ms&j+D}YdJmlDmzb)wH z+<)L|f;yKhc<;Xx?i*2DsmYj23GrW^`Tr21>j_WOiOIDTgI%TeS2ho?jw!M z(|u|~;EU|bPnw4%3TO6E^2>)IHK)+9z#iMzJm>u57F<;GnI^b88vz8BU1j!I&eMw} zz|uqnILEJ7>V( z2Wq=%Tp36|w&oK%OxvRPBPxMjioiL(Fq#2&nAwK~Q44FCMo`KG27ckTUF?AsW|Jq;{|-NTYJr(=Ze*uye+XPEi4&Vx|OT0%6SA-D?RW85UjpO7N7z@6^?Tq-jjJrU0lbTSwgG&#cbB>gW zhj>gksR?|F^~5)L$cvq|xW^DUwG3t^{@1?hEx!w;)r=FAhn8`Fp?%fg{2r24fvZAT z!Tm+{RcHJjnxk>$fmPg(wR8K5#7H!com#0iqai#XFQ@iOJNI0FA-q`&koCA$-cPb~ zhx>#+8K+ zfzPzZF_4HEP@{2W;bY)8*yDcbiz6helsJBuGLS#^xC0!Azrf4m^(FzS;d(wx>~V); z7C5yVefUQ3wf4CG`0=}a_`OnwJwCzUstnB32^USF3>*f(+j=_kN3$tbdEj1;z^T0h zVN>i0OxVY&k@O0kFO>yS$&L1eX1@Z`E8wb(yv6-8djd1fF%L-|$uDcsJA5ka$b`53 zE|hMICh!#Z_u3QU0?kh}u3Y>s_p5CB53x{PD|zmw4AGI$mz@{#*P>@NzcN7HKT=}n zb&FXLn#HWLr@-&If6C5_#&YGtwZ=pDiKMGpPBW{g^(^N##I1p-{V6>N!Zwff#Pluh z{=bAT?V?72XXL?0Zq0v(59;pJ@(8Pzaav!R>gikEvG4o3F}1&!g0&mv@V52=duoy2 zjqhk&S@9wGv-Z@|m=R9xy9US2a`;^PkUh1*@8$P3F1=Wn3jUZq_2Iax_@N?jj=u>( znzY!S`nX7l71V$D6!-`MzqhA8=~sXzSsEZ8|JQycI?Zaer|$PF@QIKA6f_^&Q+YFi zufh0C6XaK;01v@-72Ab_L_(|}ol>~-G0(E<7VqE)kwy*J7tN^o5g45#eE2EV{0sRU=F zen_Z&L4;;z*wb#)d+1dcOlBi8RLzmID7^7zTAiPtY>G$%S#|1Y1#923r#1QVTro)j zGEa|zzhh5(!RJz$k6r@l+$Y)74*L^e zd)hxm!Vu2`8NLMMeTqFTx?D`g4zekxKoYpKHC;W^m;px^@_$ z%YeLp#-4e*50BIp`UnaUmT%8|+(%Hy@(@oz5qN<;^LKu{*oPN`7uvIW`0?33d^UKI zJu54Qlm8_?f)WUd?OAc9ywr!6g3q>RwZsHCb&GuXBJdJ>)*F7j%!ikOm)gZK1!ex1 z`v}VUf0146)6ikoE9QYJ@G`r2oIinTA1-4@xn2A{KVIj3{Rse1Di!s zYNqwtEW;mB0;CdA0(rm5dToh60on`?m-m~k*Vf1Iq|~s7>-#O%YugO23SqM{LKi}L zKh&Q6Q;qAccwLK+pao$~_H4F3c%ip$n-AXx-fZ8L=EoU7<0YNIcJLParZPXi!-wwx z-)7&0Bam;p;&rV)f>sE&+c!P!7qHWZ?*!jr-xQ}H6E2V7EQz3cms>UyX%(!S~p67WnafKK^~+ZT6g3VtA{hxzQY z=f$;tM|}7Z@I&^z2_h-h6|Zae5uA`h?0L}Gy!N`nbu0)7&4i z7ZCPi{PH(&TGOOHcXEHwUT}rqLuY*a^8SRq;Cm6D0A-a)pgs+P)AoX!{dl4lpgfSm zeY?G2h0g=Zs^c_f{Z&>vbw}+5t9%})PuBdhIj_&<{+PWWLdVs!fKjlzW>Wc6dGu0L zX_vBt-0OeVVvI(DJU<8d@A10kNQs&miwPiKNWl4gpjL!Zys_4AL7x6yL-IH9nO_or`;OwDCcEWNF%6~csDPwC(v92fmVf#c*va(x zHSkU+MqDXG!dpDq;qtO@H%kPWz3w{;d@QpC6U+hwoG8=O^`L6?D-EJaK9K{C)ia zWTw#m_PrGX=Hh!^84y6CvtGo4<=}(Civt!O0^bA9^6cp+!OH{qVHDURRpJo-;~bE( zOD}HpJaj}ENd6zi%00Y-U~9m_b`tnC39x!)Is*E?6R?2(z{FfBUtj(IBh+-Gm%uUO z!Q;w{B5hPaJ~C&$C-a{(=%>Fu8jKJcH+fBdf^wt`vpm8+;KsvWk|+ z%a5!rfI#M90Uz?ai1X+L*SGCDQmrjCcp*5#W?UM;iws_*WQZBjwe(T`VuKfhBWp%< z8-T_m&f3|AU^WB@o5=y-aSD_eyaXI!Gk+GqOATHMj;vYf0eq3ctHF^qtHzHr{##oH zfvjd_d~oNiKgGLfZMnhA!4Xy*4&YS=r_qtJihmrytHEV0YUGp5V^@DIk>h_B)9Ng! z;~s0S=alO>4>TCO0UTjB3<=D0^ei7{7WHw|283*bD)} zZoEH6pag6&xKtKlH=YULTMbUXK+2lEAb>X+ya^mxvw!8`di=k(*$^~CfH02vjrTx{ z!CSx)cGH~!e4D|yfg|gtj{^91gC7A$)|?xoxEcSi-2s6t13UPT-*f&I$ir5Hw}K;V z?t%cm)8IRm3^6xYhISi#H#o9NE;js;c2mvv7=k?zAgsjqHdmDeZ3f>9j<9(t0R{Gg z%W8a>59Q^v%cB+=`TGq2K5)|d>@m&nJ&Id%!H-jmHBM?XnWHw;!Dc&U!r$9US2{05|%a#GV zG=Lv9_)&2Ajzx~=kK;dP@MB7bWxpeF;=gC%aYJw#0$#G1a7jSG32>>LR6@Q5vQNMR zCk=iQoVP$Gx&i#O#z|7jusZbz=bxAYXCOd0kLR7W@;#P3AMsltX{CoEN#MN3GQ=v! zIGq2af^trI?Md*P;}w8U$!{nC=N$OZ=OR(c^c09Bn*@>};2?NsS|EWQ2JfMiupHi$ z633rn@Dy+kicboJ@<^(|Q^7g&J!zls&0w+&MA8gF8uux};^3V41kw$j4xS3WJ%DEz zJVVK{x}*m1OoL~Fr}M7WO*{&XvtXnl7zqI{@91(mfM*#z3p`U;X9aphkue4z1I}Ub zXB`gkXB#{lJWE)~k^BHbjv>f_U;QkU!HdBQc{6y1 z@9phMz-&WM0znZ1eiaZ<0xoMoJD(h34fQvtvJ90P{!;FX!S4_7FEaQd@Dkn(KCEYe zpv(}IDPh*II|F#R!OOuH32Qj-5sE8ARR*sDF9Tl}z^e^j4IU|nAo`j}EK(k*GX!-I zR0%6{bwEIa!5hG@fs;z;_BO>(YRLHiNf;?*`u)!1o$_FZdo| zjSe)&k$q7G_Ce4F!LtDY2Moah@V&yiXhZ-%Xz+vJ`@jPOlgJ^19|Auhtcx=O{D&1z z{vU?mAOxmI@@=#h95DipfFBap7~kvXRUvFQ_;K*V;LU*qj)KcLag@(&VO`>T)v4k? zCUKen$N02E@IWAx9ybC`D;=tgtA;s{gs5GqN{{{F{<@jGJkin;iu&%!~ zK#*nKN7GY-QelqslvJ;5NMFAJun754ZJnLpGh036v%`iMOZhopaZXZJ)(w@ z2G0f001phU8nVUt%i%cFZ;yz2* zeclY@QJKbBM(vP~cIwjsyqpA{VJY<(X2Gr!c19?GSAo9_o(&!r_V6DI>V+v|a{S*= z&G{F@9yDmJmt=xBJed?N?_eiXf}ht z5Ky4Scwh%O%bYHmDB?Y^&3K>{yupu~@jtE=<9Tr0AQNcx6X-4(FJe&3;T!gXR}1^n z(M(4BJ!bo( zz_-LtRyVX654M4C?Ev4a@pb#a_kcgG`MvRf!#-o-Aqch$`?5!|Ftn?{v)}*-JWHvUJjcJWaN_6qy*XXEGl5v&zB2F~6I zxm-R@fp(+7aqt5j;75%DC%_LzapJ#c;W4AYNeB)JJAAwJ!1ak9e%vS^3o1LA<#P5o z1x^?R&VV2306(b}V5zaw&~9)!{`L|$trb|82*FWdU-4GJ181}X>yp5au~vIhyaI9! zv&@2Z$>7I3z)@Eg@^wAHPiS1G?0@GQpF;e;M#Vx=~;x zcyb4LhEX63oH#S?mx1yBx=f=$HUud=lieJj1?xr{1#-Ysg`Fn?3S=1ta>3I&z{eN` z^1#!<@qfGrvUOuqvl|yKg5bgU#$;WNQLqRB87z?<8Bj3SC|C@h2_Be3T8GA}jLZff zDeTC12=a}Fg%D(QAfN!e39J+acd!JOC9>pTEDH<4X>8Ul0&ndAFEa8=pve=F?+Pe3 z7M4Sh&63r!fQ7RWu#d)Q3wRDVD@x-OC;?~j7ta%&b-5kjrA7f+Qwk#;5G;Z~T3E*? zU#JzMaS4=xOA8zL6m)=>n*I}Xa zyh_+5rvrF{F+h5#lx0vXlZrE-(HMY-BIMI|2{suEq!-FMz&CT~4V&E7(c!peGx#Q7 zk47fC#VELq`)Xk?I2#37J?2&8twzD^jQ?@7TE-NoVUy8t2Lc*8z?+SNt>BFv;4MnQ zq_hI?P2dj)6x@b_|6_AmX#@*ugEM8icNhzHgKyExoLH`O z+_SLN7_bL?YX|sFV*o>MXI)bV1iMv_C#ioS)kxx{^mzOU>`@9N_0NTWJ2=ar;yl=< z6iDhX1I>;O@V#1rNX-EVsHfi%uupY3lKK;9=(pJmpN#Kt)ErbDilqL<;B7Hnq$BT) zaMpaN&MgSBepsIo(h}Q8eMu@bhu9mtpZu@MW}|d;^Q}3VV%;+h-r}idgK|2J; z7#_dQj)}Ioo!lBf3Vs~?0Qg?;hXVX`QsfSEc9Mr`_klkWz>kBUm zbA;$2`*e-0#oNu$sg?%_OE^ky7vX{{;TB4Sxi&S5z7}F6?yOJJ zzp`R1Vey6h-$QI#s8@t(JlVsY^~oZ%XS3LJtsn29@Pu0)({%jZG#dG`Ybr0PYuq)f zm-Wyy`sI;g@I%^`^{FCheVrleA-caKddL?jh(4bhoYlDNs}0UJ!Lg#d#yKca`eJ=L z3p^TxbKzIeB#FciSQ^tA0bb%P#tH4J6QS3bXnDr+qJ?J8B-~sjoKf8n#2|ggSze>9 z@sT>3jAo_LddARC|H6wV8qd=F>qmk!h<|FU z%7pb~TOa{)dVD4djs<6oz5NX@T4)7w!KpK&t^{X{t#H{j^c2V=0V*X$$XU-^*Y+Lq z2o4{fuQx%D+6LaP@J?}ffmUFBE;uD^`^JC*g<662RMz#gH7?VSDNtkt6hcr6!G!?< z#YO<(YW<=P@Y!q=XQS7sOQlp{J#ix7!4e}MIST)~h(rUbc2TKG06~Tz9$#d#fN-^b z4+%UG$bvE0nGcceD`6GTD$YbKbcn%U6RS!Wk z1RmbU-F(|6X=*4J8nS`C+3fXtxmtwYU`h6_X8zwVhLnl3CU~lBLeh35vF~(!i(itd zj9axT>l?v$fa6oCw8!71HCew2yfupZ>r1mvU_JiYuscfN6VSpc3b3pa@LXa2=u4r3 zke9$VAtpSBf-6Phj5omF4&d93f=wtuK={!L6pX7cJB)_SB5@}3hKj&gfQLdaGZiB} z^uQnR&Rcw55JS>gC8)N7eO+0;koI0)>VN;~2qtuIXfvg)3bP6X5 z>%qSSGWUoMCF|LV{K_VU$A^-3IwqXdIEp;rvYOh=c@6EfaGM^Z@0Rx)qO(=>)eSZ=H1_+~xxEqpu1X27n zcoQ#XS`N;vwkIHppHY23XLK405K5XRdTT?q2eC@lR7#$+Aq_lTDa)fpN$$$l!TEPt{!ewn;98hqiQ7{dD8q}>E)FKHz4`mqz)4|IP?hgQH ztp<@O;%unuKtQ%pP?nKGVcqxVfPy(XLapBho+qq(ro=}eqLzwad^;QRg|+3MqK8aB zreU5T$b+B&g4F>5`3BDir^(+kD}Wam1&O^IN`-azp8^UN8vX+CVqx7mU$CUZuRxI@ zD1uI-k6^=gVcpJoR?#C$bRjD>0%VZi zEUb<50|FMAJkA2&3eIssaR!u`JRSqSvje=`WN|k50q`DC0qT6D@hfk3=Y89+-%TO#EhT>Y?^r;X3w}hL_l0?%b{A`@FOwYO&^ex9*asXCc{dhIt|s-Kz?mE8gB+a zD69?F1@dc$(RC~MA@ELt{AvX!>~3H`=k68{pXXHxx(ce>L6;+OCSlQQlvRFRY!1~o zjqd+0HZMBzRjJ+dpmNb@JR?EM27tT!|n3Eebb0?`Zp$2`e-P=4hJS`|Hy5{bn zA6F+Vj#Q4XHwTTGt;je7zFudE=j=n^GP{~74M`q8E|$Py2*`~MEf6Go1RhRzK*dJ7 z2oCYlYA)9K;BJ|m+51}F^`xxhkC$S*eu6f777WLQ^-zuXd`cI!V;bK;8Q*;j{4R~V z4d>?M=6X_&nC#zJ7e5H znQSC8qvX-#aEo&hr12wIq7c6fDwr~vZca7x}iADeHLUl$7_YAs;wm_oW?Q2 zs;BHo|G4dl@svSdl_w-BN7Wvcr%bw5hSZ$(B8I!UgM1!BO{EKIhISV~b!9-8EUgQv zg?1O};kweLZIG{;p{3R(9jc-jmFi0RbN57-4XF)D1ChW+BbD3oSsM>L_z-R62C&8g zB2l%S&HnuaY;oj9(LPVfG+BwxM*B&bl3sS7&mLq;0t9eUkP@N<)NoKkW1fBa>j-cg z2IpjEe0!LI*cHC>x}IW#%P0}L>V4s~AokU3MKAZj;GERZpBgy)YM1-b;GFXur|(uy zZz^&74apgLuG5zY(GMpbJ}niI7gl(O;<bNNxVV zOOl$H3IDeTV`qkKpyg(Jki4AKFWq-Da?b0Ol>e4UntV1pZ2!#nWqiAzE(^`N=R~4g z-hEi7-XWpRN!!q*+4^1!>(}lbLzM@v=AVDNuMW*Qf3`G@v6EkwzE`12&9l06!md>5 zEE13QBL{w^!hiY`i9Ol=d+rq71qpG1TVNb!O-(vcuxw2sgi%DaQXy2GS-8t zGm|DwaC=U&QzNF>HomW=Q0_xWb{bDvGh0o$m&LmABZWJkRmD=9s#0@GRV8{v|4!;o zBL}23enaZeejAl9xBGFadPTLkEo9A{g#57{!6}71pDk10{IO{EaxUvdcXIaO~FRcoUgz*&njiopH(R`5d_clSJKjhrD^ z7RxdFiJRz7aXA}~s{iGE;wFky=qpo(8`xNOiAZ>Z#pFG2!^~-naxdmHmis(D*MhN} z;*GWNxZ{pG)75L~LzSDPC=sfxQ{S;a9M4nPK+URbbl)C0ruWcFU0OnwB{3RxXG60{ z5|-1L%-cTf?29UOsSi~a$B~9Ar&-b3tn{nYwK!B+;68gSYiM^d;JC*SsvL9QHOJ2F zyN@`;lnI9}ih*-{XsSfV?dAo2>@oQ$O(D*0yD$_zZT?k9=#5j~`?tUF!168E-f+w7 zCHMcfxxb=KY=0Emn)~*@Jf!dPiiLCMRV-bVy>x!rg}P9Elg^2&neN6^tNgxiUP>LT z-`zQL;WNb(PMbWzvU)~; zG0b!GEvrAjO@$8`GqbN7U%(-hc@qmKPRScLrO2}Sei!wmb)7qRQsIobh0`WZpD1aQ z=FYu($_!rPWr;3x=T3Hi(APT0wk-FjeXWtby3L(CvuNtH7|qgFA#3Ta+TCdvao?uz<=@2Ln`sL9a)!StN32ptsP{9> zjhcDgxXDu#lafc}F!Dkx|M%?9&Q1XD{r-RF_1cs@@A*uBrtI#slq$94W^hjQ<|>(p%J+!)qSnLX z`5Pn1t3T|y{}Q6)aP{;kT&1Xh8zUp9RC(u!J(s?AbsL`}?o*f7xNZ+Bv2JE|bCpRK zGAHVaeM?P)>-!UTo#C@}ieCvumca{)kzfg+}*Nv$0<`kJR{N3u(!jAIl z8TpnMdoDYzx5mhDa%Vz<%rtaDm{#!a8TlF+d+s7Y|4szSvB=Qe2XNQH6~ZkSqMZNm zmgKOFn%e_z39L3JNdF;6_ zb63Jyzv$r@nYG?qa8=;g+@8CE>bu9_I4?Q5GhvO{1XvSr3E(EcPYtk*A-EAP1}+Eg zZ5m!%gTwuej+o(v*D~1;&wzUmZk@s1WpL}Lf8P2e-^ygqWhzvqiUG0)(1I@_*b;6C z9ILb{a}4f5gIfg`57!fp0frm?+>ugNan;2JN6Ag>09URqAk&BHT?NYxuPszXL`7^* zWS%#%J76ieAK>0|W>*WvWlB8?O{Xspte24Q1hePThU=6u;-xktR2=|(>=g~^*{9$lMxi>(A)Y!zKfb96sD3V&yTO6*Ud|U zdp4-yYV=5z6MLeJnBDU=cp;dFfsec3h6T4B~&9R zx&Ses6S;D^W*pp8EU0cXI5uWAht9-oxDjv@;bsS1^_y5k>GV;v6IqF^xf^h*5Dj?) zVck$%67g0~F!UY=dj+f-*z-cP{+BZo8fMOTLbrpbG&}2i7R)n#;h?< zf^7lA?96*jh&JQYMz@TXODZ~bH13HX3u`rPZQf?M-<;zORO-xHqckSs=VM39+Sfh_rmmQ>BzUJ(SKf#@cqpathfjjH; zXyT^M8iN5-v07tj))W6DtqIuAT&`NGS6kMY;hM826%+O(rh+bao?Y+To!YHKw`a~yQe?MJW*P&>Obm$)|f#Abk%fvA4b;OKLcZh-3nhaF6; zuQ_W>UxUNIO)BFhWd3#0fZGhPiw5mUT-ulvrNGicbm-`&_->Wrgf2|Ybc$)+Jy=5#DLxM@ z25gHV7mP#pq-JofMe!wAwfXh&1JPQ_Rp}KZ)GgZ@0}Sa71W7=81wmR8WV0bXN^|z4 zPHvp@Qe9BKWCpEuzL|&DoP4 zf_s!aZGlU}M@3iJT3pLjBbb+2W2pa0nP8uSjRV_Z$Q>}`u)vdWQ&D^$+!I1{?JVUg z^`W;UC3iF%-dP>U8bd>xG=o6L2{eg7+kzd98o{_{PnrX_5bkTZX+k7-aw@m=3{TCg z4LR99mw}xFbHF|dsY4D*-ZJtI*zyxW~N@u3@~sjZ2QHWyW4 zUlNfpBj5a$uuh~>{_9P78q)npu;udgg@u(5+lxwGwxKLvjuXV5|y^UNYu#fO- zF*2~+JSpHuYfpL)j#m&ZlEt|b?rUduqLO<`8m! zxab&;gF6IQ=*;e*#;h@=!M;^}fDN!-L;SYQq&BcW_9U$5B(;e%{{q|*pS!dV#3%JgkPFNt-3O#P zUBDVs!kl-NL6F@FKDNWQbMIa{AJ!Po`3-^12zxRn+U2f-`@-jlxWMduUc~J>bn1ZZ z*F8{1oDsCsj_yn8C%bc6B4**&r-vR%tqcZX9We`&$v3NrYruV>xZOm2#3|J|bbFsm zv*=#D_nT$LPY9Hwrm(vXwzF@qpyK5v6mIG!L34})WKy6;y`vCdvEuZ1nuawoxR zA$KDf_VTXY!RoG7FU{GLu?CYd?O}|E(*f?FQ}Pb49o3qwF)O1GtQpv|V0UuaW=hb? zdAExntv$Il9OgWXO?G;7V}>7&eC5yE{V^+p~uuiJ927yh`{o2Z)gXqjMxJ>S$ zxMAER81gwv^_WvCIdp4JU8>S<)(U!@mBDm!av#z%owTsM+y4n8&951eFlh^PS`yU`|XRk&4iDH%RuubxToQMb1o!% z{V8L+A-44emuaxx}O!IM~a9a|~{k zu>0xekq!8a0x_6_N*bUs_GG*aw@`68a8D|3yb!f%rM0m+}m(l z;0m3ycZSM4rS1&fB!?DCz-O(Dv9LV<9A;>BJ{IEM!G>mi&DoP_QImIy;tLq5on3JG zQqvu&YbR*T%3xwUc{kYeU_>>vU(ncU57wML`3ty%M0*782;4zuNKYmAfX1wh3@{$5 z41Wi9T8LqN{DLDF6u!=}G#%f=or1&I58LnbOOb7t@;xEvEj>HQiA$&W9_>5C_v(@& zXQPSjWhuLr;@1BtEoWtrgvsYseK987H{aN;`!9N39~>Fz4G+cwd-8vTJ*Bu3WK6if zyb_eA_MmCw|1qJpWN6tU>R|qKix`S7H@xn{6fR)ya{qE|>P4NF;x-?&r(6qo6X3mo zOkRdpcAEF|Y-XJg488lnaJ%t28wd-wf#n9}U1zW6>?yayRfeP0Ecir-)GE%|0iift zkcm1cG-hQC0;>V`78o;w)SRF-)CpEA_LOM2dT=knF*6uZN!;T6H82z-1*7X3fF+)cq z>XCO{YAjTyq{DTDD-dGL4bFuuuaU@mQ+2AFgYhz`PilcN@f!1-A%{89a*x2VG5QHh z!e!@#c%Za%VXBgws4**}A=oouG|^>$g84ht)V;iAR?AI+n*m25ET<$MyxF-h%`+MG zur@k%jlpnZwv#5joLSI=bAl!!Z{gK)3*eT)VbGReC&bvBoCjv8)M1>oTwSmgVC%rj zfo(SAf~Iay!NgB_1uh4!q7V-?cOIP+s^&N|L*=B+t@oRuiCvwt5q36g9oXZ6X8nlf z>?usLr)-78?k}$^#KS{8%@<~Qn)Suh6WrtAYF=<+*+;H|!8D09~U)lbx%J%x$;6kb@o^A@=7a9PfT z*-DPat>tQhoe<$2teuwk6XFreNF6pzSIQZwIQnw zor=E+#vAq$lL*EPV%myeOl-I*;Ic}>@oZFLG91%{=@p!EE4|D&{8(dFMpZCwct~sn z#^^tNeo&STjRj5Ct#B3KEV$Q%m~o@?=$cT)yOO&l_DxCYk)#%|ZfegP@>Ee)6=Aji zj$m5|HZ@3XBc%LX$rl4=ac4mLpWxVFn`t>&t3q*|$b2JePghkGSbZ?6Ae(`H=97k8 zHO<*sv=-jxXtifKpZz(UlhZA7i&J-H=<4R(dvr)h_6^^~@j^8HjD!8IraxeLDT<8p z{QVfmJwh~LTyMgLUixVc=hfV8O*rBrCoQjDT_P(2OZqXC`Ry^DtH@$kJpV>)>KdkSm>-pifa$|m*V8i z=8%)TJ#=ek*Z7o#PBNC-aqcWembjIkuSKl%uMkb3(PHml-lvt5DfD>d#_p zd;)zb7rV1G#&0xmL0#He8{ys%)>H4p4TW3jwAYlhtF=OtL3H%v8=bw zk7&l!MR!SLvbMufZ@ElGm+f^n?^JS6Xv|7ymX-A>vAzMuwiX6i8{=kyS+ukE!to~9 zr`~~^0JlxbRlF-Dq5A{F9vqf7Hdt0PTVlv>BiLbXo9Ih0=7!mA4SB;XW*vj$Jw8?L zfqM?_EoaTADz$GKa+toXZ@^^tSu8|OqriYP3(TUObqHSVacdZb)_Zn66hvw|5wDYML?Y6X~+;wn=oyxmi^Jb+p#Otd05R7R7 zA3K*d)QTQj&Psn>bM{m=N2Zom99DIO^J9j6%V624xc8{Xzz*Hgx(-hB3KU88zvXiVeB-!_! zT2rNn=$?N-OIqnGG-pqZflE*vORML_d6k8xLpO8Me?-4&4U}FxS!yp z+Y3H!avn3d2jT8l-0woHs%CKM#tjDP_XCbn;9r2N4DenpXipsj_pryU2nn&efzMIK z$7LCtR;Y{IGw+gQSU}laTJG}oT9T_&1Tp@%O&0cws}U>+`e4h$J_s|O<5{@raMug5 zroYqtwATk)GXCr4cQ+WXW8+ow_6laLYxJHX@&2hfdn$!KbuJvU!4(ySSlh#?eKr); zw`+WILhtx4YK)YrZN;Fd)iD557ZM6{yaJ29_7gn>iB`2WXHQ)Qw*qc8T&xf;CP{U9 zW!y^dqcJPJ8`vsUm`%anHyXAvKu&!LZoT4K3GtHdQxv)!*_(LRDP$jQpU8V+-B)t; z?B{n}=vzzzo6p{d*RB#^%vrmyPVlSD7nC(S?P&jSo4ZBjg_|vakxw{ zZ)k1n;ts+a~B1-H(+UumP|tn?Ph{pgkQ$~r$%$>l(LoHMA+3;Dce(7`7o-;kG+x! z%aL3qDDBZ#PV7%y&ook0%ezJLKlK~x>A5>yuh&ffPjhU2tC3;`=xJE~iZtStErd8) zQ{8ANxu%-4r(vI`T@S}Nx3VqVD~j9g)c(oqL#@r`_80ig!fJ38_#HyzHxTp?&(yc> zXUI~G)1u%?!F7jw)2aWnSDmd#2iQ~=71OHGh}Z>NdAAS+ZS@^nqV?keH;oQ7tuEYs zaD(7JblUwAY9goUtxXfz0IZR)CUgZGDa5gk!De}D`ki0;)0)F!s3-J*%Ybw4{58~6 zE~r{Fp6H&y(qvj9WAQks$AmcE#b|4vY0jS38Lm4Vvy+wM;XZTr{-*NE>_E%Kf%Ou_ zM{Nh2D#VFyMqU~Ab>b+-X@lTCg_{Mp&pH0PC)cK$#;o*uV8et}i`rSaR)~|mg9>ib zP;>UQ5pc}3YjuZP2Y19Nc0tK?)R>iC2aMOfB`*YfQ;1W8gUq(+r8#@rqi~FY$rR_x zt#BuuVt*<*#tEI-7_euVb?pJ$DMaB=L+&BX+0(M%X2E?4w;S%XQ|vD#H%VhwdJV97 zV3g;|LqeRs-`{)W)`^vxv!^YB%NAB;Mue3GaNjwz|D)vI(3q883+#EYsbJp-ab}f~ zx^0@Xr>%io2R94uoDg5vac2LmU&gb`1hMrsb^kTQp}++W|+Jx!f=zz8N}icCo7c+xJOH zOpf>MyZlz#__nX;fL8i-1pI;<^fr->y9szQXgY2601R`GqkvLpcK*U3A-)~y?6r!y z_q@cvZOGjKc8YAJfKk`q{@@!&A>uLXx?!J%V{RLD7aZySZk+R8sbXzhn|#!;$??5X zIwhp^=rS-VIi+X!4n2WeBao+q0_a=|4R?6?CKRa z_M@jq5WGPN9z*awCAb}%{Dr@h`M(qDE$7tWaK(hET=h)sLN#SRC{vQgaH~5H#&!B_ zDk04Dez@a*<;)ONIZHDpG}EKdi&lEf2!Hs}%vk1s%b6kU-J#;DxJ8`*k0s&Pm^dXJR1%r|@qZDN1F2h5KWIUFI^**64oWbB;28v^o*YKM{BId^ z+m@TqOqsENPC(D@lJctRK`#N{=mc14zmkCNDgoCE@ngD5fSedyv4jFWm7z>4&9D*E zv9;5g|M0O_-HhNLN>Db!y>5=&h5VHYKadW#72Fa#VI=qv`h%4|W%bkBnR|uug!cYrTsPvN_giU4(92MIbZnNfJ9%jWJ=u`fVcgDngsl_psY^!b8)=0>(|f&{x#GzwnuyuIDI+N&%2bpDv?(Xv{TaVwC{?w zYvj&LwOosmWD#HB>RM^*&}5*Rz8=#$j8;Q){GFF=5{uLAx?=6BNS0ISFPYyRrx%r=H|lD{5ma#n+!Koy}C+fg!zo(I$CLr^V5$5<^nRd z{PmNOLLyV3J)I6a{X4kza7%^w&;9b2c;DL@Mma|=LQZ;?wyn{FfncLkWs^u zdaxbrnLlSfdOWCBoGp-1CIXC)|^&0$elg%qLu?pYMdSI-Hd@jc`0#KH(a|UEtLLPXwFJ z2{jFFGF&}4Sw0ux-Z8kQnzN_>2d*(3`B)u>yQmvhrby_mK`ZSUz!reF0ba#B2^t4? z87I)kRDoD&YISL9o=s3X6 zfOi1$$ndo%4DdNaa4cLmIA-;$Zx^9b74-IiNXRj`47e1yUT~G+?$$YW-NERL;MU)s zaTj1ez#4$F)ic~Q;e@vh!QpTNSWZ-ii-y~2aCB@fI24X&Ol#GEt0zL&g$?d&gBt`l zTv(a4q5&I=(Dl`g6q<8~{(z$qtOwTu?w){?p8IsfOtNP@0M{6-}HfOGcD*9<3;%T)}q)JE;NlkPg`in5$34Lt;#%M%Ujc|wDKHWU?O5G zjrm4<-gs*}d-~nj(cLcu4GJQPcowU8?h>KWiMj@)Ou&_f%U0X~xQ}!jmQe&;2{<)& zt-e=;ZtiI4g^m5f(SHH1QG&R+xOuyJxE@nYzO>-zb8xRHZnOy9vd^Dkz$b}%+$284eAdZTdSu216!C@s}_dE`>4OFM@7{g zSGPg0F14a+M>XY_JE}DKQ5q>8^<>G=R=IHH;+X}bKW#kY0wV&VyYOa_plVU8SXPj}F+pN)>G%WwH zMvpBfE^eicK5=H$ELOFB@MLB4CQTYOdcva_BLk^l-E-FHjox?ar#1RTo)-<2qKhas zY2Yi#N7Y$6%{WKg?XSfe|sGICEQtCKC=lO61tH6YrllUyqa zJ{1rqi27js?3wp)uvVGX64Sj$*lU>bta*~d3FWoGrNA}PrGQQBQnR@m&>CISEJwdG zqI_8o8nsE4eutKZ??plQY zuJ?;co-CtIhTYVcAJ4NRUkIxmU9QVd42JV*#mrS^_TiXQY285OPC@2fhA!!a9(CT3 z9QC(4`K@`9)jl6-rKa^nn* zbJp}N_VE0?hBrAox3svb@+_A5e5_H~?r;BxHOjX(SE%Fq4I5vfj%VHI2DU~m@kP}C zbN{)H>o;t2NgdNStWnCajPh-Wds5kuQN9gvPbwQSYMht5@lJ;aDvWsUTxnHe^fqgh zYQ>{2Gbt#jk6&UguT07)&!l9I7sWrDLxYlYO{R=*G3nm@r6|#Gh!7o13j5!z|Gudz zitobTmK)vHR=+RHmY}#!p$@cQN0FD8Yo+?v)7m6PoE@yFPWcYA<_iuhkUcM|=eToFQ-aToJVuTGoGJw}&<+&n! zDVMTF@)FBKUU%b!BqWaG-Wjwm)hSrnU5f`v9- zZkq8lY^Jm4*K*zbR-0+dVjrnY&By`~KFyla`$)}`{y#+$J#xQ$+8ViAf6X6~_bib- zTO`q6x|}ug1NXQ3A^Cf^>oY|HyrlvZF+4KBJ6GnF;TgF~gukBcBa(lSos@UCw79AA zEH5T&WVZjc``a2>)M6BA)D4?8Y+7_wnDsuI3sgutaPX0lEzs7^eRPJHG~AC#h3=)_Vq+GVVfRee_emOOd(YWum{ z6yp8%Icwz2|7gPMH*HX_VbR)tt_+&W0*qv#7kp%7H|c-<9J{=`D`)&a0Di|6z^z zqDbz|nPh`{jp{d6xo4_CPVDDe2zyQ^j@OvcFtuY+Y|nI_x-UvkX)+~ajrdx{_L(1% z{4EpoxjvyYAo*?XX=}t5{k7t?>G4`}l(6n-#3d|t>}HMRVAb{90Mg@affL3lIpv0A ze{QJ~^Pv*oaH;s~`b3e$tW|t4igH3G{-rDPs}=9)uN8myVtuAa1YTdYMoiLQs{q__ zral+P^JpVCT12f8B}xlXBH>|C;?WAC*aVjB$tNiV=gtbH2W6^$=$83(H>fq@F<(Re zmdVzmlD5Du|DfVWUdlhDPZUY@7{w3NU(4}MMsTk_QzSqi6`-5`nm;6emp)O1@1^(z z{k7sd>Jvry7T$PkjcB01R{>h-6GZ~3)zpX@`fJ74(I<-V72VU;h+Fj6iswp;`yu~D z0^IJNwMLXs-@CtLj<3-tityf9EA?mnHGfFHm_A|hseibqt<=-%YvSiafK<-{$p4B2 z$d_mM`YZRh`XTva`a}`_hEu~6K z=$r;`Klhj7FX@Z+bAQV(+PUAl?z?{P&@0)!)wdxx*Vyglc!FCn?|a6;buS3(l}#K^ zaqy(zy=3auRDL^^MpnGUdZnrkoqB19PQ7w}PF4Lm_0s;FYV>ELr>3f&ntEwZP0jQw zRHoV}1uIo`)znM7YU-7{YO3n0sRO+N@P5i_ymC)XRXsH|^U|)GdgZQ~>UGudo}^16 zVBgvQ7#WBZ^JaPBuV41RmA@;BNU@Lf3CU;54IhkCq?kAF4WAyZzjp(KPoLK(j0nPq zyo`nS4cA|L{Gnm`gvlRx!95+`b3uPCd7k9iS6`no1AKnM3vj@zJH=Gw@vBo;=DjKl z@9V3-<`4LN-gHTxy~wCKXSA?iS}E+88By2$#)X{MxwGT#d|`j!RBC%e(S{j5;;kgY z2a2Xzgpb^)V=)tbz$>iqkxQnf;ev;+$RDZco(`YrsK4e95`84ooASuhW&}r=UGWK@ z=;{7eKM26xQ2xi{kALl+4Ilr}|5pBnKYm5~6+Zrh;xo6pf2bcafVUiwC(H;6K6a6C z!5)RWzu*f3i&ljHOz}ajb3*c7&g8d}_Zw!opt%>|Xkb89fR^qT@`oA0QO^R0^ZV(q z`GW|KdPQ+5pFhOq!uf5A@R=f00d2OI!|qnSIMw zDHtaqz4`zr?Yin$xpT_!5wBZ^j||chp5~FDp3O8I8Q^l^1MgqL9|$sG@&~-Mh6}wJ zg$hI-4`hC-70dvIw|Nm9Z?C`R4+0cc(L1^AEXP zINuwU-GAH&^1X7rjQ6Z{IDe%=-CraqKi6ABTo&MEmk8(o`_cgG^ob$~+UW5I=j*Te zL)PDHeZu4qE>rxf|S;LIE^f-{RR z32?@<=kjb3exb)7dgxMqg+5{Oho12Gn-4v!zvmB%^blQJb)n53bEwFyPlWd${>LuV zs8OSa{;r9#Q0$h34?XQE?LT@+Wcv^56FPP9`@MP&@Av9aF(hvPnalZ18Q@#@e0aat za*Y6ME)O7iuVsh#zoWnA4;jHGeWFN$ya`vNR)PN7T$!x@Ubpq&-s(a_^YVRm15-?I6-*^-m{{xj z9(i=$u9xb0@M!LSm^?{j)6z}j)A#a7~aKQ3Uj<-6usCZo!ib0=>G7%0-*i&No*|KU8?Ed%$i zTJ0H_xc=EQaCp~IU6$dqbt%hWU=<~1`?vecJ1{**y!SQjdYPc<892P_f+5%tL1U=D zs;s*2l51tF@#;8+Cq2h}%YjqvvrVa3p57W;HYC(4V%V<8%%@?PHy?ziLgvaO`l0>B_9e4Qj zS8z|kF$r4Fl={YTnhT$88*pd2SU1-*p7xhDg}CVppCgT@24DxXC9B*;UqDU${ItE_1GblJ8zHICh>j*BdT#H6Twy ztjEw+En$Fv8DM`vsztgXUOyRbgoyY#k)DOMAY00K3U<8^ugCP)nduibVQx0KL2#Sk zDsa2&dPe%_Vg^{n0EYr{+nsbnyq;a9=m!k0jlm6v<8~$Kg?RlExKjq#)!<}%-3Au} zmm@?>FOgYN=Y$6`bWTPAegaq@kjYQXc0=&~fMZmWo`PL3#Os;m#WpoK?tJw1j)vjB zglmZ&Q=!o0+vbXsl+;oF00apOW4G3Q{BFD|pT=?iU z21k|6JteaUHv#T%^@d9t_0h6$nW|MEjRN#W82d|R7Ih!cpzHfsCy>h-xH5MAB(G;$ zT7R>?zfV+Mr6acI{sKqKmwuAhGaYCU=W}$s6YitN?z6_us%q}@%&tRZ9Z6LJ|4m@J z(E1PX1u1u+sc_7(n|~B=(jl^nH#2;c zhK7S<={?zAf1Dd38yg@I=>#@~s{}{mTF)A%#cG423N=SVn^#>}Yia#ozR#1rw;CMZ zX|63?olHQw)0f);r)e;Jlt!q*)_`?YLt-u6@-N*!!biIpTnbzx#qH(c;0(=)Y7ZM+ zU%2LEWE>fhjj+`*9kHl3!2tUMk~rKu+v|Vi*~Aphg^vz0IO=wuw~DvFWZlyG108Yr z=x~F}fJ;&dWVYC*skl1XZ#30jGQhEbnC6KjWjL+sBnzQHigd>89li>ao zqHP7&1@!Igp7Yd?m0q0VYW_aWf$swzN#ZdlCqBLUAZNgUC@b?QC7?^05}G$!C619d z;cM!_H0Q_lBx)zZda~t>vx<`xuO4 zL#z<@KA`VQb^T&%xm|Gk;P}0v0o<=e{9g}ZHg15w|zZI|oAbJ1jF(Fbr{SS}XIwesAq+3kl_l8jf{4gkc=`q_+$^4pd zF>ux3#t1Q@eG!k@TCOq}Jq735_6E{1Vyhw7)sSO0g4=89UEAI;UWk!x{?TK$maa;W zc!Ds#Y{(+Wn}+l#Lz;O6F0iF{ZF|E^Ax1SX;xSvxG1B7!TRPXaH?XrY>feSOW=3bc z7aSu7-nH!w%Y+!+=pQ|1YiU_l0|~-_^wGNnc~w7@;(E;1(nH}G@A0l}fAo?Z3U`y}X_J)^)NKY=}Fqa;c}1JT9by1 z2W;tK+urac?0Z4}Yc@4B*TMZ8?j^WGLOj^c^_bm{p|U2`tL13x^WPMaa5-V`?*#T! zFyhpt_;eDnpm@}dglR_mF^6N*6epkl@_g?&x$Q&MI?MH8P4cTFXiUJJq+=85V8ZfH zY%pj@m)tsn-Ed#Ry$$yb+>1qAa%(xVIG+{9r0rl#YaXr<3~4pD8FB@1g>aw3F|B!c zbrF}`TCO?RH(>jPz0tyHU`?YmPaAUQ;C_WW0(Ujssv<7AwH($17u)tEf^O@A)4*ze z=V3Is-jKT}q~~nuzT4h*CtSAAUE0b1hf8i9G4{u~3c=qHyc_p|WpzGWm)wf8ol2NO@$jwXI)HKD z4BXzxl;?@k!LEw*@U7+UfMe!`H*kAnEw}|mJbY`pPGFQ2&cN-B4TX5JW6)`&hi@%+ zH{2k&W^gPYpZu_hhi@&{8EhCBqt7->aAx2K&GqoDpFDi) zNV*VsEP)x5HZrdo-@-`qYet$MfqN3J4;&U}{2P~h_|}@quusD>7;R*7^;AQ@xq2SH zb;2jZO^3S=t`FSCA|AfATz9b9U>W4^3n3=lryoDGGB9wOOM%0@;|<*2b`b7}!EH1+ zvg%;p@dj>h%NOG5I}L7?u`u7?7Z4*qnZan=NxVXW+gTf|s_Ik~2Mw zs_VvEbJV%RATSw2yX||p4F*S9D30zq0B{|k99e!A;@KK{Ky&?gE6{eRARKQ?pWpVj z^Kh%Ao9XiZ#dWt%%1}aXAtd9>c9v8Vs|VFCU3cpkK7jieZarK{xV+0XH*UV|?YF`$E#kUc%MAy^aO36M-k2f8AG7d@i-io zd-86$hu{_zaow%uWG}&R1Wp|E2ADSU|h*Y24+N zy|>b}&z&pfRCy*;&6!;4+VXBxnftLLI^WHSDp86H`@mA7I;EnL`QC3%NIehZSIiEk z)=k>UD`s1{+HvEMeJwM*f1FN0c>m)hpqokn))Qw;<>i0>Loje9!EVKVqg^b(x-96Y z^sutielYw;9FiGw4&EIqHN?nB5nn)ZhE@AjBYhat1p`GS!rJY?CcN;D35K%TpJ~os zKu=we3Red1ZMdJE&i96@_wdDC-E*1`@5cx&NE6|GZ^LiH{q6&X?%$fT7cg;OFb)n2 zaNrZTU!2Z;J+EVRNRn@SCTpeZyy1tpXE-c8`%n)HC9g-q?dS~vlpPX0E3Q4d3)nCaK8sm;*&KN z-k$}wgs8g_^{@EH{g+?UL_1n@_5w`#0xnDJYYle+?k{J@-QM;~ouHz_`$^dXUZ=h< zM%V|LT+V*dkeg}9QJD)~hpPz3FtBTrUhoK&R)&g3--W$30D^GJ|X5^ zTf`&2mYWTB2&^&~MwVT%TfAOE+5Kq96~LW>W0toaBRl_US+c>< zb+A3)~QJS+C`~de093^@%iCvMaoPL8nkNwiYzD^(0CLHEVZ~XRlnu;?iNS}1D zuQ+=FEgM()(iy+Kou;zDzLJA|t-1i3Mm41^^bF`{^rn;RVBc3=crDy5aEWkpgjg8z zIgHr<$-zDx#w*i*;e%lul#hJZph)W#-oHd=C%k_V5m)kz%|W(E7Cz=T8c*;a^okg- z!Y*3xCVOFZ1f!MU!$K?)vh7zetyK}H{nDyLch>^pLjGPT--tl>JopshCj@37dVuEa zg_Qro7I5)!6NOkDmexu-^>*Jh;8#Fl4=@UU3SD+Pqr>8-wFPirG@vVhf?vqwdkV&P zdoB)^ozP#Qo1Nr-p^}6D+uH`B({+-iFwvAl=V{5~bOOJm`}eqdbU-Mbp> zGq3`q&m7jAy^xV&VHVtCILuRay3_oACHK9?!iD|8W`a!z%Ln^2kc+uSbM``d{=!9Y znQ$lZpFG#uJUrB-5-ll)qSsZ*K(a6oj49l~AMlI(l+!si6z5`b21eo+@&fw3)xiG1 z-*E|NFBl$`!i9qjYy;RPuU#Kv4`#(QQQGN}8mf`msFyo?05@i13mFs_zNheOg~+?% zpE`5`Z$uy1wM)QCdd`p$p&D+c?lkZ{ z;9rXH9_FBj=-$tlb&iivc^_h6803XK%eiM2SRJrM&WMo;W7O7>V~-bNYWGlohnUr^ ztmORUV^poiegMPL?xFP@Y6JGXb77QHd)~mXvWvJVvxn|-2!s4W9jDx5yuxYu=+KSz z&S7@`)1Y22x8zhY{5uG{C_>nhgl$0Bo`ikbDVe6CpoILCEV>S?G}w(`_Xx47p)=dZ z_8Zu(U=_eZVD}5L+IGsNE48l;tO{6D5#D_c3>&$6x|0i5bv#$PyK!(aA&&Wb92aEb z`f_xnDKOtDWR#0>LdDDD)gbK7TcbD?q_GvM?c99YhaMAR&Gq6Yr+j*-n%AJ*yi1)R zKt}?wX~f5tcc-nH<8Q@DQ*BOk-6nNui}IS(1w)VavZy!N%13Xe5NmJp^qi>lP^DT8 zWvf;d5RAI^qPqz+h(Jst4lN|md}n=zS7fo}4eeoI*rVO77Z0rv;>9vf^DzozwxjC_ z>$zww7z^n`Om$ye>@|h_F`*k}lcs0`_7T`8Vf(JDnd;lHCmKX|Ty)&A{FT zd*0dWV@7vggpFA=8;nFB+9|}#wVi$sDz!0&8k53B%=mW8GXDZ>opapBn1||ojRwYId(mdF&0s9b*JU{ueC$I5 z+XD6h7zsH{RlRz>GvQ&S_N9S+47Ll5Me|`6*00WSO8!e>rw#0LFl^puoxxaBufNrq z4d$A`@dkDT?6_exoDgsHa>_laXcBYaG+EBP~K3FPP8W_9En|}{7Th}(^ z_WxTL6Y-|1<&Y4X|@TX6rKV)v0>|ZUS6GxOaqjYm}4q zl#&ZtSh$eHFJ>kCDOG)VJJ_ipvvm^T_NRYQgRyd*=Iq5A;V4~~`&Edo5BnVB zT#+k`$vxwFg+oI3di5?bB;i7up1$p=@MQ$423PPRg5UdsM7-6A_kn3L zPWgFu-@u_>Ss@p7g@?6XxKQdH&QyZ83-LZTkjnpDkTFWv+%Z6EjE{Y!GTdW6=jK?w zRzOCZz$+1Y4D8aaSFg)*{H@jt7yg3YH%c#)Rp9$S`#B+nM#nr&go|kdZp8J3_+WIv zou*ytHuxJHZNTLk3-MtoKY=2A+E@}Sz98%+E=ERLz)cZ1R+Im`UNTSBG;@+7-(k{& zSM#_zaqb)tbyM=`(m|Z3nG!6CxMKE^L?J#3X)Fz!v$|8Z?y}iC3TvN^2OEOylCMa;U5Fd9_pnDlkMXZ~)j5^7PTECD* zw%bVUwput+yA!&dlz>>O-xqYQ2=Tz^4XOF_oPo%;=NoB@spWKH36jEkT2P~3QOJdNWS zjzJuKIl6GPWl_P@F@|YKv~%ZO&7*i{SPSVFQldfAcop zImTN?wj1O>uHFKJ%Z3{-zacx>aKW43BenDJ3+Y>wCC>uRQsDDK>}sa2_sSZV_W?BV zUR33`wuGM2t|a&B+A}f5_bM$z2b<>!9unWPXSal;_>`pHNhx>9hUv!PCG^EiBc-_{ zfaN70`^Y*H@YLXm|BzbO zA7rHVMkAqbA?N1XA z`kwgbW|&Cq?Rvd`&@)aKWm~?UgB$QM+F=a5G!xRKMCuIZpncb&eb=FV*Kywc>&Bj5 zd)}|p5UE{28V;y5ruo0K*Hb@snZm&jEcAd;8zCN(hy_>TY8(~stEB_vca|2oV_#(u94zu!fp4t%QI51 z-N5$Pf=hBjTP1}Naucajo})BJ3F`VU9vX0-imNwBj;XSl&{~81rVwp&6)kJk{S$*$ zLd*6!dubcE_KIsF#DS2{k-Sqi@mK2)!=y|Wa-VqD)_MKNi#L<*;tNLVF#lhgqy$;Z z9(cqTB!P@oeji?%40o^MI>7znb8f%5tb#ACVY;y3#u8C$vba&+5+Yv^FKS_xYQ4bW zJa=^?&tsU|aqDF0h$D5z5%F*pad#mOuJf(nSyG6 zNht|knfC|pw<4HZBhLf_QKSw_t4n{zGDT!G6l;Vc+5~(PkBjO@g zUR1O_5_$ECZuwrsbN!5DBEAH{iApdH!9{*i^If(N!mub`sz%DAjAln}_BppL$oHrf z&2NvceS&CJj#p{DNFA1IOEc%Gh?(mgneG=M5wFvry_99=(&dU{u5;A(IU>GfwW0DH zyp(`oZc%U2dXYL?(aZDnGLJIXIcl1t4>V{mT@CoMikP`heiI|&OX|4&Kh^OkS}#)P zJ@hsxJti;tFN;ieu2c&5Y0zFuYL~vPz-%E3>ikn3t7xxO$A`6Eq|Qn7-cx!E;RP%G zs+0A9MuYa!ZGfLBkfrajNLwq&ypC1Wm(_7JI=(@VX7pKFp!Bw*XLRG}YXUAan&D^ZDFuGYi>-7& z7Ln+(0T|8h+S0R%+Y7hCPas^B=Io_E!2P1QuXwZ7?LK#TM&diQ%j}L}xI8B{wO}Ng z;b-X|N|0TRlUx0^K*S9-XD=i7%NSev*hg6+pK7JJb42{NzCb~5;D2o=GTlj-+?8O7 znUL5g7$V(n6Wub1VCmmPz@Y3#aE=IG_uB>uF^05d*TK2XnuPqy+q3HX91$1U4oQel z$Rzg(38sDWdPB4^SVgl@xQs#BjrbyhYy2W5;*=nP%PPPz)=Dlv%zL(~`rPG3Pt+LX zq(1%J3z!!%H*-S5MWV-X@K&=i_$nJy zf;Vnd?&pp#eD60*dl@UtWeH02Cf@SZUTJ!>WA)BYWk_itvV9~aW7fL$((h@Op`}qH zE?+kieIL4=lr9sKGw->ZU*4RJg!!PotSg{eIp$MZU$^#m$tb0QOQ%jM1u5NoxG%+I zTz4ZLuk|9)lhNy=B91}NY!=guIomQycG+MBGUqs3&uACN+_{8aS*vIhQsld+)XRw7 zi02v+XQ6kW(rbxczP?j861_xmOn&TTBRMh@$eiPwdwh@_dlCEP-A-QHjPIM&HRZ1E zMRpUS^NfgJMDHP`$42`%2mFjsCC0e5j1fI^87bgn=QEf1wx0jjT-xc%brns{m|R#>k;u*&DqPQz|C;EOgn!dFEvZ_!7E2Bb9`CE+qGaMdN+b| zRK%(1z3uA}@jlJj%ND@Bq_{L*R@UThAN+@iY2Za7mc41No0|wZk3^s3ILxt*Bah=e z$G03&9L}-%*LGAdG?G+MPHZPGTd$Haj%2*zr-D!nh5jUS+3Rp`DUJ!q54C*m%BhtD zPm$EhKKQLMhl~CN!FQD)yDdND_=14vjfg*j<02j(TRIXtcbm@<@g=K1uW876jf`5a z`b6DVeZ7{5v+cNSH#^#_{_>gj{`_cgyLMf(WpLGF*&(=HaLhn{{>2$G(YvvsUI$-K zMCiu$vI1@{87SFX4bMAdhqJD5~C=yc&tUK6eU>Cs(eIv_5>4}D1 zFSvei`*?W=gY-q`so9~rGQ;&*8tM#R4@KjfaukY@_u?@laWpoaVg6o@d7nbTzQ!wz z#9*0W-rh(Xrn2<}m@Ul#B>pHgLgj(+KmjouFJQfG%hi|y}JnaH_{k5Mg4zi z-AGI2apcxf@4MK#?F3Iq}+~DZcWtX16gb-%&$^<#3v-S>&4ElYu(-Q zVhGU*q**WDP67uI@ssGi>(7`dt^#qJ58BHqr{#MANp-=~yhN$H)6a3QD@I~c480y; zEDiYB1=GO}`{|=G^w*rd{4g9dewUlgJCN@7Id_y$n=d*OJ-hS5=!Ez#MdmFrbP)f# zVkBl1f-DVO!6gWOAsyM}IO&Dq)5&+O}j)iDlkiwND)(%HN)RNi@KQRpUVdKzGm zwC1C*rG?euEbPay8-vHEI*S&27r7feqOnNK<6u?5a>4e4 zt@alsL~9Oe@HZ*#3wye0P z;a-Mo0QZhle}$5xU+TH>C+QF@NYUe4rsTzyK z%mTwGPoeBTMy`=j9}SJWXR?>T<-q*{hg{=yr}FdODBp06AvYUrrLeQ8o{zhL75W1t zRfe6{sap%T4vxn#Hsg(b&FGXW$0G7c7r=;A~B3|*{^|K2YNT?0pH3YdD@WN z47UZYG~6H&YTC&d{E?#+H20v{tXWQDDA27 zW0>uhm1L2}$r^0bOJk83T67Lu9_?w8$6f!OPIyx;d`HL}LC;7~W`;aDp(r+^+3dL;IZO>>Lbd zPDeP}_OajL&WSS4U$2B>+{FH+!AK09BueqG`3 zfMSqq(2kDR7oqkY0t<>uOP{lIFvvL=tpw~AJIYb+8&6UbQ!HUey*2z9Jz)bLr&**O^HoLAu}%i}}g z7CUQR_r}M@e`zcd^AXs;g;g2rcpOXEsa25KCM7jz=e!B`uCOY+1;;eI(1SZ>6rU)esH{@z-&dwp@IeXyfT*se*JK?N(L&>$&SR`f#*q30dz-Ee2 zXXBZbCY?2B=Ny7N2FEyhe69%H5pmXRR&xC{7K!-;tPpG**mAHnM(Rdr&d&J;4wG4d z26Q}6gt}C7*1Q>Nl1W2p^0>w#F}uKi0~-VO3fLDx?`V>xIXf52k%MKeFaU0&2zBkD zIZM8Mj9c;U0)#*vloS%QQ+qJj~R%PzYlC?6Jt!yEe96` zHwcb_sM{!K_7<;@o3=9K_JJ`tW{m`U0qk_J|I_pi&DpuN;p)O=z`ZC!-S2nSzZYuK zOXjbH#v(Caf;9qr4D5BVlR@F7|E@VZw>ca$wXE@QZ;8;IgME&2IO;6h61rtDk9H+> z^RA9k2v+(JI(URTmh4lL_fMCk62({6`nlbQwgIudgfjIlrK4X|IqUe);#&4TH!olC#VrB7wO1INp> z`^Pw&cPcqf>wZuGHUSJ{vV%da|4Kt{s^;w6NpREPK80ftyQi|0tJpUsq5A{F9vqf7 zHkc$fTcU$SViO%nIyEGp3qa@p-tlaNoc&t_{4}$=&7kpk{|O7KuS7cOBSoU@RU6 zzGKwRADXjsUxQnK8ltNR>1$i2D?1p)Er8!~S>3TeiAU1L; z=4uD)g279I;l6oUBVw9-F8y!nt#G|XXh<2S+#Zz=N=wUq3w8vI>sWk3Lq64VR(dc8 zv~y+slIN*4J?`F)ij!T`bN1tJrOB*x?@3npk^Yd^VEm0VA-9^WbQ*w8!1oA$hj4-t z{#oDoYNcZjGIH*}oAJ#BEmz+u90KOjG$p%)D9G2==@%z41S0Ec+su<-_% zZV1v~R)pa0_qh9t8{EB`vsW<4thgF(l;URioKe$pL*;FIvV^*DnXG3Q_mZG09BEHl zQnNb8ByPp^2tF)qo&yNo-y-NzE$KdrvsW<8tY8?K`WRdpxYwQLr#%DEl7iK8e}h#7 zdloE8gofAkZ8_1>*tJ|$xLR;oaMj>ma%!IqMfL3(pPbM;o_oUe4qvNlbf`$IAXF@& z<`ODSgi>n+>aA*P&R)TUennHbg>Vhw@}zoPrfd~`G!}_128PX?N)!CFwFr%WyvSckwb)NMwsLUkJl3iA z`E}lHlzin^XC#&uwBm8MN!q8fL@4im-vAK=8=|ZIDL8cx(#I!LT@hrG`idzP^&*!cj zv3$t!vWTO7J?_SdZHS=S^gp#qgjROdZ6^{-)6)?zhvOO`5$iqLAjfXR zdPl%D&5_u)S}zjY7(KjCdxFfWUI=_DMPfT?&|dK}pxRwO#jNUuH~o(7Hd=KXSP*eS zmmb}cxj)Gpd5M@y9~5;Ymdm=a`#4r{Ea9MqREp&~Z!Fh;W4W^;j%E@^GvT5{B=$VV zC=Tb&O;;tjJN~iVb($iveM!@Hm3F3TtD5L`FI!hoXiN)M>{T37wN)E@j)j!P_M0^5zYRmuB_ae0R8oy-t z4y&k}-LG(&7gWSQ15WnAD;HtU?p>0)_D<^N-pE1ZyemOgw=Wop%@elQjD^jmiO`D? zuN}KF@WU-~?4zH6Jfs9#V7xJ!|zJ#Gqditzi~9HnjBFagE&$+GB}+0 zvr)#4p)^N7;z;aD5?WEkdmZtfH>zfn=IlJIL!MX4b|G`gmoj{g0=j}J>UpJ_*=n}2 z?FceL@v#dlAo#T}NJ)NTM9kon*Hm##IbR;^b61YI-IXHV=j%yRv;)CbN-ze&gT5f& z8AEs;!&qKN#j)Y?N)MmAa>QM`7O4=gick6xqx~&=Ice`u19Z#((8xb4v~4C{8zSq>|g+v2TWHWTRrQC_|r7FD1&48 z${VXVwtCk8t}jZ+hVSdyd5^$7skl@T+VF(WWs(zpvz}o`dL|l9A5;SCYQaccQv{z@ zf)9$&M&XwX32do3J8v@FQpJsfo9A=Ho6mC(E!Cy%AZkW1<%mU2Io)pD)@=`wSnd)+ zJQBy%bjCo;@(Ba?^LiPdyS!%F%LPk(r=qt~$)+=$p+X5p;@E4-dspS0tGchx&{r6x z@e4S{qr8t4w^D>Ql`y!+4el8@brVzJTDVMuqk7$V+cJ2^%>pb?f?UuY3!SjJ5Y_G8l>?aTAeMckUK)+2M^0zX=g+iB6}T z$C@+m7Zp919p2E74N;IM{AU=v3UmvyN7wYB!_3YKcdSDulgF;TJM^f_6msALEDeXI zrrkeqH0XnpMc?hLc{<`q+$tje|7d#`IGd_A@PEyWbM}x>NfNm>C~5A-CHK2A2172x zD8}eb2+3P&=zft9j!MzRH6oWVE;Hkvgd|knl5Q$VQmMC>|97pu_S$O?y}$SK`ThRq z^Ev12^X%_>*8N#)ul=00&+CY{iKv1X>^X9d4z6RLINu5 z1RNv*i##_o*(U!^q4}$tt8lfKBXm{cU0dt>SVV2SS?iOX?2}-I^4%O=lvXv=s+9VJ zaOjpI6uTGu&NobtHZC_;E}>htSqZoqu8mH>cOq(2qUOAX0l!3>=-TRe&%L*g&ZPy6 z)Qd?fv@}PztfLJl^JZodUx9Zi-Zgk@N5!gc6ZVJf&@Eh8&F`qAKTGs0ttNcXN@iC$ z?PL4RA0ldVyvNC=87wEanA+Ys?oPiEs|qjCgmcFa&K;FAcJ%F|M#+Y3HQ}Qs;?OO} zi1>Clf#1du@tc3!giGkNn($YiKG}qa^2R@!m-B6`h$>9`ADVCp)uss__gh@sk@wy) zJU3_5=-k0~j=6KBT7r_1sD^PuCqOmf<0Rk#d5Q#FMFO@6yrm^bQT{iDx)m#hOi(;C zJ%1wl^o8QLl|@uhXRS}RAo+JozXj#!CVZ*1%D-C%6VQ`d`P&?wHVFvba+U<>E6{J5 z_7&~BbcWEEA5>`P$e#r{^It^a8d)Zk5KEH9xBY#Nbf3ILQZLR>tDK~sow~No8J(MV z=a{j%zNJxp=cuxEpr@1MM4nrDd4*ce>v`DpXSoJi z#djIr`$+|Bxbu@l>~l**^wP)|hhuBy%dyOFBJ||>pX!vdD7$5dPU$Xc{6pPD)PlX= zo-ax@jow>^luZ!Z;^_~?mqq_Et-q~^+In5SxxXR}kq0{SzXsG7jo)?xoU1w6R;5Fs z)mCNACdi>~=)Gfdhval^)y5tXNkC#%Zd9Mb!4|-1}5?boZr-D%k{Z z7I5{r;4*d2`F0oqyeFi|68P7p63{j$tx!1XzrMlIty+9yb16yAoJh%_C%(icJHx`Y+js+(X=xE^5eBQ=s9I zjSS~3NP%k#_cI)`**za=PUh!uq~V#UYPV&z>XC)JtXqC45Y1WD_hzN>nJ8!}oXG+O zFN>)6`+MCOF3oVxf_8AMold3(-+vA6c%;@DcgeE3zoZ(9?*WF&$rZp@7TY`28?aEv zVvT3E7xaSb4@Z5xzY^|LB=Hxm?rwvH;(?t-Iq z-`@gvF4Fp}R%hJ?kh|Y37zGv&_P&VPZ@K9=f5lRFFB}WvlPTTz55S#|^!Qb)d)r{4 z_F!CHd-OGJI(_j}QNpW&PZkHI|y*ADKuh&m7*Iq;iS_l3bi@s!VksbHC4KY~4M zW%jh;oCP!CUV`fdcSb~g=tPeH?y76S4AsLZ49b-5p^2!6t%nf8x*^ zmO6qObsxcf3ilWs_a_e5jYR*Y)jeUbQ2Y?EV_;Lk;=vZ`y|L*%Em(*$>b{2i0d6K- ziikRLb7cB|w7T^M3&k_*T5uX{9#~7T6ISYW8qQhpE8M@~=EJoUQ6JwGnSNfY``BQi z_+i3XD8N>LvHbDz50<)b4d*Nj!CeNo2CkQg`ea08`US1dwq5@Kt02NPFrp{MiKtI+ z_SLm?EOl4IT?dE#Iq?A8ikZ`+8%bZCmbO6|4pjrHHPquG>S(-ojRI#Gl!Z6I-2_KQ zc$#n2(bbV!(OO*>6KN=Z1Xw&6`8Y94MExtp?-VU9gR(FMt|?pvxR>AxB8f3too!G? zfwdIkTKe4yF0MaoW~s9b%EESVUEscf{GE zHo0&X_JZpVw+wCr+>S`=kXEJh}Q2-}Cg*zNM?zrk&*#>1i z*hDaH_MG@eL>=$vt7~N$l!cGMJp+e%Jn;kEvB;TNt&U1JUG{#ksbGV_eiKn&4)!zK z$}%VmXTrS%$HnT2f5Uwri7unnb+FWt_=T9eNz6~a!`yu}!b%-((KJ!v>+;TpINaNKYF?mD>hk=M#(8YMASEyZEwX@y-D46xcA_?!rdgIzI7riFW2fe87vh4Fc^(w@-Z5~M6jpK z^gy)QV>o9a4P@a_xUbXRm|9qv`um z|7${2D$2CWVBZ-vA&PWAQ@64#4<1hFt3QwW5b7JCeiiD^iJD${jQGjt7I6i#r~+In z+&U5U!^4`Bv#&${$MW!sqrSYjl21eQ5)g`~g)O=o#qCkNRYaXEZ6(06@QbRz)r8B0 z+XeT$=46E&@VBqIRF(A1l<})_$Tt@^Dj{E533-|b;)o!d2v~9Y@iy;v6A39k zr`ya(5gxJHaL%I6a1{TuFT$OJJE}P~1HWVysJy#LaQj1?T2W^pZFNj34#iJJX)oRb zP&}Xi)>Ri#XZlAvmyhls_Y-aPtHx%4F!NdT53rSBTzLHQzKD%Xs1V&QAFwt3!ttki-@lrTC$g?;pt--zH z_Z$2tk+vRgI2Hj`06q(N1h5U@GorM~F{6)BNOdln4)-s(j&P@}1QLT?qh^TXSh_KSp7UPBL=efBu< zbw$r15##G&--75kKOCG1w~TNsd_0Q@UeiZJ{Xx68!&S1w?XtqHBiv@fog*BV>3^_$ zxfO0!ARJ|7;@e8NcSX!ljKKF)+@IG5(|L^@-w7)m6}af2aHfQ*$lD3`NFdy-KseH5 z;`^9zpA!!2zi&9LDI zh2%f87yTqlg8cOqQUCe3sdwo#<8jWSvv7LZR%0_W0o=RH8@HeF{6*EFam-*WF^KDbl;xLShOTjgO8zZ7Gi?g^i zi`x%Z8ZH5DJY1gFgRpRIxcJp29g3%R7MBBL;9Bz_;49|dk!X`^aYx{;f@=!*Fx(My zzf-gsV{u2}$k-HGvl||fY;hIfD7`6@ z;0}oBD;v;e%m{0>>V%4b6yKCtfQJE>nIa62pevh*X;_OXy(urj9Tm}6H8hPdJc7s! zN0`Nw-jsQ8U%)N*_2rMCI1E?=km8#%AMhIyT`^u4r({7i&fIl_4^hW7@N5J~7#Jx4z5U{v`yN5?)w2cKZ;yk85Sw1tmr;S42g z;Viz798K54IqF+~aED1|O}|*hc1u9=FDhXuVUbF0?D|2QG=Cj zVGS*;V+$K-VZ1F&)52!9u&ow$w1t^km}LvIwQ!Iv9HxcCm9T}(eJF917LHZl`a@PV zxzI1Ksui#8Q{qIss-IJ2DDg=zi2fby361OuO7(jJ6?F0%;hbqGVx83@HuX0Vo7_ai zX6+TRV_y`pBOjQY<| ze^P5YD?(0^I_5(*?o-~6Ab-Z?4XS=h-t9H=r_rBJ1WCH*BvlYG^FLQK9|TA$Yr~P$K!kd^ok#O=YO0|E1p?ftM4=?N`)Q>zLCN~q%7Kia zrRKRq-FKdcNWQiABbb5qn$Pm%Mbpk535OTx7Lj0 zhnL{<>ESX5Pz*X|`~d zoe<9Q8-()#*Bu|aRnDFIk9UNP#m#rqqWf7Ao@VJoJpEGlEbm7!EqYW=T4YXhAo(|p zAdvPIN*qdBXHIKA22a08abeS|YQ5P{GetIo%H4n4dlKUl8hc}n9*W=WMTmE_Cbv^- zbux9kjA}1+ia)6NqvkXRl0RewhR>G~e4+!K5TPz^(dhtRT^vC2r!|kmMwhW3A|r77 zt(2GuB>$VsCztYA`3;}!E`=$n9U!@^5`~g0s&D-v1GxQG3IhC<3JJ08M=0G+P_o~@ z1AINr$CvCq$!@>BD1wGMKr{8NKV*XZ{vC**t>)89@@~JCQkSRq$T~~ztON8Z86e9D z0uc<-{4jHx1DPPV-%2UHCuYnwB4)yF5i@Iv2v@sGgde#=L_frwWvLqk}x=JSskNg%*UB@QK@HK#d{5nMbft9Ie`?of)2EB-GdvGu3K zDsd>KR|RvP10qN%V+68TS8%2O;U~iRxvhx#qM8Wbut+%LQ$(rnnMri+D8kK|uPuf7 zaj}TK{0K$6S;UTcC9?O|D($WEP0?d|N>!s=$5z=00?DhR#G#Z1=CtPHj3B_frXiG) zW=?CqY_gH?T<8M>qt!E~OW`A|wn!*L+X;o`wv7Icap+*7hj@|i{uNLjWL zhf;=^(;P_s`4#;qh*<^EG2YAv5 zsQGZKn?-EtH<+n2OCOmnN}ars_dFpwd@jQIk=tif8I*4ggefyr;84mOql5#Qj9Eqy zNQP@3LMe;PY0bZ31Oa}95{FXOnbUH7kP)mjl0X30JcLrVnbRCdzQ_my{2nC^r5rS; zIgtEbBM9&Z-0>-ta?G690gf6$AixPF4yBwnr#1h*5d?U*r-xGhGN(0vP78(wjZ$hU zB@eZ8zcoY-Qp5V#wUo~vDA6wZ%%bhL@2eg(aV91sGQYZP;*_xkMl6O10 zlo~!$26#n*q12@%1Nauf1d#k{&2KEp)6v~&{jz!**=8dI-5bdLNb90FH8CxzQShR8 zS#3fTXifWVO)~d;j6jZ#KR(Zh$BOWqe{%c;#}6|q9up#?EL;0vC)2p!F)i|HYQ1ie z(=*DI&esN0MR7z&0q(zK6rY%%Uj7yTnG%OmPny#lNdANo1o*R>|I3_~cfw?V-%NoG zaG6E{iy=ad(gFo$uS2J%#;1A(X01an`-j#P>&M1XsL_>yb-*OM=u_j=h&l3#5E0lr9zW&FF$c@AWNEk+Os zutSMMjSiaAn)fYAfIq7FuS)W6x0lij`JVZZjp(=zaJpmw-#!E)IOpDoG;G1C z&6Ixz-k-Jq5aB1T=fqSI{mhR-^vDw7w}#L#nJ>{F!mG-g@X^vKav67Ke|$m2-ZxH& zZY@QaQNmgJ77FWeMRT8sZTC1vhFgcfjNpRtN#V5HXTqxs%kj8-^_U>SsgKm)Hs3+! zPPkosG>iblL~JGIO6^v%G+ltQ;mnhI=y{UtCTa0XQz$J^=rW6mCW=6jxb`BH*4CWn zK=Lh(Ai$?9aVRazoaR9C`58tM2;ka_P}(4KS_jBBf&f2Ei9>0=-O#*i?&aA4@7fFE zpP&Nj51FFzMi2<_s1k?LCY#e7Nd9pn2=LnQq|G*`H9x}$ByTKL+B_u>r7be&Igk;& zW(0uD>&O0&8N`V)y@vmaohD0S*Z-aK^pRCk8Cv$V)b%oaw7 znB(_wE&UquNUI)|`ujIF-nvgK-ec6rgHYO`z|d?j@Ha|MN+@w-_pQ-{a4l3Q?TD>O z7QsOy@Uo=%V@e!KJ7G?9AbHp1NU7oTWdz?SFqC#yed`Yyz_(2%faL#j`NpM6@~+L1 zQk!oat@#Qi_{L@3OR$RqRCWWj`>JFB*XCTrU+?nmOD3qXZ=37{wb%ODD-x4vUgWs_ z-$c;Fji7Ny19KqxG$XJhXq>6}KIXK`H!eBg=V7}j(#CqkZ#<-AfI&te=d07Od&{}w ze&9FZoE{}&uY6R*wwfYh$4?i|bmp-u;srO}SnV0l?=Af9$nP|MN8Y}!W<~z`eTy=0 zd2Xb`mF`gEu_g`<$W>$43`nVrbOi?ZU?r41gwl=tZq08lq<(&y-@Evo!SCk$p2ctM z>xzE-?#%Dku&1rHJyp3Jts)9Fo~XX{hm6oSH-Tb&Qu9+w^47FNmdYXwI}S&0Ud_l* zj}c=trHWtO+c$dQBD)8~^!A(+^4;7|ah1oGtkXW{yih9l(;gS$&M2GyJ;M)orI&Me zdU_KU)%J>*!7q#Oik+g=&u2tT6B03Xz9{u$H51&KHd(~pe|;E%ASBDq_>{LVRMAQ4r`xy>z$hU9y$;x^%bet-D?ClHD%9cUcpI zUEIBOx9DBNoaTV)>3!*5(OY-B-VI9fR=1;i*mA_-k(kcUv1FJl@e0eoMDPxR8VK$e zPUMTHs%EQp(nD2E?_{Mg)VoX_7gng|>s3&%^k@wZ@s_z`5jss~c z^foL~Y()^WV6_56?FXrE{ZU=SEO^HV0{luPj#)6zoaR9CZx}&A&er!foeP$%SvY!Az~(+-}bT}9KbTJrk?e$!=tF30b5QO;S;-I)(pAgF>M zQgcNU?;e6m)j*{zWTKK~I|%WUHGzz&?4&3lCj=N&lH2a@8>EXiZiPM;+3^Zb5MggYLG{{-c{e`X%r zT3}@&lU81SmDSX5Yp(Q!x)1X7$#0rs_iQ7uaun+B)<>xOD05o#|1g38ucwRM-3Fi; zsXu@Gr31JvD%5?lIn99#aPf3e_NDG_7YlW*SAy^An;bhqU27;V)HUBVWjYiQbggAH z1OjLi*0roT&4J`A7(sw9rNp6bZlBeR8g?=}`G4e(nO7m5uuW~twAR5ssvh&y8sb@r>s zjiB>TrAdAS0^Fg*q0X7+GzUb`*>5BPzN6+_mgGCT0vUfGKzk(*bxtlBAk7GDK69+g z_bu5bGRIw#@B6UJ_t7TG&A-fnQ|^)h`jm15^efpW`h+jZchx1-?+tUB1N8TsX9Vgp zU^tW5Y*ESic{S5*hSU|@dpbCl@n;XeBT*@rnH!4II`mtrLWlbKO-HMJ%UA20t5838 zS`+G5WKL_|ZBkNdmm^C-@)hdl7qje}q`O;dbw+*!0yJ0RP`3u=GzXH8H-Z3PNAp$9 zY0bwOL4dF2UQLF&RWRpufQm*C2oS5pp>F1^Jdg=0V88vYVTjIUkzS97w*D5!n13x5>uLb<1Bds&~h{RO^xf=DHOW zGk2mn&4HXaJ#7Sb1asYbikVxYo?_;X_j!tCnlyH=^ZtbEhc|0-(b<-Z&O^+^Bd`8h z-rPdYbSRaWxnot>n7Mvc=tNv>+ZFFtVa(hTbrUmpNTk~b*IwOuZnjbw+jfbFt^BE% zuft$7NbC$u~8>4WBO~a2;f0=H6h=b07oUYy>6%yndi~s5I@-f5E@} zt@&y3q0%RnI8^!*94Ou5LqK~k{h8qZR_-eh;DC~aO7Hg0%5NFqpq_Hqdiw>9Y_SoD zjelRf38{_J-2Z-<$Yu~?zt;4Qtw}}}m}ILtHvfSLm3GZosPux8{0bv5`txOgr8{L22thUVIAOpqfZBT)ClYd zN>5bcQ0WooGzT&Rqm2N275!{m5nlO;2tU40gx^}v@h%a$@5EKzr=6}`jq~D~86xJ6 zdO}qCSvZgJ$8-J&=DaO0xg!Z}LbBgxTv*4y?*0UovX<%`^9G|3f9hxudFZ+zE@|-{$gv@sZDKMOSMR-;kat|0A3=UqvTr z=k4>rtyMtvQObMl{Aph%kIs+c>GIBt86?2O*FRYq1+R7L+pWbCz3bt0Rt zjcU_0Dyno&&fwvc~7rbkDNt!jgLH7HL7}~)X1xD2+4AZf4)IMEx8ASsQt20 zC3<&670w7V_>0lH2ZSh7&-{N<)U07Rr`1xpf51(En+SK>aLzCcKMhE}Lg_EUja0|# zqrxj@i!xE08=W5L3~L6+9C^l66w+lXZqk1@mI-8CR4a6brNR9ZZYJDwLR@{d#T~Y| zCUC4G&maNoX29j?zkf@8EUUWuSYaNP4EPA(TtLj%)qhyvX%B>phhxob#v5>$h)Vq| z?k|gD!GGnmaEswyhubLB3WhA{IxKdWj5L7D=XS)5w*VIjQS~`fgrW`$^aiX47=hz% z?7C$_RExH_+7{OkZVnv1bsb%<+GvYwVR3cfUWMDlb_MI!0)B0QT`iFMUbz5}`y=Z% z@{hS*7RP^GO#-XJy$QDyt{85Y#c|)paJAr8!0mzCfvHLp`DJ9QP({NZs|{Ega19{K zlIz|BeA80M|6vVR5v~C4dpO36nrFAMP9ris&2ll z84As)pmAEZi5v)Y7AEaj#f7s&2`P{H*IEIs% zDR7PuH+HbNhkY)O#IF1;8<5_*zARvY1unC|vw;7G>jZa&5I5cE)u0eJ?Dn};WMowc zE(5L-+}y}(4c+JC-tdW!<^2X$25bUY4IvuVGynb;H~emK^nbi8oSBp0n1(fc&FA9U zSR7@tipDsTv1~o_yhit#oqt6f#<_}DfUB+rtPZ#YusPr#k>iQ(=45e$Eq$lJ=%zF2 z1nWBqfm6ZNUPp<$$LChnhieE&Cs>~W_gmz6lKUK+IJ=lnfF*&^c-Qyg(OUPIZDmB< zJWE{~Tyr=Y|M~%NXCwVmbm~_6SRUPN6}g{z5R9hNWURkUL0pl~t?CGeJ(>A2+}&_L zNBX7e)X}rOGRgZ2tOwYaU^oLby~`gW;y(AeRky(nfFn2SC%}Cl>Cs51j<#mheFJuf zaAwgA)<406dR{hzrii=XbE~jStA@kT4%ScRnKsoTH#U!|78#iqb!8_kLS1^d(RmD( za-VfQ>@3(9{Up-s4Y!Iuu<8N0+HfziTjRBn-HqKG*KOfrdB?#fg53-@A8e+jjso+d zUG*5;({PD!OW1_3qEuJA7f(0w_63!uv+h7YNZwI`JV%gb1X)dxsg`PTYgEsGdjXC+ zg6r1{(XxD`ps7yjgFcprd0O=fSQoIZV9!|Up7FU=ufr{Z%Y@s-UOi=`x{Fgf#}AT+ zp<6{4pLHiexUy*VxL;3oY0oC5w7gYo;YPq6W>1;0tS9w|(7M*VAdl|7Y9rWqurI(K zvDDE3jk;pE9dP7wJy%L?Vx+p7w=oUul%XHzs|KXHv~n*{9xZ(pkLgX?5#; zEbjmqwssb&EWkMOtnq6-<5O>^&(XS^)nPbtQh;&n&^$7|y;f%xc-|hc%fQG;K|I(d zE3@BP>MFo7?U_YR3Q~mVcxz;O2e+QMWQ=vb?tpDZxjAIsYf))=fi7z+fQPx)0*f0oa!ZVrbDjr4{aEJT;#kuqI%>Z}^e!(gxO2sRQ7 z3)>VNHHc|~ADMa&B|!JZK!<4S)psQ-)4t-cFxln9j~ z*#%SKo)Z-#e|2*o9eg82;l-P`1@KH=)MIX3wbqH+3UIqq}r&XyRRlE6q{4<8Qi;( zKPS6om%tRp!}3tIdMj8NuoFVu*1@legjGJbT6QA(<=pacKf>*djGm%X_mPj~y#vNP zcrM+y;G7VBMp){;^tsj4{OZr)=)wieM*EzK-2Z&k4Ux!mQB~x~oba2^=B6-&wxSL}mb9R#txpN8!zlhbt#Uze=vog;QOfiIsgej}d3}udp$P@zjfs4X>KVdVs*Tz^OmxDQVOgKSbeZUe+*4*=W}aH!JIdHcMF`$Xeaf_N1U@ICW>YThq zAa!^*U`H+)YbPOYzcR4lp2FS$N#KoPlY8@R=qO@JKSr=*7x%mLIcvi z*;h{OeYXJ{n0uKOF-kmc4R(@!X)t+7Dfc|{wB=0&8v{m@*)Us(eZwlXsuZD-BAe82{P+X0tY zAXeLevgR;$a^JHJyWzgHIIM-?hQKX>ONGN@eniMB>fbGH5F80!+!QYVAYd~elzW*O zh1q~u*2OIWG14ON&dD1Hvy1l!!kI#DHek;0N!J(U>sU@KtXHE( zJzn?TIbv*5V$Rt5^~^!19^FUOceep_cm9*x|JA4wSEEM!`1qt=>Gf;eSR;)uIlT_w z{gsX|oyZRH{+tLm5#hgyaJlZfIzk!We~BgOR2^>3EiYcy|OqXzLO%47A?5gyeM zW)K;XulbP(-xJP8%*p60^`4Sm4rLbqdk$UI>QhEoB0lOQjzoBd2tOvm zYlv{18Rx@yQ{2?0lgBh8kC`ejXUb=ARpAyG&g_InXHraFOZPy3Iz!L%542;huFBrY zw&XUaDLXwi5LNq&($SIqwW1p&vH0F3H8ojn^Fd|!s#${J<>WQfO5HCfFEuK%uU7QU zwcLOyX%BM3yBG0}Lx5yOI(go%PfA!%3%&iJl#pEUa`L>Lq?C}W7A17|oGRxiVJR(C zn^U!L*3j98{^iPso>SlY<9hTFLchFpDgLw)IzvzT`#V*6r?nQcW@o*ep*tdbYehFy zrIVJ}SpE4gP&yep+%YQ@Q4jsZDxI{Xgp@$(bOK;B;N=WGsJBddM+*07p}S>L2j`tz z5pL7MBK565RQ?#7-PeVQJ4~(CUPn8*llPm#*>nZ(PLWn4;|4`Wl#eT2-qpBH zg>r_jwo8Bkjh8bNOK-iLq3!(=XdEA}{Tan@ z=g*|`Kco|@y>=vT%!;g+cOsJ}`1gcK=~F0~rgVoidtB~ z7RG8}DJ7(IsO_OjCY)Tir@Ft?W_z>){W8(P=blwUC-=0~KG(XLb#hO5K{Rw!r9EHe zIWZ|&c2Q56Y+|{`G)I{Z8KjQ+sLqMw-j5*9u*%EH-D6I3Ao=}95YX>-&wM9$BN4dm zKnLJ{hJFPCY*9idcZGLWe#;0}8$p0yq{L3{JoFnv@+|-9*MT|quxAu&#F1JkpYU53-ki@5xK&p^zSbuHISYoEX{`w#ime&^C0 z=GIXfoZPCyxx;Pq2xJQ5bnGQkSWEL2%xTS6G=e~mbPvrnXXSy^U!#l>1p%+aqE} zvoJEP4F67IMdJXI+8>ijiP*-yBTdRw?`;fXm9>Yo_WibYl<)RiLt;XFBRRP-S!384 zqWk)gZFV@Bs$E79;5X`cR-4ltNPe>s1bDfUE4ZUQ#O=cxk^z?L;}Qv)r^L<>zo#OQ z{A)hHPEFsO9`4BEth<#PbexUmtvoL}XwQp^*%RCCY}GODT!Wc=zUD3%FQ@m@z;1<# z3#XOLd|Z&bgdbI|7+1whcZP<#zn<@iYel!9YekR$&9$P6??I87-m7QOy`pmPq;#=J zjE;(uUKS0mESHnhJF6QvHF$_^JL!y3DKg^I=t}wj)%$|MPGp^;d$G{Y%UOG#?A~T_ zC`!HST|1N2uawJ!N|x&+;<h z4DUxocqdz!jW5e>fzvm zH;9zs5mMcFgy^V6*6V1bx8h*pY<>w(kDmH!km9dd!z8iPw@gRZJqDKxH&2MmY8lQM z#O05dmBC!>Ne2(_RpE%a#Bn`BJaAA;z~@kiq1?O#M~bGFr^kD~!a>d8X26YwTMqZU z#WB$``dF31!9#hEY^GCJ`r2~f_|oI@Dfl$NR{$SEA#1$X+-HHOJrFJ#j?$6dBbzY_ z*Br69zbuZG0~|b*_sHh0LR4-N^awEtY`%mco}T zg_YrGh|+sxGbXS06aK2A^a%0vt@{M-bGQOH>__dtJTBl7;^Bj;fU{;Gok%ucz>y-; ziXNHaD#CpS_pWdXOTlfmxC0hf0S?n8y+;a5b3-M`;y$Aij6yCF@bFOXBZcJv7g*p) zOW~Dp=irW@@GAT$Dp?$Iqc0YY`MmTVDXa|ll+Q_z5Y6Q~gGzA+GaB$XU^T!$ERe{I zLILN%eG69$hl}ABH_qZvj)RBt9x1E~churoH}v%7{0?_THXzpqg$;yg(9Htr8wR9Q z@bJKW1TF!t(5pe$BgEs@bA`N~<|w^K3R8u+IXU1F;$bTJ`^%xOcMx2??0EW1^ z(K_;dyu0czJxn|-=SMIMnDj;|WS+|IgV#z6DhEO7Vd8P?34_Oo@X0Gn)3xHW=#5{6fOk)!cU>}FY&nb zlqC)$$`_@OS!Jt10sj&Y%lQ;+3D^UuW4W-^QA-_#;Bo7h!>xv!2)BXzAN~KUiw!%G!>fPK7>8<=rWLegI(8qEPgY5!iTrNBacED0c zk1*=qhdTiG3LI+_+fqkV9=Be0_|tG3;eN+!qVs?8EAay5FjV0uq8w6+ z==|+>dQ(=4$uisP|Kv`nfO}6kMP=}z=oqp6N{qUFU>Gpzf>OlNeuo`?TBTo!#}#0_ za1>EKC`DC-=-58sSK?tgAAnsAM)r$tz?osJZzQB&iN_T%Iu_J`qX>#_ggX=PEAg-# z5|5vVazQCd!I|N1--JoO5|1muyy7ULd{By-!2J~PEAg-#ngo6#$_1sU9exbf-Q;?h zH;*f50@niWGE#@-Og|OyEAg-#Qh=X`azQD|!rkF6KXuZt#N!Gut~iP)AC#iLa6bn8 zN<1uw832AF$_1rpFzyb+&4gV@zY>otz_{WlqI^(_xCF~M9q=phupGJ)ej>^RrDzP! z4(1uw%n7hD9#?>I#Zg50pcIYAi=kS;uf)T0wu50jr3*^Y!(g-hnytUaQipNHM@0Fc z6g?qC_evN0l^C6cuvk#(hf*{RcADS#q+f~06)+;=D588&ie?GXCe2m3Umi z8*q!^?uFwrAuH1T4ouDcJzY~HeM>wvXA|gKp!uL&0A&5{4|~$L#N!H9!C^F|A4<_y zA$r{(@GbGM983(pBFYV==%f&Re(}{w-x7~2kd1-%CH+u}eiowdxPWhohvg6>z9PyE zrRXoP-z;@wEp=EpoJEu$N^z7B{r(y7Eivk3CO!jW&?qho_J?n)q;HAG6?_SI0&X?j z6+-mCKj2&9VL3E2d_|NSO7V4I=ltd(eM>y9;0zq5Q2L=1*AOCme89KF!*WO!z9PyE zrT8Wx22{7yks^=V5X~*d(r{$DI38~9#l9sToAWkoIoQu(n+d`86W0h{a?T}vOFVAF zRdCoq>4#F>3U24cz9k-;^CoO{*we6Gg~%CW>5Q{<)`6=J_bXfvxL*RkB}N^C7rr9O z4W&3+h(V+L@l*Pic-)30I7R^Jhf;hy+)n}D5)aG4s^cr7+)#?|!WrZ)D|JIGb*c8?co)izq*o;x$4%oEh*f@zia20_<5ZjDK+v*xG<^ ziNU6WpOO@_w>a8{ z;U0mbAxJ-z;$v{n`hE<`x5R+?fJ*@%1pFFsn}3ZXeM=0-G!$PE<%d%IJ>2=AZ;9b3 zVO&L&A4>60LOhk~J3Pqe>1i(Cq0>lT5#@+dd=~H?3uM-96pn-|fFL^h0sB+$_X%b@k=F=XvqpT|K0u1->0TRZ@QZH{TK!VOQ>qGi}DjLpii; zX-b4o|NrD$q9W`-WQ-WNcqoUKEuDyvQlU+W3tkTYU-_1(2-{Gs7-D=yltasw+k}|f z-Hh|fw?uI*;M&P#z)=NT7%QeuGMsS$*%;?CIgQk}_u&luMelC>{sXr}rt-wT%k@oz zCXM2gQyz48rQVpN1H0cQaL!Ho&%f`>|5nG{=m$;JJ0bWtMm92-GsUav)~Of6;MdjQZu>3{w2BO6Uyy(!Z-+YvcV|i1D>v&Ojz5YPSft zd{VsfVXKJ52Q_$MBAKS5r9*-AOxRS7Hy28qdhvdXccl9xm){Y2udr$9S{oxOkTdYG z6$?onxbM>Skk-h1xSUlFj6DOt(|X?Xibo1R(85Bmc!q%FKx3kTc6JGHR2EgYbQ38vj|96$@hbZ%jc z-^yUIe-O`|Vh;C17>at2mY-}*z;tqR8^Gx9za;P0oRnGm^Bt~)~0im$l?Uh&(j0HxEx7^&2a0k=vh(Zlk>>WD#V`IhxGTB3HTlDPuHE zI+&v(ML5}WNZ~w}RyW$S&5s~IL-Uh8R(?zUgSqI?uRsyFM$XA*N!x$P0He*%06$cT zo$SuS>GO(*NS+lS*P?A&rIFU&Y5m)K+^ySHtmf6YvGO|vGf^=vWM}GdskR;&m1zn= z-W|@IY$lohOY-sNr=|ZgC%cN0JK3?Shvlo$D7&01?Ee>D2urQZs&IT`&I$1GOd@WcliF- zsYspvZru7)^8UbK3RLp0`EmN4wFAKSOFCyH^m=FQcib{%cDijBPCZ;vp4!cm%bw)P zWurxGA0E0ib{y-^k>b|Zdt1+LLVLfDl@6z$JK6A4)9+JX`8wfr>n_4WC%Wurly7cz z3D=l5?Zc5U2^qu2!M~}HB@@=i?t1nBC-Z1}9 zHW^6>dcpXcj3oG*jQn>u7de7DJ-D3SoaQDtYXHZ3B$1L*#pW8%>Cx11P7mg-n;&+= z$j?~+za&l%hBd9v>5+alKUm%MUa_als*ls-3Lo4&nd6r{N{G^TUbM|f*97BN;_fn% z5ZGlzM;S_=ji!0rihe*i+p$n(>iai&Yu4~%>`MdM%(d}4zPI;+``K_#_g{UkJJ(p! zMZ|kmnCmZtsa;0AymptZk!$01PopqLh>DvnUy=7Lg+Fo3wXyU+**=6#K`L3?VT;?t zG1tb@|71HO`PIWL7mzPKE?+q8^eKHrlmp6khKZ~Hv_RGZO#=6FycO;h6pq13rN6~t zO$~=3z(qv)pKKoww<+jTVz?b}`R@ZRLLsfD>QqyN%BRGDMSut3mch|#s>N7bZ7br9 z98&_)|71Ij2B#<%I56idiq>giac^*Z6b`GEznzh^+BX*1)dDFMd_qt9FBj0Bj?*`t<@Ws@F_8%Y=jiObU@iY4{)ia@Fhzj zRe_I)@;})=Ux=E&_^XN1r^M5@nF$uoAvngi`#8ALa9@$k_1qV{#p0+i!!dorMMU|ZY{$;koojKQNyi>f;b=gvqt~56 z;Z~efuC&0DmckKmmEoALZQlj=u*IFTxPQQ5Pu3yZ{yyBVJ|}%jbiDZvyCq8>5#@lg z{Qx(vaxL&m13KM%z}4l>Xfz7BhOK|Z;wTN1kqo#7a1Pv2?)G%FIMxdd$26-jAsetP z;1___hAubI-VK-um$ji59`h-gO7-E zKiU2(yNA^G*GHvKiQ(emNTc*W+5RWo>pmxaKnzFH@aa(QB0E?uY&71#MX7cf@xa0? zz<*XYlH6Nra(r|fX*Q2ru2xJpR-r&+U8P9PpvI0WuaILdoR9k|~EP9PrE zy&)KFM*55FU>ezYv{_$LyNq~T;TSlkT+(4=M-tqx0Vfa->rUYoJ_I%ltT`Sp_nKi& z#7SeNn{(kKa8JVB4aen1lQRJ)5D)84OU9`~`HSr6ipR@ve~5_t+)_6kZZ_Nm)b)V- zA+XDcQAc~lsYCgT>|pNL>=iR+s$E7ruJARug>aKm$29TQ>!n*jaF-E}?OqXfDeNrR z$6#OblPJAFJg)F39&V*{AKXDWhR7XUt+lKW@B%UF%7A?g#=y5@ zCD>$3-7}Ut%or{m%41{)OHHjJUyLc?1!7c|1w8?J0G0bepYZEPdVzRc;g4`<;26?& ze1t!Xqr5=mE(daV5f94*DWuCvhmjqhgFR}gBjp}fB)BCTf@7fC!L>`9Qg{f@`A^+z zo&O}HGJz412F;_YUwX3)oIJ!hf zY^M+pEBp(r3U^0I+Rn?tCi+R2P9YvwR2>crBppb0Udd&*2snj!SmAlF8^LG-JF9_h z^Nogd3h}t2Ti{aQNa4;}xVE$oIE8pv<|(iyU^T#Q2HWJ@H0c!LaYZfQ+QE^+orx?Y zv!bG`HFPB2{?s#SmsAyPk<5oPI_0D z6PCI)mb%Gs)8IzKZN#Bw=*3PUMkfXUClBRBvU3OQ7k+(6rx1@T!ju)wgPVj-ZgqCO zJ>V4LVVNI*%?HCM{La9eag{$NNT(2wD_R1#9BwMy8Mvt>HXHH4O!_!Z9?FAc7njOx zD18mRRLy3kQ;5eEVZiY4P!1%!>cKr7*lfhZGT#Toh)MsEUET4k>EI86(jmm-igv;6 zg?kIGH{5RJ5R!jHIGLoz!!nnGeJIo8zIygH&CkhPXUv-|>-E-+rn6#WK=VUzAM zyBIP0UK?;+5RSYKT+(^Py~l)KEXEkg9G8gPLz>N3Hu0K?+% zdLL|#Z<(bFjK>vMg1ZjxGq?jn^sg3hf$^}+9$?r#=`FL1`D_1|{Kh9;U_7oEn}<(} za+le~^fmjsfD4R=Wu}A0gPlVimBKQqY0C+WnjTk-;liCoxy$VOS%?9xFLr_P*i0-H zE-lJsX4ijUzxQ=Y7Z{H#rV?>yQSLJDMhh|U9~Zm8cx+}zSh6l%X5K9)L{243XPl+; zHn?m!2Bvqff}0g^fidbZ_qenuZ<%+i;o5SQKY5TYFdkPt6z(p#hN!CrH$C72<6)VY za9moHx6Hc@aBV4PrH+ZP#}(fTHv#Te)Fr@83An(3Ihid%Ch>j>tdnr|#juUY(0~h! z!s>%e;fs~^BVAyOzG`su;V}C9QsFL?aDg%4wSbsa=`XXdsStPOSP?(zD=fzB;`-t&nl7C0 z{tdT3@^nSLZ^~>7V-8kagu44s*OGlnS_M31yjY93gJGkkQ_a3EV2c8tG6vfZb_fh3 zwhw!H*Hr;e84qKnNqW9G8%W6agM}FJo8Nz>r;NvS`vdM6+{{B3O|AS2@b=*Z!+9>K~EW@kG$ge zqP%MMO=BmIn!fvn^pw$DzSHdhAi0rlHTz}(+S|2EGoaILBlj379qCoGk42MF-kv0K zP5OKS4a0rORUYX%V-m8Ca3R7`mHSv5xhK_fblHUUHQ;K%GJsU*J{Cvr8EJu3iQ!&> zD-X9DZaLf{i~G*vUWBU%w-1ihlhM1aqGzJ6^f422y3GQl?MgSBeJr1hiSj||IpalK zd>-z4xR2pjJ{gnkPc5Y9jK_7OUE>KOy=-FTpWVlN;1|90oG~0dIv-CM>1Gq_j1XdM zUw=9!cV#i)(HZ60uB=T+w_ag~BEyOr)b6C%>G| zwJnQunfX6@&d3P6Jx*jTd1JPuyAD@SVjRyrkgdRTWRdaxmrYXGl_kIAwk#!fNs*hR z991RZbi;&fVX)bP(U4EZ`Q5*^CCa>IROVZ0`e@(c%3}-xNw$K(N)2*xeRv%$0$XMp?slh!3x#xC9(%W7wqUNiF<(_+b$!EI3DuC#$*U}3#yOYFaR1d^ z-jSq!=82QB*Cuypa=8+=aJDeAX1u9|3)Q#&xSlkkN54$MB#-6d zG(q(5`hM}S=}Ovzhy%q#=jP>Pu)1!&oQzDXc-VABZhv9!WNyJkWn?Ja$>?mnDc+e+ z9nR(b0ZHG$9kk1+&#Am4U(CL$+qBaa)eSU?M+R@LgWse|qP?@_b%b@b&@FoPgOzAm z64)yDbzvgEXt`S-;7vsP8EyAt&p)WZJM!w!1&g)b-C&Ti%sIo=ZSl8b?wJy}P zs$W`c&~nihHCsz*?o5erC#}+AgObY!op~_PS~|5xzYG(UxKno03V` zXL)AI67;;wGg269J}45=4={BZ$9 zEpVr+>q1nAQh(=ds`g)$dR)Z_OoU=BytuYW@(Zxh=-H`_L=7*6mtF2Y0Jn{m^akg8t$6 z2l({ATt5Arimn<3ws9nH3T+eiZ&Np-Wxlh8;brS2cNd}aO)7*VdkUMzUbl6Q4$Qz~ zy`1!^dKVgLq~tC%YDX5!x^30nKAj5^>*b_xb$6lB;ZkLT^y*yR+)gi6w3EI`mzWZ+ z(ZW|$7HX1(O|p)dZhp`i=aKp%w#+!3N1EY0QUT|YhLLgqxoV)UaHW7L5HBZvy3*Q0 z-AhlOqJ{UUZ~Y-VH9_>tBrQT<*Ah8wvUx>BbL4ZOXv7*cQaC3#ka*DwEn%v-Qz^HCU(5B z_imD|Af4SxbUN>{!=bvfiN`bm#cOljd1Fbw$OycoEB<9Aj&VA_pgK^#azN?qR*uv8 zUJ>TmANnO@ect;KjP(H}b~*=!bjka3gFvjeYrbTqb#5`(k6@yReg;E8BXE9vmPgLd z646g=5Yf*uPEc7^}IeI|a-zN$GTn`i1YLJ8Y+8UKH|M@(lMnDcYuXa%X-X=X5Ian_6OGLL+6k z^aJa*tw6&!3UxXactPa1RK3{YoM&KF=DY&psga@w{;SRd|w^yT^|I6|jVh+x>I=dIQnL6{<8!MzWYF%~a z`~3GozQS3}fn77t43+ER&(-!hmnA0QEp)yf*U9l_+nidhdUS2mCP!~F6BTu3P7acs z_U&3_^->QX>e((5zBVdu=>N8}&NXK9oW!J{L($d2Gv?7pm*?cP&+O%Gs1teU+NgT} zcf0MVCGo6&6v07N93qS9+IDveqXeb=8$sd3nT87w9S-Ntn-zx}(zWt{Nq%_fFpFzD z2+*~SE_hb2x=a+M>0ZGrfyW%89CRB~8A)k*F7nVEXBqjy6!_nDx26O$0E0T1Cat<*` zD08dtbWpQ~i8A~dOF7#quFdn{Y724MWrhn6&GNaS>2R*uQAw+?!C!Awu1h-N@X(Hc zashG)3KKDEPg^cY%u)@%h$90L}Sm?wPNx3;4qS&uZwmgl#^tgP= zw?S-gP*W&)NxMpwdL= zGWzIm+waA0li^qtJJb*EQHyI~ zaq)1>z@?j0{vqn7=I<8R)dEuiSznTVPKSmF`COqgCMT>dm;}nMLVJ;JPKOxuYJFmH zc@|d>j`kwmoDPi;qITyJu1iKCQ`kI#|2!Mj9S|Hc3OkzEm&!_|gRtBUsNI$1T3?vO|Ti{7cVMRDvgLHE` z!~~$h^A>l`;wr$AkV5nxVjQ|T>~qp}NynQX9$E>I<{a#IjfM~5vp~Z>uPA*?df^pQAm(CsJ z2OlT3ht6SUJxN;w+v0fX%%w8%a8mA5hcR}|8=ApIZHr^nu||Q5lX9OrjInFJBH$5a z)RAR8oRss_;STt<++x;Zl}D6OS0An+Tn^dbDyqe@fJc;3cNQ!O40C+AH-0Vk%(|iS zh%)NZ;IMYmd+Kn1xHkhHQAXWwU~Rzu2{sg;mYe(~>bN4S>^j0>rlj}O;k)1#1w5jR zI+_9=PRe=e@V)r7)bekf#eHt6yA5st+_R{=AMRDpBPx8)D1(J_&w$;*Mn=DYG39EL zWd^eFJ;My=?7-mRG3Csp>JC2*cTjmm<;w>#W_0b;vt5>cwvlQQKbwHzTsk-|RLVQ+ z@C+PTx|;};%azI32{`(ibk92c0^E0o3*Xbn()ShI13YksW_I|M1}u0zWP#}hbaqSx zd<>9=cKCI;^D4#tb&CC`G07Cm$3~fyV8?OLQVw8;m$4%DfM3GWp-Xelj_2TJz%3;L z=E?2<3^;Tdb;rP70DA{)BhD@3EOpekQTGbm>u?+3is63!TZb;A`Zz%r5o9|--ow%5 z9!oWqWmIEw@X%7uUx%>;9Zv@y8)ejC0&&n%zF&tw;o{43wyXP$rEVi!G2F*Q`#IbX z>akJzevzta;yukwkZ>;J!HykN26L;!-{JI^HLJ-vr&Wq78m?i`~qoO=X?ACcBCQFspb7~2J`z;MovPvGc2 z()*0|Aks@Ik21C86KOIi*_= zRYv(i0?`kPFttaRZFhahzkykoerJ?(yyH9^*7gXK*{&BN#)a%MgN1Vs;gu6ZSw_I> z<4*IS-#Y4DYdB|TEZpUA6x)%8aDT~$S1r<_mHQYX`3x+RMCt}NGv&c{Bn^+6@qYfL zTbh@|o!7uI>K0W&=dEz(0&ZzW-2t##U^jsEVY`@GzU7u~X+|9bE`Daph3&`yxOoA$ zG^1`0SRz;o>W1M_bDck~NVhbjt`Xd=a82M?z3BOJz%9+F+Y8njtR2{RA+oAknf=yM z*8vX8BVE{zJP0>OxuxZEsdP_OgN1Wx8OV>Y(ADc&uWiHm_Q%=T8?HaxpKwh7 zdd={-l6|06rygzO_NzQSH*@3|s#v|SXW@IOQ#1d{-HpOQJadU@$&pz?^e$`i5oYz& zFP2=mf50)JJHiC9_hgSF;$wE_b0couzGHiAzv+Q8;!%D(?GVo0hQg63q>7I)QM;|Q z8A-#VPFfLLt;i-x z-4-ycyL1jb@}&^{TKcVAdi)u6SpS`i;KswT2Gnn}^7!i|ie`;BRH-{rf1wE+&fQF4B9b16A4dt1 zoouCfjp3Y~i~~CArqT`Z;|f9yxY=u8#BC>B8kvvaD4UP3 zhFhlG3T1y9MISQi3cx-gf6s!kdN(k~_y~kYQG**>+4QQM?0KsFBQpwR1uzIiUWH4-cPYi_4`cVhP= z3*ge=mRj7ChU*p1eFKmV7I_m8t9pA4GeCq#O)#LtIw#^@MCl1`)JI z7hD^-?X1;5m15M_i~s927SQBu1uJ6;;32@CEJEuQ2-dq^I4gtxAOmMV?KoT?xF1}> zSbOvk;}XZ|3=rB($0udr_NSMG9>SWn9&$Hlj_xj;m7%S}t<3b&aJR#4@Ht8`|J+if zA7zQJ6rNivI&n~%l-~0QQX{8di{SGdeAQV>&m7%86fsVmHMrJvuI+poE>oA@l|!VO zL`CD?>+8k563AydwqfX~M3H+MjQ&qA z`_2A@m0_JE*{bolkQ}v$#ktP9-|R2o)<&)66*&ruwYko+-|X*LKz375>GWD&kFzp< zgxd{w3DI(AG&VD8Ew9Ku4weg61?&fwh20p`5xtgIXus>KKx%16L0Y=aN%JsR{8>Yk5U(G8he6FZ<1@1r|DbwnIGjsPoKp9;bJp_ePNvyYf|=>}gLP2WTq<@h9oJLC{gw#F;7ts816&t4y8m1{ zuBYaV+EG zQdxOlv(r_7?}zGo+*e*WYc&PAnnHSw^ye|ye}1da>2Yn{MiUy_E0!DOlRHaasIAg+ zhbWlo)R@&XQMed|^-8^PW8g(vhK)`cuYLpWGC1x7UdXVge(j!++KP%NWjGe>Z7{q; zUY1f*69OOC>L%f=)$hZ73WufgxDS~6js3w&qop&xr<)MD5n#)}8iD<$)QjzgK#^r-?_MLB*pNp8IewW~8`bdJWB{+Ry-f5*?YAH3( z92GXgM!0QoiOR|^0r#QD>G8-eyIY1)sejk_YZy9o85Pd+OA63(4{I>Jwm?B)=Zm5AU*~`|try{fB(+^;#-$sBk1mIf!wFG!QliQWrQJ^lOC8e?X~)_NFGKE+3NIy>m)Z64NC~H;?Q(c%+Q9v`yPkL=sIOg5$ei zBg6U3(ky&6=q}n+6wX@H9}fG!hAYf}TB$cKvny|MZQAB)!OZl2U@UWL&$awlz&@15 ztlG2`&RRo_Uc*Y9_6^`(RccWqyWD1j6KSExA~6Bk?R-FTL6uVE710m5Hr0k38Ay&W#xab)LU0+`%}W_E73qORHC#- z$r<%~%~nq^6T!FtZGi^L-6PC8p3k(6Q=;g{6auR3~Hk=T_CmDQSbp4Q`@62=?dYRGNB{ z5HlSgy5_i-5a#jT>E++)Q)&K2&@CuWucqi(YtATZZ6#0dSM+lH8G#6bKhpS;I7hem z*5@X+vEP6ET>>1)iA6WQ^ow~{bqD({-S>+xm?Eib!W{#8At9afbjo9S^RxrW18 z`Nx!cci6u%LF1Gt6U2(1wHA}EWeSa#Rlq;*{^gs%u>kGx{}&T9(spuUamqAs_hvf1 z^V)XKS60CVO1*bqI75;1)sjZhIl4HMBYM2G-8?}iLzh^dp!O_V{4#AASFBHUOVvrO zGvd#eY}Lkl928GWH$*puby8} zu3jX)vDk6U6(z-`5j#C$JcwhbwEbNp+m%-(;w9kqkx5^iq-lGo4DZcC42G zhI8-#bB+*<&QaPa(X-axgWhCMk73^j=VYkf-{itAKS6oDWq+|KVE14__p~ha|kUmT}(NnK}gFv(S6VP#y@EV5|Nqq8xbw{A{wC7$CnpB{yA6ANqofd>1jD4Xs!JgK^~p+ zvI+(xxZt0<%X6i5*Wy?@J8%~P749t~cex4JEeSBwwvzy+o}2`XQ0kKg#dnv*3Fv##ai6>&bLA!{deVBWN6_QLxv>4lWR>5qg zKARlwF^g*f?y$-&D6d~hTPlK9=Jg12m+J`5SL*ZsMvVcA8v;b9^*p1XVjw3HG88e> zK9U5OX-h~zvX_8&Nx;khCP&eOnzXk?&&uqJ-Z)S1L#4i`S~NqEbH;VWB=%}5RrI(n z8VU_+XnObnGi^8T1-uvWew#Oo>#?+%wv79$=bQw&|Jc92dR6HcpPzSw+YlE?+Rd~N zNc)3c+P@<0i~fx*qK88y!Ee}BCNqYaZq!!6H%cvQ=IOb^A%B2ZWIR+%MuQosqQe*N zozF8IN}DSQG1F#}km+8=Hjt20x{IPAxP4@Jd=(b-Ypq*v)24}_l{p*1&pbhHxW0TK z)aUKQ&lWQr3M)GvwiDt1CIQjoAzjL+aImF#m*!oTzklL=kbTkY6(^h>$lU^cNs?)% z>11MfURFUi$#nAlPq7xs_Vc1=W#Z&Aw|IIC*}sa;HU;{3`95dRRK)JdJvzoG_C04@ zoA$IMz)X9b1nlt=z-{4IQ5oufKEWb6nj(T$W*&mve(|yj4k`6@I7iOlrF!(ZC2H`j zXKtKCN0*iEl_yCYX4;d)!CDO`jJ1~5>!@1=Gt)+cC4jX8 zyGf~Uua;RwbJR`3S?fB%@l1ASe?;T2ge_hB-p9*KKyB+RMxGr#`;J&cS{pL;?w__qoQacii6wfC$ zdnYQD(L7kk)h_f*V%g}KPTTTFyTP9Q?Uh8pOiM%HH3Y6jV7^jEA6B#%Cn8Qu z70z1s2HZPv?co+Fb*zkC{ZH2n*9DczOyeoUI{NE{T-(Pu)_z`Whix`s@>s`C-+=P zj_R{+GuZ#Y=rB&a=DR#nN2esI`w?yr98GB-)$n9(yT@Tqjt6U!I;zCFJh1z~^1lDebHTCd=qhdZX! z>4tXRQKOYfiJxiO>&4|O%O_orvl9F?I8TxmzNM_6cw~P1{h)-e$L;vs`Z91A!!3bh z9CD_WUE+kB%Ij|s%uMS8#zV@5Ux3vHTNY&c`d-3W>+zNAtHLdZyM_vNy*CDy_!ddHagzFo@ZG^j48LER_;*=-%m|$jFGFWr4U0_LIEB&#e zQr9mO&RX9Fu0321+)c_bI@wcCdvbI^Qo=l)S>F-tXRzMNC{Z$$y6=Uv*53%%9qu4p zf4E2Osb@U79fFx@AnUQw!joXPDWjwrlG`VowO$(~RatK+xc|XDVNX44v~(U*(X~kG zdVr-X>*?jXO(>&OTahzIT`rup9%r(CG~BlyXUE5ss5Kz**5r=e;(d3nztS$feYjV~ zg|4R%-sn#{zEeib^+DBXA9T0Y`iXFp;7IdNYvI1LH=89|Y7ZVyBbW4c1A7FFvfkf9 z8Rm`R)Kq+?aMt=K;h0x?Vbm;qUP=@t_s_x~& z992>{YyGQmxVSfHYx}z>qx2OXr^ow0`0Jw*MvYBROdm4-_LRiU*;gM%00y9mQ{u@L<8{glD2o?qj8A(w~3ws;xLpU1w{(;K)Pvd`^ z5GNIpj@^28>{6t>%#nBlF>oRgEM;po>dpS)MDUq^hp)_$zYAxrr%={^0~Z4~QW<3u zJkITbz0q<}i$ugEzD4v<#vDo8kOU+loPqGg2;YnFnot756&zo^ekDgV!@0r582XhjVA4*7jBB13hszwA)Dx+*g87!D1@$OP2S#X3~ zR2%L&xM@B|-H>(YZZaZH<>;vwLM9|S16eAB6LC;?&9n{({)Av71g9(Gzn2AVa^$K| z#MG7bf5G9b_Rof!=5e|R_7qbodnQEmuTVPlD6S4H6Jay0EyBkT#sd4_RK|rBr57fud)BLTB&8{rHx0&lcIxQ0f$x+)y2mroMlRGA=C$?JJ1& zgsTTvhYXE_+oO!~w}v=MMYy_fu#4`6%Y*wY#N8Y`hc?q{0yYMG5OAL|E~_GIrB#Q4 zA;GF}El41KX8$j6Q&d^sn|2rx;$q>hg_{fa2i$?^ofN$U-e9Ix1f=-%wu}3ZD5FBx zPztAsptXUbW6wipH^l=c+)7o_iP&kzc7@AI)NWFh{oHg3byyS%*PU?mY%7+td*LO@ zxEyPQ!&L}}%Ls+*Pq@K^!+#%$CEN_fZ60mFjqjDHa6g5@F(}-CAr>+GKF~xN6=R~( z`O4+t_^7&`A*>B!2zL+R@DvBy5pGmexC#|R;Sx%R!cp@!OeS15;W`m+hi7OnorKdH zzd3eEpvFqgC{MV@$X^cO?o>wY*+GHp-5Q0XcC-1Sv$NxYv2Z^`Z`LSWSvdN!6$j9} zM;Uc4lFb?;DuIPP0+M((UvzeMJa9kY4gSw?l+wF33Ren_TDIa4f)Bw>4sk>zoPwJR zcO33fxG()%JM`vhjvExLd_E=Eyz)IJ5vT1Iy6H4&WZI zc~pK@ZI0{`;&R~V&E8}TaNt8_)Egpo!5rB>#O;RT*5ge)%z>pUV${nQFJX>s76P{e z(nGzO4EUuo>ZeJiF-O)7aa-XKeX}pzO1QmZL33nmh}#Iq$mh*LaNjGV!EIWP@^^YJ zYO-&dp_zb%fI|T@0r!Ojsd&O+l@0XyZw`aoq>P5c)PHql(t3ANPlQ_qM=`&7C)_q= zG#>AFt#A>_70}vnhWBB1wW4CN$7SiBk13a%KRMve?0+K7X{XJBK(R>E+bM#LMv}|3}7_f)GHX3+(~&l;OBr#9l$yLl}|=9 zLpa%vaw9i$yv(6Xod5lQ%%LN_o!<0zH*H$BXr+%PrBVa|TRN;c^ld+k_xD0)BcbYU zxR#9?>2TggLK~Y9(E^W~>+SUBT%6`zd`b4k`-CR_3C?KQExhp|Dkq5jJG&rcL$6o>7K;!ePy!%-V%s=Fl5MhHTxmxwF-t zZ^$V`)X58%=;u#gWX6$~Ikc4+avAPt<-NQ&VL+>btZJ&hepboEp-&Q6s%c zUX(#rd*LfeSpC5qT8^VOgYa$*BYX??0+mFqg1guYU)C|qh1N!W(HYzDzr81`QFW>f z*M=N(!6E)Wsm{e;yo*2iX4PblcX4<4;#TkCMzQrLbVkc=<^4PMegs?N&Np)VztO&B z>J{Nit2Hyc;H$!#%e;$Aor^e@rH~(a7o*y!Q!1;RZ}{izB$^Ae2|qLIa#KCd-J_;F zI)gpZUQng}$Wdn9^2++1taYW6`Jss__1j~9NcaEFjIK5wQl;B6KzVyNXZ5Wj?5y@U zle^ghv@C(S*dFn26;&Jzo(~jae_yV zbI9whO)OsRGa zEKyjShVZ7N-JHsMin6xOrX(4s;K8(?((TvUI7OApZ^T<~AnNXP7tsODA>F-*Iw`Zy zCO`74_@amZhqNJwcNdtMLtKC2F`92*JnuPBKYR0M-hc>GWDH6JwZIuLzT>qod-af)DYj=seA+lk-`=QIE40D1l&(Gg@hm(9VM z^0mirlnYTASmp7q3-Oq%+7Q8aL4ZkYJ&~r&W*;f*9fowjw^yYvdRvvg?mJa_{9;vN zVgc`CY}Q+rw_R|L7dJ4oY8$N|EOV2G3O{TL*;r#r_{o z?f!BRZia+huvC?9#l*p_xR^0K(0QKj|E&a#+K;|p^&)%YPbF`9<=Tr&IeXMr-}Hwg zVh)}rV)}zQ`1z=|)YNTD&04i&&sj+w?P!x*uIAvU!{K#q7TVc~B`PeYFJdQ2wia&1PVl#q+A&$G!~>mGiH9okPEjQu?#>RBwz1^`x8312enD%hBW@0! zR5X$)av_u`bMOR@cU{kIuE+@QA_bT1dJrz?l#UEUNbPR}@ZU3(>Xfg{YTK}19`+l@ znXI$O33oNC((oJ%RDZ2TPSV&DlTDIuz2Dgvb6`pL#O2%F2=DMBjB-;t!U0hcemWoF zEePL%FfQoVItWidxB1CnQNJes;ajG(wVs$IExZrZq6 z^QNIZPk}3R!kMX=;qW?18|8u|N%NlHN{#kgeDPhtQ@g>eRowQjT0nbbD?e*<1!^7h zEL-hr7gmtLRX^Q1nyH?vN?jrve9(yqxvELZ{P1H&G%RMil3M%%P37G;(R^E32a{Ck zOE{q+p8K5%EQPT@gtc!ObIHw4t&O;mc>XPQZqZ0W{>>Y)JBeE8aAxXDMfquRA<8nY zXEIX*Uje5xaqF|i2YAxCY^F|-ue|{G%LP50`0{zoSP?VMB)40!AWwgOVXEwR`=N^} z%PoPI$Rd{@=2t;Kv*|}_{c9F07pfefiEmxufxGup= zZ7*MY0TSgx6yM6ZY^FAnuRXqvT!`Y`0Sochl<&O&uEWq*qXNV_oS9nQ`QQ6T=YY|n z_ln}(5sR5x+W%Jnulc}BXxqA1Gvp!Ukyi);`MAPzZBt94$6fnzQDO` zrtFrl`EXT4nJI2t)|aCK7~fWE3*-+Q#QE!-3yq~%R*z~5irDYmdKJE=2LAoXh5*Q}VUPM@+dA6~Ofq=AeV}wHsj2A-NFd2mRz+HV5U%*L)xY zgAT}rDBg7w=Ag({`Q8h#T`oig$aF57gI3Ac9=~2LMDeblFb6G_uRVU5T+qC@%t1?> z>*kC zwk4`|wrY8MZikYMM})>igSvas2Cbb7+Ack!qrDB4-l)Dy3&c?_8Oz^8`1^BWDb3#x z@;A=%kMH=qCV$W1?}_|vk6B-}JWjJ=$Y~Dh=0)08;_xDEFBhV0)6BVS4hlSm$G0e+ zZ{qP)1_03Khw2N;;;@!Les<8$PK)|Uo4aJO^a9O$-e57G%L-UAF=>G7Y79v?Ix zxR9s}EcbY~VS9me10DE*_eb=YX5d0Ez-;-N4?2Rtg+xWLz~iSDHWF%j0|$EnZY~<2r(B3i&+n@iUyu5pzJ%VjeKF_yE(K%jSS_@--iH1QX;!R0RDz zzP)_S2h9(V3uiY*c<#nDqLbr3&UJG@b@|>4&`K^uMNrw}%gNUsA1fE4_=+AM3?+26 z)hQ}dY=HirN&Dx>*L;BQe?TsTBk1o97W#iJUwiyFa)FMfwVn%)*Qy*+_yiRs!FEE+be!5+0XOq+BW?^brj70?}-v0bW+@((desDN#X9Fm)ZY8 z=YQ`X%?E8Xig%l$*}rd5K2m(?_D^v@vwzp30dA2CQ4x4erhi@enh!cbZrjsWqj+a_ zl&>Q}VR`|oYSwv$1N3v7h1qYf|E>OCM_|Z>DBf#d{l1s4UB2HQxuAK+uj?Y{=a#D3 z?`8Sk3$Q{iL`CqbbJ^@y)XVjgrwCCw?l;oo10SXJBg7nxl%gUS;ROgRr~|-XKPukfSAzH6Kh-ak6P zR=E%rV54){?E95`%?Hh|lnYV(Cmvt4R`gvO@RO?0#y?}ank6e=zQzny8)m3J;vSsg z-VgSeTBUAy;UIe}avonqKln2Hx<1_OTeRx*J-6yOyjOMlUMq3(K_@y?b9j1Lj{)mn zhaATG;Q(<@SGZr+PfW}EFq?*KOsmV0LAO8n-qM?@u6yV|FR%Z;lnXzw1lSusxIfp{ zCk9lSXJd$5BM$KNPU5;8ls*9Z1A zPKfE>k;naJ5?}xDykj}l^909OxF4N=S@guV+-_}#sQu~D~s$ApzYB6cL#AqgUCC1R8 zqjYfOy_wW3;5u%H3tE{feOz{Y)29&mIk2`}1b1bSh5tmpvm>huw$+8}1;_ZL++)I(I?z7E z^@pPued!@LedS9ErwfJF^hQ5vLIG>q=FB!&}Np z0&B3GRP+kr+QOy5y#seP#8Eyj7g1&+_lKM{iSxOBKAIPUZg zec^oPv_0yRs&O#HarehrL(VxyhZt7WObqF1cj9N5#BGaU=5Hq;i1VwtP&t)C3+m$- z1!Urfvxc05j1KW^>6-8nIF|)ng09H@;3lJoM!oi8YE_dW_4N{HCmc28oMRL@lnWR> z1Lyhxj3>36HRK#*bcm5w{qPYu)L{`M_nbB49AtFp54i9VIMfrL>!9GU-nTqBIdn{^ z24?uoq1yv6elsAeTJ=FjhiT#sLPy}#4 z+y-}vQVrz@oCv0VCIs?%8|Hgy7hpxe;0T;jS!DyRowf{9sW0WgRa2@_TXli1x)fch ztcoFS3LJBGFYSe^3%5i#Rg=v95bsrnc4q)tcl#~P`fy{VnjDigovP*{5wx~pI*vhd zPFgzLN~xxI+EZ&ezuZ(cmkMUK8xMw2zNHI0jM-bQ4ON9zA&!|1PC;@`SUSv|RO{

Z!_SA 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

R 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 delta 685817 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%0Av|f$9I52>V|~Vm0qgU9#vZkfb$VVo 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

xB|$yMUA`J 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 diff --git a/workspace/.metadata/.plugins/org.eclipse.cdt.core/AUTOM7.language.settings.xml b/workspace/.metadata/.plugins/org.eclipse.cdt.core/AUTOM7.language.settings.xml index c0a1277..16ef8c9 100644 --- a/workspace/.metadata/.plugins/org.eclipse.cdt.core/AUTOM7.language.settings.xml +++ b/workspace/.metadata/.plugins/org.eclipse.cdt.core/AUTOM7.language.settings.xml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/workspace/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml b/workspace/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml index 1cb58a4..9e62c4b 100644 --- a/workspace/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml +++ b/workspace/.metadata/.plugins/org.eclipse.cdt.make.ui/dialog_settings.xml @@ -1,5 +1,5 @@ - -

-
-
-
+ +
+
+
+
diff --git a/workspace/.metadata/.plugins/org.eclipse.cdt.ui/AUTOM10.build.log b/workspace/.metadata/.plugins/org.eclipse.cdt.ui/AUTOM10.build.log index 3f76a82..72821f0 100644 --- a/workspace/.metadata/.plugins/org.eclipse.cdt.ui/AUTOM10.build.log +++ b/workspace/.metadata/.plugins/org.eclipse.cdt.ui/AUTOM10.build.log @@ -1,10 +1,17 @@ -21:17:39 **** Incremental Build of configuration Debug for project AUTOM10 **** -make -j4 all +22:53:23 **** Incremental Build of configuration Debug for project AUTOM10 **** +make -j6 all +arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -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 -mfloat-abi=soft -mthumb -o "Core/Src/main.o" +arm-none-eabi-gcc -o "AUTOM10.elf" @"objects.list" -mcpu=cortex-m3 -T"C:\progetti\AUTOM1\workspace\AUTOM10\STM32F103C8TX_FLASH.ld" --specs=nosys.specs -Wl,-Map="AUTOM10.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Finished building target: AUTOM10.elf + arm-none-eabi-size AUTOM10.elf +arm-none-eabi-objdump -h -S AUTOM10.elf > "AUTOM10.list" text data bss dec hex filename - 39212 460 7044 46716 b67c AUTOM10.elf + 39744 460 7044 47248 b890 AUTOM10.elf Finished building: default.size.stdout +Finished building: AUTOM10.list + -21:17:41 Build Finished. 0 errors, 0 warnings. (took 1s.250ms) +22:53:24 Build Finished. 0 errors, 0 warnings. (took 1s.77ms) diff --git a/workspace/.metadata/.plugins/org.eclipse.cdt.ui/AUTOM7.build.log b/workspace/.metadata/.plugins/org.eclipse.cdt.ui/AUTOM7.build.log index d8fd4e6..160ba35 100644 --- a/workspace/.metadata/.plugins/org.eclipse.cdt.ui/AUTOM7.build.log +++ b/workspace/.metadata/.plugins/org.eclipse.cdt.ui/AUTOM7.build.log @@ -1,44 +1,14 @@ -18:01:35 **** Incremental Build of configuration Debug for project AUTOM7 **** -make -j4 all -arm-none-eabi-gcc "../USB_DEVICE/Target/usbd_conf.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"USB_DEVICE/Target/usbd_conf.d" -MT"USB_DEVICE/Target/usbd_conf.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "USB_DEVICE/Target/usbd_conf.o" -arm-none-eabi-gcc "../USB_DEVICE/App/usb_device.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"USB_DEVICE/App/usb_device.d" -MT"USB_DEVICE/App/usb_device.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "USB_DEVICE/App/usb_device.o" -arm-none-eabi-gcc "../USB_DEVICE/App/usbd_cdc_if.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"USB_DEVICE/App/usbd_cdc_if.d" -MT"USB_DEVICE/App/usbd_cdc_if.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "USB_DEVICE/App/usbd_cdc_if.o" -arm-none-eabi-gcc "../USB_DEVICE/App/usbd_desc.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"USB_DEVICE/App/usbd_desc.d" -MT"USB_DEVICE/App/usbd_desc.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "USB_DEVICE/App/usbd_desc.o" -arm-none-eabi-gcc "../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.d" -MT"Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o" -arm-none-eabi-gcc "../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.d" -MT"Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o" -arm-none-eabi-gcc "../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.d" -MT"Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o" -arm-none-eabi-gcc "../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.d" -MT"Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o" -arm-none-eabi-gcc "../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.d" -MT"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o" +22:52:56 **** Incremental Build of configuration Debug for project AUTOM7 **** +make -j6 all arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -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 -mfloat-abi=soft -mthumb -o "Core/Src/main.o" -arm-none-eabi-gcc "../Core/Src/stm32f1xx_hal_msp.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/stm32f1xx_hal_msp.d" -MT"Core/Src/stm32f1xx_hal_msp.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Src/stm32f1xx_hal_msp.o" -arm-none-eabi-gcc "../Core/Src/stm32f1xx_it.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/stm32f1xx_it.d" -MT"Core/Src/stm32f1xx_it.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Src/stm32f1xx_it.o" -arm-none-eabi-gcc "../Core/Src/system_stm32f1xx.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/system_stm32f1xx.d" -MT"Core/Src/system_stm32f1xx.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Src/system_stm32f1xx.o" -arm-none-eabi-gcc -o "AUTOM7.elf" @"objects.list" -mcpu=cortex-m3 -T"C:\progetti\AUTOM1\workspace\AUTOM7\STM32F103C8TX_FLASH.ld" --specs=nosys.specs -Wl,-Map="AUTOM7.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group -Finished building target: AUTOM7.elf - -arm-none-eabi-size AUTOM7.elf -arm-none-eabi-objdump -h -S AUTOM7.elf > "AUTOM7.list" - text data bss dec hex filename - 37444 460 6924 44828 af1c AUTOM7.elf -Finished building: default.size.stdout - -Finished building: AUTOM7.list - +../Core/Src/main.c: In function 'main': +../Core/Src/main.c:123:22: error: 'htim1' undeclared (first use in this function); did you mean 'htim4'? + 123 | HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); + | ^~~~~ + | htim4 +../Core/Src/main.c:123:22: note: each undeclared identifier is reported only once for each function it appears in +make: *** [Core/Src/subdir.mk:34: Core/Src/main.o] Error 1 +"make -j6 all" terminated with exit code 2. Build might be incomplete. -18:01:49 Build Finished. 0 errors, 0 warnings. (took 13s.363ms) +22:52:56 Build Failed. 2 errors, 0 warnings. (took 516ms) diff --git a/workspace/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml b/workspace/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml index 62fb713..5820c3c 100644 --- a/workspace/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml +++ b/workspace/.metadata/.plugins/org.eclipse.cdt.ui/dialog_settings.xml @@ -1,18 +1,18 @@ - -
-
-
-
-
-
- - - - - - - - - -
-
+ +
+
+
+
+
+
+ + + + + + + + + +
+
diff --git a/workspace/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log b/workspace/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log index ed4815f..8568a96 100644 --- a/workspace/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log +++ b/workspace/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log @@ -1,14 +1,14 @@ -21:34:20 **** Incremental Build of configuration Debug for project blink **** -make -j4 all -arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/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 -mfloat-abi=soft -mthumb -o "Core/Src/main.o" -arm-none-eabi-gcc -o "blink.elf" @"objects.list" -mcpu=cortex-m3 -T"C:\progetti\AUTOM1\workspace\blink\STM32F103C8TX_FLASH.ld" --specs=nosys.specs -Wl,-Map="blink.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group -Finished building target: blink.elf +22:53:23 **** Incremental Build of configuration Debug for project AUTOM10 **** +make -j6 all +arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc -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 -mfloat-abi=soft -mthumb -o "Core/Src/main.o" +arm-none-eabi-gcc -o "AUTOM10.elf" @"objects.list" -mcpu=cortex-m3 -T"C:\progetti\AUTOM1\workspace\AUTOM10\STM32F103C8TX_FLASH.ld" --specs=nosys.specs -Wl,-Map="AUTOM10.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group +Finished building target: AUTOM10.elf -arm-none-eabi-size blink.elf -arm-none-eabi-objdump -h -S blink.elf > "blink.list" +arm-none-eabi-size AUTOM10.elf +arm-none-eabi-objdump -h -S AUTOM10.elf > "AUTOM10.list" text data bss dec hex filename - 4668 12 1572 6252 186c blink.elf + 39744 460 7044 47248 b890 AUTOM10.elf Finished building: default.size.stdout -Finished building: blink.list +Finished building: AUTOM10.list diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1/a0723d83b17900101184ce6eca06d082 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1/a0723d83b17900101184ce6eca06d082 deleted file mode 100644 index 91cb9ca..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1/a0723d83b17900101184ce6eca06d082 +++ /dev/null @@ -1,3 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=1 -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/46/00215adc727a0010170d9fb255de36ff b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/10/102fe779f58100101998fc3eb692d7cd similarity index 87% rename from workspace/.metadata/.plugins/org.eclipse.core.resources/.history/46/00215adc727a0010170d9fb255de36ff rename to workspace/.metadata/.plugins/org.eclipse.core.resources/.history/10/102fe779f58100101998fc3eb692d7cd index 27dea9f..06fd54e 100644 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/46/00215adc727a0010170d9fb255de36ff +++ b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/10/102fe779f58100101998fc3eb692d7cd @@ -18,10 +18,11 @@ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" +#include "usb_device.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ - +#include "usbd_cdc_if.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -60,27 +61,27 @@ static void MX_TIM3_Init(void); /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ -static void Force_TIM_GPIO_AFPP(void) -{ - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - __HAL_RCC_AFIO_CLK_ENABLE(); - - // Ensure TIM2 stays on PA0..PA3 (no remap) - __HAL_AFIO_REMAP_TIM2_DISABLE(); - - GPIO_InitTypeDef g = {0}; - g.Mode = GPIO_MODE_AF_PP; - g.Speed = GPIO_SPEED_FREQ_HIGH; - - // TIM2 CH1..4 = PA0..PA3 - g.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3; - HAL_GPIO_Init(GPIOA, &g); - - // TIM4 CH1..4 = PB6..PB9 (no remap on F103C8) - g.Pin = GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9; - HAL_GPIO_Init(GPIOB, &g); -} +//static void Force_TIM_GPIO_AFPP(void) +//{ +// __HAL_RCC_GPIOA_CLK_ENABLE(); +// __HAL_RCC_GPIOB_CLK_ENABLE(); +// __HAL_RCC_AFIO_CLK_ENABLE(); +// +// // Ensure TIM2 stays on PA0..PA3 (no remap) +// __HAL_AFIO_REMAP_TIM2_DISABLE(); +// +// GPIO_InitTypeDef g = {0}; +// g.Mode = GPIO_MODE_AF_PP; +// g.Speed = GPIO_SPEED_FREQ_HIGH; +// +// // TIM2 CH1..4 = PA0..PA3 +// g.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3; +// HAL_GPIO_Init(GPIOA, &g); +// +// // TIM4 CH1..4 = PB6..PB9 (no remap on F103C8) +// g.Pin = GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9; +// HAL_GPIO_Init(GPIOB, &g); +//} /* USER CODE END 0 */ @@ -116,22 +117,41 @@ int main(void) MX_TIM2_Init(); MX_TIM4_Init(); MX_TIM3_Init(); + MX_USB_DEVICE_Init(); /* USER CODE BEGIN 2 */ //Force_TIM_GPIO_AFPP(); HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2); + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3); + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4); HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2); HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3); HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4); + CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { + while (CDC_Available()) { + int c = CDC_ReadByte(); + //if (c < 0) break; + +// uint8_t out = (uint8_t)c; +// if (out >= 'a' && out <= 'z') out -= 32; // to upper + + unsigned char s[100]; + sprintf((char*)s,"\nc=%03d",c); + while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { + // tiny spin or yield + } + } /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ @@ -147,6 +167,7 @@ void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. @@ -176,6 +197,12 @@ void SystemClock_Config(void) { Error_Handler(); } + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; + PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } } /** @@ -407,6 +434,7 @@ static void MX_TIM4_Init(void) */ 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 */ @@ -416,6 +444,11 @@ static void MX_GPIO_Init(void) __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); + /*Configure GPIO pins : PA4 PA5 PA6 PA7 */ + GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + /* USER CODE BEGIN MX_GPIO_Init_2 */ /* USER CODE END MX_GPIO_Init_2 */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/10/30c9c34c1c790010170b9c5237bb316a b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/10/30c9c34c1c790010170b9c5237bb316a deleted file mode 100644 index 910e781..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/10/30c9c34c1c790010170b9c5237bb316a +++ /dev/null @@ -1,246 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32f1xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @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 "stm32f1xx_it.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* External variables --------------------------------------------------------*/ -extern PCD_HandleTypeDef hpcd_USB_FS; -extern TIM_HandleTypeDef htim1; -/* USER CODE BEGIN EV */ - -/* USER CODE END EV */ - -/******************************************************************************/ -/* Cortex-M3 Processor Interruption and Exception Handlers */ -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - while (1) - { - } - /* USER CODE END NonMaskableInt_IRQn 1 */ -} - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_HardFault_IRQn 0 */ - /* USER CODE END W1_HardFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ - /* USER CODE END W1_MemoryManagement_IRQn 0 */ - } -} - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_BusFault_IRQn 0 */ - /* USER CODE END W1_BusFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ - /* USER CODE END W1_UsageFault_IRQn 0 */ - } -} - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - /* USER CODE BEGIN SVCall_IRQn 0 */ - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - /* USER CODE BEGIN DebugMonitor_IRQn 0 */ - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - /* USER CODE BEGIN PendSV_IRQn 0 */ - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - -/******************************************************************************/ -/* STM32F1xx Peripheral Interrupt Handlers */ -/* Add here the Interrupt Handlers for the used peripherals. */ -/* For the available peripheral interrupt handler names, */ -/* please refer to the startup file (startup_stm32f1xx.s). */ -/******************************************************************************/ - -/** - * @brief This function handles USB high priority or CAN TX interrupts. - */ -void USB_HP_CAN1_TX_IRQHandler(void) -{ - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 0 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 1 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 1 */ -} - -/** - * @brief This function handles USB low priority or CAN RX0 interrupts. - */ -void USB_LP_CAN1_RX0_IRQHandler(void) -{ - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ -} - -/** - * @brief This function handles TIM1 update interrupt. - */ -void TIM1_UP_IRQHandler(void) -{ - /* USER CODE BEGIN TIM1_UP_IRQn 0 */ - - /* USER CODE END TIM1_UP_IRQn 0 */ - HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_UP_IRQn 1 */ - - /* USER CODE END TIM1_UP_IRQn 1 */ -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/12/e08e6ae4c57a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/12/e08e6ae4c57a0010102ab5f83d1b4df9 deleted file mode 100644 index 6ee5024..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/12/e08e6ae4c57a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,617 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -ADC_HandleTypeDef hadc1; - -TIM_HandleTypeDef htim1; -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; -TIM_HandleTypeDef htim4; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM4_Init(void); -static void MX_TIM3_Init(void); -static void MX_ADC1_Init(void); -static void MX_TIM1_Init(void); -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ -void HAL_SYSTICK_Callback(void){ - static unsigned char c10ms = 0; -// -// static uint8_t 100ms = 0; -// static uint8_t 1s = 0; -// if (++10ms >= 10) { // 10 ms -// 10ms = 0; -// //flag_10ms = 1; // set a flag; do real work in main loop -// } -} -/* 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_USB_DEVICE_Init(); - MX_TIM2_Init(); - MX_TIM4_Init(); - MX_TIM3_Init(); - MX_ADC1_Init(); - MX_TIM1_Init(); - /* USER CODE BEGIN 2 */ - - - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; - PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief ADC1 Initialization Function - * @param None - * @retval None - */ -static void MX_ADC1_Init(void) -{ - - /* USER CODE BEGIN ADC1_Init 0 */ - - /* USER CODE END ADC1_Init 0 */ - - ADC_ChannelConfTypeDef sConfig = {0}; - - /* USER CODE BEGIN ADC1_Init 1 */ - - /* USER CODE END ADC1_Init 1 */ - - /** Common config - */ - hadc1.Instance = ADC1; - hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; - hadc1.Init.ContinuousConvMode = DISABLE; - hadc1.Init.DiscontinuousConvMode = DISABLE; - hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; - hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 1; - if (HAL_ADC_Init(&hadc1) != HAL_OK) - { - Error_Handler(); - } - - /** Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_4; - sConfig.Rank = ADC_REGULAR_RANK_1; - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN ADC1_Init 2 */ - - /* USER CODE END ADC1_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}; - TIM_OC_InitTypeDef sConfigOC = {0}; - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {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 = 17999; - 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(); - } - if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 2400; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 5500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; - sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; - sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - sBreakDeadTimeConfig.DeadTime = 0; - sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; - sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM1_Init 2 */ - - /* USER CODE END TIM1_Init 2 */ - HAL_TIM_MspPostInit(&htim1); - -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 1000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 2000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 4000; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 0; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 17999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 10000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 11000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 12000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_Init 2 */ - HAL_TIM_MspPostInit(&htim3); - -} - -/** - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 0; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 17999; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 5000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 7000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 8000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} - -/** - * @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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/19/e0e135791d7a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/19/e0e135791d7a00101d5d8357c45e25c3 deleted file mode 100644 index 9cbe213..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/19/e0e135791d7a00101d5d8357c45e25c3 +++ /dev/null @@ -1,4 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=6 -8DF89ED150041C4CBC7CB9A9CAA90856=9888DDB82096C86784993006E161A8DB -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1b/9054fd36117a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1b/9054fd36117a00101d5d8357c45e25c3 deleted file mode 100644 index b54b4d4..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1b/9054fd36117a00101d5d8357c45e25c3 +++ /dev/null @@ -1,356 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -static void MX_TIM2_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - MX_TIM2_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 1800); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END WHILE */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1b/d0f728a01c790010170b9c5237bb316a b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1b/d0f728a01c790010170b9c5237bb316a deleted file mode 100644 index 04a5793..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1b/d0f728a01c790010170b9c5237bb316a +++ /dev/null @@ -1,246 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32f1xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @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 "stm32f1xx_it.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* External variables --------------------------------------------------------*/ -extern PCD_HandleTypeDef hpcd_USB_FS; -extern TIM_HandleTypeDef htim1; -/* USER CODE BEGIN EV */ - -/* USER CODE END EV */ - -/******************************************************************************/ -/* Cortex-M3 Processor Interruption and Exception Handlers */ -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - while (1) - { - } - /* USER CODE END NonMaskableInt_IRQn 1 */ -} - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_HardFault_IRQn 0 */ - /* USER CODE END W1_HardFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ - /* USER CODE END W1_MemoryManagement_IRQn 0 */ - } -} - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_BusFault_IRQn 0 */ - /* USER CODE END W1_BusFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ - /* USER CODE END W1_UsageFault_IRQn 0 */ - } -} - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - /* USER CODE BEGIN SVCall_IRQn 0 */ - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - /* USER CODE BEGIN DebugMonitor_IRQn 0 */ - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - /* USER CODE BEGIN PendSV_IRQn 0 */ - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - -/******************************************************************************/ -/* STM32F1xx Peripheral Interrupt Handlers */ -/* Add here the Interrupt Handlers for the used peripherals. */ -/* For the available peripheral interrupt handler names, */ -/* please refer to the startup file (startup_stm32f1xx.s). */ -/******************************************************************************/ - -/** - * @brief This function handles USB high priority or CAN TX interrupts. - */ -void USB_HP_CAN1_TX_IRQHandler(void) -{ - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 0 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 1 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 1 */ -} - -/** - * @brief This function handles USB low priority or CAN RX0 interrupts. - */ -void USB_LP_CAN1_RX0_IRQHandler(void) -{ - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ -} - -/** - * @brief This function handles TIM1 update interrupt. - */ -void TIM1_UP_IRQHandler(void) -{ - /* USER CODE BEGIN TIM1_UP_IRQn 0 */ - HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); - /* USER CODE END TIM1_UP_IRQn 0 */ - HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_UP_IRQn 1 */ - - /* USER CODE END TIM1_UP_IRQn 1 */ -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1f/f04f62710c7a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1f/f04f62710c7a00101d5d8357c45e25c3 deleted file mode 100644 index 5be9f32..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/1f/f04f62710c7a00101d5d8357c45e25c3 +++ /dev/null @@ -1,352 +0,0 @@ -/* 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 "usb_device.h" -#include "usbd_cdc_if.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -static void MX_TIM2_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - MX_TIM2_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - /* USER CODE END 2 */ - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END 3 */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 0; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/22/008d7917117a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/22/008d7917117a00101d5d8357c45e25c3 deleted file mode 100644 index 0365f56..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/22/008d7917117a00101d5d8357c45e25c3 +++ /dev/null @@ -1,356 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -static void MX_TIM2_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - MX_TIM2_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 1800); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END 3 */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/24/30b9e0ac18790010170b9c5237bb316a b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/24/30b9e0ac18790010170b9c5237bb316a deleted file mode 100644 index a39ad05..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/24/30b9e0ac18790010170b9c5237bb316a +++ /dev/null @@ -1,303 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_cdc_if.c - * @version : v2.0_Cube - * @brief : Usb device for Virtual Com Port. - ****************************************************************************** - * @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 "usbd_cdc_if.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE END PV */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @brief Usb device library. - * @{ - */ - -/** @addtogroup USBD_CDC_IF - * @{ - */ - -/** @defgroup USBD_CDC_IF_Private_TypesDefinitions USBD_CDC_IF_Private_TypesDefinitions - * @brief Private types. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_TYPES */ - -/* USER CODE END PRIVATE_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Defines USBD_CDC_IF_Private_Defines - * @brief Private defines. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_DEFINES */ -/* USER CODE END PRIVATE_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Macros USBD_CDC_IF_Private_Macros - * @brief Private macros. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_MACRO */ - -/* USER CODE END PRIVATE_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Variables USBD_CDC_IF_Private_Variables - * @brief Private variables. - * @{ - */ -/* Create buffer for reception and transmission */ -/* It's up to user to redefine and/or remove those define */ -/** Received data over USB are stored in this buffer */ -uint8_t UserRxBufferFS[APP_RX_DATA_SIZE]; - -/** Data to send over USB CDC are stored in this buffer */ -uint8_t UserTxBufferFS[APP_TX_DATA_SIZE]; - -/* USER CODE BEGIN PRIVATE_VARIABLES */ - -/* USER CODE END PRIVATE_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables - * @brief Public variables. - * @{ - */ - -extern USBD_HandleTypeDef hUsbDeviceFS; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_FunctionPrototypes USBD_CDC_IF_Private_FunctionPrototypes - * @brief Private functions declaration. - * @{ - */ - -static int8_t CDC_Init_FS(void); -static int8_t CDC_DeInit_FS(void); -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length); -static int8_t CDC_Receive_FS(uint8_t* pbuf, uint32_t *Len); - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */ - -/** - * @} - */ - -USBD_CDC_ItfTypeDef USBD_Interface_fops_FS = -{ - CDC_Init_FS, - CDC_DeInit_FS, - CDC_Control_FS, - CDC_Receive_FS -}; - -/* Private functions ---------------------------------------------------------*/ -/** - * @brief Initializes the CDC media low layer over the FS USB IP - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Init_FS(void) -{ - /* USER CODE BEGIN 3 */ - /* Set Application Buffers */ - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); - return (USBD_OK); - /* USER CODE END 3 */ -} - -/** - * @brief DeInitializes the CDC media low layer - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_DeInit_FS(void) -{ - /* USER CODE BEGIN 4 */ - return (USBD_OK); - /* USER CODE END 4 */ -} - -/** - * @brief Manage the CDC class requests - * @param cmd: Command code - * @param pbuf: Buffer containing command data (request parameters) - * @param length: Number of data to be sent (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) -{ - /* USER CODE BEGIN 5 */ - switch(cmd) - { - case CDC_SEND_ENCAPSULATED_COMMAND: - - break; - - case CDC_GET_ENCAPSULATED_RESPONSE: - - break; - - case CDC_SET_COMM_FEATURE: - - break; - - case CDC_GET_COMM_FEATURE: - - break; - - case CDC_CLEAR_COMM_FEATURE: - - break; - - /*******************************************************************************/ - /* Line Coding Structure */ - /*-----------------------------------------------------------------------------*/ - /* Offset | Field | Size | Value | Description */ - /* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/ - /* 4 | bCharFormat | 1 | Number | Stop bits */ - /* 0 - 1 Stop bit */ - /* 1 - 1.5 Stop bits */ - /* 2 - 2 Stop bits */ - /* 5 | bParityType | 1 | Number | Parity */ - /* 0 - None */ - /* 1 - Odd */ - /* 2 - Even */ - /* 3 - Mark */ - /* 4 - Space */ - /* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */ - /*******************************************************************************/ - case CDC_SET_LINE_CODING: - - break; - - case CDC_GET_LINE_CODING: - - break; - - case CDC_SET_CONTROL_LINE_STATE: - - break; - - case CDC_SEND_BREAK: - - break; - - default: - break; - } - - return (USBD_OK); - /* USER CODE END 5 */ -} - -/** - * @brief Data received over USB OUT endpoint are sent over CDC interface - * through this function. - * - * @note - * This function will issue a NAK packet on any OUT packet received on - * USB endpoint until exiting this function. If you exit this function - * before transfer is complete on CDC interface (ie. using DMA controller) - * it will result in receiving more data while previous ones are still - * not sent. - * - * @param Buf: Buffer of data to be received - * @param Len: Number of data received (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) -{ - /* USER CODE BEGIN 6 */ - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); - USBD_CDC_ReceivePacket(&hUsbDeviceFS); - return (USBD_OK); - /* USER CODE END 6 */ -} - -/** - * @brief CDC_Transmit_FS - * Data to send over USB IN endpoint are sent over CDC interface - * through this function. - * @note - * - * - * @param Buf: Buffer of data to be sent - * @param Len: Number of data to be sent (in bytes) - * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY - */ -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) -{ - uint8_t result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); = USBD_OK; - /* USER CODE BEGIN 7 */ - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; - if (hcdc->TxState != 0){ - return USBD_BUSY; - } - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); - result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); - /* USER CODE END 7 */ - return result; -} - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/** - * @} - */ - -/** - * @} - */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/27/70764144187a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/27/70764144187a00101d5d8357c45e25c3 deleted file mode 100644 index a9fb8d9..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/27/70764144187a00101d5d8357c45e25c3 +++ /dev/null @@ -1,270 +0,0 @@ -/* 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" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM2_Init(void); -/* 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_TIM2_Init(); - /* USER CODE BEGIN 2 */ - - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* 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}; - - /** Initializes the RCC Oscillators according to the specified parameters - * in the RCC_OscInitTypeDef structure. - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; - 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_HSI; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 1800; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 2000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 5000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief GPIO Initialization Function - * @param None - * @retval None - */ -static void MX_GPIO_Init(void) -{ - /* USER CODE BEGIN MX_GPIO_Init_1 */ - - /* USER CODE END MX_GPIO_Init_1 */ - - /* GPIO Ports Clock Enable */ - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/3/608b2195197a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/3/608b2195197a00101d5d8357c45e25c3 deleted file mode 100644 index 94972ec..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/3/608b2195197a00101d5d8357c45e25c3 +++ /dev/null @@ -1,4 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=2 -8DF89ED150041C4CBC7CB9A9CAA90856=9888DDB82096C86784993006E161A8DB -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/32/201fa704c67a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/32/201fa704c67a0010102ab5f83d1b4df9 deleted file mode 100644 index 78baa48..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/32/201fa704c67a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,617 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -ADC_HandleTypeDef hadc1; - -TIM_HandleTypeDef htim1; -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; -TIM_HandleTypeDef htim4; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM4_Init(void); -static void MX_TIM3_Init(void); -static void MX_ADC1_Init(void); -static void MX_TIM1_Init(void); -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ -void HAL_SYSTICK_Callback(void){ - static unsigned char c10ms = 0; - - static uint8_t c100ms = 0; - static uint8_t c1s = 0; - if (++c10ms >= 10) { // 10 ms - c10ms = 0; - //flag_10ms = 1; // set a flag; do real work in main loop - } -} -/* 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_USB_DEVICE_Init(); - MX_TIM2_Init(); - MX_TIM4_Init(); - MX_TIM3_Init(); - MX_ADC1_Init(); - MX_TIM1_Init(); - /* USER CODE BEGIN 2 */ - - - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; - PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief ADC1 Initialization Function - * @param None - * @retval None - */ -static void MX_ADC1_Init(void) -{ - - /* USER CODE BEGIN ADC1_Init 0 */ - - /* USER CODE END ADC1_Init 0 */ - - ADC_ChannelConfTypeDef sConfig = {0}; - - /* USER CODE BEGIN ADC1_Init 1 */ - - /* USER CODE END ADC1_Init 1 */ - - /** Common config - */ - hadc1.Instance = ADC1; - hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; - hadc1.Init.ContinuousConvMode = DISABLE; - hadc1.Init.DiscontinuousConvMode = DISABLE; - hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; - hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 1; - if (HAL_ADC_Init(&hadc1) != HAL_OK) - { - Error_Handler(); - } - - /** Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_4; - sConfig.Rank = ADC_REGULAR_RANK_1; - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN ADC1_Init 2 */ - - /* USER CODE END ADC1_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}; - TIM_OC_InitTypeDef sConfigOC = {0}; - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {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 = 17999; - 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(); - } - if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 2400; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 5500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; - sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; - sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - sBreakDeadTimeConfig.DeadTime = 0; - sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; - sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM1_Init 2 */ - - /* USER CODE END TIM1_Init 2 */ - HAL_TIM_MspPostInit(&htim1); - -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 1000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 2000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 4000; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 0; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 17999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 10000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 11000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 12000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_Init 2 */ - HAL_TIM_MspPostInit(&htim3); - -} - -/** - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 0; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 17999; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 5000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 7000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 8000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} - -/** - * @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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/34/80564e66ef7900101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/34/80564e66ef7900101d5d8357c45e25c3 deleted file mode 100644 index 03589ca..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/34/80564e66ef7900101d5d8357c45e25c3 +++ /dev/null @@ -1,265 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim1); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/37/a03d2ccdc57a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/37/a03d2ccdc57a0010102ab5f83d1b4df9 deleted file mode 100644 index 60f3a70..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/37/a03d2ccdc57a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,617 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -ADC_HandleTypeDef hadc1; - -TIM_HandleTypeDef htim1; -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; -TIM_HandleTypeDef htim4; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM4_Init(void); -static void MX_TIM3_Init(void); -static void MX_ADC1_Init(void); -static void MX_TIM1_Init(void); -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ -void HAL_SYSTICK_Callback(void){ - static uint8_t 10ms = 0; -// -// static uint8_t 100ms = 0; -// static uint8_t 1s = 0; -// if (++10ms >= 10) { // 10 ms -// 10ms = 0; -// //flag_10ms = 1; // set a flag; do real work in main loop -// } -} -/* 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_USB_DEVICE_Init(); - MX_TIM2_Init(); - MX_TIM4_Init(); - MX_TIM3_Init(); - MX_ADC1_Init(); - MX_TIM1_Init(); - /* USER CODE BEGIN 2 */ - - - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; - PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief ADC1 Initialization Function - * @param None - * @retval None - */ -static void MX_ADC1_Init(void) -{ - - /* USER CODE BEGIN ADC1_Init 0 */ - - /* USER CODE END ADC1_Init 0 */ - - ADC_ChannelConfTypeDef sConfig = {0}; - - /* USER CODE BEGIN ADC1_Init 1 */ - - /* USER CODE END ADC1_Init 1 */ - - /** Common config - */ - hadc1.Instance = ADC1; - hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; - hadc1.Init.ContinuousConvMode = DISABLE; - hadc1.Init.DiscontinuousConvMode = DISABLE; - hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; - hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 1; - if (HAL_ADC_Init(&hadc1) != HAL_OK) - { - Error_Handler(); - } - - /** Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_4; - sConfig.Rank = ADC_REGULAR_RANK_1; - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN ADC1_Init 2 */ - - /* USER CODE END ADC1_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}; - TIM_OC_InitTypeDef sConfigOC = {0}; - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {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 = 17999; - 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(); - } - if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 2400; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 5500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; - sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; - sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - sBreakDeadTimeConfig.DeadTime = 0; - sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; - sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM1_Init 2 */ - - /* USER CODE END TIM1_Init 2 */ - HAL_TIM_MspPostInit(&htim1); - -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 1000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 2000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 4000; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 0; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 17999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 10000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 11000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 12000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_Init 2 */ - HAL_TIM_MspPostInit(&htim3); - -} - -/** - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 0; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 17999; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 5000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 7000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 8000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} - -/** - * @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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/3b/1004aac7177a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/3b/1004aac7177a00101d5d8357c45e25c3 deleted file mode 100644 index 9719ce2..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/3b/1004aac7177a00101d5d8357c45e25c3 +++ /dev/null @@ -1,2 +0,0 @@ -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/3b/903f1566b77900101184ce6eca06d082 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/3b/903f1566b77900101184ce6eca06d082 deleted file mode 100644 index 3922cee..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/3b/903f1566b77900101184ce6eca06d082 +++ /dev/null @@ -1,247 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32f1xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @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 "stm32f1xx_it.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* External variables --------------------------------------------------------*/ -extern PCD_HandleTypeDef hpcd_USB_FS; -extern TIM_HandleTypeDef htim1; -/* USER CODE BEGIN EV */ - -/* USER CODE END EV */ - -/******************************************************************************/ -/* Cortex-M3 Processor Interruption and Exception Handlers */ -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - while (1) - { - } - /* USER CODE END NonMaskableInt_IRQn 1 */ -} - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_HardFault_IRQn 0 */ - /* USER CODE END W1_HardFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ - /* USER CODE END W1_MemoryManagement_IRQn 0 */ - } -} - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_BusFault_IRQn 0 */ - /* USER CODE END W1_BusFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ - /* USER CODE END W1_UsageFault_IRQn 0 */ - } -} - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - /* USER CODE BEGIN SVCall_IRQn 0 */ - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - /* USER CODE BEGIN DebugMonitor_IRQn 0 */ - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - /* USER CODE BEGIN PendSV_IRQn 0 */ - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - -/******************************************************************************/ -/* STM32F1xx Peripheral Interrupt Handlers */ -/* Add here the Interrupt Handlers for the used peripherals. */ -/* For the available peripheral interrupt handler names, */ -/* please refer to the startup file (startup_stm32f1xx.s). */ -/******************************************************************************/ - -/** - * @brief This function handles USB high priority or CAN TX interrupts. - */ -void USB_HP_CAN1_TX_IRQHandler(void) -{ - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 0 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 1 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 1 */ -} - -/** - * @brief This function handles USB low priority or CAN RX0 interrupts. - */ -void USB_LP_CAN1_RX0_IRQHandler(void) -{ - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ -} - -/** - * @brief This function handles TIM1 update interrupt. - */ -void TIM1_UP_IRQHandler(void) -{ - /* USER CODE BEGIN TIM1_UP_IRQn 0 */ - HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); - //HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); - /* USER CODE END TIM1_UP_IRQn 0 */ - HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_UP_IRQn 1 */ -// - /* USER CODE END TIM1_UP_IRQn 1 */ -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/40/401bbf82fb7900101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/40/401bbf82fb7900101d5d8357c45e25c3 deleted file mode 100644 index 68b98fd..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/40/401bbf82fb7900101d5d8357c45e25c3 +++ /dev/null @@ -1,277 +0,0 @@ -/* 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 "usb_device.h" -#include "usbd_cdc_if.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - /* USER CODE END 2 */ - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - char s[100]; - sprintf(s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 4) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END 3 */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/42/70d65f11b87a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/42/70d65f11b87a0010102ab5f83d1b4df9 deleted file mode 100644 index dd7a2e5..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/42/70d65f11b87a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,559 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -ADC_HandleTypeDef hadc1; - -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; -TIM_HandleTypeDef htim4; - -UART_HandleTypeDef huart3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM4_Init(void); -static void MX_TIM3_Init(void); -static void MX_ADC1_Init(void); -static void MX_USART3_UART_Init(void); -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ -static void Force_TIM_GPIO_AFPP(void) -{ - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - __HAL_RCC_AFIO_CLK_ENABLE(); - - // Ensure TIM2 stays on PA0..PA3 (no remap) - __HAL_AFIO_REMAP_TIM2_DISABLE(); - - GPIO_InitTypeDef g = {0}; - g.Mode = GPIO_MODE_AF_PP; - g.Speed = GPIO_SPEED_FREQ_HIGH; - - // TIM2 CH1..4 = PA0..PA3 - g.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3; - HAL_GPIO_Init(GPIOA, &g); - - // TIM4 CH1..4 = PB6..PB9 (no remap on F103C8) - g.Pin = GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9; - HAL_GPIO_Init(GPIOB, &g); -} - -/* 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_TIM2_Init(); - MX_TIM4_Init(); - MX_TIM3_Init(); - MX_ADC1_Init(); - MX_USART3_UART_Init(); - MX_USB_DEVICE_Init(); - /* USER CODE BEGIN 2 */ - //Force_TIM_GPIO_AFPP(); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); - HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; - PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief ADC1 Initialization Function - * @param None - * @retval None - */ -static void MX_ADC1_Init(void) -{ - - /* USER CODE BEGIN ADC1_Init 0 */ - - /* USER CODE END ADC1_Init 0 */ - - ADC_ChannelConfTypeDef sConfig = {0}; - - /* USER CODE BEGIN ADC1_Init 1 */ - - /* USER CODE END ADC1_Init 1 */ - - /** Common config - */ - hadc1.Instance = ADC1; - hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; - hadc1.Init.ContinuousConvMode = DISABLE; - hadc1.Init.DiscontinuousConvMode = DISABLE; - hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; - hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 1; - if (HAL_ADC_Init(&hadc1) != HAL_OK) - { - Error_Handler(); - } - - /** Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_4; - sConfig.Rank = ADC_REGULAR_RANK_1; - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN ADC1_Init 2 */ - - /* USER CODE END ADC1_Init 2 */ - -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 71; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 249; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 180; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 200; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 25; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 50; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 0; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 17999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 2000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 5000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 7000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_Init 2 */ - HAL_TIM_MspPostInit(&htim3); - -} - -/** - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 0; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 17999; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 7000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 10000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 12000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} - -/** - * @brief USART3 Initialization Function - * @param None - * @retval None - */ -static void MX_USART3_UART_Init(void) -{ - - /* USER CODE BEGIN USART3_Init 0 */ - - /* USER CODE END USART3_Init 0 */ - - /* USER CODE BEGIN USART3_Init 1 */ - - /* USER CODE END USART3_Init 1 */ - huart3.Instance = USART3; - huart3.Init.BaudRate = 115200; - huart3.Init.WordLength = UART_WORDLENGTH_8B; - huart3.Init.StopBits = UART_STOPBITS_1; - huart3.Init.Parity = UART_PARITY_NONE; - huart3.Init.Mode = UART_MODE_TX_RX; - huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; - huart3.Init.OverSampling = UART_OVERSAMPLING_16; - if (HAL_UART_Init(&huart3) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN USART3_Init 2 */ - - /* USER CODE END USART3_Init 2 */ - -} - -/** - * @brief GPIO Initialization Function - * @param None - * @retval None - */ -static void MX_GPIO_Init(void) -{ - /* USER CODE BEGIN MX_GPIO_Init_1 */ - - /* USER CODE END MX_GPIO_Init_1 */ - - /* GPIO Ports Clock Enable */ - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/42/90723d53007a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/42/90723d53007a00101d5d8357c45e25c3 deleted file mode 100644 index ee4dfdb..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/42/90723d53007a00101d5d8357c45e25c3 +++ /dev/null @@ -1,339 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -static void MX_TIM2_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - MX_TIM2_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 0; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/44/00942c65097a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/44/00942c65097a00101d5d8357c45e25c3 deleted file mode 100644 index 2934212..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/44/00942c65097a00101d5d8357c45e25c3 +++ /dev/null @@ -1,277 +0,0 @@ -/* 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 "usb_device.h" -#include "usbd_cdc_if.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - /* USER CODE END 2 */ - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 1800); - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END 3 */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/45/60aaee8dc57a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/45/60aaee8dc57a0010102ab5f83d1b4df9 deleted file mode 100644 index 44f2b04..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/45/60aaee8dc57a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,217 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32f1xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @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 "stm32f1xx_it.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* External variables --------------------------------------------------------*/ -extern PCD_HandleTypeDef hpcd_USB_FS; -/* USER CODE BEGIN EV */ - -/* USER CODE END EV */ - -/******************************************************************************/ -/* Cortex-M3 Processor Interruption and Exception Handlers */ -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - while (1) - { - } - /* USER CODE END NonMaskableInt_IRQn 1 */ -} - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_HardFault_IRQn 0 */ - /* USER CODE END W1_HardFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ - /* USER CODE END W1_MemoryManagement_IRQn 0 */ - } -} - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_BusFault_IRQn 0 */ - /* USER CODE END W1_BusFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ - /* USER CODE END W1_UsageFault_IRQn 0 */ - } -} - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - /* USER CODE BEGIN SVCall_IRQn 0 */ - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - /* USER CODE BEGIN DebugMonitor_IRQn 0 */ - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - /* USER CODE BEGIN PendSV_IRQn 0 */ - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - -/******************************************************************************/ -/* STM32F1xx Peripheral Interrupt Handlers */ -/* Add here the Interrupt Handlers for the used peripherals. */ -/* For the available peripheral interrupt handler names, */ -/* please refer to the startup file (startup_stm32f1xx.s). */ -/******************************************************************************/ - -/** - * @brief This function handles USB low priority or CAN RX0 interrupts. - */ -void USB_LP_CAN1_RX0_IRQHandler(void) -{ - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/49/200f62a2f17900101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/49/200f62a2f17900101d5d8357c45e25c3 deleted file mode 100644 index 3f555d2..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/49/200f62a2f17900101d5d8357c45e25c3 +++ /dev/null @@ -1,264 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - HAL_Delay(1000); - CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END 3 */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4a/909b53a8bb7a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4a/909b53a8bb7a0010102ab5f83d1b4df9 deleted file mode 100644 index 179fa1f..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4a/909b53a8bb7a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,3 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=0 -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4c/505def3fbb7a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4c/505def3fbb7a0010102ab5f83d1b4df9 deleted file mode 100644 index 9719ce2..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4c/505def3fbb7a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,2 +0,0 @@ -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4c/90888eb7bb7a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4c/90888eb7bb7a0010102ab5f83d1b4df9 deleted file mode 100644 index 91cb9ca..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4c/90888eb7bb7a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,3 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=1 -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4f/8036bb67fb7900101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4f/8036bb67fb7900101d5d8357c45e25c3 deleted file mode 100644 index 5503165..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/4f/8036bb67fb7900101d5d8357c45e25c3 +++ /dev/null @@ -1,264 +0,0 @@ -/* 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 "usb_device.h" -#include "usbd_cdc_if.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - /* USER CODE END 2 */ - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - HAL_Delay(1000); - CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END 3 */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/51/70dca0320a7a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/51/70dca0320a7a00101d5d8357c45e25c3 deleted file mode 100644 index 6550a2f..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/51/70dca0320a7a00101d5d8357c45e25c3 +++ /dev/null @@ -1,330 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_cdc_if.c - * @version : v2.0_Cube - * @brief : Usb device for Virtual Com Port. - ****************************************************************************** - * @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 "usbd_cdc_if.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE END PV */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @brief Usb device library. - * @{ - */ - -/** @addtogroup USBD_CDC_IF - * @{ - */ - -/** @defgroup USBD_CDC_IF_Private_TypesDefinitions USBD_CDC_IF_Private_TypesDefinitions - * @brief Private types. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_TYPES */ - -/* USER CODE END PRIVATE_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Defines USBD_CDC_IF_Private_Defines - * @brief Private defines. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_DEFINES */ -/* USER CODE END PRIVATE_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Macros USBD_CDC_IF_Private_Macros - * @brief Private macros. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_MACRO */ - -/* USER CODE END PRIVATE_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Variables USBD_CDC_IF_Private_Variables - * @brief Private variables. - * @{ - */ -/* Create buffer for reception and transmission */ -/* It's up to user to redefine and/or remove those define */ -/** Received data over USB are stored in this buffer */ -uint8_t UserRxBufferFS[APP_RX_DATA_SIZE]; - -/** Data to send over USB CDC are stored in this buffer */ -uint8_t UserTxBufferFS[APP_TX_DATA_SIZE]; - -/* USER CODE BEGIN PRIVATE_VARIABLES */ - -/* USER CODE END PRIVATE_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables - * @brief Public variables. - * @{ - */ - -extern USBD_HandleTypeDef hUsbDeviceFS; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_FunctionPrototypes USBD_CDC_IF_Private_FunctionPrototypes - * @brief Private functions declaration. - * @{ - */ - -static int8_t CDC_Init_FS(void); -static int8_t CDC_DeInit_FS(void); -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length); -static int8_t CDC_Receive_FS(uint8_t* pbuf, uint32_t *Len); - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ -#define RX_FIFO_SZ 256 -static uint8_t rx_fifo[RX_FIFO_SZ]; -static volatile uint16_t rx_head = 0, rx_tail = 0; - -static void fifo_push(const uint8_t* data, uint32_t len) { - while (len--) { - uint16_t next = (rx_head + 1u) & (RX_FIFO_SZ - 1u); - if (next == (rx_tail & (RX_FIFO_SZ - 1u))) { - /* overflow — drop byte (or set a flag) */ - data++; - continue; - } - rx_fifo[rx_head & (RX_FIFO_SZ - 1u)] = *data++; - rx_head = next; - } -} - -uint32_t CDC_Available(void) { - return (uint16_t)((rx_head - rx_tail) & (RX_FIFO_SZ - 1u)); -} - -int CDC_ReadByte(void) { - if (rx_tail == rx_head) return -1; - int b = rx_fifo[rx_tail & (RX_FIFO_SZ - 1u)]; - rx_tail = (rx_tail + 1u) & (RX_FIFO_SZ - 1u); - return b; -} - -/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */ - -/** - * @} - */ - -USBD_CDC_ItfTypeDef USBD_Interface_fops_FS = -{ - CDC_Init_FS, - CDC_DeInit_FS, - CDC_Control_FS, - CDC_Receive_FS -}; - -/* Private functions ---------------------------------------------------------*/ -/** - * @brief Initializes the CDC media low layer over the FS USB IP - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Init_FS(void) -{ - /* USER CODE BEGIN 3 */ - /* Set Application Buffers */ - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); - return (USBD_OK); - /* USER CODE END 3 */ -} - -/** - * @brief DeInitializes the CDC media low layer - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_DeInit_FS(void) -{ - /* USER CODE BEGIN 4 */ - return (USBD_OK); - /* USER CODE END 4 */ -} - -/** - * @brief Manage the CDC class requests - * @param cmd: Command code - * @param pbuf: Buffer containing command data (request parameters) - * @param length: Number of data to be sent (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) -{ - /* USER CODE BEGIN 5 */ - switch(cmd) - { - case CDC_SEND_ENCAPSULATED_COMMAND: - - break; - - case CDC_GET_ENCAPSULATED_RESPONSE: - - break; - - case CDC_SET_COMM_FEATURE: - - break; - - case CDC_GET_COMM_FEATURE: - - break; - - case CDC_CLEAR_COMM_FEATURE: - - break; - - /*******************************************************************************/ - /* Line Coding Structure */ - /*-----------------------------------------------------------------------------*/ - /* Offset | Field | Size | Value | Description */ - /* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/ - /* 4 | bCharFormat | 1 | Number | Stop bits */ - /* 0 - 1 Stop bit */ - /* 1 - 1.5 Stop bits */ - /* 2 - 2 Stop bits */ - /* 5 | bParityType | 1 | Number | Parity */ - /* 0 - None */ - /* 1 - Odd */ - /* 2 - Even */ - /* 3 - Mark */ - /* 4 - Space */ - /* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */ - /*******************************************************************************/ - case CDC_SET_LINE_CODING: - - break; - - case CDC_GET_LINE_CODING: - - break; - - case CDC_SET_CONTROL_LINE_STATE: - - break; - - case CDC_SEND_BREAK: - - break; - - default: - break; - } - - return (USBD_OK); - /* USER CODE END 5 */ -} - -/** - * @brief Data received over USB OUT endpoint are sent over CDC interface - * through this function. - * - * @note - * This function will issue a NAK packet on any OUT packet received on - * USB endpoint until exiting this function. If you exit this function - * before transfer is complete on CDC interface (ie. using DMA controller) - * it will result in receiving more data while previous ones are still - * not sent. - * - * @param Buf: Buffer of data to be received - * @param Len: Number of data received (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) -{ - /* USER CODE BEGIN 6 */ - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); - USBD_CDC_ReceivePacket(&hUsbDeviceFS); - return (USBD_OK); - /* USER CODE END 6 */ -} - -/** - * @brief CDC_Transmit_FS - * Data to send over USB IN endpoint are sent over CDC interface - * through this function. - * @note - * - * - * @param Buf: Buffer of data to be sent - * @param Len: Number of data to be sent (in bytes) - * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY - */ -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) -{ - uint8_t result = USBD_OK; - /* USER CODE BEGIN 7 */ - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; - if (hcdc->TxState != 0){ - return USBD_BUSY; - } - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); - result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); - /* USER CODE END 7 */ - return result; -} - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/** - * @} - */ - -/** - * @} - */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/51/d068e88dc57a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/51/d068e88dc57a0010102ab5f83d1b4df9 deleted file mode 100644 index de21bd1..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/51/d068e88dc57a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,608 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -ADC_HandleTypeDef hadc1; - -TIM_HandleTypeDef htim1; -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; -TIM_HandleTypeDef htim4; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM4_Init(void); -static void MX_TIM3_Init(void); -static void MX_ADC1_Init(void); -static void MX_TIM1_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM2_Init(); - MX_TIM4_Init(); - MX_TIM3_Init(); - MX_ADC1_Init(); - MX_TIM1_Init(); - /* USER CODE BEGIN 2 */ - - - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; - PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief ADC1 Initialization Function - * @param None - * @retval None - */ -static void MX_ADC1_Init(void) -{ - - /* USER CODE BEGIN ADC1_Init 0 */ - - /* USER CODE END ADC1_Init 0 */ - - ADC_ChannelConfTypeDef sConfig = {0}; - - /* USER CODE BEGIN ADC1_Init 1 */ - - /* USER CODE END ADC1_Init 1 */ - - /** Common config - */ - hadc1.Instance = ADC1; - hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; - hadc1.Init.ContinuousConvMode = DISABLE; - hadc1.Init.DiscontinuousConvMode = DISABLE; - hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; - hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 1; - if (HAL_ADC_Init(&hadc1) != HAL_OK) - { - Error_Handler(); - } - - /** Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_4; - sConfig.Rank = ADC_REGULAR_RANK_1; - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN ADC1_Init 2 */ - - /* USER CODE END ADC1_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}; - TIM_OC_InitTypeDef sConfigOC = {0}; - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {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 = 17999; - 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(); - } - if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 2400; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 5500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; - sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; - sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - sBreakDeadTimeConfig.DeadTime = 0; - sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; - sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM1_Init 2 */ - - /* USER CODE END TIM1_Init 2 */ - HAL_TIM_MspPostInit(&htim1); - -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 1000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 2000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 4000; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 0; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 17999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 10000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 11000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 12000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_Init 2 */ - HAL_TIM_MspPostInit(&htim3); - -} - -/** - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 0; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 17999; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 5000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 7000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 8000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} - -/** - * @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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/53/405d2976b17900101184ce6eca06d082 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/53/405d2976b17900101184ce6eca06d082 deleted file mode 100644 index 179fa1f..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/53/405d2976b17900101184ce6eca06d082 +++ /dev/null @@ -1,3 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=0 -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/57/40cdb25bd67a00101a7e8e8124d02ecc b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/57/40cdb25bd67a00101a7e8e8124d02ecc deleted file mode 100644 index 9719ce2..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/57/40cdb25bd67a00101a7e8e8124d02ecc +++ /dev/null @@ -1,2 +0,0 @@ -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/58/b0873cb3b77900101184ce6eca06d082 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/58/b0873cb3b77900101184ce6eca06d082 deleted file mode 100644 index 8c98fce..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/58/b0873cb3b77900101184ce6eca06d082 +++ /dev/null @@ -1,255 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32f1xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @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 "stm32f1xx_it.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* External variables --------------------------------------------------------*/ -extern PCD_HandleTypeDef hpcd_USB_FS; -extern TIM_HandleTypeDef htim1; -/* USER CODE BEGIN EV */ - -/* USER CODE END EV */ - -/******************************************************************************/ -/* Cortex-M3 Processor Interruption and Exception Handlers */ -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - while (1) - { - } - /* USER CODE END NonMaskableInt_IRQn 1 */ -} - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_HardFault_IRQn 0 */ - /* USER CODE END W1_HardFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ - /* USER CODE END W1_MemoryManagement_IRQn 0 */ - } -} - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_BusFault_IRQn 0 */ - /* USER CODE END W1_BusFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ - /* USER CODE END W1_UsageFault_IRQn 0 */ - } -} - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - /* USER CODE BEGIN SVCall_IRQn 0 */ - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - /* USER CODE BEGIN DebugMonitor_IRQn 0 */ - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - /* USER CODE BEGIN PendSV_IRQn 0 */ - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - -/******************************************************************************/ -/* STM32F1xx Peripheral Interrupt Handlers */ -/* Add here the Interrupt Handlers for the used peripherals. */ -/* For the available peripheral interrupt handler names, */ -/* please refer to the startup file (startup_stm32f1xx.s). */ -/******************************************************************************/ - -/** - * @brief This function handles USB high priority or CAN TX interrupts. - */ -void USB_HP_CAN1_TX_IRQHandler(void) -{ - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 0 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 1 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 1 */ -} - -/** - * @brief This function handles USB low priority or CAN RX0 interrupts. - */ -void USB_LP_CAN1_RX0_IRQHandler(void) -{ - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ -} - -/** - * @brief This function handles TIM1 update interrupt. - */ -void TIM1_UP_IRQHandler(void) -{ - static uint8_t cont100ms=0; - static uint8_t cont1s=0; - if(cont100ms)cont100ms--; - else{ - /* USER CODE BEGIN TIM1_UP_IRQn 0 */ - if(cont1s)cont1s--; - else{ - HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); - } - //HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); - /* USER CODE END TIM1_UP_IRQn 0 */ - } - HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_UP_IRQn 1 */ -// - /* USER CODE END TIM1_UP_IRQn 1 */ -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/59/70f72802107a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/59/70f72802107a00101d5d8357c45e25c3 deleted file mode 100644 index 81182ec..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/59/70f72802107a00101d5d8357c45e25c3 +++ /dev/null @@ -1,354 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -static void MX_TIM2_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - MX_TIM2_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - /* USER CODE END 2 */ - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 1800); - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END 3 */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 0; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/5a/802130c4c57a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/5a/802130c4c57a0010102ab5f83d1b4df9 deleted file mode 100644 index 087debc..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/5a/802130c4c57a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,617 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -ADC_HandleTypeDef hadc1; - -TIM_HandleTypeDef htim1; -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; -TIM_HandleTypeDef htim4; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM4_Init(void); -static void MX_TIM3_Init(void); -static void MX_ADC1_Init(void); -static void MX_TIM1_Init(void); -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ -void HAL_SYSTICK_Callback(void){ -// static unsigned char 10ms = 0; -// -// static uint8_t 100ms = 0; -// static uint8_t 1s = 0; -// if (++10ms >= 10) { // 10 ms -// 10ms = 0; -// //flag_10ms = 1; // set a flag; do real work in main loop -// } -} -/* 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_USB_DEVICE_Init(); - MX_TIM2_Init(); - MX_TIM4_Init(); - MX_TIM3_Init(); - MX_ADC1_Init(); - MX_TIM1_Init(); - /* USER CODE BEGIN 2 */ - - - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; - PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief ADC1 Initialization Function - * @param None - * @retval None - */ -static void MX_ADC1_Init(void) -{ - - /* USER CODE BEGIN ADC1_Init 0 */ - - /* USER CODE END ADC1_Init 0 */ - - ADC_ChannelConfTypeDef sConfig = {0}; - - /* USER CODE BEGIN ADC1_Init 1 */ - - /* USER CODE END ADC1_Init 1 */ - - /** Common config - */ - hadc1.Instance = ADC1; - hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; - hadc1.Init.ContinuousConvMode = DISABLE; - hadc1.Init.DiscontinuousConvMode = DISABLE; - hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; - hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 1; - if (HAL_ADC_Init(&hadc1) != HAL_OK) - { - Error_Handler(); - } - - /** Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_4; - sConfig.Rank = ADC_REGULAR_RANK_1; - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN ADC1_Init 2 */ - - /* USER CODE END ADC1_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}; - TIM_OC_InitTypeDef sConfigOC = {0}; - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {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 = 17999; - 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(); - } - if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 2400; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 5500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; - sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; - sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - sBreakDeadTimeConfig.DeadTime = 0; - sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; - sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM1_Init 2 */ - - /* USER CODE END TIM1_Init 2 */ - HAL_TIM_MspPostInit(&htim1); - -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 1000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 2000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 4000; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 0; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 17999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 10000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 11000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 12000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_Init 2 */ - HAL_TIM_MspPostInit(&htim3); - -} - -/** - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 0; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 17999; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 5000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 7000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 8000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} - -/** - * @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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/5e/d06e2a7fd77a00101a7e8e8124d02ecc b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/5e/d06e2a7fd77a00101a7e8e8124d02ecc deleted file mode 100644 index ce1a005..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/5e/d06e2a7fd77a00101a7e8e8124d02ecc +++ /dev/null @@ -1,4 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=1 -8DF89ED150041C4CBC7CB9A9CAA90856=9888DDB82096C86784993006E161A8DB -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/60/e0793035bb7900101184ce6eca06d082 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/60/e0793035bb7900101184ce6eca06d082 deleted file mode 100644 index 4c72276..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/60/e0793035bb7900101184ce6eca06d082 +++ /dev/null @@ -1,228 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32f1xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @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 "stm32f1xx_it.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* External variables --------------------------------------------------------*/ -extern TIM_HandleTypeDef htim1; -/* USER CODE BEGIN EV */ - -/* USER CODE END EV */ - -/******************************************************************************/ -/* Cortex-M3 Processor Interruption and Exception Handlers */ -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - while (1) - { - } - /* USER CODE END NonMaskableInt_IRQn 1 */ -} - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_HardFault_IRQn 0 */ - /* USER CODE END W1_HardFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ - /* USER CODE END W1_MemoryManagement_IRQn 0 */ - } -} - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_BusFault_IRQn 0 */ - /* USER CODE END W1_BusFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ - /* USER CODE END W1_UsageFault_IRQn 0 */ - } -} - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - /* USER CODE BEGIN SVCall_IRQn 0 */ - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - /* USER CODE BEGIN DebugMonitor_IRQn 0 */ - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - /* USER CODE BEGIN PendSV_IRQn 0 */ - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - -/******************************************************************************/ -/* STM32F1xx Peripheral Interrupt Handlers */ -/* Add here the Interrupt Handlers for the used peripherals. */ -/* For the available peripheral interrupt handler names, */ -/* please refer to the startup file (startup_stm32f1xx.s). */ -/******************************************************************************/ - -/** - * @brief This function handles TIM1 update interrupt. - */ -void TIM1_UP_IRQHandler(void) -{ - /* USER CODE BEGIN TIM1_UP_IRQn 0 */ - static uint8_t cont100ms=0; - static uint8_t cont1s=0; - /* USER CODE END TIM1_UP_IRQn 0 */ - HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_UP_IRQn 1 */ - if(cont100ms)cont100ms--; - else{ - cont100ms=10; - if(cont1s)cont1s--; - else{ - cont1s=10; - HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); - } - //HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); -/* USER CODE END TIM1_UP_IRQn 0 */ - } - /* USER CODE END TIM1_UP_IRQn 1 */ -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/61/409b59f3c47a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/61/409b59f3c47a0010102ab5f83d1b4df9 deleted file mode 100644 index 716cfba..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/61/409b59f3c47a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,608 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -ADC_HandleTypeDef hadc1; - -TIM_HandleTypeDef htim1; -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; -TIM_HandleTypeDef htim4; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM4_Init(void); -static void MX_TIM3_Init(void); -static void MX_ADC1_Init(void); -static void MX_TIM1_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM2_Init(); - MX_TIM4_Init(); - MX_TIM3_Init(); - MX_ADC1_Init(); - MX_TIM1_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim1); - - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; - PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief ADC1 Initialization Function - * @param None - * @retval None - */ -static void MX_ADC1_Init(void) -{ - - /* USER CODE BEGIN ADC1_Init 0 */ - - /* USER CODE END ADC1_Init 0 */ - - ADC_ChannelConfTypeDef sConfig = {0}; - - /* USER CODE BEGIN ADC1_Init 1 */ - - /* USER CODE END ADC1_Init 1 */ - - /** Common config - */ - hadc1.Instance = ADC1; - hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; - hadc1.Init.ContinuousConvMode = DISABLE; - hadc1.Init.DiscontinuousConvMode = DISABLE; - hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; - hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 1; - if (HAL_ADC_Init(&hadc1) != HAL_OK) - { - Error_Handler(); - } - - /** Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_4; - sConfig.Rank = ADC_REGULAR_RANK_1; - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN ADC1_Init 2 */ - - /* USER CODE END ADC1_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}; - TIM_OC_InitTypeDef sConfigOC = {0}; - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {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 = 17999; - 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(); - } - if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 2400; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 5500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; - sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; - sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - sBreakDeadTimeConfig.DeadTime = 0; - sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; - sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM1_Init 2 */ - - /* USER CODE END TIM1_Init 2 */ - HAL_TIM_MspPostInit(&htim1); - -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 1000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 2000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 4000; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 0; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 17999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 10000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 11000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 12000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_Init 2 */ - HAL_TIM_MspPostInit(&htim3); - -} - -/** - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 0; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 17999; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 5000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 7000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 8000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} - -/** - * @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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/63/d0f4c47dfa7900101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/63/d0f4c47dfa7900101d5d8357c45e25c3 deleted file mode 100644 index 5a1847c..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/63/d0f4c47dfa7900101d5d8357c45e25c3 +++ /dev/null @@ -1,132 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_cdc_if.h - * @version : v2.0_Cube - * @brief : Header for usbd_cdc_if.c file. - ****************************************************************************** - * @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 */ - -/* Define to prevent recursive inclusion -------------------------------------*/ - -#ifndef __USBD_CDC_IF_H__ -#define __USBD_CDC_IF_H__ - -#ifdef __cplusplus - extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "usbd_cdc.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @brief For Usb device. - * @{ - */ - -/** @defgroup USBD_CDC_IF USBD_CDC_IF - * @brief Usb VCP device module - * @{ - */ - -/** @defgroup USBD_CDC_IF_Exported_Defines USBD_CDC_IF_Exported_Defines - * @brief Defines. - * @{ - */ -/* Define size for the receive and transmit buffer over CDC */ -#define APP_RX_DATA_SIZE 1024 -#define APP_TX_DATA_SIZE 1024 -/* USER CODE BEGIN EXPORTED_DEFINES */ - -/* USER CODE END EXPORTED_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Types USBD_CDC_IF_Exported_Types - * @brief Types. - * @{ - */ - -/* USER CODE BEGIN EXPORTED_TYPES */ - -/* USER CODE END EXPORTED_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Macros USBD_CDC_IF_Exported_Macros - * @brief Aliases. - * @{ - */ - -/* USER CODE BEGIN EXPORTED_MACRO */ - -/* USER CODE END EXPORTED_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables - * @brief Public variables. - * @{ - */ - -/** CDC Interface callback. */ -extern USBD_CDC_ItfTypeDef USBD_Interface_fops_FS; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_FunctionsPrototype USBD_CDC_IF_Exported_FunctionsPrototype - * @brief Public functions declaration. - * @{ - */ - -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len); - -/* USER CODE BEGIN EXPORTED_FUNCTIONS */ - -/* USER CODE END EXPORTED_FUNCTIONS */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USBD_CDC_IF_H__ */ - diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/78/30084946c67a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/64/b083378af58100101998fc3eb692d7cd similarity index 99% rename from workspace/.metadata/.plugins/org.eclipse.core.resources/.history/78/30084946c67a0010102ab5f83d1b4df9 rename to workspace/.metadata/.plugins/org.eclipse.core.resources/.history/64/b083378af58100101998fc3eb692d7cd index 03d525b..f13711b 100644 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/78/30084946c67a0010102ab5f83d1b4df9 +++ b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/64/b083378af58100101998fc3eb692d7cd @@ -77,6 +77,7 @@ void HAL_SYSTICK_Callback(void){ c100ms = 0; //flag_10ms = 1; // set a flag; do real work in main loop if (++c1s >= 10) { // 10 ms c1s = 0; + HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); } } } diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/65/00ee80c21c790010170b9c5237bb316a b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/65/00ee80c21c790010170b9c5237bb316a deleted file mode 100644 index 460ab6d..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/65/00ee80c21c790010170b9c5237bb316a +++ /dev/null @@ -1,247 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32f1xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @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 "stm32f1xx_it.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* External variables --------------------------------------------------------*/ -extern PCD_HandleTypeDef hpcd_USB_FS; -extern TIM_HandleTypeDef htim1; -/* USER CODE BEGIN EV */ - -/* USER CODE END EV */ - -/******************************************************************************/ -/* Cortex-M3 Processor Interruption and Exception Handlers */ -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - while (1) - { - } - /* USER CODE END NonMaskableInt_IRQn 1 */ -} - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_HardFault_IRQn 0 */ - /* USER CODE END W1_HardFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ - /* USER CODE END W1_MemoryManagement_IRQn 0 */ - } -} - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_BusFault_IRQn 0 */ - /* USER CODE END W1_BusFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ - /* USER CODE END W1_UsageFault_IRQn 0 */ - } -} - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - /* USER CODE BEGIN SVCall_IRQn 0 */ - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - /* USER CODE BEGIN DebugMonitor_IRQn 0 */ - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - /* USER CODE BEGIN PendSV_IRQn 0 */ - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - -/******************************************************************************/ -/* STM32F1xx Peripheral Interrupt Handlers */ -/* Add here the Interrupt Handlers for the used peripherals. */ -/* For the available peripheral interrupt handler names, */ -/* please refer to the startup file (startup_stm32f1xx.s). */ -/******************************************************************************/ - -/** - * @brief This function handles USB high priority or CAN TX interrupts. - */ -void USB_HP_CAN1_TX_IRQHandler(void) -{ - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 0 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 1 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 1 */ -} - -/** - * @brief This function handles USB low priority or CAN RX0 interrupts. - */ -void USB_LP_CAN1_RX0_IRQHandler(void) -{ - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ -} - -/** - * @brief This function handles TIM1 update interrupt. - */ -void TIM1_UP_IRQHandler(void) -{ - /* USER CODE BEGIN TIM1_UP_IRQn 0 */ - HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); - - /* USER CODE END TIM1_UP_IRQn 0 */ - HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_UP_IRQn 1 */ - - /* USER CODE END TIM1_UP_IRQn 1 */ -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/76/206deba7b97900101184ce6eca06d082 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/76/206deba7b97900101184ce6eca06d082 deleted file mode 100644 index 2d32d13..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/76/206deba7b97900101184ce6eca06d082 +++ /dev/null @@ -1,217 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32f1xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @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 "stm32f1xx_it.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* External variables --------------------------------------------------------*/ -extern TIM_HandleTypeDef htim1; -/* USER CODE BEGIN EV */ - -/* USER CODE END EV */ - -/******************************************************************************/ -/* Cortex-M3 Processor Interruption and Exception Handlers */ -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - while (1) - { - } - /* USER CODE END NonMaskableInt_IRQn 1 */ -} - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_HardFault_IRQn 0 */ - /* USER CODE END W1_HardFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ - /* USER CODE END W1_MemoryManagement_IRQn 0 */ - } -} - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_BusFault_IRQn 0 */ - /* USER CODE END W1_BusFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ - /* USER CODE END W1_UsageFault_IRQn 0 */ - } -} - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - /* USER CODE BEGIN SVCall_IRQn 0 */ - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - /* USER CODE BEGIN DebugMonitor_IRQn 0 */ - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - /* USER CODE BEGIN PendSV_IRQn 0 */ - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - -/******************************************************************************/ -/* STM32F1xx Peripheral Interrupt Handlers */ -/* Add here the Interrupt Handlers for the used peripherals. */ -/* For the available peripheral interrupt handler names, */ -/* please refer to the startup file (startup_stm32f1xx.s). */ -/******************************************************************************/ - -/** - * @brief This function handles TIM1 update interrupt. - */ -void TIM1_UP_IRQHandler(void) -{ - /* USER CODE BEGIN TIM1_UP_IRQn 0 */ - - /* USER CODE END TIM1_UP_IRQn 0 */ - HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_UP_IRQn 1 */ - - /* USER CODE END TIM1_UP_IRQn 1 */ -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/78/3007bc7dd67a00101a7e8e8124d02ecc b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/78/3007bc7dd67a00101a7e8e8124d02ecc deleted file mode 100644 index 179fa1f..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/78/3007bc7dd67a00101a7e8e8124d02ecc +++ /dev/null @@ -1,3 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=0 -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/7b/909420678478001019e1d409b055d613 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/7b/909420678478001019e1d409b055d613 deleted file mode 100644 index 179fa1f..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/7b/909420678478001019e1d409b055d613 +++ /dev/null @@ -1,3 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=0 -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/7b/d03db49118790010170b9c5237bb316a b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/7b/d03db49118790010170b9c5237bb316a deleted file mode 100644 index a42c8a4..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/7b/d03db49118790010170b9c5237bb316a +++ /dev/null @@ -1,303 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_cdc_if.c - * @version : v2.0_Cube - * @brief : Usb device for Virtual Com Port. - ****************************************************************************** - * @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 "usbd_cdc_if.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE END PV */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @brief Usb device library. - * @{ - */ - -/** @addtogroup USBD_CDC_IF - * @{ - */ - -/** @defgroup USBD_CDC_IF_Private_TypesDefinitions USBD_CDC_IF_Private_TypesDefinitions - * @brief Private types. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_TYPES */ - -/* USER CODE END PRIVATE_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Defines USBD_CDC_IF_Private_Defines - * @brief Private defines. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_DEFINES */ -/* USER CODE END PRIVATE_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Macros USBD_CDC_IF_Private_Macros - * @brief Private macros. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_MACRO */ - -/* USER CODE END PRIVATE_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Variables USBD_CDC_IF_Private_Variables - * @brief Private variables. - * @{ - */ -/* Create buffer for reception and transmission */ -/* It's up to user to redefine and/or remove those define */ -/** Received data over USB are stored in this buffer */ -uint8_t UserRxBufferFS[APP_RX_DATA_SIZE]; - -/** Data to send over USB CDC are stored in this buffer */ -uint8_t UserTxBufferFS[APP_TX_DATA_SIZE]; - -/* USER CODE BEGIN PRIVATE_VARIABLES */ - -/* USER CODE END PRIVATE_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables - * @brief Public variables. - * @{ - */ - -extern USBD_HandleTypeDef hUsbDeviceFS; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_FunctionPrototypes USBD_CDC_IF_Private_FunctionPrototypes - * @brief Private functions declaration. - * @{ - */ - -static int8_t CDC_Init_FS(void); -static int8_t CDC_DeInit_FS(void); -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length); -static int8_t CDC_Receive_FS(uint8_t* pbuf, uint32_t *Len); - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */ - -/** - * @} - */ - -USBD_CDC_ItfTypeDef USBD_Interface_fops_FS = -{ - CDC_Init_FS, - CDC_DeInit_FS, - CDC_Control_FS, - CDC_Receive_FS -}; - -/* Private functions ---------------------------------------------------------*/ -/** - * @brief Initializes the CDC media low layer over the FS USB IP - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Init_FS(void) -{ - /* USER CODE BEGIN 3 */ - /* Set Application Buffers */ - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); - return (USBD_OK); - /* USER CODE END 3 */ -} - -/** - * @brief DeInitializes the CDC media low layer - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_DeInit_FS(void) -{ - /* USER CODE BEGIN 4 */ - return (USBD_OK); - /* USER CODE END 4 */ -} - -/** - * @brief Manage the CDC class requests - * @param cmd: Command code - * @param pbuf: Buffer containing command data (request parameters) - * @param length: Number of data to be sent (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) -{ - /* USER CODE BEGIN 5 */ - switch(cmd) - { - case CDC_SEND_ENCAPSULATED_COMMAND: - - break; - - case CDC_GET_ENCAPSULATED_RESPONSE: - - break; - - case CDC_SET_COMM_FEATURE: - - break; - - case CDC_GET_COMM_FEATURE: - - break; - - case CDC_CLEAR_COMM_FEATURE: - - break; - - /*******************************************************************************/ - /* Line Coding Structure */ - /*-----------------------------------------------------------------------------*/ - /* Offset | Field | Size | Value | Description */ - /* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/ - /* 4 | bCharFormat | 1 | Number | Stop bits */ - /* 0 - 1 Stop bit */ - /* 1 - 1.5 Stop bits */ - /* 2 - 2 Stop bits */ - /* 5 | bParityType | 1 | Number | Parity */ - /* 0 - None */ - /* 1 - Odd */ - /* 2 - Even */ - /* 3 - Mark */ - /* 4 - Space */ - /* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */ - /*******************************************************************************/ - case CDC_SET_LINE_CODING: - - break; - - case CDC_GET_LINE_CODING: - - break; - - case CDC_SET_CONTROL_LINE_STATE: - - break; - - case CDC_SEND_BREAK: - - break; - - default: - break; - } - - return (USBD_OK); - /* USER CODE END 5 */ -} - -/** - * @brief Data received over USB OUT endpoint are sent over CDC interface - * through this function. - * - * @note - * This function will issue a NAK packet on any OUT packet received on - * USB endpoint until exiting this function. If you exit this function - * before transfer is complete on CDC interface (ie. using DMA controller) - * it will result in receiving more data while previous ones are still - * not sent. - * - * @param Buf: Buffer of data to be received - * @param Len: Number of data received (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) -{ - /* USER CODE BEGIN 6 */ - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); - USBD_CDC_ReceivePacket(&hUsbDeviceFS); - return (USBD_OK); - /* USER CODE END 6 */ -} - -/** - * @brief CDC_Transmit_FS - * Data to send over USB IN endpoint are sent over CDC interface - * through this function. - * @note - * - * - * @param Buf: Buffer of data to be sent - * @param Len: Number of data to be sent (in bytes) - * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY - */ -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) -{ - uint8_t result = USBD_OK; - /* USER CODE BEGIN 7 */ - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; - if (hcdc->TxState != 0){ - return USBD_BUSY; - } - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); - result = (&hUsbDeviceFS); - /* USER CODE END 7 */ - return result; -} - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/** - * @} - */ - -/** - * @} - */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/82/201c4223fc7900101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/82/201c4223fc7900101d5d8357c45e25c3 deleted file mode 100644 index b4e8989..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/82/201c4223fc7900101d5d8357c45e25c3 +++ /dev/null @@ -1,277 +0,0 @@ -/* 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 "usb_device.h" -#include "usbd_cdc_if.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - /* USER CODE END 2 */ - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 4) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END 3 */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/86/5081c4c1187a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/86/5081c4c1187a00101d5d8357c45e25c3 deleted file mode 100644 index ce1a005..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/86/5081c4c1187a00101d5d8357c45e25c3 +++ /dev/null @@ -1,4 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=1 -8DF89ED150041C4CBC7CB9A9CAA90856=9888DDB82096C86784993006E161A8DB -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/86/704696281e7a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/86/704696281e7a00101d5d8357c45e25c3 deleted file mode 100644 index efe0c3a..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/86/704696281e7a00101d5d8357c45e25c3 +++ /dev/null @@ -1,4 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=7 -8DF89ED150041C4CBC7CB9A9CAA90856=9888DDB82096C86784993006E161A8DB -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/8f/f0f7229dd67a00101a7e8e8124d02ecc b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/8f/f0f7229dd67a00101a7e8e8124d02ecc deleted file mode 100644 index 91cb9ca..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/8f/f0f7229dd67a00101a7e8e8124d02ecc +++ /dev/null @@ -1,3 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=1 -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/95/50789494f27900101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/95/50789494f27900101d5d8357c45e25c3 deleted file mode 100644 index cf0b3b2..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/95/50789494f27900101d5d8357c45e25c3 +++ /dev/null @@ -1,264 +0,0 @@ -/* 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 "usb_device.h" -#include "usbd_cdc_if.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - HAL_Delay(1000); - CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END 3 */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/98/206886a7197a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/98/206886a7197a00101d5d8357c45e25c3 deleted file mode 100644 index a90db1d..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/98/206886a7197a00101d5d8357c45e25c3 +++ /dev/null @@ -1,350 +0,0 @@ -/* 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" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim4; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM4_Init(void); -/* 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_TIM2_Init(); - MX_TIM4_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* 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}; - - /** 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_NONE; - 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_HSE; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 1800; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 2000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 5000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 0; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 17999; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 7000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 10000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 12000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} - -/** - * @brief GPIO Initialization Function - * @param None - * @retval None - */ -static void MX_GPIO_Init(void) -{ - /* USER CODE BEGIN MX_GPIO_Init_1 */ - - /* USER CODE END MX_GPIO_Init_1 */ - - /* GPIO Ports Clock Enable */ - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/9a/f024c82afa7900101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/9a/f024c82afa7900101d5d8357c45e25c3 deleted file mode 100644 index 2d08f3c..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/9a/f024c82afa7900101d5d8357c45e25c3 +++ /dev/null @@ -1,303 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_cdc_if.c - * @version : v2.0_Cube - * @brief : Usb device for Virtual Com Port. - ****************************************************************************** - * @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 "usbd_cdc_if.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE END PV */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @brief Usb device library. - * @{ - */ - -/** @addtogroup USBD_CDC_IF - * @{ - */ - -/** @defgroup USBD_CDC_IF_Private_TypesDefinitions USBD_CDC_IF_Private_TypesDefinitions - * @brief Private types. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_TYPES */ - -/* USER CODE END PRIVATE_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Defines USBD_CDC_IF_Private_Defines - * @brief Private defines. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_DEFINES */ -/* USER CODE END PRIVATE_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Macros USBD_CDC_IF_Private_Macros - * @brief Private macros. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_MACRO */ - -/* USER CODE END PRIVATE_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Variables USBD_CDC_IF_Private_Variables - * @brief Private variables. - * @{ - */ -/* Create buffer for reception and transmission */ -/* It's up to user to redefine and/or remove those define */ -/** Received data over USB are stored in this buffer */ -uint8_t UserRxBufferFS[APP_RX_DATA_SIZE]; - -/** Data to send over USB CDC are stored in this buffer */ -uint8_t UserTxBufferFS[APP_TX_DATA_SIZE]; - -/* USER CODE BEGIN PRIVATE_VARIABLES */ - -/* USER CODE END PRIVATE_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables - * @brief Public variables. - * @{ - */ - -extern USBD_HandleTypeDef hUsbDeviceFS; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_FunctionPrototypes USBD_CDC_IF_Private_FunctionPrototypes - * @brief Private functions declaration. - * @{ - */ - -static int8_t CDC_Init_FS(void); -static int8_t CDC_DeInit_FS(void); -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length); -static int8_t CDC_Receive_FS(uint8_t* pbuf, uint32_t *Len); - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */ - -/** - * @} - */ - -USBD_CDC_ItfTypeDef USBD_Interface_fops_FS = -{ - CDC_Init_FS, - CDC_DeInit_FS, - CDC_Control_FS, - CDC_Receive_FS -}; - -/* Private functions ---------------------------------------------------------*/ -/** - * @brief Initializes the CDC media low layer over the FS USB IP - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Init_FS(void) -{ - /* USER CODE BEGIN 3 */ - /* Set Application Buffers */ - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); - return (USBD_OK); - /* USER CODE END 3 */ -} - -/** - * @brief DeInitializes the CDC media low layer - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_DeInit_FS(void) -{ - /* USER CODE BEGIN 4 */ - return (USBD_OK); - /* USER CODE END 4 */ -} - -/** - * @brief Manage the CDC class requests - * @param cmd: Command code - * @param pbuf: Buffer containing command data (request parameters) - * @param length: Number of data to be sent (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) -{ - /* USER CODE BEGIN 5 */ - switch(cmd) - { - case CDC_SEND_ENCAPSULATED_COMMAND: - - break; - - case CDC_GET_ENCAPSULATED_RESPONSE: - - break; - - case CDC_SET_COMM_FEATURE: - - break; - - case CDC_GET_COMM_FEATURE: - - break; - - case CDC_CLEAR_COMM_FEATURE: - - break; - - /*******************************************************************************/ - /* Line Coding Structure */ - /*-----------------------------------------------------------------------------*/ - /* Offset | Field | Size | Value | Description */ - /* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/ - /* 4 | bCharFormat | 1 | Number | Stop bits */ - /* 0 - 1 Stop bit */ - /* 1 - 1.5 Stop bits */ - /* 2 - 2 Stop bits */ - /* 5 | bParityType | 1 | Number | Parity */ - /* 0 - None */ - /* 1 - Odd */ - /* 2 - Even */ - /* 3 - Mark */ - /* 4 - Space */ - /* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */ - /*******************************************************************************/ - case CDC_SET_LINE_CODING: - - break; - - case CDC_GET_LINE_CODING: - - break; - - case CDC_SET_CONTROL_LINE_STATE: - - break; - - case CDC_SEND_BREAK: - - break; - - default: - break; - } - - return (USBD_OK); - /* USER CODE END 5 */ -} - -/** - * @brief Data received over USB OUT endpoint are sent over CDC interface - * through this function. - * - * @note - * This function will issue a NAK packet on any OUT packet received on - * USB endpoint until exiting this function. If you exit this function - * before transfer is complete on CDC interface (ie. using DMA controller) - * it will result in receiving more data while previous ones are still - * not sent. - * - * @param Buf: Buffer of data to be received - * @param Len: Number of data received (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) -{ - /* USER CODE BEGIN 6 */ - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); - USBD_CDC_ReceivePacket(&hUsbDeviceFS); - return (USBD_OK); - /* USER CODE END 6 */ -} - -/** - * @brief CDC_Transmit_FS - * Data to send over USB IN endpoint are sent over CDC interface - * through this function. - * @note - * - * - * @param Buf: Buffer of data to be sent - * @param Len: Number of data to be sent (in bytes) - * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY - */ -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) -{ - uint8_t result = USBD_OK; - /* USER CODE BEGIN 7 */ - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; - if (hcdc->TxState != 0){ - return USBD_BUSY; - } - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); - result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); - /* USER CODE END 7 */ - return result; -} - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/** - * @} - */ - -/** - * @} - */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/9f/4005280e0e7a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/9f/4005280e0e7a00101d5d8357c45e25c3 deleted file mode 100644 index ffd9fdd..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/9f/4005280e0e7a00101d5d8357c45e25c3 +++ /dev/null @@ -1,352 +0,0 @@ -/* 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 "usb_device.h" -#include "usbd_cdc_if.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -static void MX_TIM2_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - MX_TIM2_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - /* USER CODE END 2 */ - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 1800); - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END 3 */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 0; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a/409faa241c7a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a/409faa241c7a00101d5d8357c45e25c3 deleted file mode 100644 index df03ae5..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a/409faa241c7a00101d5d8357c45e25c3 +++ /dev/null @@ -1,4 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=3 -8DF89ED150041C4CBC7CB9A9CAA90856=9888DDB82096C86784993006E161A8DB -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a0/6037e751be7900101184ce6eca06d082 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a0/6037e751be7900101184ce6eca06d082 deleted file mode 100644 index 6d1384d..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a0/6037e751be7900101184ce6eca06d082 +++ /dev/null @@ -1,228 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32f1xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @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 "stm32f1xx_it.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* External variables --------------------------------------------------------*/ -extern TIM_HandleTypeDef htim1; -/* USER CODE BEGIN EV */ - -/* USER CODE END EV */ - -/******************************************************************************/ -/* Cortex-M3 Processor Interruption and Exception Handlers */ -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - while (1) - { - } - /* USER CODE END NonMaskableInt_IRQn 1 */ -} - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_HardFault_IRQn 0 */ - /* USER CODE END W1_HardFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ - /* USER CODE END W1_MemoryManagement_IRQn 0 */ - } -} - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_BusFault_IRQn 0 */ - /* USER CODE END W1_BusFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ - /* USER CODE END W1_UsageFault_IRQn 0 */ - } -} - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - /* USER CODE BEGIN SVCall_IRQn 0 */ - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - /* USER CODE BEGIN DebugMonitor_IRQn 0 */ - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - /* USER CODE BEGIN PendSV_IRQn 0 */ - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - -/******************************************************************************/ -/* STM32F1xx Peripheral Interrupt Handlers */ -/* Add here the Interrupt Handlers for the used peripherals. */ -/* For the available peripheral interrupt handler names, */ -/* please refer to the startup file (startup_stm32f1xx.s). */ -/******************************************************************************/ - -/** - * @brief This function handles TIM1 update interrupt. - */ -void TIM1_UP_IRQHandler(void) -{ - /* USER CODE BEGIN TIM1_UP_IRQn 0 */ - static uint8_t cont100ms=0; - static uint8_t cont1s=0; - /* USER CODE END TIM1_UP_IRQn 0 */ - HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_UP_IRQn 1 */ - if(cont100ms)cont100ms--; - else{ - cont100ms=100; - if(cont1s)cont1s--; - else{ - cont1s=100; - HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); - } - //HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); -/* USER CODE END TIM1_UP_IRQn 0 */ - } - /* USER CODE END TIM1_UP_IRQn 1 */ -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a1/206042d8c57a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a1/206042d8c57a0010102ab5f83d1b4df9 deleted file mode 100644 index 842bf03..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a1/206042d8c57a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,617 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -ADC_HandleTypeDef hadc1; - -TIM_HandleTypeDef htim1; -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; -TIM_HandleTypeDef htim4; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM4_Init(void); -static void MX_TIM3_Init(void); -static void MX_ADC1_Init(void); -static void MX_TIM1_Init(void); -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ -void HAL_SYSTICK_Callback(void){ - static unsigned char 10ms = 0; -// -// static uint8_t 100ms = 0; -// static uint8_t 1s = 0; -// if (++10ms >= 10) { // 10 ms -// 10ms = 0; -// //flag_10ms = 1; // set a flag; do real work in main loop -// } -} -/* 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_USB_DEVICE_Init(); - MX_TIM2_Init(); - MX_TIM4_Init(); - MX_TIM3_Init(); - MX_ADC1_Init(); - MX_TIM1_Init(); - /* USER CODE BEGIN 2 */ - - - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; - PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief ADC1 Initialization Function - * @param None - * @retval None - */ -static void MX_ADC1_Init(void) -{ - - /* USER CODE BEGIN ADC1_Init 0 */ - - /* USER CODE END ADC1_Init 0 */ - - ADC_ChannelConfTypeDef sConfig = {0}; - - /* USER CODE BEGIN ADC1_Init 1 */ - - /* USER CODE END ADC1_Init 1 */ - - /** Common config - */ - hadc1.Instance = ADC1; - hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; - hadc1.Init.ContinuousConvMode = DISABLE; - hadc1.Init.DiscontinuousConvMode = DISABLE; - hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; - hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 1; - if (HAL_ADC_Init(&hadc1) != HAL_OK) - { - Error_Handler(); - } - - /** Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_4; - sConfig.Rank = ADC_REGULAR_RANK_1; - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN ADC1_Init 2 */ - - /* USER CODE END ADC1_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}; - TIM_OC_InitTypeDef sConfigOC = {0}; - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {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 = 17999; - 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(); - } - if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 2400; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 5500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; - sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; - sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - sBreakDeadTimeConfig.DeadTime = 0; - sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; - sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM1_Init 2 */ - - /* USER CODE END TIM1_Init 2 */ - HAL_TIM_MspPostInit(&htim1); - -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 1000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 2000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 4000; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 0; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 17999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 10000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 11000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 12000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_Init 2 */ - HAL_TIM_MspPostInit(&htim3); - -} - -/** - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 0; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 17999; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 5000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 7000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 8000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} - -/** - * @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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a2/b0e4226ec27a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a2/b0e4226ec27a0010102ab5f83d1b4df9 deleted file mode 100644 index 459d6b1..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a2/b0e4226ec27a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,567 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -ADC_HandleTypeDef hadc1; - -TIM_HandleTypeDef htim1; -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; -TIM_HandleTypeDef htim4; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM4_Init(void); -static void MX_TIM3_Init(void); -static void MX_ADC1_Init(void); -static void MX_TIM1_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM2_Init(); - MX_TIM4_Init(); - MX_TIM3_Init(); - MX_ADC1_Init(); - MX_TIM1_Init(); - /* USER CODE BEGIN 2 */ - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; - PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief ADC1 Initialization Function - * @param None - * @retval None - */ -static void MX_ADC1_Init(void) -{ - - /* USER CODE BEGIN ADC1_Init 0 */ - - /* USER CODE END ADC1_Init 0 */ - - ADC_ChannelConfTypeDef sConfig = {0}; - - /* USER CODE BEGIN ADC1_Init 1 */ - - /* USER CODE END ADC1_Init 1 */ - - /** Common config - */ - hadc1.Instance = ADC1; - hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; - hadc1.Init.ContinuousConvMode = DISABLE; - hadc1.Init.DiscontinuousConvMode = DISABLE; - hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; - hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 1; - if (HAL_ADC_Init(&hadc1) != HAL_OK) - { - Error_Handler(); - } - - /** Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_4; - sConfig.Rank = ADC_REGULAR_RANK_1; - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN ADC1_Init 2 */ - - /* USER CODE END ADC1_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 = 7199; - 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 TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 1000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 2000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 4000; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 0; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 17999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 10000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 11000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 12000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_Init 2 */ - HAL_TIM_MspPostInit(&htim3); - -} - -/** - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 0; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 17999; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 5000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 7000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 8000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} - -/** - * @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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a5/90fd624e097a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a5/90fd624e097a00101d5d8357c45e25c3 deleted file mode 100644 index f83bdba..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a5/90fd624e097a00101d5d8357c45e25c3 +++ /dev/null @@ -1,277 +0,0 @@ -/* 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 "usb_device.h" -#include "usbd_cdc_if.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - /* USER CODE END 2 */ - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END 3 */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a8/00933aaa167a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a8/00933aaa167a00101d5d8357c45e25c3 deleted file mode 100644 index 167ee0c..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a8/00933aaa167a00101d5d8357c45e25c3 +++ /dev/null @@ -1,368 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -static void MX_TIM2_Init(void); -/* 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 */ - __HAL_RCC_AFIO_CLK_ENABLE(); - __HAL_AFIO_REMAP_TIM2_DISABLE(); // keep CH1..CH4 on PA0..PA3 - - /* USER CODE END SysInit */ - - /* Initialize all configured peripherals */ - MX_GPIO_Init(); - MX_USB_DEVICE_Init(); - MX_TIM3_Init(); - MX_TIM2_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 1800); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, 1800); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, 1800); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, 1800); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END WHILE */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - GPIO_InitTypeDef g = {0}; - g.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3; - g.Mode = GPIO_MODE_AF_PP; - g.Speed = GPIO_SPEED_FREQ_HIGH; - HAL_GPIO_Init(GPIOA, &g); - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a9/c0d351411c7a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a9/c0d351411c7a00101d5d8357c45e25c3 deleted file mode 100644 index 99a3591..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/a9/c0d351411c7a00101d5d8357c45e25c3 +++ /dev/null @@ -1,4 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=4 -8DF89ED150041C4CBC7CB9A9CAA90856=9888DDB82096C86784993006E161A8DB -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ab/e06e33801d7a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ab/e06e33801d7a00101d5d8357c45e25c3 deleted file mode 100644 index 0be2314..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ab/e06e33801d7a00101d5d8357c45e25c3 +++ /dev/null @@ -1,391 +0,0 @@ -/* 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" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim4; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM4_Init(void); -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ -static void Force_TIM_GPIO_AFPP(void) -{ - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - __HAL_RCC_AFIO_CLK_ENABLE(); - - // Ensure TIM2 stays on PA0..PA3 (no remap) - __HAL_AFIO_REMAP_TIM2_DISABLE(); - - GPIO_InitTypeDef g = {0}; - g.Mode = GPIO_MODE_AF_PP; - g.Speed = GPIO_SPEED_FREQ_HIGH; - - // TIM2 CH1..4 = PA0..PA3 - g.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3; - HAL_GPIO_Init(GPIOA, &g); - - // TIM4 CH1..4 = PB6..PB9 (no remap on F103C8) - g.Pin = GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9; - HAL_GPIO_Init(GPIOB, &g); -} - -/* 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_TIM2_Init(); - MX_TIM4_Init(); - /* USER CODE BEGIN 2 */ - Force_TIM_GPIO_AFPP(); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* 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}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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 TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 1800; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 2000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 8000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 5000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 0; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 17999; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 7000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 10000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 12000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} - -/** - * @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_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET); - - /*Configure GPIO pin : PA2 */ - GPIO_InitStruct.Pin = GPIO_PIN_2; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ac/d0f4e152ef7900101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ac/d0f4e152ef7900101d5d8357c45e25c3 deleted file mode 100644 index 0ca4aad..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ac/d0f4e152ef7900101d5d8357c45e25c3 +++ /dev/null @@ -1,246 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32f1xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @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 "stm32f1xx_it.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* External variables --------------------------------------------------------*/ -extern PCD_HandleTypeDef hpcd_USB_FS; -extern TIM_HandleTypeDef htim3; -/* USER CODE BEGIN EV */ - -/* USER CODE END EV */ - -/******************************************************************************/ -/* Cortex-M3 Processor Interruption and Exception Handlers */ -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - while (1) - { - } - /* USER CODE END NonMaskableInt_IRQn 1 */ -} - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_HardFault_IRQn 0 */ - /* USER CODE END W1_HardFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ - /* USER CODE END W1_MemoryManagement_IRQn 0 */ - } -} - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_BusFault_IRQn 0 */ - /* USER CODE END W1_BusFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ - /* USER CODE END W1_UsageFault_IRQn 0 */ - } -} - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - /* USER CODE BEGIN SVCall_IRQn 0 */ - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - /* USER CODE BEGIN DebugMonitor_IRQn 0 */ - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - /* USER CODE BEGIN PendSV_IRQn 0 */ - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - -/******************************************************************************/ -/* STM32F1xx Peripheral Interrupt Handlers */ -/* Add here the Interrupt Handlers for the used peripherals. */ -/* For the available peripheral interrupt handler names, */ -/* please refer to the startup file (startup_stm32f1xx.s). */ -/******************************************************************************/ - -/** - * @brief This function handles USB high priority or CAN TX interrupts. - */ -void USB_HP_CAN1_TX_IRQHandler(void) -{ - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 0 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 1 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 1 */ -} - -/** - * @brief This function handles USB low priority or CAN RX0 interrupts. - */ -void USB_LP_CAN1_RX0_IRQHandler(void) -{ - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ -} - -/** - * @brief This function handles TIM3 global interrupt. - */ -void TIM3_IRQHandler(void) -{ - /* USER CODE BEGIN TIM3_IRQn 0 */ - - /* USER CODE END TIM3_IRQn 0 */ - HAL_TIM_IRQHandler(&htim3); - /* USER CODE BEGIN TIM3_IRQn 1 */ - - /* USER CODE END TIM3_IRQn 1 */ -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ae/9055a26b187a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ae/9055a26b187a00101d5d8357c45e25c3 deleted file mode 100644 index 91cb9ca..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ae/9055a26b187a00101d5d8357c45e25c3 +++ /dev/null @@ -1,3 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=1 -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/af/10d1f7cdbf7900101184ce6eca06d082 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/af/10d1f7cdbf7900101184ce6eca06d082 deleted file mode 100644 index 29c8c3a..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/af/10d1f7cdbf7900101184ce6eca06d082 +++ /dev/null @@ -1,203 +0,0 @@ -/* 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" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -/* 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(); - /* USER CODE BEGIN 2 */ - - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* 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}; - - /** 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_NONE; - 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_HSE; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b/50144391fb7900101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b/50144391fb7900101d5d8357c45e25c3 deleted file mode 100644 index 1b0dfb1..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b/50144391fb7900101d5d8357c45e25c3 +++ /dev/null @@ -1,277 +0,0 @@ -/* 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 "usb_device.h" -#include "usbd_cdc_if.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - /* USER CODE END 2 */ - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf(s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 4) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END 3 */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b1/a0beebb4c57a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b1/a0beebb4c57a0010102ab5f83d1b4df9 deleted file mode 100644 index e51ebbb..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b1/a0beebb4c57a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,617 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -ADC_HandleTypeDef hadc1; - -TIM_HandleTypeDef htim1; -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; -TIM_HandleTypeDef htim4; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM4_Init(void); -static void MX_TIM3_Init(void); -static void MX_ADC1_Init(void); -static void MX_TIM1_Init(void); -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ -void HAL_SYSTICK_Callback(void) -{ - static uint8_t 10ms = 0; - static uint8_t 100ms = 0; - static uint8_t 1s = 0; - if (++10ms >= 10) { // 10 ms - 10ms = 0; - //flag_10ms = 1; // set a flag; do real work in main loop - } -} -/* 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_USB_DEVICE_Init(); - MX_TIM2_Init(); - MX_TIM4_Init(); - MX_TIM3_Init(); - MX_ADC1_Init(); - MX_TIM1_Init(); - /* USER CODE BEGIN 2 */ - - - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; - PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief ADC1 Initialization Function - * @param None - * @retval None - */ -static void MX_ADC1_Init(void) -{ - - /* USER CODE BEGIN ADC1_Init 0 */ - - /* USER CODE END ADC1_Init 0 */ - - ADC_ChannelConfTypeDef sConfig = {0}; - - /* USER CODE BEGIN ADC1_Init 1 */ - - /* USER CODE END ADC1_Init 1 */ - - /** Common config - */ - hadc1.Instance = ADC1; - hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; - hadc1.Init.ContinuousConvMode = DISABLE; - hadc1.Init.DiscontinuousConvMode = DISABLE; - hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; - hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 1; - if (HAL_ADC_Init(&hadc1) != HAL_OK) - { - Error_Handler(); - } - - /** Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_4; - sConfig.Rank = ADC_REGULAR_RANK_1; - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN ADC1_Init 2 */ - - /* USER CODE END ADC1_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}; - TIM_OC_InitTypeDef sConfigOC = {0}; - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {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 = 17999; - 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(); - } - if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 2400; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 5500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; - sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; - sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - sBreakDeadTimeConfig.DeadTime = 0; - sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; - sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM1_Init 2 */ - - /* USER CODE END TIM1_Init 2 */ - HAL_TIM_MspPostInit(&htim1); - -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 1000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 2000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 4000; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 0; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 17999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 10000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 11000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 12000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_Init 2 */ - HAL_TIM_MspPostInit(&htim3); - -} - -/** - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 0; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 17999; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 5000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 7000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 8000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} - -/** - * @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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b3/407fa3eab87a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b3/407fa3eab87a0010102ab5f83d1b4df9 deleted file mode 100644 index 2d08f3c..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b3/407fa3eab87a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,303 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_cdc_if.c - * @version : v2.0_Cube - * @brief : Usb device for Virtual Com Port. - ****************************************************************************** - * @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 "usbd_cdc_if.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE END PV */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @brief Usb device library. - * @{ - */ - -/** @addtogroup USBD_CDC_IF - * @{ - */ - -/** @defgroup USBD_CDC_IF_Private_TypesDefinitions USBD_CDC_IF_Private_TypesDefinitions - * @brief Private types. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_TYPES */ - -/* USER CODE END PRIVATE_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Defines USBD_CDC_IF_Private_Defines - * @brief Private defines. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_DEFINES */ -/* USER CODE END PRIVATE_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Macros USBD_CDC_IF_Private_Macros - * @brief Private macros. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_MACRO */ - -/* USER CODE END PRIVATE_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Variables USBD_CDC_IF_Private_Variables - * @brief Private variables. - * @{ - */ -/* Create buffer for reception and transmission */ -/* It's up to user to redefine and/or remove those define */ -/** Received data over USB are stored in this buffer */ -uint8_t UserRxBufferFS[APP_RX_DATA_SIZE]; - -/** Data to send over USB CDC are stored in this buffer */ -uint8_t UserTxBufferFS[APP_TX_DATA_SIZE]; - -/* USER CODE BEGIN PRIVATE_VARIABLES */ - -/* USER CODE END PRIVATE_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables - * @brief Public variables. - * @{ - */ - -extern USBD_HandleTypeDef hUsbDeviceFS; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_FunctionPrototypes USBD_CDC_IF_Private_FunctionPrototypes - * @brief Private functions declaration. - * @{ - */ - -static int8_t CDC_Init_FS(void); -static int8_t CDC_DeInit_FS(void); -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length); -static int8_t CDC_Receive_FS(uint8_t* pbuf, uint32_t *Len); - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */ - -/** - * @} - */ - -USBD_CDC_ItfTypeDef USBD_Interface_fops_FS = -{ - CDC_Init_FS, - CDC_DeInit_FS, - CDC_Control_FS, - CDC_Receive_FS -}; - -/* Private functions ---------------------------------------------------------*/ -/** - * @brief Initializes the CDC media low layer over the FS USB IP - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Init_FS(void) -{ - /* USER CODE BEGIN 3 */ - /* Set Application Buffers */ - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); - return (USBD_OK); - /* USER CODE END 3 */ -} - -/** - * @brief DeInitializes the CDC media low layer - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_DeInit_FS(void) -{ - /* USER CODE BEGIN 4 */ - return (USBD_OK); - /* USER CODE END 4 */ -} - -/** - * @brief Manage the CDC class requests - * @param cmd: Command code - * @param pbuf: Buffer containing command data (request parameters) - * @param length: Number of data to be sent (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) -{ - /* USER CODE BEGIN 5 */ - switch(cmd) - { - case CDC_SEND_ENCAPSULATED_COMMAND: - - break; - - case CDC_GET_ENCAPSULATED_RESPONSE: - - break; - - case CDC_SET_COMM_FEATURE: - - break; - - case CDC_GET_COMM_FEATURE: - - break; - - case CDC_CLEAR_COMM_FEATURE: - - break; - - /*******************************************************************************/ - /* Line Coding Structure */ - /*-----------------------------------------------------------------------------*/ - /* Offset | Field | Size | Value | Description */ - /* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/ - /* 4 | bCharFormat | 1 | Number | Stop bits */ - /* 0 - 1 Stop bit */ - /* 1 - 1.5 Stop bits */ - /* 2 - 2 Stop bits */ - /* 5 | bParityType | 1 | Number | Parity */ - /* 0 - None */ - /* 1 - Odd */ - /* 2 - Even */ - /* 3 - Mark */ - /* 4 - Space */ - /* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */ - /*******************************************************************************/ - case CDC_SET_LINE_CODING: - - break; - - case CDC_GET_LINE_CODING: - - break; - - case CDC_SET_CONTROL_LINE_STATE: - - break; - - case CDC_SEND_BREAK: - - break; - - default: - break; - } - - return (USBD_OK); - /* USER CODE END 5 */ -} - -/** - * @brief Data received over USB OUT endpoint are sent over CDC interface - * through this function. - * - * @note - * This function will issue a NAK packet on any OUT packet received on - * USB endpoint until exiting this function. If you exit this function - * before transfer is complete on CDC interface (ie. using DMA controller) - * it will result in receiving more data while previous ones are still - * not sent. - * - * @param Buf: Buffer of data to be received - * @param Len: Number of data received (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) -{ - /* USER CODE BEGIN 6 */ - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); - USBD_CDC_ReceivePacket(&hUsbDeviceFS); - return (USBD_OK); - /* USER CODE END 6 */ -} - -/** - * @brief CDC_Transmit_FS - * Data to send over USB IN endpoint are sent over CDC interface - * through this function. - * @note - * - * - * @param Buf: Buffer of data to be sent - * @param Len: Number of data to be sent (in bytes) - * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY - */ -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) -{ - uint8_t result = USBD_OK; - /* USER CODE BEGIN 7 */ - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; - if (hcdc->TxState != 0){ - return USBD_BUSY; - } - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); - result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); - /* USER CODE END 7 */ - return result; -} - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/** - * @} - */ - -/** - * @} - */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b4/f0236100b97a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b4/f0236100b97a0010102ab5f83d1b4df9 deleted file mode 100644 index 5a1847c..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/b4/f0236100b97a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,132 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_cdc_if.h - * @version : v2.0_Cube - * @brief : Header for usbd_cdc_if.c file. - ****************************************************************************** - * @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 */ - -/* Define to prevent recursive inclusion -------------------------------------*/ - -#ifndef __USBD_CDC_IF_H__ -#define __USBD_CDC_IF_H__ - -#ifdef __cplusplus - extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "usbd_cdc.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @brief For Usb device. - * @{ - */ - -/** @defgroup USBD_CDC_IF USBD_CDC_IF - * @brief Usb VCP device module - * @{ - */ - -/** @defgroup USBD_CDC_IF_Exported_Defines USBD_CDC_IF_Exported_Defines - * @brief Defines. - * @{ - */ -/* Define size for the receive and transmit buffer over CDC */ -#define APP_RX_DATA_SIZE 1024 -#define APP_TX_DATA_SIZE 1024 -/* USER CODE BEGIN EXPORTED_DEFINES */ - -/* USER CODE END EXPORTED_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Types USBD_CDC_IF_Exported_Types - * @brief Types. - * @{ - */ - -/* USER CODE BEGIN EXPORTED_TYPES */ - -/* USER CODE END EXPORTED_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Macros USBD_CDC_IF_Exported_Macros - * @brief Aliases. - * @{ - */ - -/* USER CODE BEGIN EXPORTED_MACRO */ - -/* USER CODE END EXPORTED_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables - * @brief Public variables. - * @{ - */ - -/** CDC Interface callback. */ -extern USBD_CDC_ItfTypeDef USBD_Interface_fops_FS; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_FunctionsPrototype USBD_CDC_IF_Exported_FunctionsPrototype - * @brief Public functions declaration. - * @{ - */ - -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len); - -/* USER CODE BEGIN EXPORTED_FUNCTIONS */ - -/* USER CODE END EXPORTED_FUNCTIONS */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USBD_CDC_IF_H__ */ - diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/bd/00f1f4678378001019e1d409b055d613 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/bd/00f1f4678378001019e1d409b055d613 deleted file mode 100644 index 9719ce2..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/bd/00f1f4678378001019e1d409b055d613 +++ /dev/null @@ -1,2 +0,0 @@ -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/bf/80634b1f1d7a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/bf/80634b1f1d7a00101d5d8357c45e25c3 deleted file mode 100644 index d209c9f..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/bf/80634b1f1d7a00101d5d8357c45e25c3 +++ /dev/null @@ -1,4 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=5 -8DF89ED150041C4CBC7CB9A9CAA90856=9888DDB82096C86784993006E161A8DB -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c1/205d973c157a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c1/205d973c157a00101d5d8357c45e25c3 deleted file mode 100644 index 5bb80fc..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c1/205d973c157a00101d5d8357c45e25c3 +++ /dev/null @@ -1,362 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -static void MX_TIM2_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - MX_TIM2_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 1800); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, 1800); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, 1800); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, 1800); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END WHILE */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c3/f0bc9dd71b7a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c3/f0bc9dd71b7a00101d5d8357c45e25c3 deleted file mode 100644 index 5a0f9a4..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c3/f0bc9dd71b7a00101d5d8357c45e25c3 +++ /dev/null @@ -1,354 +0,0 @@ -/* 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" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim4; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM4_Init(void); -/* 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_TIM2_Init(); - MX_TIM4_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* 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}; - - /** 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_NONE; - 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_HSE; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 1800; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 2000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 5000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 0; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 17999; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 7000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 10000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 12000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} - -/** - * @brief GPIO Initialization Function - * @param None - * @retval None - */ -static void MX_GPIO_Init(void) -{ - /* USER CODE BEGIN MX_GPIO_Init_1 */ - - /* USER CODE END MX_GPIO_Init_1 */ - - /* GPIO Ports Clock Enable */ - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c4/10aa9bbd167a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c4/10aa9bbd167a00101d5d8357c45e25c3 deleted file mode 100644 index e6068b6..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c4/10aa9bbd167a00101d5d8357c45e25c3 +++ /dev/null @@ -1,374 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -static void MX_TIM2_Init(void); -/* 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 */ - __HAL_RCC_AFIO_CLK_ENABLE(); - __HAL_AFIO_REMAP_TIM2_DISABLE(); // keep CH1..CH4 on PA0..PA3 - - /* USER CODE END SysInit */ - - /* Initialize all configured peripherals */ - MX_GPIO_Init(); - MX_USB_DEVICE_Init(); - MX_TIM3_Init(); - MX_TIM2_Init(); - MX_TIM4_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4); - - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 1800); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, 1800); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, 1800); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, 1800); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END WHILE */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - GPIO_InitTypeDef g = {0}; - g.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3; - g.Mode = GPIO_MODE_AF_PP; - g.Speed = GPIO_SPEED_FREQ_HIGH; - HAL_GPIO_Init(GPIOA, &g); - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c5/10635b1d0c7a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c5/10635b1d0c7a00101d5d8357c45e25c3 deleted file mode 100644 index 5a1847c..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c5/10635b1d0c7a00101d5d8357c45e25c3 +++ /dev/null @@ -1,132 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_cdc_if.h - * @version : v2.0_Cube - * @brief : Header for usbd_cdc_if.c file. - ****************************************************************************** - * @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 */ - -/* Define to prevent recursive inclusion -------------------------------------*/ - -#ifndef __USBD_CDC_IF_H__ -#define __USBD_CDC_IF_H__ - -#ifdef __cplusplus - extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "usbd_cdc.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @brief For Usb device. - * @{ - */ - -/** @defgroup USBD_CDC_IF USBD_CDC_IF - * @brief Usb VCP device module - * @{ - */ - -/** @defgroup USBD_CDC_IF_Exported_Defines USBD_CDC_IF_Exported_Defines - * @brief Defines. - * @{ - */ -/* Define size for the receive and transmit buffer over CDC */ -#define APP_RX_DATA_SIZE 1024 -#define APP_TX_DATA_SIZE 1024 -/* USER CODE BEGIN EXPORTED_DEFINES */ - -/* USER CODE END EXPORTED_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Types USBD_CDC_IF_Exported_Types - * @brief Types. - * @{ - */ - -/* USER CODE BEGIN EXPORTED_TYPES */ - -/* USER CODE END EXPORTED_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Macros USBD_CDC_IF_Exported_Macros - * @brief Aliases. - * @{ - */ - -/* USER CODE BEGIN EXPORTED_MACRO */ - -/* USER CODE END EXPORTED_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables - * @brief Public variables. - * @{ - */ - -/** CDC Interface callback. */ -extern USBD_CDC_ItfTypeDef USBD_Interface_fops_FS; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_FunctionsPrototype USBD_CDC_IF_Exported_FunctionsPrototype - * @brief Public functions declaration. - * @{ - */ - -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len); - -/* USER CODE BEGIN EXPORTED_FUNCTIONS */ - -/* USER CODE END EXPORTED_FUNCTIONS */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USBD_CDC_IF_H__ */ - diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c7/80369808b57900101184ce6eca06d082 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c7/80369808b57900101184ce6eca06d082 deleted file mode 100644 index bbda3fa..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c7/80369808b57900101184ce6eca06d082 +++ /dev/null @@ -1,247 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32f1xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @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 "stm32f1xx_it.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* External variables --------------------------------------------------------*/ -extern PCD_HandleTypeDef hpcd_USB_FS; -extern TIM_HandleTypeDef htim1; -/* USER CODE BEGIN EV */ - -/* USER CODE END EV */ - -/******************************************************************************/ -/* Cortex-M3 Processor Interruption and Exception Handlers */ -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - while (1) - { - } - /* USER CODE END NonMaskableInt_IRQn 1 */ -} - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_HardFault_IRQn 0 */ - /* USER CODE END W1_HardFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ - /* USER CODE END W1_MemoryManagement_IRQn 0 */ - } -} - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_BusFault_IRQn 0 */ - /* USER CODE END W1_BusFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ - /* USER CODE END W1_UsageFault_IRQn 0 */ - } -} - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - /* USER CODE BEGIN SVCall_IRQn 0 */ - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - /* USER CODE BEGIN DebugMonitor_IRQn 0 */ - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - /* USER CODE BEGIN PendSV_IRQn 0 */ - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - -/******************************************************************************/ -/* STM32F1xx Peripheral Interrupt Handlers */ -/* Add here the Interrupt Handlers for the used peripherals. */ -/* For the available peripheral interrupt handler names, */ -/* please refer to the startup file (startup_stm32f1xx.s). */ -/******************************************************************************/ - -/** - * @brief This function handles USB high priority or CAN TX interrupts. - */ -void USB_HP_CAN1_TX_IRQHandler(void) -{ - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 0 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 1 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 1 */ -} - -/** - * @brief This function handles USB low priority or CAN RX0 interrupts. - */ -void USB_LP_CAN1_RX0_IRQHandler(void) -{ - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ -} - -/** - * @brief This function handles TIM1 update interrupt. - */ -void TIM1_UP_IRQHandler(void) -{ - /* USER CODE BEGIN TIM1_UP_IRQn 0 */ - //HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); - /* USER CODE END TIM1_UP_IRQn 0 */ - HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_UP_IRQn 1 */ -// - /* USER CODE END TIM1_UP_IRQn 1 */ -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c9/607e840fc67a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c9/607e840fc67a0010102ab5f83d1b4df9 deleted file mode 100644 index ec56293..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/c9/607e840fc67a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,622 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -ADC_HandleTypeDef hadc1; - -TIM_HandleTypeDef htim1; -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; -TIM_HandleTypeDef htim4; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM4_Init(void); -static void MX_TIM3_Init(void); -static void MX_ADC1_Init(void); -static void MX_TIM1_Init(void); -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ -void HAL_SYSTICK_Callback(void){ - static unsigned char c10ms = 0; - - static uint8_t c100ms = 0; - static uint8_t c1s = 0; - if (++c10ms >= 10) { // 10 ms - c10ms = 0; - if (++c100ms >= 10) { // 10 ms - c100ms = 0; //flag_10ms = 1; // set a flag; do real work in main loop - if (++c1s >= 10) { // 10 ms - c1s = 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_USB_DEVICE_Init(); - MX_TIM2_Init(); - MX_TIM4_Init(); - MX_TIM3_Init(); - MX_ADC1_Init(); - MX_TIM1_Init(); - /* USER CODE BEGIN 2 */ - - - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; - PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief ADC1 Initialization Function - * @param None - * @retval None - */ -static void MX_ADC1_Init(void) -{ - - /* USER CODE BEGIN ADC1_Init 0 */ - - /* USER CODE END ADC1_Init 0 */ - - ADC_ChannelConfTypeDef sConfig = {0}; - - /* USER CODE BEGIN ADC1_Init 1 */ - - /* USER CODE END ADC1_Init 1 */ - - /** Common config - */ - hadc1.Instance = ADC1; - hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; - hadc1.Init.ContinuousConvMode = DISABLE; - hadc1.Init.DiscontinuousConvMode = DISABLE; - hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; - hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 1; - if (HAL_ADC_Init(&hadc1) != HAL_OK) - { - Error_Handler(); - } - - /** Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_4; - sConfig.Rank = ADC_REGULAR_RANK_1; - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN ADC1_Init 2 */ - - /* USER CODE END ADC1_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}; - TIM_OC_InitTypeDef sConfigOC = {0}; - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {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 = 17999; - 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(); - } - if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 2400; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 5500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6500; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; - sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; - sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - sBreakDeadTimeConfig.DeadTime = 0; - sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; - sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM1_Init 2 */ - - /* USER CODE END TIM1_Init 2 */ - HAL_TIM_MspPostInit(&htim1); - -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 1000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 2000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 4000; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 0; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 17999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 10000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 11000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 12000; - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_Init 2 */ - HAL_TIM_MspPostInit(&htim3); - -} - -/** - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 0; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 17999; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 5000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 7000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 8000; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} - -/** - * @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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/cc/f0fcce86a57a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/cc/f0fcce86a57a0010102ab5f83d1b4df9 deleted file mode 100644 index 112de76..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/cc/f0fcce86a57a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,2 +0,0 @@ -DC22A860405A8BF2F2C095E5B6529F12=A0058552A1932C65D2225664F2449625 -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ce/e0bca7d3167a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ce/e0bca7d3167a00101d5d8357c45e25c3 deleted file mode 100644 index ff05e9b..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ce/e0bca7d3167a00101d5d8357c45e25c3 +++ /dev/null @@ -1,374 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; -TIM_HandleTypeDef htim4; -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -static void MX_TIM2_Init(void); -/* 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 */ - __HAL_RCC_AFIO_CLK_ENABLE(); - __HAL_AFIO_REMAP_TIM2_DISABLE(); // keep CH1..CH4 on PA0..PA3 - - /* USER CODE END SysInit */ - - /* Initialize all configured peripherals */ - MX_GPIO_Init(); - MX_USB_DEVICE_Init(); - MX_TIM3_Init(); - MX_TIM2_Init(); - MX_TIM4_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4); - - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 1800); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, 1800); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, 1800); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, 1800); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* USER CODE END WHILE */ -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - GPIO_InitTypeDef g = {0}; - g.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3; - g.Mode = GPIO_MODE_AF_PP; - g.Speed = GPIO_SPEED_FREQ_HIGH; - HAL_GPIO_Init(GPIOA, &g); - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/cf/e0cb3896d67a00101a7e8e8124d02ecc b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/cf/e0cb3896d67a00101a7e8e8124d02ecc deleted file mode 100644 index eec0df8..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/cf/e0cb3896d67a00101a7e8e8124d02ecc +++ /dev/null @@ -1,203 +0,0 @@ -/* 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" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -/* 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(); - /* USER CODE BEGIN 2 */ - - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* 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}; - - /** Initializes the RCC Oscillators according to the specified parameters - * in the RCC_OscInitTypeDef structure. - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; - 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_HSI; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @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_GPIOC_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d1/b06f66431b790010170b9c5237bb316a b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d1/b06f66431b790010170b9c5237bb316a deleted file mode 100644 index b9212de..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d1/b06f66431b790010170b9c5237bb316a +++ /dev/null @@ -1,266 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim1; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM1_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM1_Init(); - /* USER CODE BEGIN 2 */ - - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @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 = 71; - htim1.Init.CounterMode = TIM_COUNTERMODE_UP; - htim1.Init.Period = 999; - 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 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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d2/a0cc777c007a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d2/a0cc777c007a00101d5d8357c45e25c3 deleted file mode 100644 index 6550a2f..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d2/a0cc777c007a00101d5d8357c45e25c3 +++ /dev/null @@ -1,330 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_cdc_if.c - * @version : v2.0_Cube - * @brief : Usb device for Virtual Com Port. - ****************************************************************************** - * @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 "usbd_cdc_if.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE END PV */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @brief Usb device library. - * @{ - */ - -/** @addtogroup USBD_CDC_IF - * @{ - */ - -/** @defgroup USBD_CDC_IF_Private_TypesDefinitions USBD_CDC_IF_Private_TypesDefinitions - * @brief Private types. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_TYPES */ - -/* USER CODE END PRIVATE_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Defines USBD_CDC_IF_Private_Defines - * @brief Private defines. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_DEFINES */ -/* USER CODE END PRIVATE_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Macros USBD_CDC_IF_Private_Macros - * @brief Private macros. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_MACRO */ - -/* USER CODE END PRIVATE_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Variables USBD_CDC_IF_Private_Variables - * @brief Private variables. - * @{ - */ -/* Create buffer for reception and transmission */ -/* It's up to user to redefine and/or remove those define */ -/** Received data over USB are stored in this buffer */ -uint8_t UserRxBufferFS[APP_RX_DATA_SIZE]; - -/** Data to send over USB CDC are stored in this buffer */ -uint8_t UserTxBufferFS[APP_TX_DATA_SIZE]; - -/* USER CODE BEGIN PRIVATE_VARIABLES */ - -/* USER CODE END PRIVATE_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables - * @brief Public variables. - * @{ - */ - -extern USBD_HandleTypeDef hUsbDeviceFS; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_FunctionPrototypes USBD_CDC_IF_Private_FunctionPrototypes - * @brief Private functions declaration. - * @{ - */ - -static int8_t CDC_Init_FS(void); -static int8_t CDC_DeInit_FS(void); -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length); -static int8_t CDC_Receive_FS(uint8_t* pbuf, uint32_t *Len); - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ -#define RX_FIFO_SZ 256 -static uint8_t rx_fifo[RX_FIFO_SZ]; -static volatile uint16_t rx_head = 0, rx_tail = 0; - -static void fifo_push(const uint8_t* data, uint32_t len) { - while (len--) { - uint16_t next = (rx_head + 1u) & (RX_FIFO_SZ - 1u); - if (next == (rx_tail & (RX_FIFO_SZ - 1u))) { - /* overflow — drop byte (or set a flag) */ - data++; - continue; - } - rx_fifo[rx_head & (RX_FIFO_SZ - 1u)] = *data++; - rx_head = next; - } -} - -uint32_t CDC_Available(void) { - return (uint16_t)((rx_head - rx_tail) & (RX_FIFO_SZ - 1u)); -} - -int CDC_ReadByte(void) { - if (rx_tail == rx_head) return -1; - int b = rx_fifo[rx_tail & (RX_FIFO_SZ - 1u)]; - rx_tail = (rx_tail + 1u) & (RX_FIFO_SZ - 1u); - return b; -} - -/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */ - -/** - * @} - */ - -USBD_CDC_ItfTypeDef USBD_Interface_fops_FS = -{ - CDC_Init_FS, - CDC_DeInit_FS, - CDC_Control_FS, - CDC_Receive_FS -}; - -/* Private functions ---------------------------------------------------------*/ -/** - * @brief Initializes the CDC media low layer over the FS USB IP - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Init_FS(void) -{ - /* USER CODE BEGIN 3 */ - /* Set Application Buffers */ - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); - return (USBD_OK); - /* USER CODE END 3 */ -} - -/** - * @brief DeInitializes the CDC media low layer - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_DeInit_FS(void) -{ - /* USER CODE BEGIN 4 */ - return (USBD_OK); - /* USER CODE END 4 */ -} - -/** - * @brief Manage the CDC class requests - * @param cmd: Command code - * @param pbuf: Buffer containing command data (request parameters) - * @param length: Number of data to be sent (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) -{ - /* USER CODE BEGIN 5 */ - switch(cmd) - { - case CDC_SEND_ENCAPSULATED_COMMAND: - - break; - - case CDC_GET_ENCAPSULATED_RESPONSE: - - break; - - case CDC_SET_COMM_FEATURE: - - break; - - case CDC_GET_COMM_FEATURE: - - break; - - case CDC_CLEAR_COMM_FEATURE: - - break; - - /*******************************************************************************/ - /* Line Coding Structure */ - /*-----------------------------------------------------------------------------*/ - /* Offset | Field | Size | Value | Description */ - /* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/ - /* 4 | bCharFormat | 1 | Number | Stop bits */ - /* 0 - 1 Stop bit */ - /* 1 - 1.5 Stop bits */ - /* 2 - 2 Stop bits */ - /* 5 | bParityType | 1 | Number | Parity */ - /* 0 - None */ - /* 1 - Odd */ - /* 2 - Even */ - /* 3 - Mark */ - /* 4 - Space */ - /* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */ - /*******************************************************************************/ - case CDC_SET_LINE_CODING: - - break; - - case CDC_GET_LINE_CODING: - - break; - - case CDC_SET_CONTROL_LINE_STATE: - - break; - - case CDC_SEND_BREAK: - - break; - - default: - break; - } - - return (USBD_OK); - /* USER CODE END 5 */ -} - -/** - * @brief Data received over USB OUT endpoint are sent over CDC interface - * through this function. - * - * @note - * This function will issue a NAK packet on any OUT packet received on - * USB endpoint until exiting this function. If you exit this function - * before transfer is complete on CDC interface (ie. using DMA controller) - * it will result in receiving more data while previous ones are still - * not sent. - * - * @param Buf: Buffer of data to be received - * @param Len: Number of data received (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) -{ - /* USER CODE BEGIN 6 */ - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); - USBD_CDC_ReceivePacket(&hUsbDeviceFS); - return (USBD_OK); - /* USER CODE END 6 */ -} - -/** - * @brief CDC_Transmit_FS - * Data to send over USB IN endpoint are sent over CDC interface - * through this function. - * @note - * - * - * @param Buf: Buffer of data to be sent - * @param Len: Number of data to be sent (in bytes) - * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY - */ -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) -{ - uint8_t result = USBD_OK; - /* USER CODE BEGIN 7 */ - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; - if (hcdc->TxState != 0){ - return USBD_BUSY; - } - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); - result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); - /* USER CODE END 7 */ - return result; -} - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/** - * @} - */ - -/** - * @} - */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d4/0027584a8578001019e1d409b055d613 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d4/0027584a8578001019e1d409b055d613 deleted file mode 100644 index 91cb9ca..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d4/0027584a8578001019e1d409b055d613 +++ /dev/null @@ -1,3 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=1 -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d4/70350260be7900101184ce6eca06d082 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d4/70350260be7900101184ce6eca06d082 deleted file mode 100644 index 53416a0..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d4/70350260be7900101184ce6eca06d082 +++ /dev/null @@ -1,228 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32f1xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @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 "stm32f1xx_it.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* External variables --------------------------------------------------------*/ -extern TIM_HandleTypeDef htim1; -/* USER CODE BEGIN EV */ - -/* USER CODE END EV */ - -/******************************************************************************/ -/* Cortex-M3 Processor Interruption and Exception Handlers */ -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - while (1) - { - } - /* USER CODE END NonMaskableInt_IRQn 1 */ -} - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_HardFault_IRQn 0 */ - /* USER CODE END W1_HardFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ - /* USER CODE END W1_MemoryManagement_IRQn 0 */ - } -} - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_BusFault_IRQn 0 */ - /* USER CODE END W1_BusFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ - /* USER CODE END W1_UsageFault_IRQn 0 */ - } -} - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - /* USER CODE BEGIN SVCall_IRQn 0 */ - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - /* USER CODE BEGIN DebugMonitor_IRQn 0 */ - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - /* USER CODE BEGIN PendSV_IRQn 0 */ - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - -/******************************************************************************/ -/* STM32F1xx Peripheral Interrupt Handlers */ -/* Add here the Interrupt Handlers for the used peripherals. */ -/* For the available peripheral interrupt handler names, */ -/* please refer to the startup file (startup_stm32f1xx.s). */ -/******************************************************************************/ - -/** - * @brief This function handles TIM1 update interrupt. - */ -void TIM1_UP_IRQHandler(void) -{ - /* USER CODE BEGIN TIM1_UP_IRQn 0 */ - static uint8_t cont100ms=0; - static uint8_t cont1s=0; - /* USER CODE END TIM1_UP_IRQn 0 */ - HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_UP_IRQn 1 */ -// if(cont100ms)cont100ms--; -// else{ -// cont100ms=100; -// if(cont1s)cont1s--; -// else{ -// cont1s=100; -// HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); -// } - //HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); -/* USER CODE END TIM1_UP_IRQn 0 */ - } - /* USER CODE END TIM1_UP_IRQn 1 */ -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d4/f086c91d8778001019e1d409b055d613 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d4/f086c91d8778001019e1d409b055d613 deleted file mode 100644 index c6533a6..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/d4/f086c91d8778001019e1d409b055d613 +++ /dev/null @@ -1,3 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=3 -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/da/d0bbce8abc7a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/da/d0bbce8abc7a0010102ab5f83d1b4df9 deleted file mode 100644 index 2d08f3c..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/da/d0bbce8abc7a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,303 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_cdc_if.c - * @version : v2.0_Cube - * @brief : Usb device for Virtual Com Port. - ****************************************************************************** - * @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 "usbd_cdc_if.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE END PV */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @brief Usb device library. - * @{ - */ - -/** @addtogroup USBD_CDC_IF - * @{ - */ - -/** @defgroup USBD_CDC_IF_Private_TypesDefinitions USBD_CDC_IF_Private_TypesDefinitions - * @brief Private types. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_TYPES */ - -/* USER CODE END PRIVATE_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Defines USBD_CDC_IF_Private_Defines - * @brief Private defines. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_DEFINES */ -/* USER CODE END PRIVATE_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Macros USBD_CDC_IF_Private_Macros - * @brief Private macros. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_MACRO */ - -/* USER CODE END PRIVATE_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Variables USBD_CDC_IF_Private_Variables - * @brief Private variables. - * @{ - */ -/* Create buffer for reception and transmission */ -/* It's up to user to redefine and/or remove those define */ -/** Received data over USB are stored in this buffer */ -uint8_t UserRxBufferFS[APP_RX_DATA_SIZE]; - -/** Data to send over USB CDC are stored in this buffer */ -uint8_t UserTxBufferFS[APP_TX_DATA_SIZE]; - -/* USER CODE BEGIN PRIVATE_VARIABLES */ - -/* USER CODE END PRIVATE_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables - * @brief Public variables. - * @{ - */ - -extern USBD_HandleTypeDef hUsbDeviceFS; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_FunctionPrototypes USBD_CDC_IF_Private_FunctionPrototypes - * @brief Private functions declaration. - * @{ - */ - -static int8_t CDC_Init_FS(void); -static int8_t CDC_DeInit_FS(void); -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length); -static int8_t CDC_Receive_FS(uint8_t* pbuf, uint32_t *Len); - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */ - -/** - * @} - */ - -USBD_CDC_ItfTypeDef USBD_Interface_fops_FS = -{ - CDC_Init_FS, - CDC_DeInit_FS, - CDC_Control_FS, - CDC_Receive_FS -}; - -/* Private functions ---------------------------------------------------------*/ -/** - * @brief Initializes the CDC media low layer over the FS USB IP - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Init_FS(void) -{ - /* USER CODE BEGIN 3 */ - /* Set Application Buffers */ - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); - return (USBD_OK); - /* USER CODE END 3 */ -} - -/** - * @brief DeInitializes the CDC media low layer - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_DeInit_FS(void) -{ - /* USER CODE BEGIN 4 */ - return (USBD_OK); - /* USER CODE END 4 */ -} - -/** - * @brief Manage the CDC class requests - * @param cmd: Command code - * @param pbuf: Buffer containing command data (request parameters) - * @param length: Number of data to be sent (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) -{ - /* USER CODE BEGIN 5 */ - switch(cmd) - { - case CDC_SEND_ENCAPSULATED_COMMAND: - - break; - - case CDC_GET_ENCAPSULATED_RESPONSE: - - break; - - case CDC_SET_COMM_FEATURE: - - break; - - case CDC_GET_COMM_FEATURE: - - break; - - case CDC_CLEAR_COMM_FEATURE: - - break; - - /*******************************************************************************/ - /* Line Coding Structure */ - /*-----------------------------------------------------------------------------*/ - /* Offset | Field | Size | Value | Description */ - /* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/ - /* 4 | bCharFormat | 1 | Number | Stop bits */ - /* 0 - 1 Stop bit */ - /* 1 - 1.5 Stop bits */ - /* 2 - 2 Stop bits */ - /* 5 | bParityType | 1 | Number | Parity */ - /* 0 - None */ - /* 1 - Odd */ - /* 2 - Even */ - /* 3 - Mark */ - /* 4 - Space */ - /* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */ - /*******************************************************************************/ - case CDC_SET_LINE_CODING: - - break; - - case CDC_GET_LINE_CODING: - - break; - - case CDC_SET_CONTROL_LINE_STATE: - - break; - - case CDC_SEND_BREAK: - - break; - - default: - break; - } - - return (USBD_OK); - /* USER CODE END 5 */ -} - -/** - * @brief Data received over USB OUT endpoint are sent over CDC interface - * through this function. - * - * @note - * This function will issue a NAK packet on any OUT packet received on - * USB endpoint until exiting this function. If you exit this function - * before transfer is complete on CDC interface (ie. using DMA controller) - * it will result in receiving more data while previous ones are still - * not sent. - * - * @param Buf: Buffer of data to be received - * @param Len: Number of data received (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) -{ - /* USER CODE BEGIN 6 */ - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); - USBD_CDC_ReceivePacket(&hUsbDeviceFS); - return (USBD_OK); - /* USER CODE END 6 */ -} - -/** - * @brief CDC_Transmit_FS - * Data to send over USB IN endpoint are sent over CDC interface - * through this function. - * @note - * - * - * @param Buf: Buffer of data to be sent - * @param Len: Number of data to be sent (in bytes) - * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY - */ -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) -{ - uint8_t result = USBD_OK; - /* USER CODE BEGIN 7 */ - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; - if (hcdc->TxState != 0){ - return USBD_BUSY; - } - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); - result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); - /* USER CODE END 7 */ - return result; -} - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/** - * @} - */ - -/** - * @} - */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/e0/10444201d87a00101a7e8e8124d02ecc b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/e0/10444201d87a00101a7e8e8124d02ecc deleted file mode 100644 index 3c1d171..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/e0/10444201d87a00101a7e8e8124d02ecc +++ /dev/null @@ -1,223 +0,0 @@ -/* 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" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ -void HAL_SYSTICK_Callback(void){ - static unsigned char c10ms = 0; - - static uint8_t c100ms = 0; - static uint8_t c1s = 0; - if (++c10ms >= 10) { // 10 ms - c10ms = 0; - if (++c100ms >= 10) { // 10 ms - c100ms = 0; //flag_10ms = 1; // set a flag; do real work in main loop - if (++c1s >= 10) { // 10 ms - c1s = 0; - HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); - } - } - } -} - -/* 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(); - /* USER CODE BEGIN 2 */ - - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* 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}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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 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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/e3/00fff1e3be7900101184ce6eca06d082 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/e3/00fff1e3be7900101184ce6eca06d082 deleted file mode 100644 index 4f35082..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/e3/00fff1e3be7900101184ce6eca06d082 +++ /dev/null @@ -1,252 +0,0 @@ -/* 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" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim1; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM1_Init(void); -/* 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_TIM1_Init(); - /* USER CODE BEGIN 2 */ - - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* 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}; - - /** 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_NONE; - 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_HSE; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @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 = 71; - htim1.Init.CounterMode = TIM_COUNTERMODE_UP; - htim1.Init.Period = 9999; - htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim1.Init.RepetitionCounter = 0; - htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; - 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 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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/e4/106d86388678001019e1d409b055d613 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/e4/106d86388678001019e1d409b055d613 deleted file mode 100644 index eddf5aa..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/e4/106d86388678001019e1d409b055d613 +++ /dev/null @@ -1,3 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=2 -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ec/8098976cbc7a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ec/8098976cbc7a0010102ab5f83d1b4df9 deleted file mode 100644 index 24446b6..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ec/8098976cbc7a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,205 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -/* 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_USB_DEVICE_Init(); - /* USER CODE BEGIN 2 */ - - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6; - 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_1) != HAL_OK) - { - Error_Handler(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief GPIO Initialization Function - * @param None - * @retval None - */ -static void MX_GPIO_Init(void) -{ - /* USER CODE BEGIN MX_GPIO_Init_1 */ - - /* USER CODE END MX_GPIO_Init_1 */ - - /* GPIO Ports Clock Enable */ - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f0/5073db96bc7a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f0/5073db96bc7a0010102ab5f83d1b4df9 deleted file mode 100644 index 5a1847c..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f0/5073db96bc7a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,132 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_cdc_if.h - * @version : v2.0_Cube - * @brief : Header for usbd_cdc_if.c file. - ****************************************************************************** - * @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 */ - -/* Define to prevent recursive inclusion -------------------------------------*/ - -#ifndef __USBD_CDC_IF_H__ -#define __USBD_CDC_IF_H__ - -#ifdef __cplusplus - extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "usbd_cdc.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @brief For Usb device. - * @{ - */ - -/** @defgroup USBD_CDC_IF USBD_CDC_IF - * @brief Usb VCP device module - * @{ - */ - -/** @defgroup USBD_CDC_IF_Exported_Defines USBD_CDC_IF_Exported_Defines - * @brief Defines. - * @{ - */ -/* Define size for the receive and transmit buffer over CDC */ -#define APP_RX_DATA_SIZE 1024 -#define APP_TX_DATA_SIZE 1024 -/* USER CODE BEGIN EXPORTED_DEFINES */ - -/* USER CODE END EXPORTED_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Types USBD_CDC_IF_Exported_Types - * @brief Types. - * @{ - */ - -/* USER CODE BEGIN EXPORTED_TYPES */ - -/* USER CODE END EXPORTED_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Macros USBD_CDC_IF_Exported_Macros - * @brief Aliases. - * @{ - */ - -/* USER CODE BEGIN EXPORTED_MACRO */ - -/* USER CODE END EXPORTED_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables - * @brief Public variables. - * @{ - */ - -/** CDC Interface callback. */ -extern USBD_CDC_ItfTypeDef USBD_Interface_fops_FS; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_FunctionsPrototype USBD_CDC_IF_Exported_FunctionsPrototype - * @brief Public functions declaration. - * @{ - */ - -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len); - -/* USER CODE BEGIN EXPORTED_FUNCTIONS */ - -/* USER CODE END EXPORTED_FUNCTIONS */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USBD_CDC_IF_H__ */ - diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f2/6038c032177a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f2/6038c032177a00101d5d8357c45e25c3 deleted file mode 100644 index 52bd0fe..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f2/6038c032177a00101d5d8357c45e25c3 +++ /dev/null @@ -1,445 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include "usbd_cdc_if.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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; -TIM_HandleTypeDef htim4; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM4_Init(void); -/* 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 */ - __HAL_RCC_AFIO_CLK_ENABLE(); - __HAL_AFIO_REMAP_TIM2_DISABLE(); // keep CH1..CH4 on PA0..PA3 - - /* USER CODE END SysInit */ - - /* Initialize all configured peripherals */ - MX_GPIO_Init(); - MX_USB_DEVICE_Init(); - MX_TIM3_Init(); - MX_TIM2_Init(); - MX_TIM4_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4); - - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 1800); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, 1800); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, 1800); - __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, 1800); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - int c = CDC_ReadByte(); - //if (c < 0) break; - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - // tiny spin or yield - } - } - - //HAL_Delay(1000); - // CDC_Transmit_FS((uint8_t*)"Ping\r\n", 6); - } - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 9000; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 6000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 3000; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_Init 2 */ - -} - -/** - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - htim4.Init.Prescaler = 71; - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - htim4.Init.Period = 999; - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 500; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.Pulse = 0; - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - -} - -/** - * @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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f3/101359710a7a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f3/101359710a7a00101d5d8357c45e25c3 deleted file mode 100644 index 78857a1..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f3/101359710a7a00101d5d8357c45e25c3 +++ /dev/null @@ -1,340 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -static void MX_TIM2_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - MX_TIM2_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 17999; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 0; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f3/a0ecdfe217790010170b9c5237bb316a b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f3/a0ecdfe217790010170b9c5237bb316a deleted file mode 100644 index e439a38..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f3/a0ecdfe217790010170b9c5237bb316a +++ /dev/null @@ -1,303 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbd_cdc_if.c - * @version : v2.0_Cube - * @brief : Usb device for Virtual Com Port. - ****************************************************************************** - * @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 "usbd_cdc_if.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE END PV */ - -/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY - * @brief Usb device library. - * @{ - */ - -/** @addtogroup USBD_CDC_IF - * @{ - */ - -/** @defgroup USBD_CDC_IF_Private_TypesDefinitions USBD_CDC_IF_Private_TypesDefinitions - * @brief Private types. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_TYPES */ - -/* USER CODE END PRIVATE_TYPES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Defines USBD_CDC_IF_Private_Defines - * @brief Private defines. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_DEFINES */ -/* USER CODE END PRIVATE_DEFINES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Macros USBD_CDC_IF_Private_Macros - * @brief Private macros. - * @{ - */ - -/* USER CODE BEGIN PRIVATE_MACRO */ - -/* USER CODE END PRIVATE_MACRO */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_Variables USBD_CDC_IF_Private_Variables - * @brief Private variables. - * @{ - */ -/* Create buffer for reception and transmission */ -/* It's up to user to redefine and/or remove those define */ -/** Received data over USB are stored in this buffer */ -uint8_t UserRxBufferFS[APP_RX_DATA_SIZE]; - -/** Data to send over USB CDC are stored in this buffer */ -uint8_t UserTxBufferFS[APP_TX_DATA_SIZE]; - -/* USER CODE BEGIN PRIVATE_VARIABLES */ - -/* USER CODE END PRIVATE_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables - * @brief Public variables. - * @{ - */ - -extern USBD_HandleTypeDef hUsbDeviceFS; - -/* USER CODE BEGIN EXPORTED_VARIABLES */ - -/* USER CODE END EXPORTED_VARIABLES */ - -/** - * @} - */ - -/** @defgroup USBD_CDC_IF_Private_FunctionPrototypes USBD_CDC_IF_Private_FunctionPrototypes - * @brief Private functions declaration. - * @{ - */ - -static int8_t CDC_Init_FS(void); -static int8_t CDC_DeInit_FS(void); -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length); -static int8_t CDC_Receive_FS(uint8_t* pbuf, uint32_t *Len); - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */ - -/** - * @} - */ - -USBD_CDC_ItfTypeDef USBD_Interface_fops_FS = -{ - CDC_Init_FS, - CDC_DeInit_FS, - CDC_Control_FS, - CDC_Receive_FS -}; - -/* Private functions ---------------------------------------------------------*/ -/** - * @brief Initializes the CDC media low layer over the FS USB IP - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Init_FS(void) -{ - /* USER CODE BEGIN 3 */ - /* Set Application Buffers */ - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); - return (USBD_OK); - /* USER CODE END 3 */ -} - -/** - * @brief DeInitializes the CDC media low layer - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_DeInit_FS(void) -{ - /* USER CODE BEGIN 4 */ - return (USBD_OK); - /* USER CODE END 4 */ -} - -/** - * @brief Manage the CDC class requests - * @param cmd: Command code - * @param pbuf: Buffer containing command data (request parameters) - * @param length: Number of data to be sent (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) -{ - /* USER CODE BEGIN 5 */ - switch(cmd) - { - case CDC_SEND_ENCAPSULATED_COMMAND: - - break; - - case CDC_GET_ENCAPSULATED_RESPONSE: - - break; - - case CDC_SET_COMM_FEATURE: - - break; - - case CDC_GET_COMM_FEATURE: - - break; - - case CDC_CLEAR_COMM_FEATURE: - - break; - - /*******************************************************************************/ - /* Line Coding Structure */ - /*-----------------------------------------------------------------------------*/ - /* Offset | Field | Size | Value | Description */ - /* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/ - /* 4 | bCharFormat | 1 | Number | Stop bits */ - /* 0 - 1 Stop bit */ - /* 1 - 1.5 Stop bits */ - /* 2 - 2 Stop bits */ - /* 5 | bParityType | 1 | Number | Parity */ - /* 0 - None */ - /* 1 - Odd */ - /* 2 - Even */ - /* 3 - Mark */ - /* 4 - Space */ - /* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */ - /*******************************************************************************/ - case CDC_SET_LINE_CODING: - - break; - - case CDC_GET_LINE_CODING: - - break; - - case CDC_SET_CONTROL_LINE_STATE: - - break; - - case CDC_SEND_BREAK: - - break; - - default: - break; - } - - return (USBD_OK); - /* USER CODE END 5 */ -} - -/** - * @brief Data received over USB OUT endpoint are sent over CDC interface - * through this function. - * - * @note - * This function will issue a NAK packet on any OUT packet received on - * USB endpoint until exiting this function. If you exit this function - * before transfer is complete on CDC interface (ie. using DMA controller) - * it will result in receiving more data while previous ones are still - * not sent. - * - * @param Buf: Buffer of data to be received - * @param Len: Number of data received (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) -{ - /* USER CODE BEGIN 6 */ - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); - USBD_CDC_ReceivePacket(&hUsbDeviceFS); - return (USBD_OK); - /* USER CODE END 6 */ -} - -/** - * @brief CDC_Transmit_FS - * Data to send over USB IN endpoint are sent over CDC interface - * through this function. - * @note - * - * - * @param Buf: Buffer of data to be sent - * @param Len: Number of data to be sent (in bytes) - * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY - */ -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) -{ - uint8_t result = USBD_OK; - /* USER CODE BEGIN 7 */ - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; - if (hcdc->TxState != 0){ - return USBD_BUSY;USBD_CDC_TransmitPacket - } - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); - result = (&hUsbDeviceFS); - /* USER CODE END 7 */ - return result; -} - -/* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ - -/** - * @} - */ - -/** - * @} - */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f4/9082421c187a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f4/9082421c187a00101d5d8357c45e25c3 deleted file mode 100644 index 179fa1f..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f4/9082421c187a00101d5d8357c45e25c3 +++ /dev/null @@ -1,3 +0,0 @@ -66BE74F758C12D739921AEA421D593D3=0 -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f4/c084a29c0f7a00101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f4/c084a29c0f7a00101d5d8357c45e25c3 deleted file mode 100644 index 5ea2221..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f4/c084a29c0f7a00101d5d8357c45e25c3 +++ /dev/null @@ -1,246 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32f1xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @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 "stm32f1xx_it.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* External variables --------------------------------------------------------*/ -extern PCD_HandleTypeDef hpcd_USB_FS; -extern TIM_HandleTypeDef htim3; -/* USER CODE BEGIN EV */ - -/* USER CODE END EV */ - -/******************************************************************************/ -/* Cortex-M3 Processor Interruption and Exception Handlers */ -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - while (1) - { - } - /* USER CODE END NonMaskableInt_IRQn 1 */ -} - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_HardFault_IRQn 0 */ - /* USER CODE END W1_HardFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ - /* USER CODE END W1_MemoryManagement_IRQn 0 */ - } -} - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_BusFault_IRQn 0 */ - /* USER CODE END W1_BusFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ - /* USER CODE END W1_UsageFault_IRQn 0 */ - } -} - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - /* USER CODE BEGIN SVCall_IRQn 0 */ - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - /* USER CODE BEGIN DebugMonitor_IRQn 0 */ - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - /* USER CODE BEGIN PendSV_IRQn 0 */ - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - -/******************************************************************************/ -/* STM32F1xx Peripheral Interrupt Handlers */ -/* Add here the Interrupt Handlers for the used peripherals. */ -/* For the available peripheral interrupt handler names, */ -/* please refer to the startup file (startup_stm32f1xx.s). */ -/******************************************************************************/ - -/** - * @brief This function handles USB high priority or CAN TX interrupts. - */ -void USB_HP_CAN1_TX_IRQHandler(void) -{ - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 0 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_HP_CAN1_TX_IRQn 1 */ - - /* USER CODE END USB_HP_CAN1_TX_IRQn 1 */ -} - -/** - * @brief This function handles USB low priority or CAN RX0 interrupts. - */ -void USB_LP_CAN1_RX0_IRQHandler(void) -{ - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ -} - -/** - * @brief This function handles TIM3 global interrupt. - */ -void TIM3_IRQHandler(void) -{ - /* USER CODE BEGIN TIM3_IRQn 0 */ - - /* USER CODE END TIM3_IRQn 0 */ - HAL_TIM_IRQHandler(&htim3); - /* USER CODE BEGIN TIM3_IRQn 1 */ - HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); - /* USER CODE END TIM3_IRQn 1 */ -} - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f7/c070a9b9a47a0010102ab5f83d1b4df9 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f7/c070a9b9a47a0010102ab5f83d1b4df9 deleted file mode 100644 index 91783a0..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/f7/c070a9b9a47a0010102ab5f83d1b4df9 +++ /dev/null @@ -1,2 +0,0 @@ -DC22A860405A8BF2F2C095E5B6529F12=85393DF48E8E2DC6952D37906AF30DC2 -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ff/b02b156ab17900101184ce6eca06d082 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ff/b02b156ab17900101184ce6eca06d082 deleted file mode 100644 index 9719ce2..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ff/b02b156ab17900101184ce6eca06d082 +++ /dev/null @@ -1,2 +0,0 @@ -DC22A860405A8BF2F2C095E5B6529F12=9888DDB82096C86784993006E161A8DB -eclipse.preferences.version=1 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ff/d02d0374f17900101d5d8357c45e25c3 b/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ff/d02d0374f17900101d5d8357c45e25c3 deleted file mode 100644 index f3a70fe..0000000 --- a/workspace/.metadata/.plugins/org.eclipse.core.resources/.history/ff/d02d0374f17900101d5d8357c45e25c3 +++ /dev/null @@ -1,265 +0,0 @@ -/* 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 "usb_device.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* 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 ---------------------------------------------------------*/ -TIM_HandleTypeDef htim3; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_TIM3_Init(void); -/* 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_USB_DEVICE_Init(); - MX_TIM3_Init(); - /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start_IT(&htim3); - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - /* 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}; - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - - /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 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(); - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } -} - -/** - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - htim3.Init.Prescaler = 71; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 9999; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_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_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 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); - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - -/* USER CODE BEGIN 4 */ - -/* USER CODE END 4 */ - -/** - * @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/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM1/2.tree b/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM1/2.tree new file mode 100644 index 0000000000000000000000000000000000000000..c92250eea992f08cc90f3cc34959d09447710924 GIT binary patch literal 11246 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 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM10/.indexes/bf/c4/history.index b/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM10/.indexes/bf/c4/history.index index 6669ac45fa91f0ff6e8c1e8a1a427d331ce8ce17..340db9b3747a2de344979f9813d69af267a89f46 100644 GIT binary patch literal 49 zcmZQ#U|?Wm5YTtdFG|%9E=tzVP0Y;GOJ-o)&}`oIwUI$Ua>gIKZIiB_eR6s8qZy10 F3;o zXJ(>RR}b#l?ak;tKN1S&+pq)x89( zf6$lp1ldk?eTcY1g3}FT@%m>k!0H#+>YPOupSKz!-k@l31X;Y_9jboc>n+IQkKLbx z&AE{A0>!Uf!4SVX%#Qqg1j%0?yB>hmZ+N1VcL+)Rg5^c9c*Bh8IeU=Aw+1c)ivs|P Ct&Z~m diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM2/1.tree b/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM2/1.tree new file mode 100644 index 0000000000000000000000000000000000000000..5853ce3f5d8c36774ec28479836b54072b42398c GIT binary patch literal 11357 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 C)`krL literal 0 HcmV?d00001 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM3/1.tree b/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM3/1.tree new file mode 100644 index 0000000000000000000000000000000000000000..2efaacd6aff1ad951bbd3d0e279759e4f5d8808c GIT binary patch literal 11357 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
_9RPDjE@5N+(r}> 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 literal 0 HcmV?d00001 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM5/.indexes/91/1/history.index b/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM5/.indexes/91/1/history.index deleted file mode 100644 index 48a2c7f52b497e2b5d7c2136d6973f6dd6c09326..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmZQ#U|?WkkktUxL)(px*3cN3>Ur}sr^-n5SLo5vlJwb-@s%Bwt_ngjJS{toV8tSJxJq%Gvzf5 zNa8VC5Q{#joX|qH=&<(36(IEnJ0Gl(06IXNdrpw~Zo@32N3X%+7i_moL>4c~cn%g{ R@aFy_aU}HzyllY^1^~{LTYCTi diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM5/.indexes/af/history.index b/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM5/.indexes/af/history.index deleted file mode 100644 index 79f83455afd47101a2e3c40778ddb17f435b101b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmZQ#U|?WmP}SEfPAw_P%u6rUFD}V7HcBo{O3h43)hj5<&q_@$0n({y#SE+;+D^*0 zS1<@jKD@%YA@rJX+A*D_GZ+~d1ajLf+K|Lc*Q$ZV8Pp@ZT9L%#?kIr8CrnXDZ$T25 T3Xy`S|M(@n8A*JqA4D7gfiF5v diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM5/.indexes/bf/c4/history.index b/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM5/.indexes/bf/c4/history.index deleted file mode 100644 index d461e42e9602acd909b02eb32a5234061934c480..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 797 zcmZQ#U|?Wk5YTtdFG|%9E=tzVP0Y;GOJ)#HusC2OUd13F8`~UyBu@44PL2HaGZ+~d z9_(3uSqw?se10xiTwvAgy(r=e5OIddR;!T3{~S&Rt5=AfZX=3hPC|w!SbRdrUo$}@ z@#`}^z~T(OmEy?aZj;@?;sxI|m;{j2pH{O2i#xDt@bMvumnvz2#XtBb74jg7zgwpU z78ekXEaXBGzj{CnEY2`RCzTUP{NrR%u=s?(Nq)%UwmWXE1BK6oBHLgFB=s4_m%!o* zGET~WDiPr+*|i%i9w6d8@i&tA4=sqegY^C;WbyZvyTIxj%yy?Ei$^YLfS6M;Wy&Wc zbHod)AolVnE&7NgZs=GE7Qdj&T!JkA`gAtL{4l??_ekn1)?|XkH{_=|O9RElx#t9# z?>5ZZAn<1e$iEB{h_q8&l51>~W>`@XpIHJ-LmUTM7R}*D3X3H^5IZh>c^HIjN7_=T z9ql%ow*&1EY&n;AitR!Z|EWJ~z+q}HnuaX?!SgLxyuoY+$5tfuuOrx3g5C74;gAfH gTQ8NffyFO;*I0lo?jFhl7B@I~*aunsD<{Nn09jQWBLDyZ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM5/2.tree b/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM5/2.tree new file mode 100644 index 0000000000000000000000000000000000000000..59b1e65a9f0c5cbb4d12876c10e19a20dbecdb7b GIT binary patch literal 49655 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 literal 0 HcmV?d00001 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM6/.indexes/af/history.index b/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM6/.indexes/af/history.index deleted file mode 100644 index e9be296392d0d76174eb2d4e6ca845c69174a69c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118 zcmZQ#U|?WmP}SEfPAw_P%u6rUFD}V7HcBo{O3h43)hj5<&q_@$0n({y#SF{~ifo%V tRx$_(ww%j5#de{|`r*|zGZ+~d9AY)gkj1}Dgotm@7R^Ey&**`O0|0UWEBF8a diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM6/.indexes/bf/c4/history.index b/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM6/.indexes/bf/c4/history.index deleted file mode 100644 index e7a10cb23281b0595ff97a89b27fd221a9e42ff5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmZQ#U|?WkkkEI|FG|%9E=txfF3B}EN;9meh|et1OJ-mxFl9>ESIHnC*m5rK6x)TS z+p1b?XD~7_B$z)BL>6y8APN?LP-$Sg8%h1Ll>%UKh1}Q6cOr?iGI4>$83Yh^=O$+6 f0qtZGxcL3-ek8RM-swWr{{Q$G+0M5j>R@pIAZ16} diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM6/1.tree b/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM6/1.tree new file mode 100644 index 0000000000000000000000000000000000000000..7a02c8abe9e8c3e4474796e9760c210d45e2ece3 GIT binary patch literal 15180 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 Uf~4MF3-21M_n=bjt3CVj3of$``Tzg` delta 13 Ucmey#_JNUwfq{W}axc>x032!r1^@s6 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM8/.indexes/af/history.index b/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM8/.indexes/af/history.index deleted file mode 100644 index 4a992887ac86fd2d2ce309bf0b5988e619a76afb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70 zcmZQ#U|?WmP}SEfPAw_P%u6rUFD}V7HcBo{O3h43)hj5<&q_@$0n({y#SDxG3Rdo1 YQpF%3ptbdft+ek?4q1WCGZ+~d0Q&S6>Hq)$ diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM8/1.tree b/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/AUTOM8/1.tree new file mode 100644 index 0000000000000000000000000000000000000000..cfd0c8f09b9cce7d4639a343e7133e4e557cf983 GIT binary patch literal 5568 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 literal 0 HcmV?d00001 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/blink/.indexes/af/history.index b/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/blink/.indexes/af/history.index deleted file mode 100644 index ae05f617e1f44b545a6b5fd4342cb02c977d01f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmZQ#U|?WmP}SEfPAw_P%u6rUFD}V7HcBo{O3h43)hj5<&q_@$0n({y#SAPL^0ex& zS1|}k)%7*1T+lo7T_k+V3`Pcq58svMUPBVsbPofI8?f)GMHW}c2nCBfoZS?SEIv62 GA`Sq?f-{x? diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/blink/.indexes/bf/c4/history.index b/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/blink/.indexes/bf/c4/history.index deleted file mode 100644 index c67b775194b83580e583aa2166f1f5f565bdea8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 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

r>Ic0=4U`o5>!c}%1uydr2PF?AN&ARWT%EUY zw1R;WWG7msHqAkSx3J%~ysKFr${WMNcKLJ^rsP{m+3&P`KJuJ4w&d57|pe5b89Eb)Bvf~VxW*$b3j-7?cKQ1ZPb;bsgjzPMYD@DAlE z`F_%~syDc{TRB#OrQ`=$U$vm!J6-H)Whwb#QYSRM@XBsI+~W#U@}s1X&8S~eNSo0p zPst-mX4M-Ok`orNl>9jB3k$i%)5=ovlcbQEUQ|eC6fh+}O(qizQ6}Y_;7w|wq(A8z z%^nu@D6;~mq~6XNmi9EW0;lBB+?7eI?pEd)JS9JCJDauhDOZ3U?0NYB=w>W6d^&B> zd)(7TY~+#A{cOTA&eL`?U;AFB=$&j$Ue;F*esy{9;Mue|_^<5XS5@c_VVSjJ;e|_< zE?cgktf$wSf zstUd~Toeq(=|!lh^W>$*j_|Mgui(+TLr*wmj?B?`M@d?XmOU!uo|#>8m4ohIK}SZr z9ca2TcPLYcF7^gd6FG@L51xtcgbPl744E67+o{RqKad& zF7j8em@r_+`54=P3pCI?I*+$Gnjvn#augIZ*qUXSc9xkjD+ zEEr10w+`Rt#=?qFf-#1Nk9Ns5>c8`pGL#(II()cGu2Fx%a3GXm}E6QoEp2Io#ag4Pt|tev-Y?uj6J8 zHx37-WYnJNFO<>ev4cT=DVemrU2+4XZQdg`hgYj$V2MIaVLy*KPLs1GQuF=fWV&Sm zn9zzT3~~Ps$xTTnrSUGg0p1{3SxSyiebFwtmJci?QaSxA*D^w9hVGs8g1j3mF!b!TW~LkCRBiOCe0 z%f`_ANAFOc63kDc*p{w{Lf3Zl9LmkE;2&jYvuz>$;{+>+9DyezHV0Flt}Q+ z6E+}4Klbe_Z@H@|B^|-lgsoE7Ik*grvBs@5C9~oLHGHS}Y}xkpu%eXA4o(dcEUR71 zx1agIQgTY{D=&Y`H_CiqDLFOHCa+-2cBt8aQi8=)cn4fwz?RMC8H!SJdVD(lR~^xL zu~AWJO3n!CcXk8Wz!>Yz6{h6Ow!M0J6I`(qqaJx@X0w4!OZ0D)9JEW^bq3$NkFhqU z=~GyV#J2^t>J(b-L@Q3o+~E4=HjoXB>GHI)lynB?ExUniV9eQO1WXAImVGL8nALO4 zX-VrR>2BYTh2|bJ!$8SdNq(CZIW*2UBVbBUhUoiq_G6*f)>6t-GA}u~+6qG7Wu8`+ z5|lpb|Fju|zCQEWnbJ>!f=9Q9wSFwL>N?zT{|;6x8@GEG%A)7jHkFeLU>xktx*KCe zGpI0f#*#&A&OdzlLfrL2dnCIbS}||yN<($rA7t+zFM|uqF4Fvs@b`7Yo+PWq ajow>*L-e0PgR1`yvaMu;?LR&4|NS2|cRLyY diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.root/18.tree b/workspace/.metadata/.plugins/org.eclipse.core.resources/.root/18.tree new file mode 100644 index 0000000000000000000000000000000000000000..d809d63244d3c644627ffb3c6cbf021cf1c9899e GIT binary patch literal 31350 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 literal 0 HcmV?d00001 diff --git a/workspace/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/workspace/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources index 4716073b27e1d82c2421e98b53826888c99c7dad..4ae24d38d9f02a35c10488b5ec514e7f82a58bbd 100644 GIT binary patch literal 910 zcmZ?R*xjhShe1S2b=vdAllRFf=Oz}Hq!uZZBqrsg@^UHr=I1FmmZmEhnJO3=TNxNx znOZ0~y9S3S7#SFu@^b0xl@z6>+8SB_nU0|${=SA#5hIv@5ljh8z!+V?1YN)s-3&8y z6&C0MmPlHXax(L>5ekxXQWJ|@QgccYy!N}0c)Xd7rQo-3ZI7Gq7z{r%BOJA>~C^gmA(0Jkl zCFYW%(#iUa3LMG#MX9zBjxr07PM!Eba&iG94_HA1qc)eRvAKz%g{6U+(d4a+MkLsA bS_Yw&m+L^p@6XD67(}E3KlfDcE\r\n\r\n diff --git a/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs index f83fb63..21f18d3 100644 --- a/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs +++ b/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs @@ -1,3 +1,6 @@ -eclipse.preferences.version=1 -org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=\r\n\r\n -preferredTargets=org.eclipse.cdt.debug.ui.toggleCBreakpointTarget,org.eclipse.cdt.debug.ui.toggleCDynamicPrintfTarget\:org.eclipse.cdt.debug.ui.toggleCBreakpointTarget| +eclipse.preferences.version=1 +org.eclipse.debug.ui.MemoryView.orientation=0 +org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=\r\n\r\n +org.eclipse.debug.ui.user_view_bindings=\r\n\r\n \r\n \r\n \r\n\r\n +preferredDetailPanes=DefaultDetailPane\:DefaultDetailPane| +preferredTargets=org.eclipse.cdt.debug.ui.toggleCBreakpointTarget,org.eclipse.cdt.debug.ui.toggleCDynamicPrintfTarget\:org.eclipse.cdt.debug.ui.toggleCBreakpointTarget| diff --git a/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs b/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs index d7f53bf..ef28910 100644 --- a/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs +++ b/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.launchbar.core.prefs @@ -1,9 +1,10 @@ -LaunchTargetManager/org.eclipse.launchbar.core.launchTargetType.local,Local/arch=x86_64 -LaunchTargetManager/org.eclipse.launchbar.core.launchTargetType.local,Local/name=Local -LaunchTargetManager/org.eclipse.launchbar.core.launchTargetType.local,Local/os=win32 -configDescList=org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:AUTOM6 Debug,org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:AUTOM5 Debug,org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:AUTOM10 Debug,org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:blink Debug -eclipse.preferences.version=1 -org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:AUTOM10\ Debug/activeLaunchMode=debug -org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:AUTOM5\ Debug/activeLaunchMode=run -org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:AUTOM5\ Debug/activeLaunchTarget=null\:--- -org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:AUTOM6\ Debug/activeLaunchMode=debug +LaunchTargetManager/org.eclipse.launchbar.core.launchTargetType.local,Local/arch=x86_64 +LaunchTargetManager/org.eclipse.launchbar.core.launchTargetType.local,Local/name=Local +LaunchTargetManager/org.eclipse.launchbar.core.launchTargetType.local,Local/os=win32 +configDescList=org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:AUTOM10 Debug +eclipse.preferences.version=1 +org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:AUTOM10\ Debug/activeLaunchMode=debug +org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:AUTOM10\ Debug/activeLaunchTarget=null\:--- +org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:AUTOM5\ Debug/activeLaunchMode=run +org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:AUTOM5\ Debug/activeLaunchTarget=null\:--- +org.eclipse.cdt.dsf.gdb.gdbRemotedescriptorType\:AUTOM6\ Debug/activeLaunchMode=debug diff --git a/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs index d74f266..9f4b844 100644 --- a/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs +++ b/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs @@ -1,4 +1,4 @@ -eclipse.preferences.version=1 -platformState=764927080719138 -quickStart=false -tipsAndTricks=true +eclipse.preferences.version=1 +platformState=765681944671227 +quickStart=false +tipsAndTricks=true diff --git a/workspace/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml b/workspace/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml index 99a65e4..83dd6eb 100644 --- a/workspace/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml +++ b/workspace/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml @@ -1,29 +1,23 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + diff --git a/workspace/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/workspace/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi index 5e14930..c66fa39 100644 --- a/workspace/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi +++ b/workspace/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi @@ -1,2088 +1,2405 @@ - - - - activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration - - - - - - - - topLevel - shellMaximized - - - - - persp.actionSet:com.st.stm32cube.ide.mcu.informationcenter.actionSet3 - persp.actionSet:org.eclipse.ui.cheatsheets.actionSet - persp.actionSet:org.eclipse.search.searchActionSet - persp.actionSet:org.eclipse.text.quicksearch.actionSet - persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation - persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation - persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo - persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet - persp.actionSet:org.eclipse.ui.actionSet.keyBindings - persp.actionSet:org.eclipse.ui.actionSet.openFiles - persp.actionSet:org.eclipse.cdt.ui.SearchActionSet - persp.actionSet:org.eclipse.cdt.ui.CElementCreationActionSet - persp.actionSet:org.eclipse.ui.NavigateActionSet - persp.viewSC:org.eclipse.ui.console.ConsoleView - persp.viewSC:org.eclipse.search.ui.views.SearchView - persp.viewSC:org.eclipse.ui.views.ContentOutline - persp.viewSC:org.eclipse.ui.views.ProblemView - persp.viewSC:org.eclipse.cdt.ui.CView - persp.viewSC:org.eclipse.ui.views.PropertySheet - persp.viewSC:org.eclipse.ui.views.TaskList - persp.newWizSC:org.eclipse.cdt.ui.wizards.NewMakeFromExisting - persp.newWizSC:org.eclipse.cdt.ui.wizard.project - persp.newWizSC:org.eclipse.cdt.ui.wizards.NewSourceFolderCreationWizard - persp.newWizSC:org.eclipse.cdt.ui.wizards.NewFolderCreationWizard - persp.newWizSC:org.eclipse.cdt.ui.wizards.NewSourceFileCreationWizard - persp.newWizSC:org.eclipse.cdt.ui.wizards.NewHeaderFileCreationWizard - persp.newWizSC:org.eclipse.cdt.ui.wizards.NewFileCreationWizard - persp.newWizSC:org.eclipse.cdt.ui.wizards.NewClassCreationWizard - persp.perspSC:org.eclipse.debug.ui.DebugPerspective - persp.perspSC:org.eclipse.team.ui.TeamSynchronizingPerspective - persp.actionSet:org.eclipse.debug.ui.launchActionSet - persp.actionSet:org.eclipse.cdt.ui.buildConfigActionSet - persp.actionSet:org.eclipse.cdt.ui.NavigationActionSet - persp.actionSet:org.eclipse.cdt.ui.OpenActionSet - persp.actionSet:org.eclipse.cdt.ui.CodingActionSet - persp.actionSet:org.eclipse.ui.edit.text.actionSet.presentation - persp.showIn:org.eclipse.cdt.ui.includeBrowser - persp.showIn:org.eclipse.cdt.ui.CView - persp.showIn:org.eclipse.ui.navigator.ProjectExplorer - persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer - persp.viewSC:org.eclipse.cdt.ui.includeBrowser - persp.actionSet:org.eclipse.debug.ui.breakpointActionSet - persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectwizard - persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectfromiocwizard - persp.viewSC:org.eclipse.cdt.make.ui.views.MakeView - persp.actionSet:org.eclipse.cdt.make.ui.makeTargetActionSet - persp.showIn:org.eclipse.cdt.codan.internal.ui.views.ProblemDetails - persp.viewSC:org.eclipse.cdt.codan.internal.ui.views.ProblemDetails - persp.viewSC:com.st.stm32cube.ide.mcu.buildanalyzer.view - persp.viewSC:com.st.stm32cube.ide.mcu.stackanalyzer.stackanalyzer.view - persp.newWizSC:com.st.stm32cube.ide.cmake.newwizard - persp.viewSC:com.st.stm32cube.ide.mcu.cyclomaticcomplexity.view - persp.viewSC:com.st.stm32cube.ide.mcu.sfrview - - - - View - categoryTag:General - - - View - categoryTag:C/C++ - - - View - categoryTag:General - - - - - - - - View - categoryTag:General - - - View - categoryTag:General - - - View - categoryTag:Make - - - - - - - View - categoryTag:General - - - View - categoryTag:General - - - View - categoryTag:General - active - - - View - categoryTag:General - - - - General - Version Control (Team) - - View - categoryTag:C/C++ - - - View - categoryTag:C/C++ - - - View - categoryTag:C/C++ - - - View - categoryTag:General - - - View - categoryTag:Version Control (Team) - - - - - - - - - persp.actionSet:com.st.stm32cube.ide.mcu.informationcenter.actionSet3 - persp.actionSet:org.eclipse.ui.cheatsheets.actionSet - persp.actionSet:org.eclipse.search.searchActionSet - persp.actionSet:org.eclipse.text.quicksearch.actionSet - persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation - persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation - persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo - persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet - persp.actionSet:org.eclipse.ui.actionSet.keyBindings - persp.actionSet:org.eclipse.ui.actionSet.openFiles - persp.actionSet:org.eclipse.cdt.ui.buildConfigActionSet - persp.actionSet:org.eclipse.debug.ui.launchActionSet - persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectwizard - persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectfromiocwizard - persp.newWizSC:com.st.stm32cube.ide.cmake.newwizard - - - - View - categoryTag:General - - - - - - - - General - - View - categoryTag:Device Configuration Tool - - - View - categoryTag:General - - - View - categoryTag:General - - - View - categoryTag:General - - - - - - - - - - View - categoryTag:Help - - - View - categoryTag:General - - - View - categoryTag:Help - - - - - - - - View - categoryTag:Help - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:Help - - - - EditorStack - org.eclipse.e4.primaryDataStack - active - - - Editor - removeOnHide - org.eclipse.cdt.ui.editor.CEditor - - - - Editor - removeOnHide - org.eclipse.cdt.ui.editor.CEditor - - - - Editor - removeOnHide - org.eclipse.cdt.ui.editor.CEditor - - - - Editor - removeOnHide - org.eclipse.cdt.ui.editor.CEditor - - - - Editor - removeOnHide - org.eclipse.cdt.ui.editor.CEditor - - - - Editor - removeOnHide - org.eclipse.cdt.ui.editor.CEditor - active - activeOnClose - - - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:General - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:General - - - - - - View - categoryTag:Make - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:C/C++ - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:C/C++ - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:C/C++ - - ViewMenu - menuContribution:menu - - - - - - - View - categoryTag:Device Configuration Tool - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:General - - ViewMenu - menuContribution:menu - - - - - - - - View - categoryTag:Version Control (Team) - - ViewMenu - menuContribution:menu - - - - - - toolbarSeparator - - - - Draggable - - - - toolbarSeparator - - - - Draggable - - - - - toolbarSeparator - - - - Draggable - - - Draggable - - - Draggable - - - Draggable - - - toolbarSeparator - - - - Draggable - - - - toolbarSeparator - - - - toolbarSeparator - - - - Draggable - - - stretch - SHOW_RESTORE_MENU - - - Draggable - HIDEABLE - SHOW_RESTORE_MENU - - - - - stretch - - - Draggable - - - Draggable - - - - - TrimStack - Draggable - - - - - - - - - - - - - - - - - - - - platform:win32 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - platform:win32 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Editor - removeOnHide - - - - - View - categoryTag:Device Configuration Tool - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:SWV - - - - - View - categoryTag:SWV - - - - - View - categoryTag:SWV - - - - - View - categoryTag:SWV - - - - - View - categoryTag:SWV - - - - - View - categoryTag:SWV - - - - - View - categoryTag:Debug - - - - - View - categoryTag:FreeRTOS - - - - - View - categoryTag:FreeRTOS - - - - - View - categoryTag:FreeRTOS - - - - - View - categoryTag:FreeRTOS - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:Other - - - - - View - categoryTag:ThreadX - - - - - View - categoryTag:ThreadX - - - - - View - categoryTag:ThreadX - - - - - View - categoryTag:ThreadX - - - - - View - categoryTag:ThreadX - - - - - View - categoryTag:ThreadX - - - - - View - categoryTag:ThreadX - - - - - View - categoryTag:ThreadX - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Make - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:C/C++ - - - - - View - categoryTag:General - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - - - View - categoryTag:Debug - - - View - categoryTag:Debug - - - - - View - categoryTag:Help - - - - - View - categoryTag:Connections - - - - - View - categoryTag:General - - - - - View - categoryTag:Version Control (Team) - - - - - View - categoryTag:Version Control (Team) - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:Help - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - View - categoryTag:General - - - - - 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration + + + + + + + + topLevel + shellMaximized + + + + + persp.actionSet:com.st.stm32cube.ide.mcu.informationcenter.actionSet3 + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.text.quicksearch.actionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.actionSet:org.eclipse.cdt.ui.SearchActionSet + persp.actionSet:org.eclipse.cdt.ui.CElementCreationActionSet + persp.actionSet:org.eclipse.ui.NavigateActionSet + persp.viewSC:org.eclipse.ui.console.ConsoleView + persp.viewSC:org.eclipse.search.ui.views.SearchView + persp.viewSC:org.eclipse.ui.views.ContentOutline + persp.viewSC:org.eclipse.ui.views.ProblemView + persp.viewSC:org.eclipse.cdt.ui.CView + persp.viewSC:org.eclipse.ui.views.PropertySheet + persp.viewSC:org.eclipse.ui.views.TaskList + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewMakeFromExisting + persp.newWizSC:org.eclipse.cdt.ui.wizard.project + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewSourceFolderCreationWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewFolderCreationWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewSourceFileCreationWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewHeaderFileCreationWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewFileCreationWizard + persp.newWizSC:org.eclipse.cdt.ui.wizards.NewClassCreationWizard + persp.perspSC:org.eclipse.debug.ui.DebugPerspective + persp.perspSC:org.eclipse.team.ui.TeamSynchronizingPerspective + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.actionSet:org.eclipse.cdt.ui.buildConfigActionSet + persp.actionSet:org.eclipse.cdt.ui.NavigationActionSet + persp.actionSet:org.eclipse.cdt.ui.OpenActionSet + persp.actionSet:org.eclipse.cdt.ui.CodingActionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.presentation + persp.showIn:org.eclipse.cdt.ui.includeBrowser + persp.showIn:org.eclipse.cdt.ui.CView + persp.showIn:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.cdt.ui.includeBrowser + persp.actionSet:org.eclipse.debug.ui.breakpointActionSet + persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectwizard + persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectfromiocwizard + persp.viewSC:org.eclipse.cdt.make.ui.views.MakeView + persp.actionSet:org.eclipse.cdt.make.ui.makeTargetActionSet + persp.showIn:org.eclipse.cdt.codan.internal.ui.views.ProblemDetails + persp.viewSC:org.eclipse.cdt.codan.internal.ui.views.ProblemDetails + persp.viewSC:com.st.stm32cube.ide.mcu.buildanalyzer.view + persp.viewSC:com.st.stm32cube.ide.mcu.stackanalyzer.stackanalyzer.view + persp.newWizSC:com.st.stm32cube.ide.cmake.newwizard + persp.viewSC:com.st.stm32cube.ide.mcu.cyclomaticcomplexity.view + persp.viewSC:com.st.stm32cube.ide.mcu.sfrview + + + + View + categoryTag:General + + + View + categoryTag:C/C++ + + + View + categoryTag:General + + + + + + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Make + + + + + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + active + + + View + categoryTag:General + + + + General + Version Control (Team) + + View + categoryTag:C/C++ + + + View + categoryTag:C/C++ + + + View + categoryTag:C/C++ + + + View + categoryTag:General + + + View + categoryTag:Version Control (Team) + + + + + + + + + persp.actionSet:com.st.stm32cube.ide.mcu.informationcenter.actionSet3 + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.text.quicksearch.actionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.actionSet:org.eclipse.cdt.ui.buildConfigActionSet + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectwizard + persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectfromiocwizard + persp.newWizSC:com.st.stm32cube.ide.cmake.newwizard + + + + View + categoryTag:General + + + + + + + + General + + View + categoryTag:Device Configuration Tool + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + + + + + + + persp.actionSet:com.st.stm32cube.ide.mcu.informationcenter.actionSet3 + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.text.quicksearch.actionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.viewSC:org.eclipse.ui.views.ProgressView + persp.viewSC:org.eclipse.ui.texteditor.TemplatesView + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.actionSet:org.eclipse.debug.ui.debugActionSet + persp.actionSet:org.eclipse.ui.NavigateActionSet + persp.viewSC:org.eclipse.debug.ui.DebugView + persp.viewSC:org.eclipse.debug.ui.VariableView + persp.viewSC:org.eclipse.debug.ui.BreakpointView + persp.viewSC:org.eclipse.debug.ui.ExpressionView + persp.viewSC:org.eclipse.ui.views.ContentOutline + persp.viewSC:org.eclipse.ui.console.ConsoleView + persp.viewSC:org.eclipse.ui.views.ProblemView + persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.pde.runtime.LogView + persp.actionSet:org.eclipse.debug.ui.breakpointActionSet + persp.showIn:org.eclipse.ui.navigator.ProjectExplorer + persp.perspSC:org.eclipse.cdt.ui.CPerspective + persp.actionSet:com.st.stm32cube.ide.mcu.debug.dsf.oss.ui.debugActionSet + persp.viewSC:org.eclipse.cdt.debug.ui.SignalsView + persp.viewSC:org.eclipse.debug.ui.RegisterView + persp.viewSC:org.eclipse.debug.ui.ModuleView + persp.viewSC:org.eclipse.debug.ui.MemoryView + persp.viewSC:org.eclipse.cdt.debug.ui.executablesView + persp.actionSet:org.eclipse.cdt.debug.ui.debugActionSet + persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectwizard + persp.newWizSC:com.st.stm32cube.common.projectcreation.ui.stm32projectfromiocwizard + persp.viewSC:org.eclipse.cdt.dsf.debug.ui.disassembly.view + persp.viewSC:com.st.stm32cube.ide.mcu.buildanalyzer.view + persp.viewSC:com.st.stm32cube.ide.mcu.stackanalyzer.stackanalyzer.view + persp.viewSC:org.eclipse.cdt.dsf.gdb.ui.tracecontrol.view + persp.viewSC:org.eclipse.cdt.debug.ui.debuggerConsoleView + persp.viewSC:org.eclipse.cdt.dsf.gdb.ui.debugsources.view + persp.viewSC:org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser + persp.viewSC:com.st.stm32cube.ide.mcu.livewatch.LiveExpressionsView + persp.newWizSC:com.st.stm32cube.ide.cmake.newwizard + persp.viewSC:com.st.stm32cube.ide.mcu.faultanalyzer.view + persp.viewSC:com.st.stm32cube.ide.mcu.cyclomaticcomplexity.view + persp.viewSC:com.st.stm32cube.ide.mcu.sfrview + persp.editorOnboardingImageUri:platform:/plugin/org.eclipse.debug.ui/icons/full/onboarding_debug_persp.png + persp.editorOnboardingText:Go hunt your bugs here. + persp.editorOnboardingCommand:Find Actions$$$Ctrl+3 + persp.editorOnboardingCommand:Step Into$$$F5 + persp.editorOnboardingCommand:Step Over$$$F6 + persp.editorOnboardingCommand:Step Return$$$F7 + persp.editorOnboardingCommand:Resume$$$F8 + + + + org.eclipse.e4.primaryNavigationStack + + View + categoryTag:Debug + + + View + categoryTag:General + + + + + View + categoryTag:Debug + + + + + + + + org.eclipse.e4.secondaryNavigationStack + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + + + Debug + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + + + + + + + View + categoryTag:Help + + + View + categoryTag:General + + + View + categoryTag:Help + + + + + + + + View + categoryTag:Help + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Help + + + + EditorStack + org.eclipse.e4.primaryDataStack + active + + + 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 + + + + Editor + removeOnHide + org.eclipse.cdt.ui.editor.CEditor + + + + Editor + removeOnHide + org.eclipse.cdt.ui.editor.CEditor + + + + Editor + removeOnHide + org.eclipse.cdt.ui.editor.CEditor + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + + View + categoryTag:Make + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:C/C++ + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:C/C++ + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:C/C++ + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Device Configuration Tool + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + + View + categoryTag:Version Control (Team) + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + ViewMenu + menuContribution:menu + + + + + + toolbarSeparator + + + + Draggable + + + + toolbarSeparator + + + + Draggable + + + + + toolbarSeparator + + + + Draggable + + + Draggable + + + Draggable + + + Draggable + + + toolbarSeparator + + + + Draggable + + + + toolbarSeparator + + + + toolbarSeparator + + + + Draggable + + + stretch + SHOW_RESTORE_MENU + + + Draggable + HIDEABLE + SHOW_RESTORE_MENU + + + + + stretch + + + Draggable + + + Draggable + + + + + TrimStack + Draggable + + + + + + + + + + + + + + + + + + + + platform:win32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + platform:win32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Editor + removeOnHide + + + + + View + categoryTag:Device Configuration Tool + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:SWV + + + + + View + categoryTag:SWV + + + + + View + categoryTag:SWV + + + + + View + categoryTag:SWV + + + + + View + categoryTag:SWV + + + + + View + categoryTag:SWV + + + + + View + categoryTag:Debug + + + + + View + categoryTag:FreeRTOS + + + + + View + categoryTag:FreeRTOS + + + + + View + categoryTag:FreeRTOS + + + + + View + categoryTag:FreeRTOS + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:Other + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:ThreadX + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Make + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:C/C++ + + + + + View + categoryTag:General + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + + + View + categoryTag:Help + + + + + View + categoryTag:Connections + + + + + View + categoryTag:General + + + + + View + categoryTag:Version Control (Team) + + + + + View + categoryTag:Version Control (Team) + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:Help + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + 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/workspace/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/workspace/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml index 90ac83e..13bfed1 100644 --- a/workspace/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml +++ b/workspace/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml @@ -1,4 +1,4 @@ - - - + + + \ No newline at end of file diff --git a/workspace/.metadata/version.ini b/workspace/.metadata/version.ini index 4c6412d..b8236f4 100644 --- a/workspace/.metadata/version.ini +++ b/workspace/.metadata/version.ini @@ -1,3 +1,3 @@ -#Sat Aug 16 20:59:05 CEST 2025 -org.eclipse.core.runtime=2 -org.eclipse.platform=4.33.0.v20240903-0240 +#Mon Aug 25 23:02:41 CEST 2025 +org.eclipse.core.runtime=2 +org.eclipse.platform=4.33.0.v20240903-0240 diff --git a/workspace/AUTOM10/.settings/language.settings.xml b/workspace/AUTOM10/.settings/language.settings.xml index dd64ca4..7d72e12 100644 --- a/workspace/AUTOM10/.settings/language.settings.xml +++ b/workspace/AUTOM10/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/workspace/AUTOM10/AUTOM10 Debug.launch b/workspace/AUTOM10/AUTOM10 Debug.launch index 216c178..c42e02a 100644 --- a/workspace/AUTOM10/AUTOM10 Debug.launch +++ b/workspace/AUTOM10/AUTOM10 Debug.launch @@ -43,6 +43,7 @@ + @@ -80,5 +81,6 @@ + diff --git a/workspace/AUTOM10/AUTOM10.ioc b/workspace/AUTOM10/AUTOM10.ioc index 97b35fb..bc8a994 100644 --- a/workspace/AUTOM10/AUTOM10.ioc +++ b/workspace/AUTOM10/AUTOM10.ioc @@ -1,282 +1,284 @@ -#MicroXplorer Configuration settings - do not modify -ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_4 -ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,master -ADC1.NbrOfConversionFlag=1 -ADC1.Rank-0\#ChannelRegularConversion=1 -ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC1.master=1 -CAD.formats= -CAD.pinconfig= -CAD.provider= -File.Version=6 -KeepUserPlacement=false -Mcu.CPN=STM32F103C8T6 -Mcu.Family=STM32F1 -Mcu.IP0=ADC1 -Mcu.IP1=NVIC -Mcu.IP2=RCC -Mcu.IP3=SYS -Mcu.IP4=TIM1 -Mcu.IP5=TIM2 -Mcu.IP6=TIM3 -Mcu.IP7=TIM4 -Mcu.IP8=USB -Mcu.IP9=USB_DEVICE -Mcu.IPNb=10 -Mcu.Name=STM32F103C(8-B)Tx -Mcu.Package=LQFP48 -Mcu.Pin0=PC13-TAMPER-RTC -Mcu.Pin1=PD0-OSC_IN -Mcu.Pin10=PA7 -Mcu.Pin11=PB0 -Mcu.Pin12=PB1 -Mcu.Pin13=PA8 -Mcu.Pin14=PA9 -Mcu.Pin15=PA10 -Mcu.Pin16=PA11 -Mcu.Pin17=PA12 -Mcu.Pin18=PB6 -Mcu.Pin19=PB7 -Mcu.Pin2=PD1-OSC_OUT -Mcu.Pin20=PB8 -Mcu.Pin21=PB9 -Mcu.Pin22=VP_SYS_VS_ND -Mcu.Pin23=VP_SYS_VS_Systick -Mcu.Pin24=VP_TIM1_VS_ClockSourceINT -Mcu.Pin25=VP_TIM2_VS_ClockSourceINT -Mcu.Pin26=VP_TIM3_VS_ClockSourceINT -Mcu.Pin27=VP_TIM4_VS_ClockSourceINT -Mcu.Pin28=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS -Mcu.Pin3=PA0-WKUP -Mcu.Pin4=PA1 -Mcu.Pin5=PA2 -Mcu.Pin6=PA3 -Mcu.Pin7=PA4 -Mcu.Pin8=PA5 -Mcu.Pin9=PA6 -Mcu.PinsNb=29 -Mcu.ThirdPartyNb=0 -Mcu.UserConstants= -Mcu.UserName=STM32F103C8Tx -MxCube.Version=6.15.0 -MxDb.Version=DB.6.0.150 -NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.ForceEnableDMAVector=true -NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 -NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false -NVIC.USB_LP_CAN1_RX0_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true -NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -PA0-WKUP.Locked=true -PA0-WKUP.Signal=S_TIM2_CH1_ETR -PA1.Locked=true -PA1.Signal=S_TIM2_CH2 -PA10.Locked=true -PA10.Signal=S_TIM1_CH3 -PA11.Locked=true -PA11.Mode=Device -PA11.Signal=USB_DM -PA12.Locked=true -PA12.Mode=Device -PA12.Signal=USB_DP -PA2.Locked=true -PA2.Signal=S_TIM2_CH3 -PA3.Locked=true -PA3.Signal=S_TIM2_CH4 -PA4.Signal=ADCx_IN4 -PA5.Signal=ADCx_IN5 -PA6.Locked=true -PA6.Signal=S_TIM3_CH1 -PA7.Locked=true -PA7.Signal=S_TIM3_CH2 -PA8.Locked=true -PA8.Signal=S_TIM1_CH1 -PA9.Locked=true -PA9.Signal=S_TIM1_CH2 -PB0.Locked=true -PB0.Signal=S_TIM3_CH3 -PB1.Locked=true -PB1.Signal=S_TIM3_CH4 -PB6.Locked=true -PB6.Signal=S_TIM4_CH1 -PB7.Locked=true -PB7.Signal=S_TIM4_CH2 -PB8.Locked=true -PB8.Signal=S_TIM4_CH3 -PB9.Locked=true -PB9.Signal=S_TIM4_CH4 -PC13-TAMPER-RTC.Locked=true -PC13-TAMPER-RTC.Signal=GPIO_Output -PD0-OSC_IN.Locked=true -PD0-OSC_IN.Mode=HSE-External-Oscillator -PD0-OSC_IN.Signal=RCC_OSC_IN -PD1-OSC_OUT.Locked=true -PD1-OSC_OUT.Mode=HSE-External-Oscillator -PD1-OSC_OUT.Signal=RCC_OSC_OUT -PinOutPanel.RotationAngle=0 -ProjectManager.AskForMigrate=true -ProjectManager.BackupPrevious=false -ProjectManager.CompilerLinker=GCC -ProjectManager.CompilerOptimize=6 -ProjectManager.ComputerToolchain=false -ProjectManager.CoupleFile=false -ProjectManager.CustomerFirmwarePackage= -ProjectManager.DefaultFWLocation=true -ProjectManager.DeletePrevious=true -ProjectManager.DeviceId=STM32F103C8Tx -ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.8.6 -ProjectManager.FreePins=false -ProjectManager.HalAssertFull=false -ProjectManager.HeapSize=0x200 -ProjectManager.KeepUserCode=true -ProjectManager.LastFirmware=true -ProjectManager.LibraryCopy=1 -ProjectManager.MainLocation=Core/Src -ProjectManager.NoMain=false -ProjectManager.PreviousToolchain= -ProjectManager.ProjectBuild=false -ProjectManager.ProjectFileName=AUTOM10.ioc -ProjectManager.ProjectName=AUTOM10 -ProjectManager.ProjectStructure= -ProjectManager.RegisterCallBack= -ProjectManager.StackSize=0x400 -ProjectManager.TargetToolchain=STM32CubeIDE -ProjectManager.ToolChainLocation= -ProjectManager.UAScriptAfterPath= -ProjectManager.UAScriptBeforePath= -ProjectManager.UnderRoot=true -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false,4-MX_TIM2_Init-TIM2-false-HAL-true,5-MX_TIM4_Init-TIM4-false-HAL-true,6-MX_TIM3_Init-TIM3-false-HAL-true,7-MX_ADC1_Init-ADC1-false-HAL-true,8-MX_TIM1_Init-TIM1-false-HAL-true -RCC.ADCFreqValue=12000000 -RCC.ADCPresc=RCC_ADCPCLK2_DIV6 -RCC.AHBFreq_Value=72000000 -RCC.APB1CLKDivider=RCC_HCLK_DIV2 -RCC.APB1Freq_Value=36000000 -RCC.APB1TimFreq_Value=72000000 -RCC.APB2Freq_Value=72000000 -RCC.APB2TimFreq_Value=72000000 -RCC.FCLKCortexFreq_Value=72000000 -RCC.FamilyName=M -RCC.HCLKFreq_Value=72000000 -RCC.IPParameters=ADCFreqValue,ADCPresc,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,USBPrescaler,VCOOutput2Freq_Value -RCC.MCOFreq_Value=72000000 -RCC.PLLCLKFreq_Value=72000000 -RCC.PLLMCOFreq_Value=36000000 -RCC.PLLMUL=RCC_PLL_MUL9 -RCC.SYSCLKFreq_VALUE=72000000 -RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK -RCC.TimSysFreq_Value=72000000 -RCC.USBFreq_Value=48000000 -RCC.USBPrescaler=RCC_USBCLKSOURCE_PLL_DIV1_5 -RCC.VCOOutput2Freq_Value=8000000 -SH.ADCx_IN4.0=ADC1_IN4,IN4 -SH.ADCx_IN4.ConfNb=1 -SH.ADCx_IN5.0=ADC1_IN5,IN5 -SH.ADCx_IN5.ConfNb=1 -SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1 -SH.S_TIM1_CH1.ConfNb=1 -SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2 -SH.S_TIM1_CH2.ConfNb=1 -SH.S_TIM1_CH3.0=TIM1_CH3,PWM Generation3 CH3 -SH.S_TIM1_CH3.ConfNb=1 -SH.S_TIM2_CH1_ETR.0=TIM2_CH1,PWM Generation1 CH1 -SH.S_TIM2_CH1_ETR.ConfNb=1 -SH.S_TIM2_CH2.0=TIM2_CH2,PWM Generation2 CH2 -SH.S_TIM2_CH2.ConfNb=1 -SH.S_TIM2_CH3.0=TIM2_CH3,PWM Generation3 CH3 -SH.S_TIM2_CH3.ConfNb=1 -SH.S_TIM2_CH4.0=TIM2_CH4,PWM Generation4 CH4 -SH.S_TIM2_CH4.ConfNb=1 -SH.S_TIM3_CH1.0=TIM3_CH1,PWM Generation1 CH1 -SH.S_TIM3_CH1.ConfNb=1 -SH.S_TIM3_CH2.0=TIM3_CH2,PWM Generation2 CH2 -SH.S_TIM3_CH2.ConfNb=1 -SH.S_TIM3_CH3.0=TIM3_CH3,PWM Generation3 CH3 -SH.S_TIM3_CH3.ConfNb=1 -SH.S_TIM3_CH4.0=TIM3_CH4,PWM Generation4 CH4 -SH.S_TIM3_CH4.ConfNb=1 -SH.S_TIM4_CH1.0=TIM4_CH1,PWM Generation1 CH1 -SH.S_TIM4_CH1.ConfNb=1 -SH.S_TIM4_CH2.0=TIM4_CH2,PWM Generation2 CH2 -SH.S_TIM4_CH2.ConfNb=1 -SH.S_TIM4_CH3.0=TIM4_CH3,PWM Generation3 CH3 -SH.S_TIM4_CH3.ConfNb=1 -SH.S_TIM4_CH4.0=TIM4_CH4,PWM Generation4 CH4 -SH.S_TIM4_CH4.ConfNb=1 -TIM1.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 -TIM1.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 -TIM1.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 -TIM1.IPParameters=Prescaler,Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3,Period,Pulse-PWM Generation1 CH1,OCFastMode_PWM-PWM Generation1 CH1,Pulse-PWM Generation2 CH2,OCFastMode_PWM-PWM Generation2 CH2,Pulse-PWM Generation3 CH3,OCFastMode_PWM-PWM Generation3 CH3 -TIM1.OCFastMode_PWM-PWM\ Generation1\ CH1=TIM_OCFAST_ENABLE -TIM1.OCFastMode_PWM-PWM\ Generation2\ CH2=TIM_OCFAST_ENABLE -TIM1.OCFastMode_PWM-PWM\ Generation3\ CH3=TIM_OCFAST_ENABLE -TIM1.Period=17999 -TIM1.Prescaler=0 -TIM1.Pulse-PWM\ Generation1\ CH1=2400 -TIM1.Pulse-PWM\ Generation2\ CH2=5500 -TIM1.Pulse-PWM\ Generation3\ CH3=6500 -TIM2.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 -TIM2.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 -TIM2.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 -TIM2.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 -TIM2.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation4 CH4,Period,Pulse-PWM Generation1 CH1,OCFastMode_PWM-PWM Generation1 CH1,Pulse-PWM Generation2 CH2,OCFastMode_PWM-PWM Generation2 CH2,Pulse-PWM Generation4 CH4,OCFastMode_PWM-PWM Generation4 CH4,Channel-PWM Generation3 CH3,Pulse-PWM Generation3 CH3 -TIM2.OCFastMode_PWM-PWM\ Generation1\ CH1=TIM_OCFAST_ENABLE -TIM2.OCFastMode_PWM-PWM\ Generation2\ CH2=TIM_OCFAST_ENABLE -TIM2.OCFastMode_PWM-PWM\ Generation4\ CH4=TIM_OCFAST_ENABLE -TIM2.Period=17999 -TIM2.Pulse-PWM\ Generation1\ CH1=1000 -TIM2.Pulse-PWM\ Generation2\ CH2=2000 -TIM2.Pulse-PWM\ Generation3\ CH3=3000 -TIM2.Pulse-PWM\ Generation4\ CH4=4000 -TIM3.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 -TIM3.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 -TIM3.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 -TIM3.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 -TIM3.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4,Period,Pulse-PWM Generation1 CH1,OCFastMode_PWM-PWM Generation1 CH1,Pulse-PWM Generation2 CH2,OCFastMode_PWM-PWM Generation2 CH2,Pulse-PWM Generation3 CH3,OCFastMode_PWM-PWM Generation3 CH3,Pulse-PWM Generation4 CH4,OCFastMode_PWM-PWM Generation4 CH4 -TIM3.OCFastMode_PWM-PWM\ Generation1\ CH1=TIM_OCFAST_ENABLE -TIM3.OCFastMode_PWM-PWM\ Generation2\ CH2=TIM_OCFAST_ENABLE -TIM3.OCFastMode_PWM-PWM\ Generation3\ CH3=TIM_OCFAST_ENABLE -TIM3.OCFastMode_PWM-PWM\ Generation4\ CH4=TIM_OCFAST_ENABLE -TIM3.Period=17999 -TIM3.Pulse-PWM\ Generation1\ CH1=9000 -TIM3.Pulse-PWM\ Generation2\ CH2=10000 -TIM3.Pulse-PWM\ Generation3\ CH3=11000 -TIM3.Pulse-PWM\ Generation4\ CH4=12000 -TIM4.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 -TIM4.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 -TIM4.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 -TIM4.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 -TIM4.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4,Period,Pulse-PWM Generation1 CH1,OCFastMode_PWM-PWM Generation1 CH1,Pulse-PWM Generation2 CH2,OCFastMode_PWM-PWM Generation2 CH2,Pulse-PWM Generation3 CH3,OCFastMode_PWM-PWM Generation3 CH3,Pulse-PWM Generation4 CH4,OCFastMode_PWM-PWM Generation4 CH4 -TIM4.OCFastMode_PWM-PWM\ Generation1\ CH1=TIM_OCFAST_ENABLE -TIM4.OCFastMode_PWM-PWM\ Generation2\ CH2=TIM_OCFAST_ENABLE -TIM4.OCFastMode_PWM-PWM\ Generation3\ CH3=TIM_OCFAST_ENABLE -TIM4.OCFastMode_PWM-PWM\ Generation4\ CH4=TIM_OCFAST_ENABLE -TIM4.Period=17999 -TIM4.Pulse-PWM\ Generation1\ CH1=5000 -TIM4.Pulse-PWM\ Generation2\ CH2=6000 -TIM4.Pulse-PWM\ Generation3\ CH3=7000 -TIM4.Pulse-PWM\ Generation4\ CH4=8000 -USB_DEVICE.CLASS_NAME_FS=CDC -USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS -USB_DEVICE.VirtualMode=Cdc -USB_DEVICE.VirtualModeFS=Cdc_FS -VP_SYS_VS_ND.Mode=No_Debug -VP_SYS_VS_ND.Signal=SYS_VS_ND -VP_SYS_VS_Systick.Mode=SysTick -VP_SYS_VS_Systick.Signal=SYS_VS_Systick -VP_TIM1_VS_ClockSourceINT.Mode=Internal -VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT -VP_TIM2_VS_ClockSourceINT.Mode=Internal -VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT -VP_TIM3_VS_ClockSourceINT.Mode=Internal -VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT -VP_TIM4_VS_ClockSourceINT.Mode=Internal -VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT -VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Mode=CDC_FS -VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Signal=USB_DEVICE_VS_USB_DEVICE_CDC_FS -board=custom -isbadioc=false +#MicroXplorer Configuration settings - do not modify +ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_4 +ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,master +ADC1.NbrOfConversionFlag=1 +ADC1.Rank-0\#ChannelRegularConversion=1 +ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 +ADC1.master=1 +CAD.formats= +CAD.pinconfig= +CAD.provider= +File.Version=6 +KeepUserPlacement=false +Mcu.CPN=STM32F103C8T6 +Mcu.Family=STM32F1 +Mcu.IP0=ADC1 +Mcu.IP1=NVIC +Mcu.IP2=RCC +Mcu.IP3=SYS +Mcu.IP4=TIM1 +Mcu.IP5=TIM2 +Mcu.IP6=TIM3 +Mcu.IP7=TIM4 +Mcu.IP8=USB +Mcu.IP9=USB_DEVICE +Mcu.IPNb=10 +Mcu.Name=STM32F103C(8-B)Tx +Mcu.Package=LQFP48 +Mcu.Pin0=PC13-TAMPER-RTC +Mcu.Pin1=PD0-OSC_IN +Mcu.Pin10=PA7 +Mcu.Pin11=PB0 +Mcu.Pin12=PB1 +Mcu.Pin13=PA8 +Mcu.Pin14=PA9 +Mcu.Pin15=PA10 +Mcu.Pin16=PA11 +Mcu.Pin17=PA12 +Mcu.Pin18=PB6 +Mcu.Pin19=PB7 +Mcu.Pin2=PD1-OSC_OUT +Mcu.Pin20=PB8 +Mcu.Pin21=PB9 +Mcu.Pin22=VP_SYS_VS_ND +Mcu.Pin23=VP_SYS_VS_Systick +Mcu.Pin24=VP_TIM1_VS_ClockSourceINT +Mcu.Pin25=VP_TIM2_VS_ClockSourceINT +Mcu.Pin26=VP_TIM3_VS_ClockSourceINT +Mcu.Pin27=VP_TIM4_VS_ClockSourceINT +Mcu.Pin28=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS +Mcu.Pin3=PA0-WKUP +Mcu.Pin4=PA1 +Mcu.Pin5=PA2 +Mcu.Pin6=PA3 +Mcu.Pin7=PA4 +Mcu.Pin8=PA5 +Mcu.Pin9=PA6 +Mcu.PinsNb=29 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32F103C8Tx +MxCube.Version=6.15.0 +MxDb.Version=DB.6.0.150 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.ForceEnableDMAVector=true +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false +NVIC.USB_LP_CAN1_RX0_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +PA0-WKUP.Locked=true +PA0-WKUP.Signal=S_TIM2_CH1_ETR +PA1.Locked=true +PA1.Signal=S_TIM2_CH2 +PA10.Locked=true +PA10.Signal=S_TIM1_CH3 +PA11.Locked=true +PA11.Mode=Device +PA11.Signal=USB_DM +PA12.Locked=true +PA12.Mode=Device +PA12.Signal=USB_DP +PA2.Locked=true +PA2.Signal=S_TIM2_CH3 +PA3.Locked=true +PA3.Signal=S_TIM2_CH4 +PA4.Signal=ADCx_IN4 +PA5.Signal=ADCx_IN5 +PA6.Locked=true +PA6.Signal=S_TIM3_CH1 +PA7.Locked=true +PA7.Signal=S_TIM3_CH2 +PA8.Locked=true +PA8.Signal=S_TIM1_CH1 +PA9.Locked=true +PA9.Signal=S_TIM1_CH2 +PB0.Locked=true +PB0.Signal=S_TIM3_CH3 +PB1.Locked=true +PB1.Signal=S_TIM3_CH4 +PB6.Locked=true +PB6.Signal=S_TIM4_CH1 +PB7.Locked=true +PB7.Signal=S_TIM4_CH2 +PB8.Locked=true +PB8.Signal=S_TIM4_CH3 +PB9.Locked=true +PB9.Signal=S_TIM4_CH4 +PC13-TAMPER-RTC.Locked=true +PC13-TAMPER-RTC.Signal=GPIO_Output +PD0-OSC_IN.Locked=true +PD0-OSC_IN.Mode=HSE-External-Oscillator +PD0-OSC_IN.Signal=RCC_OSC_IN +PD1-OSC_OUT.Locked=true +PD1-OSC_OUT.Mode=HSE-External-Oscillator +PD1-OSC_OUT.Signal=RCC_OSC_OUT +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerLinker=GCC +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=false +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32F103C8Tx +ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.8.6 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=1 +ProjectManager.MainLocation=Core/Src +ProjectManager.NoMain=false +ProjectManager.PreviousToolchain= +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=AUTOM10.ioc +ProjectManager.ProjectName=AUTOM10 +ProjectManager.ProjectStructure= +ProjectManager.RegisterCallBack= +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=STM32CubeIDE +ProjectManager.ToolChainLocation= +ProjectManager.UAScriptAfterPath= +ProjectManager.UAScriptBeforePath= +ProjectManager.UnderRoot=true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false,4-MX_TIM2_Init-TIM2-false-HAL-true,5-MX_TIM4_Init-TIM4-false-HAL-true,6-MX_TIM3_Init-TIM3-false-HAL-true,7-MX_ADC1_Init-ADC1-false-HAL-true,8-MX_TIM1_Init-TIM1-false-HAL-true +RCC.ADCFreqValue=12000000 +RCC.ADCPresc=RCC_ADCPCLK2_DIV6 +RCC.AHBFreq_Value=72000000 +RCC.APB1CLKDivider=RCC_HCLK_DIV2 +RCC.APB1Freq_Value=36000000 +RCC.APB1TimFreq_Value=72000000 +RCC.APB2Freq_Value=72000000 +RCC.APB2TimFreq_Value=72000000 +RCC.FCLKCortexFreq_Value=72000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=72000000 +RCC.IPParameters=ADCFreqValue,ADCPresc,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,USBPrescaler,VCOOutput2Freq_Value +RCC.MCOFreq_Value=72000000 +RCC.PLLCLKFreq_Value=72000000 +RCC.PLLMCOFreq_Value=36000000 +RCC.PLLMUL=RCC_PLL_MUL9 +RCC.SYSCLKFreq_VALUE=72000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.TimSysFreq_Value=72000000 +RCC.USBFreq_Value=48000000 +RCC.USBPrescaler=RCC_USBCLKSOURCE_PLL_DIV1_5 +RCC.VCOOutput2Freq_Value=8000000 +SH.ADCx_IN4.0=ADC1_IN4,IN4 +SH.ADCx_IN4.ConfNb=1 +SH.ADCx_IN5.0=ADC1_IN5,IN5 +SH.ADCx_IN5.ConfNb=1 +SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1 +SH.S_TIM1_CH1.ConfNb=1 +SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2 +SH.S_TIM1_CH2.ConfNb=1 +SH.S_TIM1_CH3.0=TIM1_CH3,PWM Generation3 CH3 +SH.S_TIM1_CH3.ConfNb=1 +SH.S_TIM2_CH1_ETR.0=TIM2_CH1,PWM Generation1 CH1 +SH.S_TIM2_CH1_ETR.ConfNb=1 +SH.S_TIM2_CH2.0=TIM2_CH2,PWM Generation2 CH2 +SH.S_TIM2_CH2.ConfNb=1 +SH.S_TIM2_CH3.0=TIM2_CH3,PWM Generation3 CH3 +SH.S_TIM2_CH3.ConfNb=1 +SH.S_TIM2_CH4.0=TIM2_CH4,PWM Generation4 CH4 +SH.S_TIM2_CH4.ConfNb=1 +SH.S_TIM3_CH1.0=TIM3_CH1,PWM Generation1 CH1 +SH.S_TIM3_CH1.ConfNb=1 +SH.S_TIM3_CH2.0=TIM3_CH2,PWM Generation2 CH2 +SH.S_TIM3_CH2.ConfNb=1 +SH.S_TIM3_CH3.0=TIM3_CH3,PWM Generation3 CH3 +SH.S_TIM3_CH3.ConfNb=1 +SH.S_TIM3_CH4.0=TIM3_CH4,PWM Generation4 CH4 +SH.S_TIM3_CH4.ConfNb=1 +SH.S_TIM4_CH1.0=TIM4_CH1,PWM Generation1 CH1 +SH.S_TIM4_CH1.ConfNb=1 +SH.S_TIM4_CH2.0=TIM4_CH2,PWM Generation2 CH2 +SH.S_TIM4_CH2.ConfNb=1 +SH.S_TIM4_CH3.0=TIM4_CH3,PWM Generation3 CH3 +SH.S_TIM4_CH3.ConfNb=1 +SH.S_TIM4_CH4.0=TIM4_CH4,PWM Generation4 CH4 +SH.S_TIM4_CH4.ConfNb=1 +TIM1.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 +TIM1.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 +TIM1.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 +TIM1.IPParameters=Prescaler,Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3,Period,Pulse-PWM Generation1 CH1,OCFastMode_PWM-PWM Generation1 CH1,Pulse-PWM Generation2 CH2,OCFastMode_PWM-PWM Generation2 CH2,Pulse-PWM Generation3 CH3,OCFastMode_PWM-PWM Generation3 CH3 +TIM1.OCFastMode_PWM-PWM\ Generation1\ CH1=TIM_OCFAST_ENABLE +TIM1.OCFastMode_PWM-PWM\ Generation2\ CH2=TIM_OCFAST_ENABLE +TIM1.OCFastMode_PWM-PWM\ Generation3\ CH3=TIM_OCFAST_ENABLE +TIM1.Period=17999 +TIM1.Prescaler=0 +TIM1.Pulse-PWM\ Generation1\ CH1=2400 +TIM1.Pulse-PWM\ Generation2\ CH2=5500 +TIM1.Pulse-PWM\ Generation3\ CH3=6500 +TIM2.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 +TIM2.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 +TIM2.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 +TIM2.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 +TIM2.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation4 CH4,Period,Pulse-PWM Generation1 CH1,OCFastMode_PWM-PWM Generation1 CH1,Pulse-PWM Generation2 CH2,OCFastMode_PWM-PWM Generation2 CH2,Pulse-PWM Generation4 CH4,OCFastMode_PWM-PWM Generation4 CH4,Channel-PWM Generation3 CH3,Pulse-PWM Generation3 CH3 +TIM2.OCFastMode_PWM-PWM\ Generation1\ CH1=TIM_OCFAST_ENABLE +TIM2.OCFastMode_PWM-PWM\ Generation2\ CH2=TIM_OCFAST_ENABLE +TIM2.OCFastMode_PWM-PWM\ Generation4\ CH4=TIM_OCFAST_ENABLE +TIM2.Period=17999 +TIM2.Pulse-PWM\ Generation1\ CH1=1000 +TIM2.Pulse-PWM\ Generation2\ CH2=2000 +TIM2.Pulse-PWM\ Generation3\ CH3=3000 +TIM2.Pulse-PWM\ Generation4\ CH4=4000 +TIM3.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 +TIM3.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 +TIM3.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 +TIM3.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 +TIM3.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4,Period,Pulse-PWM Generation1 CH1,OCFastMode_PWM-PWM Generation1 CH1,Pulse-PWM Generation2 CH2,OCFastMode_PWM-PWM Generation2 CH2,Pulse-PWM Generation3 CH3,OCFastMode_PWM-PWM Generation3 CH3,Pulse-PWM Generation4 CH4,OCFastMode_PWM-PWM Generation4 CH4 +TIM3.OCFastMode_PWM-PWM\ Generation1\ CH1=TIM_OCFAST_ENABLE +TIM3.OCFastMode_PWM-PWM\ Generation2\ CH2=TIM_OCFAST_ENABLE +TIM3.OCFastMode_PWM-PWM\ Generation3\ CH3=TIM_OCFAST_ENABLE +TIM3.OCFastMode_PWM-PWM\ Generation4\ CH4=TIM_OCFAST_ENABLE +TIM3.Period=17999 +TIM3.Pulse-PWM\ Generation1\ CH1=9000 +TIM3.Pulse-PWM\ Generation2\ CH2=10000 +TIM3.Pulse-PWM\ Generation3\ CH3=11000 +TIM3.Pulse-PWM\ Generation4\ CH4=12000 +TIM4.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 +TIM4.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 +TIM4.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 +TIM4.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 +TIM4.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4,Period,Pulse-PWM Generation1 CH1,OCFastMode_PWM-PWM Generation1 CH1,Pulse-PWM Generation2 CH2,OCFastMode_PWM-PWM Generation2 CH2,Pulse-PWM Generation3 CH3,OCFastMode_PWM-PWM Generation3 CH3,Pulse-PWM Generation4 CH4,OCFastMode_PWM-PWM Generation4 CH4 +TIM4.OCFastMode_PWM-PWM\ Generation1\ CH1=TIM_OCFAST_ENABLE +TIM4.OCFastMode_PWM-PWM\ Generation2\ CH2=TIM_OCFAST_ENABLE +TIM4.OCFastMode_PWM-PWM\ Generation3\ CH3=TIM_OCFAST_ENABLE +TIM4.OCFastMode_PWM-PWM\ Generation4\ CH4=TIM_OCFAST_ENABLE +TIM4.Period=17999 +TIM4.Pulse-PWM\ Generation1\ CH1=5000 +TIM4.Pulse-PWM\ Generation2\ CH2=6000 +TIM4.Pulse-PWM\ Generation3\ CH3=7000 +TIM4.Pulse-PWM\ Generation4\ CH4=8000 +USB_DEVICE.CLASS_NAME_FS=CDC +USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS +USB_DEVICE.VirtualMode=Cdc +USB_DEVICE.VirtualModeFS=Cdc_FS +VP_SYS_VS_ND.Mode=No_Debug +VP_SYS_VS_ND.Signal=SYS_VS_ND +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +VP_TIM1_VS_ClockSourceINT.Mode=Internal +VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT +VP_TIM2_VS_ClockSourceINT.Mode=Internal +VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT +VP_TIM3_VS_ClockSourceINT.Mode=Internal +VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT +VP_TIM4_VS_ClockSourceINT.Mode=Internal +VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT +VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Mode=CDC_FS +VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Signal=USB_DEVICE_VS_USB_DEVICE_CDC_FS +board=custom +isbadioc=false +isbadioc=false +isbadioc=false diff --git a/workspace/AUTOM10/Core/Src/main.c b/workspace/AUTOM10/Core/Src/main.c index f13711b..1aecdf0 100644 --- a/workspace/AUTOM10/Core/Src/main.c +++ b/workspace/AUTOM10/Core/Src/main.c @@ -120,6 +120,22 @@ int main(void) MX_TIM3_Init(); MX_ADC1_Init(); MX_TIM1_Init(); + + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2); + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3); + HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); + HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); + HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); + HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2); + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3); + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4); + HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); + HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2); + HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3); + HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4); /* USER CODE BEGIN 2 */ diff --git a/workspace/AUTOM10/Debug/AUTOM10.elf b/workspace/AUTOM10/Debug/AUTOM10.elf index b147e3ab0efc8645a64cd12555cdf54859e8b598..f7595c25fdcab628d65f0740510a5a9b0c3bd45d 100644 GIT binary patch delta 78006 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 delta 76349 zcmeFad3aRC);C&Jdw2Kl&Oqil5CVizWC(MBFoi)tW|={V5-?(bFe43!h{zN+vH=6c z85Iv83W%UM0SW?6M>!&L6cvZ#35v?h{jI89P2+j*eV^yO-}l{rZa>fNs#R;%TB}x# zyQaP6tu`y)Y_l>Y&?<^qxs0)SC(E+4+cj9n7(E_@uo%WTx!dTEWg*-;f`C5BjCm=< z#rN^au&fK~w=Y;wB}feWMlx#%o;&f3$1@2J#R&h+MA(CFcp2Occ;+MS|I26mO$=WA zU&Hh!o?5}O$1`jzwx$@q)@~S^Moy2|;XKZMHa0W()m2t`>jhRh>9SQh`y#7+5YKy; zSY<6d^AW!9g0Fg1H>>iwOR=Y|$}<;d+});N*2F;flme^r{%h=wHU-}5_2Y}TpT9Krwb5-dO+-va#GN7B zyBG8S*xmHC(X7VoJKJOu<0`;E6T-iOxU&$~l=w*CeZa4|Y_CpQWlu;6*o~62A@jED z_Mqe(dp`meCCAw(;XaWZSJe~ZlW?))AE%`bn#Z4)?2nSyisH+5aY_U6+%0@v z45`w){6dFcOQvY06CrfcCHquLnizY@zLb*22kuBrz02ec?b(@=;x1pf{%74wC0$W) zvrzU?2XSj_?!RDfY*@r|ZQreriSI7j zPu;p+biZonH%b!|ui3*JJ;PhrM&n&#*%f>qRA;feOvX5B^QW&2XI)-la4d1P{C-b=|@b8ScG=9{@Fy=ec^Vxq{q zXpd}JN0eUOvAAVB&i(emR+q&i7k9kVdL!qpc8twyB~WPYxW1#J-6AgTxVocGemfzi zT(wK`Qg+PixY{R=0*GEp2O@HdnMZ5 z+nY3bye+eyZg=DP=U?C&VK|~2+iu5%+YkA6%(`QYh(6JkS-<0n=*Fz?yYBdLNOa?z zW;2=99Z!Ee?Oit+Zj|e<54ZZv9aSIs#YjuMpINuyxff5TpnATU%d9FvJ7>kjq;&}X z01rn{Gd$z*Y?!;_`4!!K&GRo+=^owf+Mf$$N#VyY{Mq7CWOqM8Ub&{K!G%8?Uh)85 z8luR#w4;vGhX;RO1hxOad#e0J_zv&7G%gmdwX@gfh;lTs>qnZ~kau>;`ZW8%`l@2@ z+8y7mx42d9YC_h9KU-e4|9I>pG4Q(me)-PP-Q3jv`RDm-vx`2yuwSIqU}!5Z{W;{a zf(HYh2e_{b?*}{|aCaBJ{ruu7ESn=FKNK<#Aqx=F;<9~uLqqSivDmp zvp&P~C7y4V+h124h_1PgS^BB7ZpY5Ymz#0FAo1t%T);!!>7!*k20fF*2fg_yvp&Vs z_b<eXfgl`?dsO z^KHq^&)v(cZzrNe-{-0`iCODPP`crU_x7I2phH+KxLqdOy|*2$7mHHX3Qu=Do`;|f zp6z&I7b7KbTfrTHXWe4EVEfkiA#pS;;U;mdp7D2!Wlp!Pm!|M+d(KOD@rgUWekp?U z{q`?AUW}Qw-p4%m^4Q%VO=12$J6?EsGw09S19rBsW<^*S)p%Oi_RjwNto{AYT)xrH z*tI*lZH15dFGOxZoCN-y{q?R!e6}6GdjbE(UbDLfuW#?!-8KEfH6M#;Cy8SCrEd)u z(ZP+e$~|g((O(zQj4YQ`5wkM6J+0FJ0;Qz9h>=`8f{l5M6o;w66+Pqe; z%1*DJMKzL=89(o{OJB=JTm8ywPw>9>;JxqHt$M=8qSCn}$YB0EnP5?w+;}svxHD*wOQw~bG?SH8ZSbGzCb?a)Avd?O40!8g)d zC;oi{XH{~&yP_B~>5q9oiexNlLJgC}ydVEDGUzjnGReoh-5@gZ_jUFsZ`9yP_JubN z@tO9U`wQwMjeFO}VlR0Xfv8~>usZ`r=I{8c#WI_I$Jr!_O0sW#GcA}i<4q{u+gtlg zXN$$BaVaUW;U2*PKY8a->>!D)054W&`|k$hcL?ujKeND&@$%Ha z7ufzF3#X(3^P-yP3!E8$7CYi{k9sXamDlnUW!z zgXd-r-kUl2LL4mTH;!H|J4of$D0?c%s{Qn!V8_k~jDlf2UOopbW8X;iv%jbPh-xIt zidojeT3)uP4oLP$l6^#S@+@bMCwXP2_KAILh{2vndKfP{M%mtA?4qlJJ()2ONTX~^ zkkvE42kYUo`0a)KV%Cd9T?U`3m4Iu4ZTeXDpr4AaC@W2$!XAkytWmZSmP(=e6@kK* zx(uGNEUWe%f_3SMh$Vn|d4IdnJKfU{3&zr9OP2Jd#m=`f*f3z}x7=R+&UUnE1@Fo> zt=|FFrkQBdDu7O5zCCu8gNdye;+fM_AQK*frYp!40fJ`mSigZh6Fmu<$s<=&bkW=% zaj=H??c|OH2cM;evEF-O4deLtYM^0U_TKGi`M!KlwRu)M8B?`+RtE_r@J)96_it+R zto{NmABzaUj>#$Z^7mDnXU(Yg9zv+i`{I4o=2`Qqe}N#`=EWTDinea>VQTAMJUoRO zx$GmVkqb1EqGTgC>p>B!2Cf9cOLg}L57}3gjb?#WE^dp) zU3YQAS>X8yJL_0l@S01KN>S6fiaG$V3QI_v$GqJjc^mlg^2sQ?v83Z;4V8w4fuTTB z?XM1$l>Ma3zmx^$y12F)_cs?;!U9jYxFHettHGz5fgjbP%OB_RZjPwUYDY(Z< zf225p@Hpv@7E?hVFa0rMCTJ3*KTga-c%s;TH{>RWZxA6#B9ep+qGah$5&uGXiu9+6 z2N5Av`ZL6z2u~9YP>HJwAN=VuJYVpCS}a5QJBktDlPUe3MTE0IiKjMB1UgFw^$=r# zt}gvOMKy$HOMh?iJZftV>F*=z+TVUu9i`m&aZOaq1|O#f_d^Nqs0gacj9&o@?|2Dt zem&05yu}g_yeSxZOC(_M#Y8q)0w!Nez*Gr%csv2qCE(?!2$(4WAODf$%$5K~H5Z|i zccF2Qun&Bk9Q>Sck3^9UoG&NTatR3D;{t#+5-|94u#0z{1WewB6xtB=G~#&qWQtQE z0gKNj;7JJt_~!&XBjZH!qa^3~sGW!t!xs|f#ppK-^o9xi1ww6=s1zPag0@Q_gSV$t z?3X|m-%XgeB)ghSwkF26#OEF3JhCo=T54b8OK2p`WKc3Q2W+`H7k*(nAT-Pt@SDuo z4#3yKI8N=U{lzCS?FJ!$nIrJe%|iSO^B(*g%vb{!zI-DBrQTRV{^1#oA|vArFq%2QzFvTzUkO+Zt$YG}H!KXn zL0=I9R?Y|o_;ud_N+>iYguyQO4qX z*a`or85|9MUngNsmvji^6NGn4r9Kz^octa|z%v8? zQ#|7^ZY%X1{mEieJ&(XY&GRovnC*G?2aC<|#2{p@=L)bveh_}fKSnIh-+>&#-vN!m z8^Le#cR}OfuOh_D*Z+*N&ino_1Vx+s0r>eLL<{f%AdTQ(f>9*jjF2ea4E|`I0Dl!e z9Fb%AU7(NU>vx(gjyL_;VDY@?gXlH*tDsEekKsRw&#+f~kv#qdh)m}j5jTU^M|dXR z1O8R{-|=6KcSA@Pe+by>yfZjw^VRUz;MEaclb=M~TD%)5bNGh{sm+^1ZXMne|8;r6 zGK#=jVcGgTy*8JCqQ9}x9x^s_KA6v!g{N)EEaLUz5L5x+kF6i z3wa~_2l##X=RA%6nROOw`1o&aYL2*i)_(k}gkUAoa6*w#p;7IQ?;C_3|BuiF@H==Tl*UkK zQhYG%uKx%f2>qVD5vurl$AfkQ$J-*_%w=rh4cN_3*BRaJ8j2&&A_Y-JqrQPLr}9Vz zmP9=W!P7KY%6#LX-dLWfrX;k|Y0p6<@5tk+pP*kKJQ(q#rHXaz*H32#cf(Fycrry3 zWz(3i656!-tB$@?5Y~uGYvxAlme@-zbS)kggOHk%Z#sh#{Kqtswhgs-v(lTBH zU;bkwrF|)jyNJ|$jQ3wEG^A1-jpz=+>%#FKXuege-AK~J)64d93R?)~)Hd*P))Vom z%CEr4I9XQtb^lgX{!PkR{Knd^|MLN~R2{!=ino|)Uvrw7neok#oZCM~bCK4+%K#Ll zDC&AW8-`K~_;O2F!=vVA%og^a-_YF5ZD)GR2^U}Z%ZKmA%g4)S^vj1y6E42~qA?VW z8;HN86x;Y#y?pp)R7(JJdim({t$O+J&8wb+Ao=p~;J5Vh@xizB@{#@Bpu~T_j|x;G zwg4ZQVoh(4&V+w&FZ(XF`6?vRnwvoSTD;_60OrZzL?r*?7XS++5W_DZ5ZoO_t~k{E7A096sgC+)K7nSJ-~l#7kkq8iTs59(DyZKCP0e6laB^gc!yp}b9 ztTLqJY%DYfQ(o>x&Ils>&FY|-78_Inez#;=NQSo>;_a64NUN7+yk0uqZmV&4ygi|K z#$D$S?=>s70uj&&vFN@qM1>_&gCLfKhnG*+j4G^#I#tneFzus%rF>jdJ{m^pv)lcU z8bb+aXSH+Viz@cGAF2f}RACn0+99Jkx(}Ji z{2vHo^}Hr}z}Gg!Y9{1O4I?_HiKhBmX`-0HkoOyk3}bU;TJbKR#MS@J+rUk%@gv0j z?$tSJj6p{Hp+RH}x3~V7+MSH}wKtRrUIXGcddVX6TZ@O6mul`Cy)86zGF^pNn-1?A zcI;0norqhkx1~!Ye#2NU*4yoUieFYFa+x3CU@F)cVM*)9-(X=;xOco={8P$c;`6!3 zwQsSc{DuIBvoQss?dU`0W zio~5TK(1$`R+6ekbB{J6^WFo|&zV|uB<#e?FKN-wnfZ$AaLML5^LE8%u&iA#n3BzK zbT`I%NZD$}R=B441YEZ%Gz`VOw*q~CNXlSP@$x40a!-c2-)tJ53qkXSVScoa{hTs^ zh$7A0aH8lNL=iN9kc@^?m*^Fmak9}w#X(u6$pe~B(nK$7BEQi{6M5t8zW+**^>C_a z77}OA{8xIg8@jD+GGnC9k8xLLmF*k2)>#(IjcT%r2F?>uN;he+$T$qcRA{i6u?Jvk z>W^MVzmy{TqveP|^J(|HMRs*p#+G3=|CiXH9Cv!Vi-Ce^M0cq@;qY2qk?(rr>sN{+Oz+i zB(9vZ?SJ|6b4! zRrK6{3@?DgR0Qsi0%o|1!TmIiGeSk-{)Ncbkt&Yx(?rfFevX8QjPB`um>A9DVySo< zewxd2G8#gZ}~P&o%mhW})=AG%Wj_ zbGO#&f{= H`L8covjP_!{^}OS?V7AA=t+k9Nwh!NhD}mvN&hQj!?6Q&f`H8TOW6 zYedsqz-xkZk7V&}>@R<1MTI%r37X0i@d%LPWT9Ecq}aPxlrWC!bB_r)lx~N z29I6QK`9YSc`cWhhyxK{%5zO52K8O^fL?%mN#e3%@z^;ljRMB2fFf4iB+@DbX8&Zj zKcAFGFB$wyfPyC?_3EWy74T6T!0b$pVqMB=ZXw>E$!-#zD4NiigLc{Zc$vQUYwFa+ ze2x;Zryn?}7la>)6PaL7jSxw7fKR1?q^0E368*CzdCE=KeNneT)>Ce(ilWMq%BOlO zMG9+0kRH!OYQ6GfdSbY~+ypx{8X89I$S}(rXque&pp>ZROQV4O@mScAf*%5AgwE^GV3lT-xaI!YhFIMp2Kz+bF zysi>~#t`wc3zY=E0Q8Cr6|-@1#h_gy;o;D)P%5#5l%SM|HQttrO`#yu0PdreAmad@ zpy1(B=-QivuDc=BF8iZ)3(5^~zqf_XkLcET)gR}zAa{V28&4w)Nj1*fR2Q{8``>@m z<@t8%pSAGcUjE+S#PjXTe`W+fu%uCs{ zh}7XyfMczw=j9r~`WU`?I~!+EKqJmUr^Z6QWhY2GHAHH}YAlI17Pl-$2)+HL&O(}a zwvdHZy>rt0nmv10S8w{@VCem-Bu~=>YdbwV;BgvQs zkwo8VqVIWaNhE37T&dNr95hN~Jv6J5(T6-o(UeLJKIF}n29rf2r0hf9`wA2gWs_L! z1NO!%sX-FHl{XCWMdG&db}G&U>nSL`oyV#;(^*6w%r}b5q*8h0<-cmVqj)XFW4M$% ziZ^oyiPmVayi*T$O0Dq#$7ry`ZhkeU&F7F($m1k0EDPTbin}yLA&ahn719~^6N zFKO|rt3;ufl-T3qMyDs(*RSTJPs8%4+PLu(mI!EgHXW+a?_)dv+NY_ibiW1IGF9Ow zf28@7-SB#H&;kE;oF-4x2KdDkWP=&DYGhK$bXSecuvH^7Y}LpNTQxFiz~QbMnPIC& zX4tBc8MbO<2E&$(On2D`x+Iukt43zns*xGCYGj738kuU<=mF?o)$~CLch$%YTQxGn zR*lREOfFXy+aK-3W5bt@%&?^+Gi>R|3|l%f>puD*$I{WG&+{0q!OTtby?W&93}GW{dUktLq+1tw4U0+T0vfyooTz~l*EVDf}7FnPijn5ua_ z;VVp@n^u_o7r%7&a$fbOwIxsZ+L9-HZOIe9w&V$4Tk?djEqTJ%mOSBWOP=txC6Bwd zgt=C%EqTJ%mOSBWOP=txCC^Q3OEFYs{qEY*X4p~gvhg*>CJJWBwIxfgEm?AH$&zbJ zmRei#yK74eK^pITF1Wk6WXZ)POD-;1YH`W$E-t+RQop;nv>18kcNdo^1N|vZj=^tU zUGliAOGi-gV`4`+B?iyw^xG!1^yzOw@6{sqRdkp$(hmYyD`M4x(>D-uNW_LOIK_r9 zIK}?W0P0od!4=}Pfd!xjK)j64Q=m4BWTd@ zjrrbi=9xSp{qBnv>nd?82^U3ww8X`H+nlW?ugY(8j)F(C+99=HcnVD@aZUiQ6B-`94J8KpFVyjljhS93TUKyb<^r zG|88NCMv8_m2#H(9tEb8#8eGo;w6Ry(_Ug)T241Fk8ZRVtUJn(UYeGr#=wB*{ArX6 z1@*9(5JGu*J-j-LQ_dnUs^29f>sNoTryjD)5e&nw z#Kwa+F)0u7-Qi5u1~I+>`BIRtCh|9d4QP=|gS@(emB_`xKtB-6(E_mz5iV400V~3J z!N4pKl5Rn%oJ$Ef?iq-Qx(K$30Y9ahdC!8hBRubr0$~`V?Alxw_jgU7sp)eYsImHQ zn%>2TvdPSQ1;`^{)&`?UGGLIk4)~P?pHdbCthB5M25R2ItfxTD$$}xmZCGXV9tVns zJmXzPH_%&DYD0WB!-%sQD!aU(srxA-ieOox%s0R!6`MZ-Pk=U*Z7v-NL@;IBXMbf; z)>CF$h(kB#y$0GfpzVMuBbjIYU2$c@WtIU{(grsPMBa)GJCsJsvJl+>$umS(6le}I z5+Ak3>Fek5LCT0x+T>e+EC8~Eo`PMyo}E z(~X%$9vNk6z))533ikKJ_&oTdjWVh8Pyj0Yv4m?-2g~;nsL;H;D#qKW$oB?#hOEes z`#TYZC>zOf(u6&!EAC|PYDDS=)H9SQs$;wSK1Eu>yx#$t59Hf~B=hal$cZfOQv^!$ zxq-~Ps;=VotLF6?$ZwZ&r!nstV2N23=q8zcshO3s+LDnQfK-h{BlfT*Tc_n&%-Seh zr;T_qLZa@7;F&>6#Zt>{eoA<4H2TXlIFVD^wOoS}WLvdDgQNNLC{HUbxuHdr-RnIB z0X3o58>AOm;5kcHaHH&R$n-DP(F+OL>?I=`0q$t2t5R9^ygMkAeeged@PP>G(wUl{_YA~xEFr$eLY4~f< zic(Tuf|PfFZVvSQ8qNGN0dl%{K}}Vp*AtSmFvTyUQlk^M1%cA?ZXolXs>LkYJNBOD z)kE_dgAKensL;$$87y=^2zfTJwsy(`gsYQ@T;`3%(X^u!xXg7xk7lg+*kc+?M&M zQ>EWXJiL5M3>8}tmg#uK*aWsQnl}gzN9Da&l7Cl?S(_#KubTW`Uuz`>^@(d?5s((%@EpAa>)Ug{gO*dyk$wD9dG8+F`SFjy$X+N`5^l292tFgRc1|; z(aUx8oSUQPgrbXYoaI%Jgrj(sNb?1#6f8mXhBEr6I(nL~)gh|2Wu-C=X}+!@Q+-J9 z9a3x^#2X{ywZb}@)LQsjg{NKUc=w2JkXYdxLSsEtjufX=46j=ES=i?rFPVL9CbL#b zUO~<48?T#PWcGP6JhN*F%)UdCpUTjCgMZcJJG{-qMep!-cFiu%K;xIa4OHt`B)U3h zVt9kJmSFaTWVQy(s42xbDxT8e)QiP9ss^h4a)}3ub(Hx25)Y-9d-L3)#3JqnJo_(% zb2Q;>uWOJ}7P%CJL%e8k^a9Kinreu*jb<1574+)ijdBjg@+v_pem%S`L&&qRVr#`B zNosUevuN$jcd0}xXx`e}TjyBhI;6jDc%&u?Zg$o6b_kDD*Xu5BO<|FH5GmCe7{_C! z5~(^fkdE$Xv;*Pkn5+2(!c;v3)h~O(Qu~yqy6kat3cT8Y>gRB(_chheo?N9{J&=un zHeZI5Rcf*?JvU5u+Nl!H6Q#aKJvxJ=IgaYZK%}fOY`9PHQZ^i#=$d1nr){`7_IYkw z4I_&(M7kf5wt2jicUgFN`8*wIo2RiGiPfPUdc1L6kGFXm_Hv+D^YV{0U0qKDMK@gb zdi6c-ki3LXc0P&c4fqU)C-4-h{XIrg%`+k%7P`ZrI`U&GvwBM5xlmlzw>u2iNU+f~ zWP4q;Ee3T0qK9g#y1a>I7r7o(Y2j4!G*udJ1S+3wHtRNUHYM=X94ddmHPeynapXLI zAfA-DhS|5Dn!>=-cFMyPQ90T7t39^jQ^k7JUlRb zhDYxnCUyR2n}_9o74uu?-zhvPn2d2KGvtJhAt!VUIiX{;K)A_FcR~kV=BL?ZOYSpn zLtAnUxo_BzQ#*#7+A-ABj_FSAvqtYx_!d=8GUz;G6(@|Ye|QBSTL z58(fru?&c-#sK)Q7$3ub+3>)RY0?dFe0_}-U}c8wMmF6EqZHV~OmR-7{$;{QZ%5wj zL9O(Ta_Xepsu46?+%Q2XEw zRDHCTK>5>oMq(z~@0~YL!xgGEP+juDkUyL-9&JkNCfIrfDqg-%5}@&UxD83b_6i@3 zr5^5~I`Ij<>WHY^KIvs4Bk1Kwp#X7Q;m;``X&c`ZW|*T>4~gxacxPUbIPinFid|>7Ln4P71}X5&=X6_(`dQ+ za*EYK^>cL)$jg(aJ0E4Cb$=R|s-D|>$=tvRkqSr+5SygCotWypZtyxdzi3Jw5UL_4 zKZL-?{}Pz}Cka_&%Ge-vw~N*|23oA^%iy)G^su@cN`g^{812lIQy}&jboSdggOHA9 z%3xqU#?J_8XV5900y9!4Z4W34%v1#y8Rg(!VCE>W)MzTPO%+&ZeDC~Go!6}OB#4qs z@T9z?)W`2bNK|-8&3;b%Y#eWkxNfntMs>wtxUVz#oi%b5IM{a{(ast@6*$01a~{a% zb^6c5k-z!|<<~ncnDvS5J)7Z0#Yd;v>Kl38q;ZRV&wyEdW3Y-{BsUt}Vz>z_Whwi! zz1W69Z1y*Cu4VI#7PO;j7fgoXw)3*js z>roB5@%AjLRi`NtT!G4Z+T?Hv*B%cOE>o+akAc7D#` zDb2`qg)ZX~AH^)paK*%|MRmLa5kAU``(if13do9>&8?kQwRu*0Od4k3rFCx+eresR zC=>LX>Xg>zFYx`lvg+`mIP~YtuFD(q+npEd@=QL00htwE=p^`={6 zlk-45u6Nz~-CegmV2`+o_^X!Ud{mF;%X7}ycH0p7TGKe_WYy=PeYg1t%QbMUWng`d zjknH*`aDG*XSUpve#Uv9;~B{Fd8FfMz`qDy$NoTTkz7hlF*wp>JuHC?V<=&kN&s!? zYy;48qa{)s6Jy!e;TkgTqiWEh;;xnCrcs?3JthH5G1@4BNanxj0jk1y3k;&KdoV{6 zQ`35SIjXerv2)KYJSTkz4qsc_6uEJVl-MDG7$e=;atlw*SU?1OWmtysGXZZ%09tl( z{&@>;!uvW24SCaM?-A}ZiDO120VgD28fS^^7ZR|HX9@UH0+GgN&YXt4SLRvL^14h~ zq;F6F0Ot~lVO7rT`mQ0m0zTd8+=%xOzXqI@jd-V|zngwGn?H}zzJ_L~2T`p{KjHk) zh}T2I$5=N!ygZsFb1R%0jd|PTewLrj%=G4TQL|9IyhI_VH^%$_AJBJJW;^wQGg_=g zDV>ukm86a!b{(V*%lx&ox?PBu?~qYB1>S=6pwJfcX%fs+EQ%zH5n(L4fJLKBQf-D* ztp-ibRv=EJ%mysz^0*9UjWXM~Jor_K9-zQNJ_y*xnRT?1S>V`IODGX7{C<|JLFjxp zjLN0JX;PrA1#$=slgA+sV_T%5NDAbcHwhFs3pBL^CD5Zm2z)QX&pyjo4I`-;qw`we zXBkby1%8&%Q74d6^jXF*SAL;LMv_isxOP_({-HrgsDmVJ&48}14GU4Ar46@c+?1rP z88?}5YsO6}+LjSAA<26Q0#y2yz#U-%5BmIUVMa?NX}GlEyISDFo0GKg<|HjdlB7jd ziWX^(O29)J#2)mCI5s~p!|PPd#qzMUH4-E=GmYzlxhJM+yTiZg@y|G_f>{xn1u^&djToiAMG#^jzOE@f- zh}0}U`zSq;BBE)Q#ros)P!5p+Kha>36#JkxwL(4>i4Lwx?@2h4ng_nCLyRQfM>SX?wxg)8(O@aFnxc7&tw5dantrGwh7wZD z3@xVX&0@OVETy~VQyi3HdT6**in&dLSV!mq%Un+Lp6{SV{6mYloaW}5O3CH4F5wBe zn&#T8SW392K_%h327@Imwh(67npOuAj>tr`p$TTP)z-9|Y_&D*CR1(KJd}i&G^ix( z&>+$<9BG)5=Ixo!tdmkgP)nE*k(Q&2-U??&b6$fNI-kLbr4lkeEeVIEkvF9*;e->> z!VMk}7W|;o9>F};8QX$4jiX4n-oPeaHl58acs9_7ftEbqOAYZ%tl?B?DI+&+>0-x) zVIOs-11lrt-3Sic=e*DoQ{J)8yDfRcAtW&-wfBNpQnQ$!JHP?D+uV!9?Y8R&fHhf|HyRP&Qs zDyn*Dwtj-nlf%iDX|l;lJwnWuJEvP?0+RF{o76EB{2EL%AUyI39eF@frw~;eP<08X zx~{3ZB((`q{R@@8c{o+A1UK!?b*d&n-`UW&b~xE>nyhvbT0T{-y<0(*5>7QqQ>7%e z(^P>Y5cy7`oIatPT_kh%RY~cbYQqZ#Q+n4Wc6KAk_H=#X?W#R3Vdg&<`q(7do>KIM zGJ0LSs>>Xkl-MCW-lW94bi6>KGbfLyb|db66Wc1PV*Uv-tZ!n^)nG#hP^e|>pXfF> zrOf=b4`;g)sPW$04kJq0>K~NCoG`BngIgUeOXlU+ssyD(S)PFRpkJLXVAy4bS0Gh=lxO2ux_e&79FBI>*jQ6aLw=do; zgT=hD^F>=;^)3Sql_x~L87aVm1TJfoVm$F~t`+lb5aWp-=o)}GMrY%VcSm7`{4}_D z;|EhjbSu0N#J>2pikR_6&d7GW#-OLs6nqq?QlkXZa2(?uyYfYV8{pJVPGno45(@W)Yk{uSenyL#eXFqqFXZ~Ydbl`%=R z(Lsx{!OYqTkNG=Z{Ab0Gy<4`$6qhWNuYe8p4f#AT?R5;0xc-;)jRMG zY3)%24^`3mwOiWsZiS!If#-GJkNo@vT{B~+W!&c^4%+_`-M}@e*pGavjMf!JJP(%V zG>F1l#ktafr?jFZKOXH?fl}F}JRa>XC4p)km>h}HihM51=z?^qXs?b~-hToKITAHS z6^TOr9csV_Q7v={p~GSyM0HyXJw+MA@n%0e7Nt8V@h^bKH8@QK0Dh>!sp2buA88Qv z`~%qek&q@6WU}{olq$b;JCwWHjW6iL~2HM{9jc0CO$+4VK3WH-RH1<2&;@^@zA_q}y&n>ju#CaD>)V z-AwheqJOP3&&;Kk@q>s^0il8JQ4Okb{4ot;pu3*h&DKt27c5zkq&X3xLPHf}PQ;Bu z6NRGIHY8XL^X{tZ8mMhVs2!wuZ6n+zNM)e*5jPnqUxUg(9TeD0l&L)GsL@C*hx&0L zq5Dzfu;E+_jf)61+9WhC;zpzWuv3X7$@b_(Ak^s))rmk)xAl;v=ZnBis-4uJQte9( zQr-pFhtKqz%JP~$oWZlvzG6Wdjm+$nILkbn!hz_Rt`Qg*b2*&#B4WD8e7eDo_L=^t;^O_)Y6u>(PY_H zQ%z=$b(VMMDXl5%{`9#+NfgZ0i2a&RCu^fj)-oOcHD74_YTn_TMtoTEVt3?KZ?u2g zy*gTFnOEIvNNeQxaPw-rw@~$9g*?}}7oqhi`LEnKAZ+fy=%6sfh3;YD!5MFgA-zxm&9=w6%7YO6`ITCZmqqRCD6O&m}YSs5PUNx-_W=Q@P!mBo?P~jiG z4gCe_w=L`_ZWPMvy6|=WC6X8>T;~Z{#=9K7%o0yjP4uN|rF)yETH?tK*}pE*GAbl{ zv()W`CLHCVI_A{s$zxhA%EL}Ii59g;bx5n>aSIeO?0fLpYw9%8X*gcqT@pGId!md# z=al#4DYCywG2QyDTKg2UhaPWGRZ20(hO!6gOf?&;o^Xtua!5CCnsUg{M~BhtzUjpD zk|m*TFXT}s`rwI%)<@;h&>U&=l3u()EZKCDq3b6zYdbHh*avzcM>?PvNDReRIdVe9 zzShglkz^ekFA|B!VeFWOdE8_0*CjEM!;BkMB8c>yQ-_6Aj?}8{TJoH@Q6tu(dL0m2 zbCn~#HQ@n4bwq7HFg?!Wz1_OKM1(Tlj6=rv4>2f|c~+qr^cT9>W9EEFiVhJ*$~^l+ z6Gn?ryH42>E&8i$!KKJZMzk2KvgK|ei)W0`T_OuS4deaJLt}I`MV3{^P3rGF)Vc>| zK-0rFD4&w54$+i{xgHhB>7@_!c^|xcUxtWXZbWC-?L4{%mB(E?)PMx~gZ0WAtf_?Y z^1Yh%O73RHksC;|rw!2B;J3_3wZh|K9P!5~3p;v*Neug}@ zSqg2e2@7~=Oj7g7ridL-`kif~YnH540ZK(Z8vKErH3$7%9KkUoubu}M@x%D zFm|8wK_9u~F|)5)^7y2mT=MYtms=!;_5W|yI^OC3A8Q>=&~C;I!e3U36F=a_T1S$p z);jJSaAU2b4#MPG$C?3ht>e^y|J${WT?GTN8pNyax@QnCrkVTC@8F}NX{EuRD@%`Q zoN~Gh#=`IlXVPGv*m61gwlwQ!A69|?jz1Pz0}XR;>na7bgIt!Xru$b3R6Cf%4Lsqz zKA6{tf7D~K+pVsl@JLKGogd8G@E%U1A-pvo?%Xp3ma1?z4B>a81GzrLot}EzN+NM& z|8%S?bRH_Fr^XG%)r+ytV?%k}EGlgGTYbA?x}T<$*2MS$-s!et=&_wML($~LI&s60 z;8>@Ha)v8s{xDt_fiJ*`$trMn#g^Yqv*NMNnPI$b+d`~G>_zf;`CBp+(w^}3R5}%N zx)SwC-(W)NSNo@Zy7q~+&dA}sAvi4?j{JyqK2=WU2wouH+_!r>YDSMcQ%3L>GIW-= z(~ZzQBY0**dhNL1Tdg$)u-MuqhyHUlI9a}S1T{DbgE!AeUPp53?`?mBQ`?ce#V|5f zwl_Z%ia}zw-a=O-hQf9=bzfO3$BeZ!VSk9Sf~9cw~KG< z8AmUAG;N*h6eER?vBZ);iV4NL-IGyhSxK#U#;Mn}Xi9CW-F4 z+^lsf6zzL(HCjOqWF5_jqv&&dU#R{)dLPcG9BPzXamT6E8+E;0i2JK&gBTQx$x{TZK4&jX3 z-psh2j;h`z+iOrU&etF@o>M5R&g05CP{?aT%rAvJCzFi0#4Sz(l4!bNNztQdCNbMk zYpT=uE}oI@#~?pWww9A(Rcko{{WJaAJ4JW#r`@|aw@`>jovI|i@TgOj!kdQN~oPSQtv)Tv4ekMYd>itgehf1F1hs>I#9*w5kl z1`(1ZBFUppRT5E(N1du9f0{>~sw97g=TFe5i8wTNRXslV(`DRzk2+OJG#x$aR3-U4 zd(^2)@)sl)^zO&ZY9f}PZXWlLB>_D=>X0S*dwSF%OY-;js6&?I@8hZK2zkIV;^qUEw3{>5KjIo3FYU{7FYxrz`AYZxPA?s=bg%F9(&T& z^wQZ%_wG(F9j$b)?)1{Z%9%+KR9JmpI#{W1?xb^-1x4<;O83f6FCD9NZ|wBasY>_4 zPVaLto_k-Xm(Emfh^hcXua}NgR!G0)r4yA;N`Jsh2P)mWI=!^p?)fO%bQ0sG^zN#{6puXV)S*}oGZn= z6W{IR-^(-LjDV9z2R#x3elk3DwA7okmU!d|kW`JBhO{0*%6+#%?|=BE-ak%oUb&ao z3wrNS2Z)YYZmiROUj;be^pjZ?ILVF9goMH;0yz?xj-bMp871pmzpF$s6BRDYY_t|q zksme7Y3A;5mI!aGWR;?+s06ATc*-dM(orTuZ91-bK&jnhg0o^Guh(Vx1a(korIzu& z-=kTX8(pO2bW|f?h4kJqFaOb!7C76_xi*pCCeJ?o+lr*vM%kjESl(Zq2kSuF5a>XT z;rCHVHOl7Al^g*thNX?NEB7;D4N%M1qllWaBibLKSRI(l#Ph%o!W+SH!qWM}WWOxL zMp?yNd6+HPAB3epx#k5B2SbcpN~#~=bBD4*m;d0iQt1=ovlQvf;c3!Nl;OuJBHM5LzL7#|G{U!k{aT(7gAdfRo1N^=~}n5mby(@ z7qF7LWv)30#3AE`2sh7Fhpa-BPt7$~fik3@ODPXoG4c0dD!03nM9S^HI=4T9K23%z z?WYr#Y(Kysp-RpXr9EJ!&mmBs2Q|t@ke$`)7i#j;N`1hJ{N!9SW<;3!A;QlU-w@#^ zbIqP03~BEYV&#I$#>$b3$E|q9mipZbfz*o{Wk0KILV%KZcCL8@)FDPhNi53n9x7Ij zVpcyuBf|MeHs_T-AvTprXVPe9A#d4iq9&V7S2fZoyM+34EeJHdG{2>pJshfTDr*2M zovzF^JKu@R$-zq&e3y`xKA31YhFPt_#*Y!JOxr5IU)dh#g6Z5DV8v!_&@2V%SDvs zGf_~48!sVqAJLLoLNZ@gW(kSh77UtqgPJsyb_r3sCy_&xn}g;S5dNof)MuFQkH@z- zNN+ObtDyom7rh6a<=?8B{FvLB^*K61UfwbeCVL0N+O1C8shIs~01Vl;ON`6o70c}g z2bi6K3w48`aM(i3aWP|btlc^mt{B_tvRtc?`!sT>c{H3Q!h;o%tqQWY4@wE3S9G-f zI@%y6dH~r6$e%RweT^(K#{d^nGZcO|_^x+jRgZNOcUZ?NG+&aj&#oD z?I;=*s-rsEXeP4zDrv(s&*K_7l8K=%a)w5JsFA~QUk{L!hQDd#-$Uu2W^Qp~N_jw3 zfKX21h%;`qGdkL58avs%5*{lQUV^B({am9Uza`Jlb*za@6uZc(aWJ?nIbUcjF5P}g zN2MZlQX?jyL|GUG*Ha~GWmo5s>AXja&2)9{=(j9UZ0hx=0{6i!AS#Fbt zwu$-)z}tbxr~qxs9#E5g;%G|-vFfj68)fT*=0`w=GC71;8$aDROGngh z7VE^|t1qJ7ZEAGdLZc^X>@&cY0-J}(12lHdjl2~vxk$M=g^WL6BQdc31xPZ|1|9Q3 z%R{LYWx>(X41mc+4Di^6c z5{rQ(VM(;dW%nO-(GO~DZ)U#ZVrB9k*TQb~JjpN*HPyPd~p^OjL`cgnXu`8F`1 ztMlD#yr$8mDaTb%URS5u90bwbD7#gV)zukHL3C%!CKYtDz$rseG~KDfA5md%6*!0I z@J8w1XJM8>&YpC4^NW+T&{a$mD?&sgTGbkr0#GOGQzn(!Mzn(!Mzn(!Mzn(!M zzn(!Mzn(!Mzn(!Mzn(!Mzn(!kL1RBXgF*;BgF=2igF=2igF=2igF-K|dIp8U^$ZI6 z^$ZI6^$ZI63$pbL3PGV66aw@N3iVJGeC4DPv8p&}xY|^G z=H$P)iAo<=tPigGVBrvyAAPXU2NpP3ScGFW`a36wphoCBC;8ae6l08Xw$JBv=|d+c z=kv4%bnldJX8P^mc}N&^@sw{?IwkRlFzDtf-)spT7Y44L%3grwht^J)1$-W_z3adN z{w2rt(z~8sh(kX7s8f3pAHr)p^A}+&>hfKWE#j{TQ82~n_b_iG&Q5k#Jj`2&w z9_9sN$N~f>PVcdGQfmXT;hPW<3LKdHF3EC3~l#fp}UpE5M5{UckL{uKsD!iE>Aj-Q%B< z=x5K0^d)#x#AwJ*N2NE5B#KBKsjm<06SobQa&;9Hqu+f_lcju$I5W|Cb}8>FD(`hF zmtp~HPYqOY*&OXjQO(gpw>iq%H3TP?I7~BnIo~NwQ*R}o4Abn|P{un5DE*bqTV#-0 z)kN-7QZ3wNad8R0YbYK^_Dz`KG+B+*=Ff13k()BZSxD}s>CTI*k@^|aoo@+lIL(QE zR9d0_qcCpIsZNmsAAA&4FO@p`$X#0M{QfA<6}?NH`fGSc(Yn;RZw>D)vP+#e*6>=Q za*Ffa8eS~cPjLn~JTJ@4(WfyRr>m4j!I1R(M+9fr*ErP^`A8>vEq?{MeEM--uq&{R zm&kO^S+COh@5e9)FIGL^q;B9%MDznruMND9_<4b|X#*6QwZQq5!dotI{2SrMEO6SA z`}}-o61n;Fou|pIInOz0^-#y8 z3g2ZY6K-);=)G&)vzXdM;i%Zm4@#qrf1ck@_2&B*_}#E*?=7<46m8+ryy2mR`r8uh zElaJtF0Ze%$CIgezv1#;zU!$MvBC!4KmUz?A$h;IjZY%pZC>I-(`#SF7fXtwr~xqf z&?M|e9UnCkfQ4$h?Ij*1ME*n08!zJvjpjp6#w)0%-4;0mU*VlnS}wv(Oeg@ny!KcK z<=d-l0~E8!+4c%g5PKhV4!pv15>`LREZ81Y^>c}8QB<7=*X%?qll!1ke{&u#+c=mlO`NzAMiV{71u`__& zmW!RG&L(V;Wc*Ed*jquq`DYsshGFd(HoKUBL`E-$-KrSfxfG0zQ^A1h5vv1&E?VR=5in1TrSkjZ2DGEw6X%SDPDkwu%xmbavestPKoLgP_^6+N;{H2DVhIR?*6^$n2^a<~;#rd=U>dZFXHAuW$Dn0AYq|uy2Cd^+GbP|NXdTa* zEdh*uXmn~VG?sdur{8o(r`97;qy#r;LC;z)0b$UJp0!2-hCxeu);bB82CeB?8>0R| z9Iru(dRB!5EQ40{tS2Q9FlbrNdPc^HG-zGVdOperYsMI~uxGs({k0FTrwIlv?O9tT zD#eH-LE9yeVbI#1wO;~R1}*McZ%KAFaYZVG`)G7(y<;R{H%X$8DyF}2Rdg&o8KjKM zdo{ScSA)xYHFyhzo6JYUQ-2HNH$-z@dyB`Z(J7agX>fU&23MD9_~!Piytm!a zsefkr0Ps8{EE=8qXQh)}jtGlJr~cUzIxZ}XP7k~-N2fo$jfKS8yGq}2N2mP{@CT?T z{Olla&+9wMhfv1QFCM~%)DNAZhcI4w(0KrX>2$x;J$wjsZip^V{Di4=Aq!l@aOcfK z=$kh?U%*Mf6ANjRCEc9A&^_x^c@K0YPTlu-jr0{2;$R3Orz`8BDbp?Fqe90(9~LVBoon%OHtF3{j82in1UYmk7Z8q2*#%o zPWcfmz8-bnJHqQ$+qO)t?C|pUF^4DFC5TpvU9l&^!N<3Vw%rFP0h5); za+G(K9CwC?eob-4EOnxexg4Jg$F@4g>-J1q%G`UMT4P#8CS(q50w;LrZnIUqh#CZ})_IRQe>;Yu+fnBaFczmDajGAO-C%^{GIY^#gf@7@*?t^5 zJ?T2Kbjo`7D{6NlBR%vMlg@KxX~p7oRl1EVDvW56CW_*XHBlVhN_L$X)x^WgcY!8A zjIOtGNdokaa=oikdJ2o98_9x|H)5RCF)CY!$EfTUib2zR!4CmAaX%aXj%K95KXmM}!meJx_PCzUJnxEuZoujnGs(Q@x^E+hVY;BbfX? zIKEaOKP5iePzzkAP0UfE$ky><`X8?T4*NFrSlbY9wDX}?BnC&I(J%pm09}3|+~aU( z$Po1%X8rwV{RL`5&2#bOP#nSbSJiy<7f$t;Pe(_pFQyi`uKt3m{IcqBMAqM2T?qmd zIHteRs=wWeAo-)RC)j&6wV?f=CkyBw5WqJ^+iJ?72F{y4kvX=19UagzN=@6&g9{sm zekb7*?12!S{z@PbG;*m(G5V3KKT)VZV3_N4u*B0558bK-b#u;HVuiR+#aZANIpS=r z^Soa)$oQ;{CeWYV(BI=Y9_Re(7Y$?ecRxr{Pdvk&#sQI>sy~yWKdh3Lpr*q6Id=lh zCpt3&qP5%R1Y$?uYM@_3Jo=jvN0J?ky&FXOAxqipTC&qRLR5{_ zm+VmtQlz;vK0-`yt?!7`7fHY{kS8`#LKq6L5RXj=np@taP%X0Z7b*N zNYR|73GxGjPnh|cP=@=zyMz)=*L(aBwCP#^l3HlravDl1<&Q~~}M2S3SbhNl2 zTDEnDRuR3$-gdj5uOhrW*fU=psn>`1&*KpPCx~~bqjL2H2*i)BU!dR1c=YWO1XF#} z7ibVXjsEbXaDDrTzQBaSyV0Ne(PuNrXltAnvEp2m-dZd-9y|9(h}zEZIMFfKc!y5s zTiBAEhPWr;Hh^n&ReePsTr$}JxU?EaKXgd)mw^A32%n3*(<{|yu?RT^ZFY|d7=8o) zBix~G`kK2g@$X!W@eVPb01q*m>$=0BeD$i}FYA0faAw+wWc! z9u+MADNL}h-q#7M1pYk2&P-JI!1lWjBO@rHr!(74QX{z4aC;LS+$^}}Wa$Q3P32*o zUAGV}rC=r8CUD<^OCz_la7V%|n4;Fk;FUkhRl%~q&wevpeJi&g?AKG~(p(u5-Z ztpO)cHR}yeI|M9+OM+g4yB==Osm%HsZo_HJ>VXu^n6AEec?mAsU6wLKO%>(C#atQ9 zcs`#Xa)YJcYE>$L`3RWOnd*XBa~76KQ2~$4Vb)Q&!_9^p{eZf&ZWUZ=VdSqZ{*fx!WaTefk^LZOiLeWBslm>` zlw2O%!Egzl1DBGHIl}dcA|u%7cO6qt-T^6p1Mn}{y_Yq<4(7{>5vJ$O_5voF7|ga& zG19Yc-2m?aY(AtU=ffo}^^dwF!J3-5rci$PnJonYskY5^KXD_*EOr^gCH!!>l$5ou z`w85^fb}dKyz-X-`wE;VkOB~*M=6BN#iK_!DHs~%G)I6QRp|kkJ9J}ulo#`e^M6tG z7GPCuQU9=KhG7on0f9pv8j+9^NhJgX1^e2GiQRQgLIeRtjAeJXVvB)+qM}%+SSWUP zAnNy9$NRqj_w(^No4xj`y>_g%V`eJULfvUz2n@Lo@;|1lM4nUr$Laq>*u8W9b~A=^ zcU$#e{{DZdZSLQGI|?b6|IZTREAmZ||DP2M{?yJ8eX*j!0C%c28GqCP@PF1r|FdRd zME;jRt1Sfev>~!KXi>=8m_^n`ETUYAfaRPZbG&j|kU3mIqK#G*axcUrhFV`N{pYA; zZMY(9gB46lP)gPYDhiq7lv{!pHeFFG7DfL{qYX{uj@rmX*2X2WHY$;|F^Q~=NMvm| zB5Q*YSsRMTe*+OL(EcB%zp;n<|AM?|wxwVdt_?EezahrT|68t&Dzs|(YJUy?`_)Dh zvNo2G1L%pRFjWyxeXWEs96wZ8VG9WH!%r*0rM5O|khL*`jEJGWwcr%3jTp3?5@qez z%CvvOdiduhYXb*a8#c(=ph0eHh5@cE{rjtwhf%(@;L}k1xjk)xVJ*Zd|F5bXL}cn} zOTPa#tGBETAY_COU#$h_y4siEidu}O+TS|={c58K?ca%VAVt^+U3|0=gshDp6tXsa zP{`WoLDt3&vNm#%wQ++&M%Zx9MsRl4h7Bs2qlP6qvNmW?p}YMbB}1vUt>ERvVL`gS ztc?o(Dl|eX-txa+gah4d1rHnT>mao-!&>~RtpDvH2n$x*3idku$QI>l1Z%o)D-5Wk zjR_Q5f=vop8xfdl1b@oX2-i3w=wT;BAtIpFcEW|8+JFGHLL6{WA#1|{g{+MR6tXrL z_{(U`Ut{i7$l6Fi%Y1^YjRLfPkNXdz_5ZTg`)eU|!Col;>*p1+*3B!ZwT+;m3l5m_ zwccIU`gU3C*=4O?m$hD9OV68CI9r$5pZ~5cYu&jlvp0X_Eo+^*LS|oH@mIh7e-kfR z>&IoS6PL9vT-G}9|G53-S&OD(SMskX*A~?K?^o-?6|&ZaD{8Sv`CpT3-8SX|_S!Q0 z>|#OIx@?84_1Lo3U&~r=Eo*(Xtaa3~)=kS=CoOATw5)Z|^7CozpXI;adB*=0rFFfn}}#RmfWRtB~3Io)=`T^Hs=N-z#f9udMaE@*w!w z0Om!xPJ+`kt;p*3#`;@iLQ`WjpS?f4a6Lx>{U#}VQf2p;8Qr3D&`T9%*6pdu9i-=QxUWgXo<^TNh)P@Tr zwzAeE{vB?Cveq4Hu>xhSE0nd4Pzwo{wN6mhx-e_ zWUa@Owf;{2>+K}?cKnkMY;_TO33w@{p__0(F_=!f;V#w)H=K*q$~eU}-tR8sx9v$0 zzcXxg@q6PULna^7!LP|!hSVHj{NdVPiz)nf_tA_$v^oD;+-Au5Wd8e$FXQu9Wu;nc zH!-}roVkt0t7@fM^@hf6ikD8z*wXJbYG6s`V&_+1$L&@I6{f zSu|#`i)|QkKbwDF^k&ReeOc@idJaa4TBKVawc11;^#yl(y((rXAW)HNshs#%jTc)> zwRAtQY(E-RA3D0xn)*Tu`$HAX@WF z&CKoadTgoI?jVLc;5+nEtq#xlH$8~8O1s2;CET9H2@Ck|oE*kHdzx`{rt$CK-CWuc zdyi7B*Jl_q@;39Fn#X^)InMYaJ24I!CNfjwB-W@c6?zMCiuR=ABlI+?Sj)&qRE)Ni zM)(L}cq9KdA0bUKlYD()n2prZ7Y*r6%Y20>MFidV6`ai?rZV%sznS)WSLXUnhs^zO z8ujZGh4=}!ibmAI4`df;ogc`8=&7I3&opw8TuZms;&nRswW{R5)zrgZXlUiSiaA;2 z@bA>)INqss#(^zqLfia7ev#h#3vFDzW~02N?N3y)h6yOJRl5b=TeXFgCMf!HMV81trXNyaCHB;2$=?flYkn~F7`hnolWzBsOw(< zBKch@x}b6kr8E@ERcA7Qen}C!6YszNjBm>I4-`TarL-zg@R9Smr9xw=9CvZlL+S#N z6j=h)S)-^?gVS~#r+5Sj;lLjlBy?2lqoN?eO)h4Z?qT#U2(~F9zhI%A>gEQ(t}9A# zqffe_SWNSR1z*kSTmUnK{k*Y0Q=o5PnJHw40Ju;%LzTgT4Z1;1Fbq{f%|bBV0%>%J z5TqRH2$Yjz9_09Zq38&$C_YqhRkWsIp};hyMWI5dB9^X&3b81&3KMLU3wVGs z>qcRMuVNw%4TJHY(t6G*s5}gGn-(?#em!d12vQ?xUL(OtRsRmiibU7L=%lAaOFG?1 z$XC~-1NchZj^(EGTFh>SCVnes(2&MLkpJ*v==W1RIv;laEq0DVo&Sh^mw_Nf#|tlz zl2UaHqJfgGlZCf=OEYxF(+$uGpLMBrxX@T3Q)0M~?dg016eo0+`y)A}Gky=)oYonJ zrIb{xQ<@C=vpTs^uvv*tK4GIRQK3VvB7`8#wc8+gq0^@t1TS^$WR-l#I8*OY5YvZ9v%|StOuqZ4)r%-+}5k@;I=iWhbTwdK4 zz!UNcM^x;jJe{Y>Q}X3PFgqi!q1w@CX;YSWQNB%n(O`Cf#zzZX6j^jN8eMUj6Uufg zJNJi`3Y3l%5F;evBzj?tkgm2}2;eK_nF}z;Yvs!0NZu-!l5Z?J`F0u}D+H-C>_DEP z@4SNBQGZkpP}23+QDH1haE!c~3N~tAyk}8buOGyIW23&`2B2)x7pQwvA=dNu0hArm z?>iCAcvyc)JLC%Wf7M1+j_PNGf%S2H!*3usp)XQtQvoNWG&fFgiao&I^RU4sZh#{O zLvJ8gXs~G}l9JjF7c0RH{|j||765WoXNnrhF`b^c9U>jq$!!kyMLHi%>3bX|pO<7E zFW9KuS^(#=PE#I|Wq5~vOg!2PSM=hAaL>VeQT9M*`wd8|)M5Tje zZdE#cb^!QPX9ShS3$d!4VIcUZ)2anj|D>~sT$%|^>ODsR%#_w&f`lxo4lY?qv!s8i zTQl^JB%07n*oVI3-5g@uQJdz1*`R57ZGv<~vW*9qtCC^`Hmrx-bh%j(n5D>Hw$kYqf}`Cj4vXfUl%)fzLj@~Bv&<_2ooQ(c~ADy29;Bq~D zG`g0wLa+7*$XlsrOG*C-tJJkY=)vUFST*C*&wp{I#JBj3?GPP^L+zVQhf5Ioi!I{;OAqIY=#%HHTz>;c_d zy=acw-|4NIfrfvt*G51$_@H-?J=90NQbO`cFZUjJe%5L=cSqOAyN3XiK;sZ*6M{E zWBt*ei2XQey1^WLU|mWva3qh;pcp`1JELE?(vr?-=I(T~GrE8x7QA;D*!V!jo%rCK zNf&gFvlPb3HtN?!C=|YpBImBcNzYCP!8^sU^ad=IYIx=dYLjNT;xm95hGz|sn`!9v z92L$qTujE@AYv~y=q4;y9lHY&TMQTV2g+7MFS^rB=%Rjq40MHt^ACaGm|^NQ@H}p4 zKndO9A4&#-;EbV3AW(`8Q$mqDYq)|YcgGAdfo^t(fxXWG_{4C}VxT-V%$bhrJ~s@$ z0N@M5=M>pPFjG9H_B~L+*DV43VYrf)O4Wt~X>$*_vpZza6VdLMH1g>wSYuXi-V^mb zNn?5n>B?K|KerndFYE;_xn$l;NQ&Il0I=gmt5VSfCycV%BPlX^k1s7tCymzM1?y8r zn<^SzD3r3g?5VTG_0@Sq!-8$b4BfU|I*^VaF288NMFHM_)tu5`U<^ZpqBm6 z*0D4aNu11~XNoE^5_+eq`guY|nyPIqn5V1Wo1tum>KeX+BxR_QW*|3HwSFEjGgVnU zb!DkMe#2_BRFA2mAL?XJU;9DtB68~w2`i|1e+&^NyMaxrQIy(WXy@{g?YmFqw;c_# zU*(aG+yPb5dWb!!nzIFh4ykt2kN&WXJ~($}B^ zRjP{4Bll3X>>6}>q)NC0V3mqUAFoQ+)Z=dWMwL__b$P4u_zIMFDj^=gkE*-WBUy0Q zJUI;VAFB2qkXx;4Gz{cFRbN9>S_c%D&VxaaVZ7!ZxXd(OxE%zU#`ruHDsNnF z4Z2yz8v2kdgzFtC0VWy$JVC(&g#p611+;pg5E$~{5Woe-Z8>9nyIg$_bE z;?5rJqOtTC+LRjC(zFxtvG=JfAybh!bvd^o0%(n6H&u2Yr=4foU``Y;?rY!$hWz!)i_DI>te zl6H)M$JcBI=FK`QvY^bZItBCqK;c&fi6ezT^^!SI|9PF9O(=X(hdx2mmv!{1)kx5f zr0F9;Z?*s^-|Boi1WDiPWYO-C7~$#kek4|Ph`8WWOf$)66jYO`?I_SWP}(RcbCQmX zf-)YY8jXW>3T9JS`eiAImZiecJFpp=^_hNDI|&8EHv<}EWXG8!+qE3KA7!UMDQ6h2-kRAkc6 z@i2kv0f5uZQ*fRsrI^nluL&6Ra~POyevkShr;*lx=RETcZ!zfSn~PE4xxn0a9n8AW z{37k10O_yj`UL2Cg$yUcE)LXdqF|;GcpqS&dDwa|+ixDon?VQ6D>HerFz-lnCkj`D zKl7;XzqolYjF$e31XI)|aFhBCFA+DZzjpv|i`umgfLqlMCP3?L>d`cBGQ?Gp zI0YT%w=ua*ff8=iV+z`%l%t;O>YY5~Z>aMpfWBNkm9_#^@qjK(fyazEjj~F0ST~eC zR8PEwDm_xG=nu-`Vt7(}rZ&S~hxAnx^Uh4SkycG5vc zSx$GRp=0~eH=rn9kk53%SGAwp@0dl&KwuuX*hs^s3)zTus;3LF>eWM`#B&Qf9ccZ+ zqHF|mFD-Uc`xLm2i8L(*^19Nl6igrXbcTVQ>0JseKe{_GXIT240M86d2OPUdGcE6t zLnw^qX{ki4^c##_bjtun44_rdC$AuvB$RoSAYKUsaxp;I%3 zv51jEGU1cL**Roee<*}%Io4hAjHr}rU57@ZO!+Jq^z*F;(b7yrnbWkBwDsX+0QXp1 zQ*@S)?;5lbxeL~*K4_hb)}^x`qSV^@HGr3_r5&hsnf33RRGlT%Q*~g+deizx5Olj` zy^8#1@wl1@-~;QM=Ri?uU56KP53M&-?^%Mce-O`JFRi!XmbCQRdfEsiZ>%ph0>NAB zqO}nC&iWm;N~QPKF`pp!gSCQA&q9Mfpqg1iJG*23fjP^@aSZ6PZIU_c%du(7elpkQ z$88##EgZr2t9y=+tiDG;Ewbr87TiwS%$Wz?r)=)wQ9Qvna-N8?i#CBpC@Zz;!TVj8 zZT8`)Nh-6M&b7Z{V>=FIS8a;fBVV%#@&dtin}27c_T@I`$s$(>^1K@YV3mz;ZxB4T zK`?{h+GZ-xV$W@+E=KN!&5V5Td}&if6G4C-z}>kR3&W{6SMUw#Hx}d>wp*&8*-TqC zZ>440e&&t-EZY$r56rUFyUX>oZL=IGIkxL0=rY^(0r|`poHQX@fHL3q(r*wfuuX1) zwkF%}4Iyul?G73?8*`vNuRGV+>fb@xTHB&bFk5GvNJnO4Xe7~Va8cd<0+hYBC%S>l zKHE^z%n^KDJUIF}W_xWo2#(u^oI}|O+e)6Yi)mc(jHV)9t#_ zs(E;N<^6R!I!{=szQk*vRd&Y~0B5z`684^J>^9S=`9f@nyA^WV?e`?Vr&YLZ_O~3!8QJX*_MNx9^+Mc6?ezXp|fZr{chykFQ4;Wge%``VsJUfZ|WkK_%w4OuL-6RL4KuvkdIL~pbN zJ>WFOExGIi=B(l|s12 zz9Vw;oyt_G(E=w&-m6{c6x<)Wkke}VvJyturMj!&4lh#GDm((xmAb4JY&>0#Lziz( z_B$c(yVH*usNWB#Z@U1jcG~y{z@JVr_(-2r@pJdeC-@$3;H+C1Dc`|Z=H`PLEwAmg``@C31laQtV54$K;711$NX$I=w`VnPJtlX zC9Vw2a$TM$AUE6P?l$N&$Hlf1z&w{yy0}hgr+gocvQ;h$a$7HS(ad@b@;xpe>mn&| z=@yJ+uS@Y3sJ+i+JFQqR#Jb!t1i>j6$0%?)?J}CTLe98^r9q`)m)p1iCY^P;Lh=Ua z@{Bhs%3WfX19;OVbtF)3xr}=b;BA*{OF@3e#bFjqan~h~#&5u^P;&%jk6el#fS}5y zq6!30Tx72MQ;idL-m!7;FdEvqz*OgwmwC3gBYnNSgdjmF+?KoWf=yIQG zHo!azs=EOg?!=t4(hT+h%wG($G))c=Vefv>VDi$JGKZunthW2U0wIYXVhs; z-Rh$-!rHn6IDlGTw}Ps-VB6s_FVuF|bqNF4J$1)DgQf*_E2e;8Z{2Owaw`_HJLtex ztctcr0P}L)7d2?|D|HufJaV<}Ku=&^1E$V4SjL^ax1rl-($H-ftR}R6o8aU%_6X=c z)lKFzmd|w?@Il3wx&|DDf315h8eG2B9V((be6RcVE`8c2^a_bH0#24&=4VBEBXI|`A4_37FlhT;0p?z} zr0J;jKDXvHdI#2}FFCwDDmQs4lE-e3 zT0x0tZtqS*rRQ#KIHr2xX4nQiU%UPEL&e^>-KWJnVe9}Bc413k&sCr-t#@1np3CZm zQiom8<)SNq8|!5lqqf`X71Hco(6bK}?}CSPBgfr>neqr%^G&^2YP=iq``b^Hv|ET# z^rH>Cg?vpzp2^p`>+lk7o%?f+WY@dj)W>+ByIKxz-3rz zi$`-_k#6<)un53y9-rBfZ1?cxD+xP2a_RuM#{*w|-iL_&&>iFsc`T&X$l*=jqxWIF z4WqOBV4z0iv|k8{+su9Ivqz!`&AxaTvWNcWQIi7+)gJsgZK=lN@t-ppQ)VJe>$&isu+wwI5rZBRJH__B6wjVp5K0H)p7n>v@+I-JU6Y#9QFmfMy;*U>VJOnuVU$gOMEd>`w;|pf{EAgizwS zkKQv%25;tH^PKYog06dZCdY%qdFAbS0M>Xq(Wir`ZAVfcLd;R$55OER`v?+am}U`zs;hr&ri`(ARhkr22)31;3_H^FpB>_JT(j!u`IYLx5rz z=|&;cSMUzQvikK$!9dIFo09HPC>%)cM}hIkPZaeD_8UoAgslSVBQBZ%B z4|03!M;(Sm_tmep2`KyP-=U31;gh||?ieJLQRp$W?i5;Z44vvc6(19JDAH)`apd~a z1|%+<>x0>R?^b+gW`TE|Nl;>;cVphCBJZ2qAYqaB5~@B9W|pKr0d>FfM&&y1{FxBD z-djm=C*a4vaL3u_-J}D!?Dt+i8GYn{_ued^9Q1agV%E^__nh}FawvjIbEr*`Fhz5_4uDU+BLxsV^Y$u*5-+_E@Y?Q`_f&dSBrL|s?2MDJ zQg_;P5(BaGU6d{Jv3>)Bl|GtjXx&vlQG6J^+UM;{0N40zdIZhZ`eabpDQutD45Xo_ zgnBMR`D~}aC!PJ^UZ1kxY)PLHez3toA5Y#}IOKDd4xK{fz39d%Y-axQT6kJ;R37J@ z!V5kMazBkp#*~syLz%t@(oYKw6qrvAoLJt+o37-`N5$--9?nt2v;&2_3cD+EPaP6NeD-%o9!+biFe zt&qI-jlGE;|Hik|L}>cf_e~pcd*_>Eg?hjDUCcY!AAGMyBlpqQj@q2VTJH}>vfq6d z=K}b{w`>qls(sV(1d8<2cQfUkgW8+%h%qAYoUJIE>vxpH`Fy{xBIxG%&Cq~uzF!>q zm0)4)!*k<0zuNtftoK{+2ACWCRJ5}M!>5RsgWLT|sIml0FGs3>9tLVbtvfuXj*kan4<2}8o*Tld>ms+Y5s+yL6Gk6LJcm$g@oWqV2o%N z`h5|`4x+$P43G&lw^T?}H{%1q)BdGB&{xj*uM|LD>@U-&QeYO4=Or}YS&F-agj(b+RRC7{8~P!6=)b%K6?^2L)eA|Le`N+(KlZ;xXD-3Wq4f2V z5M(!mtNGdA^%Vqt@vr0!gRlM>vw``|zdD5yE(^1;h%LVi+f~tz%jiZq6kLYk)`$;I zHaDm&1L2kisrym+tqsl^q5Zct2&SE7!Z_9b6<~9$!LV)s9&eCF0as9obQ*F69{ST! zkl$!fItz5=4Z`Tg6)X+(DCw#YtBmt!@eLNyj;oN@n%-O$k~LF#?B)f8)I%H34QLRK zTz-JjbyR*{z`r!=8s@Y{bnqG^Os4nOFbn$p0?PJ))kUcMj)2AFa~%$-PeZWY8(>47 zufvj?XzX<%$uq?bz>)yRlhE^g06%~xT?lCL1IN2kiQJ2R1nl+(U3EY)&yzm`4qF1VCg1>`iIsi@>&bnl%)16MMc{G~yggpx@uH(HV$1 z(9m@ZG(6Zajcx-4q1~68m~}7FkXvZom9+d80+Lkrad#TF|?r>2_ext01Tde7~AP z?+SA@iA#X`F)-m@6n+ZS$D3TG&w-t|zkUhqOwaG4Q?(-Rdr0onn0r{KKFb8=ilAmB z-^b$Bm1f+B+`hDllT^BJALccu8qTdE`v+KkJo*EID?x*JGyH1M9A4>N3);Yu%k?0y zQV6;cl-3SaDi3-=DGvlEtY8=Jc(a1P4ndL~{AU2la)OKL zXC)L(CcB47oGFTvLhAdFyC1vqHNh8X!9&b{`g_U=Umn zS+x_u8zIxUGnR*(p?*(=WaZUc;Q2Jfm2Nx*c^2tD6M~HEOakWjkX^jr{v)I&m0CO# zVpNXj0Zk8WoeG_1gdU?+&u~^%IupRG&^dgqd{*dPzD}AQdUqR4m=n61t~`Uy-RR9T zAz5Y3n`f&+AAU#K>d-FK_c?k>Q)>V>hmPj!EL%c@Xzg>s-T&fr>KAC;eWZDbWFtks zMAb&p$d?!kdGwAGPa66P{onv?dxg_=Pu_T37j`NbOxK6)IRFtG!hW#7+!*FH8b;U@ zHjm`jylr-!;$9$gep17C6hPs3!``7M(!^m143W9=0%Xss6Z=*|e{2kV8KeDLm9he%B>3is= zp_upRWs_*pdpH4SQhdOnN#Yd{zG~EQKPvpX(Kd?vfPgW99)7?IP=|w#%*K}V>jRvC z19kccTQ;FdA7QpkI{Xn0>qO-rg>08w4!|sIyo5*J(Z&tBz+T51FX!ue#~a7<9?prz z-Dt)q4A9=Ekh|EpU>#bmwDBVYU|wpxdn&4Qxp6eT{RE!VN&hp3L0d}s3{w{I0`5a& zi7tJ{)u|6W+J82lLuOxKrU@=!HY2<>FMBh>V=3tif)z_T^#xwPIh$}zc=A{XS{r_b zuX?Tv-*Or9)`wr9(689A_&guXc7&(817&CUKX$O)uJHMlV75Ell4gGurYIe_>59Wg zkm)z9q>?PaT1ZkRB>?k!L@jz&ElhDa<%!(0h_`&v{&~bij*4GI@Y@xn zml1({R`M$1K4t!dmvN#?KRGVVMA^>>o&Hd_CPL|j+^>kNDAee8grha;{wLxtnbqKU zY4ds1Nyn&liH5w3~!=F^e2kz4tgVqN4z zb|mW~!^rp-I$<(3_=VYUqCMp8i9GZY)hviC&qA^{awxA5_eHj&>Azs5BV&*|7TIJ7 zm>rMIq2ga~;$z74w{XgTJ>HKby@)K?1-h4!hxji2t4KUpiIEU#QWtb@BImQCeH+8qpUizZwJu*jMQ8}Rca#LsLvlP_^kJVXKK`Pz8jJjb%f^s!Bn$t zK^@UuQNEy&=&Pt)FjRC>pP2;~o1%W;4UN*~D9>%kZHY2lupS6)7nF-minIkkL?_iz zK6fmPdhib1jz&Er4}}=6vf*xfHfnzfR68Gag~lsHcmGeT0K5{V{s3jJMlHen45VvO zj|sNB9@Uh$@@_;OVmDYGb#@`>Zbqr;szT)F7VHHv95*3)2#}pZa|AI+(`h%D{fv5T z1iG52z6$XC6&37@Akilv7Pgt-$Pb6Ez*z5!>;BjRedY z6ex+w@R2Je81WdDa8gO1BuE%VF1kqeQhQz0r4g;+WCFco;3#sC#c)rvCSbiW`uZi* zWm9x;AnOtx+7I^G5oYc3ZunxwDr;G zE9`fVMGxVN_{XF7Q*EV~toc3?D3_zxZU?X|`fECpE7242WiIJzbYq&Qgt|-Vs8Y0n zm2WFiX?wEN6Zv$twVvp%s?Fp7YjnHzknk;f5M^@NbUL92f)u)|2YX(mAbm01#ffh( zEs62(gJfw;C2yiGi#fg-f|kb&XCJj9MxPezLtZeQ0)eJK@A~eD(K`>7cE;@CzPu~u zGVd+zjzKVGAP&c@KHC6BZcV!lL>|@O48%kY?FHTam|N_9AH*o#KwcShO%J(;G1k<} zP@Lj_s~9MsW6I9JkY8f1^JVd`F%39K{T8G55d`0368WO$kC@pOs91GOFH#x7p8GZc zB{lZNcbGgawl%x0^jNdCNM^*IrEWmM>Oa>Abze`Lku&z-_FEKtpO1hR$9}e>7e-=d zOcl|!(bSD8uQm+2o-Wr0#aMb(8&&E;T~){(rtvBap+MfFu81`cfKGQ}C(|YsL^#rI zB&wCH@5|U^5h$->i^$Sg3>Q9apiahOXZ6?)C`@f?cLqsXQ$M~PklyqNoi&DiQ|JRH zMr30GfrBaAM6}V&o(b%0sY^mic?J&zaguB{`6D=*In%JrtT54@-&_EmT;)q!=c)OxDGsNFN`~14tk0^NfXS_uFGku8S1-|E}Dtw)jg&H^Gsa&S7=xq zR}})eXX8?7o4J^%iW!WuYjJCIL4G~1G0AG!m*^ig>{~+fkZ1;NgPqdi=f<)r;&a&l z%!vQW=OG#K2J}`fPQkbwVu2~jp09AMiQngdWNrKzI%I)CexK*{9r1S!K(I4@1pTpq z373<*rReT5Bp1w%#_zy;J)~ptn%&49kN?;WdY+6oISsl~@g6kJQp8Q;A+*y{40Orf z3h0gaSAW2*JbuLt5Z;Wh#}nnP`29yfe>*;b^sK}}TqZ5H5*MSDdRdERs`3AzY(cZH zd(fX2Hfus@)-cm~+F*@2<_@WBQ0o}#W+P@}-{H9p+Uz7b*or}(AGohPZ#F#{f?hOB zDuik;n@#Em;Hzfodtk}e%`T3F^f%4MQK~I$UO)x5;ttJ2Hq-p(_IOcTA~qeVGNG8gPEEap<-v7pScAI=b9g(Lv}FJL#pDW7a7@OX4I!7 zdnkB`-q?%bA!Qs=Zi0f_KR@AUGHf<4 zVFdMcKy44uZU>l0ml7OB8;cz`L4Gvh%rGR!5>Avs>*EQZ3TTR>*x5fd3iQ_#3V5^d zMnWgN{aPwdkl7+P6E2KK*{uYFIP}8X2>~$>e<#6~luqdH)2JmUM`^y3=%j4UVdbxc zNp#Ffv{CK<0ZFNe;!N;NOVp?5PGURt#CZVbC;rP$cwVAw33Brj&rus^(F|j+zcZSw zin5$xk-=2pEc&XKTm#yK99OUi5)!1D-vVb9p6bbp=T~)mym?D5c?+a@&FLLO&o8E0fL8F>x!rF zaKk7!(OpkB1>8zo{hChe+{DJ}#ykpcwsLz7=C@kKzlS!rTZPj%H_Qa}!cg|Kl>;@d zCw9aPvY?*W%KlXa=$-3&1K(vf&(E$KOo3K+D~Bd-F(kUfM6Ia4yV%)ukOCzMn%*c$ z+`=~rTO`tAl*?gjP|&^=mAH#OR$rDQ)3bCmD%)$?74S`(I2=vc`v94Eh?e-!xQB=6 zu6fN{y4i{g`+<<7=*DyUT*cPGAbNs(03$p^T=Sno$2>%9^y=HlsyCVer$`9=1i`0- z32(sjv@n{&JjGb04(}vh6cZ`a6Ba5VT`#m+9F6nBZ2UEk_Irtq@hsYBFR*FI{kc>p zkOTiqI<fc^rYU1+m^YgHADZh8-Tv&N z2i_taDWByZR+@#vCP$P5xf2vBo9{q1PADg20$8NfTmtZcVO=^&lg&Zpu@h9JDKhwQO)HhsM33w3bh~W z1yXH4OlZIDDb7!vtRC)*!Xx@$_>xwk{@#NSaa4a5-S!h#DeBX|{s;haR{;1&zn~G4 z=?3@sI6TF`IS5*$8id4vF3n&q-Sx*zHi}{!V8k_|>;|HZx`KBk&l?QXK*9xsuo{TJ zX3&lbfudQ_1Hgv{`pwXH9~s#4Qv+276L|aXiGdB-1z>){rRxC1tcE_l#uh!s%2+~hMarEZ$MjU=Z==oPCL0`-&0yjQUHXOqjk_xZ)dg!W=7p_vu{!Ud)t zLqI{Ma!b^Dv1z@roQ@WVw{O^;G!W6?}` z?l4dun8s7L#-gwP4W4;lnYLlf*QOmg7Jg%DbO^~?(=$x>&h%Fv%HEs${zUGFsYu5l z2%8HJ!3_7gzcxnq>qtGrVVEY&?7W#7Z_ZvYyG?oFFt0gnLz(a`jLO1A$CeX$cmA$f zY%es(J+n*OP>K6y_jzOMfm!uN7^u>0GHQ@9z|6gdV}opSdl%5Oxhd}$tPxNI~3mse!l z&2vMM+hM+%G9%%nuh88{G01oXH(-hRT?xr~^B*(GIZ6yv45Thmu*E4F7bWIv+VQd5 zYx7KAZ@n?!$WIc#HIL(1@11!Pxi%5osSJ6huQAt;gQCC8b!cW2DC2()z;yM^4@hRH z{a(Q$8S3E!pv6qJ0Y5aDscu8pn}|*=YjLGJ%F-6T|EoHh3Z0fMWpV|H*XfHCs9l^I`di@7LA7d(T4J)#kOi| zcI&&;ANii#ZuMopRJ%w0lB%P{Le;n9D7&PNY6A@~tGm*f81#-4rvbd79$bN>Tz!MS z#)#?abUrJ3ss70KP+zIPUO?`(x*6rg!dkktEf$??A(=N7&m)$uY>FP2NMD+w|Amod z9E{$AhQvX&)wD1U17rw+b*V)bhdq}pR`o=CUbZmb3(d+b#!^+Bn2rIR9FGXsl{UsB zX1h(d;t_(Cu&=GLSiN_&E=yZVYYrurkupIHQtsv> zpNp1x6qkSr@8cyJl_17Mu1o{;p5?E*Xr=p>w+AD6VCl+tnJO(8ynuZkTHXi;w?~!- zdq9~g%Ud=ecx-7k5Wpvvqv&e_YSxn660vNn%`5wPRtGrrpKq1)5*1uvRT2w=g;v}7 zh6Y)!b4G5lRVO9S9 z2?;mp1Y_RfsqvZBi>APQZk5S5i(Xho4gm0_)kFHz64D=%dn47|}c;c38(Zfi63( z?Z1O=m$mIR(CxPFGX`aQte3q3U4gYrJaT)j(|Px0pS1-Uwt-z*(A+j+tjk*tWXi2G z_-gA->qQ(T+_JW>K#SkD?ztXyxMMwxs@tINubTtRht`Kr!b*><1@df*{;fxGZK2XU z+SOJxQ+MM?tlC=5=P^I6mv01ljddthv_+*ylTJG^Nj;T!R_5Bgc?wpu*swG|ARHggc^Z4 zV0OV~8sDhCXfx(8%1Uhl$)r76)13DcuG#4D10C0G?v+B`4I7Iez$~|UNUht8fCNyok6h69@{y5l2%|V(B1YJ+sWkH0i)zS-^?ks)u-VdV6zUC-2su2DIYZ6u{A9M z&%3tE3!%h4+lT@H@7oqD!R)#1NP5Er$4Rdvf*JW=pnS2NwFC-&we81Gj(oE{Mo}Hn ziC$8Nj$*pSB|dAJt=Z0T^&HJQUX$i&KJ=##9Yse(R;Hc6<}2ScSf)wRLnW4L+&N%g zq1j9cozREvX)+R*0b4-0OCwE&YI`(mmVlr@Gt>(<*sHmtJ<8A=qOwkyDNb?7a6}W$ zTWW=x3O*S)s>$Rj@R%l?Y8$ z&SJVMa4&#M?T_#&^cMRU)TRqYNf4dug8iM)yC^GmXvJ5?&pJHg0RNoB!z46(iNhuG z>xwDRa63>QJFK@r@&wmv#{-Ck@y@R3yv_32b`Jg@VArn>Z>X}X*u{SqPjj;!A8ZG3 zj$_9W$jx=U!tNvAQRdCJ`HmN~&cty=BUpkQd(n_?=*ll>Atw(Bx8ajikJwvYa7>Ov zvs`q{Bj4^YQTz4@T3%{M+G09G(FWsS%A=U2zmBwy@yb^^q9}$;fn(6@{ z&OK6kfb}`r%DJI*sfXBK9@89{-TG2kPqCFz{btAvTE;hR2X7|oDSCKTbO$I)alSWf zldaI_h4Xv`UJ-?fQn7acx340g2c)dT{kqpZ!TuttdtpQLV|R-0C9cFRo9Df-HXlY~ zlAz@kI-CS8=_!59kbgX9#Y^by_F z*Uo|9gO0H^l8-vM94vp*@t_lZ;B4yCpFUzc%}RGxP0FrB-oE2%{^>Vvu?u_sX^Uv-m3idVS|r=#^Xa zN08k>G12OKTZlcYA8!r|oYQZH$6{(p_;0?K(guoAre0%F+}()-ryjQ!L#Ljn>E=Mu z2Wvukkmwv5##8uog%|JlrYLeb7)n)iTm@U@DEi$6ey(Dz0N`xJ;?~G5Qs}s{0Tn-o zQr|&hj(z$m=oB+~0m_=D@=jonWFMgS%-n@K_7X`oSPWGi*bC5lMeIo=+c3{`8jOzF zUuT-!}0&dz2gEpSh$QBG$8xxsL2P-L+Fucv&~& z>3>zt5cW{>A!4)ILwJVmwVsbzlYVMw^$^j?=p=WLR-baN;+?KWiqcwX^=cYrP^>XOSaJmU9t z6|EhHfb}_53`1wFq(;NVac#~N0%wz`*b1@R#7}(5WT$B0g7=PUTLov1wWQ8NHBhmu zU=5|ZE3JUpb5mbd`Zv3eL4!ER9{i23Ul#}iNE{)CDrQso2#nNelr#d}q75EY700>c z@Q%v{VL9)zZxnL*qUb)d`<@6m=)5ICJmILV^dqYyPt@dwIf@h~4|mWdaQq3sp% zr~=ivD%w%VXoL&RhoWqbjzK-JUaF(V7Tc)vk0q?RPp8&Y5S-GfwUY^S3^+o2rqeSS z1Rr#^(Z$ga)RW$ghA{`>Iaje2hUe-rm;i>*)iEL-ROKrDQA}kgIbAqMVPi!nmz&%< zGlZvpNM;Ik-lErK3dguRt`=HeKyHoTLn&iLGffj7pBsdAZ&7woXcdoY9uk)OBPkZV zXwO(|iHzX*>7L+7Rb$0ii!BS0%hE~O1$p~*PQ*j{Q=PXxC}N!06;CBE9Vdq1y2_1l z7)&W7jTd|4bU1lDVjfF+GagghGIE_Dy0`Y{D0PlFyA;YS5*u>7w^%eZL$XA4bcZRH zic$QC{ZVluhlIz(mi$~*v6yU!+*z^D2Z+Bc_T;FeO#J>wrWF%JEA{mxl;-Kw<~eJw zj%y}L^L4IL=>)Nb@MALBP84Ti8eKP0JgAsY-TxK4c=k95iVNaGA8@}Y=J1OSO2rkU zKzK>i=g9W5Xc-4tW#STg^e?8-_T)GTc2n`WreH9JES!pt z8%NGl(S!Oe0+T{rd-`XpI7MA_1JplsPZ|SQt^2SuazAxb=-E`*>^Rk(hMwM)GC5g8 zFQ>sDbs@9q*tD6)y?MFv*IYKF^3W-$c|iG`7Eec%=1BXdLn@wqN8;G(P_{QKCPLlJB=?SEYywWP2WYj)%+C7GTjp`A#amzD_5}IqZ`%*WhZs3E`#+c z-Lnc*;-aqYVC2eme>C%@obChvYg_tm{(r3c&A*A$3uW8pWSG;FuU9f&lH=>nz;Zv4Wtt@u_Yc#mYHIhQ8veKZR!LAuZNO)Wr}^(4|9;oRz&jU z*&IcuNwCsvT$8KFL=SsNZdvHq&!~A8;;keO=dTLiJs|qAaF_eWOJNgbW#ND%pPXlb zK#xYuLNMw;GiHgt(>~1wL5{R98%pL%5j;d!N+Zi>~_F*u&F(A$%%Rl48Gz=g6`} zU8Q3%*ySVmev^&qBlXmOZyl>sz{>^o*h~Kf9fHv^2ym{$@5*r zujv$@BQ8PwP?aP4Pju(k8hutXdaFabt$7J4J>wLuwI(BK)6DoF{ zL38Jd7V_YmKuSuYopVKv=`dbP4XB?8R>|cypcsS$3t(A2If8=WgLwmgM1(069eFz) zY)3yKRlaE9b~_5i|DFp4-DKSh_|7K*3#<%d#I6gxe@Di!M}ha=)R%jh3KSSURI z@?SG}E$fgA!UKGH4E$>elX34$&cYp9v6e!#)J0dqpL&v{_vjHmm}MYK26M5kBN{0srS(pH zaZq1RlE+hj5+6+4T?Kj0J0IiMbu_T0x)D$C>n8DUy`KE*Zp6PH4H(n2nt#2{Kg4hS zF#g;7|EuoGN-vryrre4-2MKRKPHPu1biteM~QCDwR@vzQWj6`xa=vg)&EIPt6q=I843nYBc3!^!jY z0nA*gf5v2)-jx*#^p#AO>jvk#LVu1mSL%0|6zaQ}6zN%d`16;ncMWWthqxU!OWd{_3t}@zOJ8RuC4cGvQOX6s{8eWtaCtb#>}_% z7R)@PFJg39j|Sp_C+r35%u~AlnB8~1c|uRfy$*5v#y{Y*!&m&hW9T(}ru=pTpO3tJ zi$moh*;97=qi98v?HUZubC z?ay9C1NE8qf4pX%*7eEu%pIJnlb!xL)3+&dx0$Zbq7l2zT>P5u>)j?^C~cR$VcygK z4?oL)?J;}#JTfh5-div_|EtgCvAtM8V<>;G*%GCl{?J=mC)-B?ZHRPq5P`v zH{WA6J@dY~weoUIF-LJN`9I{oU#F}Ov4z`4>p%S8`hAJM%1%FF_T_R)Kk=5+=af0x zQy_UI|1OA5|7zB^FP$*CWT%x8`b8h z9Ojoo7lvh;d$XHcdaTf`AoGNsdByA#h)d=TSIyeSsUX^S)$9T<+n-m>p2odkyT=c> zO3C499OnC)ZUsMV7;Z&5Hivlz%%CJclS6fw-&SIBU<}t zCG&St=Kv9Drv`{lL3%fPK~?cW0HT1{^&-SX9brK16_KKe2mQLYzIe#kQ;n|I7j=zO z)$D*6k)Z1ydN5W@tHNPG%(bDq6*7kI#EKX?9*f^>msh8`aiUFa4hCWta+4ml^p5@> zsY4&diFiEtc{@&Yfq%4R1MxXRirH1-MRuT3Qo~;MfEZyI>m%uUGttmE9%+X)7gqv} z`;qpYR${nr+^9``+K4Q@wf$Bb@w8#AjiRVzkz`zsqCUw;T3U~GC5v8o;miGG(W)MY z`!Lr@-KsyvYSzKhR~df~)_u{`r@csqk862*F~PW6-~PS5h}4b37`s|WG08w*FYF{Z zRCQOmfPPS4sR&hTW=I;I^m z=w0Ry$e^>f=w}pX*opgax{R<#Y4v_lW?buMH#;C&38Tk&%6eC{Gj5EhP49~D;yLh# zd9a3V1&p!6J6XZKFwgyU;(#FLaXNfR)G+2xpmz?TjMWq9OS}x(*foJhm!qts6X-y> z7-ICBXxBU}h6NixO{D1`i?POcljzdNBGu?Ond%=G9~-4p=+<%3*GQR4olb~{jgqM} zes+W_f^a z)thNm%j{_dXI7{*2MRGiW$_S*D@(6UqeUl0dn0|iU4Bx09AvDUPAkuf;l@wX>DF1% zz=)ec;paq(kvxO?o)Zy9?-?}i9ESRe8MNV?sBgS6gWf$Sl8wxn^v5}|$!Pv8y>MQ< zXUv{OPh1dPQaE;qdCAnR>SL_nlnOQDfFkBih@yL1ksYiW9V=HZbvAu_0q1l4Y&-Cx zNDVeN&!+BIMGs@f99nZ#3^v4E`}S2aS2vDl+s|AR8+2oR4h7#3&lvFwXx0ruM(RQe zyD2&t+ZR&rn`mcPE-k-_YPZF+rZ>d{#@t*wcT*(Ry@lXj=I7`ob4X81@9AGF zB}N&m7umVD#IYcwd=X{d6*0!WMKtLyPEAxEEn_@5k6r_g;ZP*zOIUQOXIf@2D;UE% z)}P%=dG>dA#RI{{u{=9mw_<{ggvIo56)UxF31WDet9AWBD>#>v1o3iN3-;{bVmuga zwQbGuNzC26nmshc3Pvq4;N2y)Ez1r;7L2t!&R<-&CG_tqR*WI=;fe*~Gj|u@P2H4tifN!m5oxCg9!EX;*|5Q7;UEOw8q2yv?yz@DQ$$zp$k=CBlj_ zhApMS2&=A9x|CjHdS)pdi?Es*iOcNYBCJ}$#gPw5ftrkAfhkj9R0d0=8Y8x91=V;ew@5WGc<5x(~lZ~(_UG0)T24XjuW2mC<1mB3Mg2gXBp*GkF; zt-`TS%x$pjH8;_Sc(k!YA$=5YJ(QM(a9`$02z;|E(Cv5*iejDW29T^@Rp;V4?1Asd6c1BACLUu4L1Y**@a1H2bZ>D}Z|JSh2MHyMd%=e%T;kBs$^ zDWrFok%IRb)MBKpK`pvVkKjOJ3gqpD4^Dy9@`e_}%h+XgD()_YsM? z3-kLUZ$U5imkkjA_I(h+(Zgu-<1&g)4UirR8z4LAlk8pt(DRlzfEe{nM}rm&lr6Dk zpuGc8OY9h$50Z_rW1y4sWi(|DLdxtxG7nn^G9H7~<1k@V{+O&qdmfXC*g$;!n0(Z` zfk+yPvxW`CAg0(r%mvjGXv0vPy@F^uG8Fk@w{U~mjVSbSun{vX>2Y};n+1}?WFzbq zS`EX=O{d|*WE*%P*9?=NVW&Xjha>HKZD{pyxdi(Jsxv~~u)J}>D154{OYtLRTWl9- z#7H^cxYpjjJW~E_=u7C*NSPtL5x|PGWFNZsggk3^$&w2M?+lKPmD61QlpDp7B2mkVZ zV>|!sT=}Em$enmV01evpoJ^z@&&dR~`InzVKK&+AK(=hnCO;(`XAvgG!g{cp6=1dSn^}%m;<>ZayFB@e_@H z^JNkq?L3iID0ZA=rrRckcnR4u$2&L^k3nIcOjU{-Uq~85PhLzcPg>Z=NTk zz29NZcjh2VnDbAW!kph_3Ugj(0q7sIC}jb1VB1Z_&!HPeEs(;1r7i>;mYVi1kSEzt zFIfn680zgz#aueM5c1>MbeAd2baXEGFw<#FVWvkjg_$m33NyVERJ4Uzrm&%yF1K=} zhpqM9TqM7hOVNv<2IHK@boC+{y$Br-+q{u6Y;$lPC~R}`Qnaj3M-5RoeZ1^EZf%@_ zsGCe_Mjj^cu{_$IC!4Y{{vr!6rl9G4u$2F%VoO7mbVrio{fRMc{zq!b|KAQjuFUa);AHo>@9^hGTyEm|1N~r zU#1zUMfC1UImqf$gm{|tP&)djMIq7;E27qga;~wZh~6laDb`lV4ca|RMh3jsP1Cj& zQMDorrMAV?qe#{2^PSVQxRWwMn;2$)CVtFYQ`&V$J->4D&>MBfx+(Cs6Vt7M~~Gth}b_8D}z zSVjgX;A>bj@Q&n61#@N66^!?cY9kcf4tS`7y8?4yP!Jr37K=|6_XnP!$ngRq z3M`S~#;{VVQzCm;OK@7HA&<3CPAH?f%y(N0$G-L{`0-_Qz62}Ij8fXZMn>o04u?19 zyMaQZa8KlGIC{E)GRCWCw26Vf81al-12+lq<41tMhsP)z`LetZ@DuPFEdXWAm5zZN z1c$Ft>}^tTj>ax0m%#}JBLf%5;tRW>T+H&bsGy5k&Yme3vm8&3|BYGB-YQj|g$B7e zR(k~9sxUZ%ZRiod0+t&Edn*XnmMR}bK_nl|;h?iFo7IjfnCrpeXjOTKU_WL#hp1KM z*A&chj$NzD+lKft9NrrpPEXxGK1T z##>i~q4Cz$#oQ|gL#Uusri62lT$LY1=St;+;m4i1%CnX0pGdXKWTzaCkE?3`L&2=Z zadK6;z;@TgEN9P}i@6qw3T8QPk5zdW1s~+TEtBDC-4rHg@>5lRBF^NVf?0ksyrLX? z?5685<2Y2WTi6deW*BfcFx(llOObQF9MspVCxfD_QokP~p6U>7$>f*{}lv~r!So5TJ>SA@4dYr}!Fz~HhuDF+dD<#^+rb{M#e zBj-NQa8cmOS)V&E@+g3S>7_T zqI|4^SzfAOPR~({L2&pQdR)PC42{~X$86)^#;Ouutf;tk9Y0=)-YJSflzJEuxA!>U zv8vCZk5$YukX6jVkQJPxv7=OBXdEF~#T+YH#aAogLR83=Z$<^1C1@V}yun++y`ULQ zHP0_fg%crn^RbE4zcWt@hfqybFwe$xjRx5TlwYO$!!(PCn2v* zMR~D;SzfMSPS3HNL2!6&O^%k=&d*?lQU!AciKq~(ds~R=U&L~QhXgepZHWZF1&n%o zF{kHiJ`fx}V>Y7_=JYWxgtY5nBp&RB{FQ+ zMe_`EGTaLMFW{CA-VeM6c!W}5W~x6u7Z`;KgWzz?y@LC5;N71T2G^Lcd%gNdz!|)U z7P^?_930!lEH6ciUCeThn(bni2w2n-dNgd`iqtHJQ)?!@kO?(KcEsWRxp=)Ou=04*@`$v0$#T>R<#q7CPF<-;0n6Knj%mKaqI36~)0z=a{jJIDw({OR$^d;Fl=gvf|ArSD8 zO~MrUeiDLtJ2(xv|76XBU)X!)c(bFn2LAlsjvNnKYGqS2&sGQHIU=nS!{Hm6993M!9A8|;9B5p{9C2L59D7{F zd?UiedN;oR7qI_^A%y*X5^zdLEK)%(EDSU2Yt;O`mD{|wL3Am%=>f^;y zS`*+2U~s)yZ>b{Zdh#78SD)p36wLC23TC-jLVs+-C=6fX9|U;hQELY*A?I?=0CxvI z;NWk8t$hDBit}aX8VC+wy%H77a`v`)#gH@ZreM^gzm}yiSmBpSnB8!023+wD3TFLO z1+#o_P;=VQ3+65;a@q_kpl}Enu(M zIRS7n7Q7~#=dg>><+I)`1#`Z?RKk4!&(&u+-}F;4yCPM*u@b(hV3hZy76K2Ynt(l) zDo#`|SMaQY@npO9a-rY$a)rK9pDLtvJFsH>Tj8@_+afxT z{Ml#v2WU0+nY#J1d~gvp-3k7%O8k-{8p`}F3ZKi_T0{jqQO-7n&-t{(gZR)-Yg_Ek z|23S4cEDXAcgOK;Mb7zUE12_{y^5N?E>n`&DGP|hw{qkunA5S7)+=`8#j9xD>sb9u z6h7-^uCA!pqJ+*vFRe?7pU-*;Yy6n&F;>AWFIO zfOfP34%E(hF*SVy6Z*%$^E0*E;4cjIT|dU5{{(un7vy|>Sq&J!^Q$0#0Qhu}=9%rt z+XJ`5)mfhI(;o=@1FqM%Ir4G9i$i=)bw(q$Ujtr*{Mm)Y`5yv)8t2(9?*rh(GT(U*)9(EB z3GgbV-Isy;D)qS$q&=neM}yo9|Ac~j0>ki>a8Pi?3e*9vJ=tUthixZZw2L5_EokzNA z4R8W#Is9_)PefAiTi{>sr+J=?^yz;KKD_eD;OET4f>X`W*YUVn&+(dPvxCEcFQsdq zL0~iNK%Z1h{xc6>JeKY&?%* z=gS%7LZKIC{5@x676GegbaN&ACh$D$u^KrA9tEB`hnnt1gZINj#aDlv@9*G0mrFyL zKUF!S&C&A3E^!OR zDZ6nfHdqtk=5z9T7#O!)w%ang?;X^6n8P0f{%{PkZVsLUJOq6f@8A`{SEBsItp`^7 z;4R=bRC^zaKa8%M;3T^Qc4zFGG9CO+;Nhh-bRWj<2NN{U3Wpzn{pO1+{EI>au$p~> z7t?m63s?Drz;8$AP;AmO$gYNy-4d{S!4q`R!DW@Q+X4Li1ZuipHaBjLr=k0CW*3Lj zT+q0BXmtlC-GfytR-+T}JB#T6^m3lYlyIle)8Jpn#p?(s-8|s`P)6MImGapN{0e%T zeS3WJjsZua`EECT3A_e2Zm%Q%2KYf-gW?x&Uj4gOwTHE4m@|7E1rw{f+AmSS|HNfZ zoFi`v{9zsy96$qCV(zAFk;Y4dKDEccKF5MtNCxPgkSe!s`ECC zuBvw%{MuMtTRZuLg!^tIa>K*W@F-xu#{xAi92=#kz{{g)F7nA)gUgi!C*5%HuPEbV z8n9YUJ}_Z;y2E!J@cV7xn{+yCC$NPzD8k9_W8mEwm+tWX0r-+)Wc~_A2X{rs#5f5W zV)eTYXQ?}n+5oRqGUx-0HKNBsRJ;}DACE+~y0gHahcg-ChFs62A;>;G^gOfET5%$a-D)l19!xbcSlY(Fd97mol1-0UhsRtfAWo!?qlE` zD94?eSAqW%)}oFh{}*sGY*XA0x(^(L#jvF#ua1P{oNWzvKyBcgwf$42aSfQ;j!59n z#bhX`Lt_B&pQt$RPdS5OmE<#lccTKMAm=ld3p^cWGsV#_1@2lx~qg?7d-~7_P}`H-;^P=5I9rGumt!&u?o7A{#D?vsDO*# z25y2K)RRvBCxLfE?v~f}3K(jEzW`qk_pd5dYhyEw0+O5z;(_19Bw6R+Ho#BV%Z|tu z5q9HqGDx@6&dU_D(O80lb8zeVXoi2BdhTrOTQ$#&ZM5|g9^t`u=c7w_Cd^0cP{?H& z!l2G&*(iWF=JBu6q{}jbhCvX(mtF~8#z)52F_e4-PjP*LDBFwai7R-x6wlvYk&UgT zk%oqcj+j$GpEG9z-U+ya^sm6_K@GpcW1JsQFD4;0lgVt_01|q9mDKvQfJ+9I6mBDJn`2PtbkaY1??dV$b;aC7+hZ{0EAc>n+a diff --git a/workspace/AUTOM10/Debug/AUTOM10.list b/workspace/AUTOM10/Debug/AUTOM10.list index 51a50cc..7894571 100644 --- a/workspace/AUTOM10/Debug/AUTOM10.list +++ b/workspace/AUTOM10/Debug/AUTOM10.list @@ -1,23442 +1,23753 @@ - -AUTOM10.elf: file format elf32-littlearm - -Sections: -Idx Name Size VMA LMA File off Algn - 0 .isr_vector 0000010c 08000000 08000000 00001000 2**0 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 1 .text 00009768 0800010c 0800010c 0000110c 2**2 - CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .rodata 000000b0 08009874 08009874 0000a874 2**2 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 3 .ARM.extab 00000000 08009924 08009924 0000b1cc 2**0 - CONTENTS, READONLY - 4 .ARM 00000000 08009924 08009924 0000b1cc 2**0 - CONTENTS, READONLY - 5 .preinit_array 00000000 08009924 08009924 0000b1cc 2**0 - CONTENTS, ALLOC, LOAD, DATA - 6 .init_array 00000004 08009924 08009924 0000a924 2**2 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 7 .fini_array 00000004 08009928 08009928 0000a928 2**2 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 8 .data 000001cc 20000000 0800992c 0000b000 2**2 - CONTENTS, ALLOC, LOAD, DATA - 9 .bss 00001584 200001cc 08009af8 0000b1cc 2**2 - ALLOC - 10 ._user_heap_stack 00000600 20001750 08009af8 0000b750 2**0 - ALLOC - 11 .ARM.attributes 00000029 00000000 00000000 0000b1cc 2**0 - CONTENTS, READONLY - 12 .debug_info 000120e1 00000000 00000000 0000b1f5 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 13 .debug_abbrev 00003385 00000000 00000000 0001d2d6 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 14 .debug_aranges 00001128 00000000 00000000 00020660 2**3 - CONTENTS, READONLY, DEBUGGING, OCTETS - 15 .debug_rnglists 00000d02 00000000 00000000 00021788 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 16 .debug_macro 0001ac13 00000000 00000000 0002248a 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 17 .debug_line 000154ad 00000000 00000000 0003d09d 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 18 .debug_str 0009207d 00000000 00000000 0005254a 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 19 .comment 00000043 00000000 00000000 000e45c7 2**0 - CONTENTS, READONLY - 20 .debug_frame 00004b6c 00000000 00000000 000e460c 2**2 - CONTENTS, READONLY, DEBUGGING, OCTETS - 21 .debug_line_str 00000053 00000000 00000000 000e9178 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - -Disassembly of section .text: - -0800010c <__do_global_dtors_aux>: - 800010c: b510 push {r4, lr} - 800010e: 4c05 ldr r4, [pc, #20] @ (8000124 <__do_global_dtors_aux+0x18>) - 8000110: 7823 ldrb r3, [r4, #0] - 8000112: b933 cbnz r3, 8000122 <__do_global_dtors_aux+0x16> - 8000114: 4b04 ldr r3, [pc, #16] @ (8000128 <__do_global_dtors_aux+0x1c>) - 8000116: b113 cbz r3, 800011e <__do_global_dtors_aux+0x12> - 8000118: 4804 ldr r0, [pc, #16] @ (800012c <__do_global_dtors_aux+0x20>) - 800011a: f3af 8000 nop.w - 800011e: 2301 movs r3, #1 - 8000120: 7023 strb r3, [r4, #0] - 8000122: bd10 pop {r4, pc} - 8000124: 200001cc .word 0x200001cc - 8000128: 00000000 .word 0x00000000 - 800012c: 0800985c .word 0x0800985c - -08000130 : - 8000130: b508 push {r3, lr} - 8000132: 4b03 ldr r3, [pc, #12] @ (8000140 ) - 8000134: b11b cbz r3, 800013e - 8000136: 4903 ldr r1, [pc, #12] @ (8000144 ) - 8000138: 4803 ldr r0, [pc, #12] @ (8000148 ) - 800013a: f3af 8000 nop.w - 800013e: bd08 pop {r3, pc} - 8000140: 00000000 .word 0x00000000 - 8000144: 200001d0 .word 0x200001d0 - 8000148: 0800985c .word 0x0800985c - -0800014c : - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ -void HAL_SYSTICK_Callback(void){ - 800014c: b580 push {r7, lr} - 800014e: af00 add r7, sp, #0 - static unsigned char c10ms = 0; - - static uint8_t c100ms = 0; - static uint8_t c1s = 0; - if (++c10ms >= 10) { // 10 ms - 8000150: 4b16 ldr r3, [pc, #88] @ (80001ac ) - 8000152: 781b ldrb r3, [r3, #0] - 8000154: 3301 adds r3, #1 - 8000156: b2da uxtb r2, r3 - 8000158: 4b14 ldr r3, [pc, #80] @ (80001ac ) - 800015a: 701a strb r2, [r3, #0] - 800015c: 4b13 ldr r3, [pc, #76] @ (80001ac ) - 800015e: 781b ldrb r3, [r3, #0] - 8000160: 2b09 cmp r3, #9 - 8000162: d921 bls.n 80001a8 - c10ms = 0; - 8000164: 4b11 ldr r3, [pc, #68] @ (80001ac ) - 8000166: 2200 movs r2, #0 - 8000168: 701a strb r2, [r3, #0] - if (++c100ms >= 10) { // 10 ms - 800016a: 4b11 ldr r3, [pc, #68] @ (80001b0 ) - 800016c: 781b ldrb r3, [r3, #0] - 800016e: 3301 adds r3, #1 - 8000170: b2da uxtb r2, r3 - 8000172: 4b0f ldr r3, [pc, #60] @ (80001b0 ) - 8000174: 701a strb r2, [r3, #0] - 8000176: 4b0e ldr r3, [pc, #56] @ (80001b0 ) - 8000178: 781b ldrb r3, [r3, #0] - 800017a: 2b09 cmp r3, #9 - 800017c: d914 bls.n 80001a8 - c100ms = 0; //flag_10ms = 1; // set a flag; do real work in main loop - 800017e: 4b0c ldr r3, [pc, #48] @ (80001b0 ) - 8000180: 2200 movs r2, #0 - 8000182: 701a strb r2, [r3, #0] - if (++c1s >= 10) { // 10 ms - 8000184: 4b0b ldr r3, [pc, #44] @ (80001b4 ) - 8000186: 781b ldrb r3, [r3, #0] - 8000188: 3301 adds r3, #1 - 800018a: b2da uxtb r2, r3 - 800018c: 4b09 ldr r3, [pc, #36] @ (80001b4 ) - 800018e: 701a strb r2, [r3, #0] - 8000190: 4b08 ldr r3, [pc, #32] @ (80001b4 ) - 8000192: 781b ldrb r3, [r3, #0] - 8000194: 2b09 cmp r3, #9 - 8000196: d907 bls.n 80001a8 - c1s = 0; - 8000198: 4b06 ldr r3, [pc, #24] @ (80001b4 ) - 800019a: 2200 movs r2, #0 - 800019c: 701a strb r2, [r3, #0] - HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); - 800019e: f44f 5100 mov.w r1, #8192 @ 0x2000 - 80001a2: 4805 ldr r0, [pc, #20] @ (80001b8 ) - 80001a4: f001 fb12 bl 80017cc - } - } - } -} - 80001a8: bf00 nop - 80001aa: bd80 pop {r7, pc} - 80001ac: 20000338 .word 0x20000338 - 80001b0: 20000339 .word 0x20000339 - 80001b4: 2000033a .word 0x2000033a - 80001b8: 40011000 .word 0x40011000 - -080001bc

: -/** - * @brief The application entry point. - * @retval int - */ -int main(void) -{ - 80001bc: b580 push {r7, lr} - 80001be: b09a sub sp, #104 @ 0x68 - 80001c0: af00 add r7, sp, #0 - /* USER CODE END 1 */ - - /* MCU Configuration--------------------------------------------------------*/ - - /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ - HAL_Init(); - 80001c2: f000 fddf bl 8000d84 - /* USER CODE BEGIN Init */ - - /* USER CODE END Init */ - - /* Configure the system clock */ - SystemClock_Config(); - 80001c6: f000 f82f bl 8000228 - /* USER CODE BEGIN SysInit */ - - /* USER CODE END SysInit */ - - /* Initialize all configured peripherals */ - MX_GPIO_Init(); - 80001ca: f000 fb71 bl 80008b0 - MX_USB_DEVICE_Init(); - 80001ce: f008 f97b bl 80084c8 - MX_TIM2_Init(); - 80001d2: f000 f985 bl 80004e0 - MX_TIM4_Init(); - 80001d6: f000 fac9 bl 800076c - MX_TIM3_Init(); - 80001da: f000 fa25 bl 8000628 - MX_ADC1_Init(); - 80001de: f000 f881 bl 80002e4 - MX_TIM1_Init(); - 80001e2: f000 f8bd bl 8000360 - /* USER CODE BEGIN 2 */ - - - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - 80001e6: 2107 movs r1, #7 - 80001e8: 480d ldr r0, [pc, #52] @ (8000220 ) - 80001ea: f008 faa9 bl 8008740 - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1){ - while (CDC_Available()) { - 80001ee: e011 b.n 8000214 - int c = CDC_ReadByte(); - 80001f0: f008 f9e4 bl 80085bc - 80001f4: 6678 str r0, [r7, #100] @ 0x64 - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - 80001f6: 463b mov r3, r7 - 80001f8: 6e7a ldr r2, [r7, #100] @ 0x64 - 80001fa: 490a ldr r1, [pc, #40] @ (8000224 ) - 80001fc: 4618 mov r0, r3 - 80001fe: f008 fe7d bl 8008efc - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - 8000202: bf00 nop - 8000204: 463b mov r3, r7 - 8000206: 2106 movs r1, #6 - 8000208: 4618 mov r0, r3 - 800020a: f008 fa99 bl 8008740 - 800020e: 4603 mov r3, r0 - 8000210: 2b01 cmp r3, #1 - 8000212: d0f7 beq.n 8000204 - while (CDC_Available()) { - 8000214: f008 f9be bl 8008594 - 8000218: 4603 mov r3, r0 - 800021a: 2b00 cmp r3, #0 - 800021c: d1e8 bne.n 80001f0 - 800021e: e7f9 b.n 8000214 - 8000220: 08009874 .word 0x08009874 - 8000224: 0800987c .word 0x0800987c - -08000228 : -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - 8000228: b580 push {r7, lr} - 800022a: b094 sub sp, #80 @ 0x50 - 800022c: af00 add r7, sp, #0 - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - 800022e: f107 0328 add.w r3, r7, #40 @ 0x28 - 8000232: 2228 movs r2, #40 @ 0x28 - 8000234: 2100 movs r1, #0 - 8000236: 4618 mov r0, r3 - 8000238: f008 fe82 bl 8008f40 - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - 800023c: f107 0314 add.w r3, r7, #20 - 8000240: 2200 movs r2, #0 - 8000242: 601a str r2, [r3, #0] - 8000244: 605a str r2, [r3, #4] - 8000246: 609a str r2, [r3, #8] - 8000248: 60da str r2, [r3, #12] - 800024a: 611a str r2, [r3, #16] - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - 800024c: 1d3b adds r3, r7, #4 - 800024e: 2200 movs r2, #0 - 8000250: 601a str r2, [r3, #0] - 8000252: 605a str r2, [r3, #4] - 8000254: 609a str r2, [r3, #8] - 8000256: 60da str r2, [r3, #12] - - /** Initializes the RCC Oscillators according to the specified parameters - * in the RCC_OscInitTypeDef structure. - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; - 8000258: 2301 movs r3, #1 - 800025a: 62bb str r3, [r7, #40] @ 0x28 - RCC_OscInitStruct.HSEState = RCC_HSE_ON; - 800025c: f44f 3380 mov.w r3, #65536 @ 0x10000 - 8000260: 62fb str r3, [r7, #44] @ 0x2c - RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - 8000262: 2300 movs r3, #0 - 8000264: 633b str r3, [r7, #48] @ 0x30 - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - 8000266: 2301 movs r3, #1 - 8000268: 63bb str r3, [r7, #56] @ 0x38 - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - 800026a: 2302 movs r3, #2 - 800026c: 647b str r3, [r7, #68] @ 0x44 - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - 800026e: f44f 3380 mov.w r3, #65536 @ 0x10000 - 8000272: 64bb str r3, [r7, #72] @ 0x48 - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 8000274: f44f 13e0 mov.w r3, #1835008 @ 0x1c0000 - 8000278: 64fb str r3, [r7, #76] @ 0x4c - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 800027a: f107 0328 add.w r3, r7, #40 @ 0x28 - 800027e: 4618 mov r0, r3 - 8000280: f003 f81e bl 80032c0 - 8000284: 4603 mov r3, r0 - 8000286: 2b00 cmp r3, #0 - 8000288: d001 beq.n 800028e - { - Error_Handler(); - 800028a: f000 fb69 bl 8000960 - } - - /** Initializes the CPU, AHB and APB buses clocks - */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - 800028e: 230f movs r3, #15 - 8000290: 617b str r3, [r7, #20] - |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - 8000292: 2302 movs r3, #2 - 8000294: 61bb str r3, [r7, #24] - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - 8000296: 2300 movs r3, #0 - 8000298: 61fb str r3, [r7, #28] - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; - 800029a: f44f 6380 mov.w r3, #1024 @ 0x400 - 800029e: 623b str r3, [r7, #32] - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - 80002a0: 2300 movs r3, #0 - 80002a2: 627b str r3, [r7, #36] @ 0x24 - - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) - 80002a4: f107 0314 add.w r3, r7, #20 - 80002a8: 2102 movs r1, #2 - 80002aa: 4618 mov r0, r3 - 80002ac: f003 fa8a bl 80037c4 - 80002b0: 4603 mov r3, r0 - 80002b2: 2b00 cmp r3, #0 - 80002b4: d001 beq.n 80002ba - { - Error_Handler(); - 80002b6: f000 fb53 bl 8000960 - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; - 80002ba: 2312 movs r3, #18 - 80002bc: 607b str r3, [r7, #4] - PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; - 80002be: f44f 4300 mov.w r3, #32768 @ 0x8000 - 80002c2: 60fb str r3, [r7, #12] - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - 80002c4: 2300 movs r3, #0 - 80002c6: 613b str r3, [r7, #16] - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - 80002c8: 1d3b adds r3, r7, #4 - 80002ca: 4618 mov r0, r3 - 80002cc: f003 fbd6 bl 8003a7c - 80002d0: 4603 mov r3, r0 - 80002d2: 2b00 cmp r3, #0 - 80002d4: d001 beq.n 80002da - { - Error_Handler(); - 80002d6: f000 fb43 bl 8000960 - } -} - 80002da: bf00 nop - 80002dc: 3750 adds r7, #80 @ 0x50 - 80002de: 46bd mov sp, r7 - 80002e0: bd80 pop {r7, pc} - ... - -080002e4 : - * @brief ADC1 Initialization Function - * @param None - * @retval None - */ -static void MX_ADC1_Init(void) -{ - 80002e4: b580 push {r7, lr} - 80002e6: b084 sub sp, #16 - 80002e8: af00 add r7, sp, #0 - - /* USER CODE BEGIN ADC1_Init 0 */ - - /* USER CODE END ADC1_Init 0 */ - - ADC_ChannelConfTypeDef sConfig = {0}; - 80002ea: 1d3b adds r3, r7, #4 - 80002ec: 2200 movs r2, #0 - 80002ee: 601a str r2, [r3, #0] - 80002f0: 605a str r2, [r3, #4] - 80002f2: 609a str r2, [r3, #8] - - /* USER CODE END ADC1_Init 1 */ - - /** Common config - */ - hadc1.Instance = ADC1; - 80002f4: 4b18 ldr r3, [pc, #96] @ (8000358 ) - 80002f6: 4a19 ldr r2, [pc, #100] @ (800035c ) - 80002f8: 601a str r2, [r3, #0] - hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; - 80002fa: 4b17 ldr r3, [pc, #92] @ (8000358 ) - 80002fc: 2200 movs r2, #0 - 80002fe: 609a str r2, [r3, #8] - hadc1.Init.ContinuousConvMode = DISABLE; - 8000300: 4b15 ldr r3, [pc, #84] @ (8000358 ) - 8000302: 2200 movs r2, #0 - 8000304: 731a strb r2, [r3, #12] - hadc1.Init.DiscontinuousConvMode = DISABLE; - 8000306: 4b14 ldr r3, [pc, #80] @ (8000358 ) - 8000308: 2200 movs r2, #0 - 800030a: 751a strb r2, [r3, #20] - hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; - 800030c: 4b12 ldr r3, [pc, #72] @ (8000358 ) - 800030e: f44f 2260 mov.w r2, #917504 @ 0xe0000 - 8000312: 61da str r2, [r3, #28] - hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - 8000314: 4b10 ldr r3, [pc, #64] @ (8000358 ) - 8000316: 2200 movs r2, #0 - 8000318: 605a str r2, [r3, #4] - hadc1.Init.NbrOfConversion = 1; - 800031a: 4b0f ldr r3, [pc, #60] @ (8000358 ) - 800031c: 2201 movs r2, #1 - 800031e: 611a str r2, [r3, #16] - if (HAL_ADC_Init(&hadc1) != HAL_OK) - 8000320: 480d ldr r0, [pc, #52] @ (8000358 ) - 8000322: f000 fd91 bl 8000e48 - 8000326: 4603 mov r3, r0 - 8000328: 2b00 cmp r3, #0 - 800032a: d001 beq.n 8000330 - { - Error_Handler(); - 800032c: f000 fb18 bl 8000960 - } - - /** Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_4; - 8000330: 2304 movs r3, #4 - 8000332: 607b str r3, [r7, #4] - sConfig.Rank = ADC_REGULAR_RANK_1; - 8000334: 2301 movs r3, #1 - 8000336: 60bb str r3, [r7, #8] - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - 8000338: 2300 movs r3, #0 - 800033a: 60fb str r3, [r7, #12] - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - 800033c: 1d3b adds r3, r7, #4 - 800033e: 4619 mov r1, r3 - 8000340: 4805 ldr r0, [pc, #20] @ (8000358 ) - 8000342: f000 fe59 bl 8000ff8 - 8000346: 4603 mov r3, r0 - 8000348: 2b00 cmp r3, #0 - 800034a: d001 beq.n 8000350 - { - Error_Handler(); - 800034c: f000 fb08 bl 8000960 - } - /* USER CODE BEGIN ADC1_Init 2 */ - - /* USER CODE END ADC1_Init 2 */ - -} - 8000350: bf00 nop - 8000352: 3710 adds r7, #16 - 8000354: 46bd mov sp, r7 - 8000356: bd80 pop {r7, pc} - 8000358: 200001e8 .word 0x200001e8 - 800035c: 40012400 .word 0x40012400 - -08000360 : - * @brief TIM1 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM1_Init(void) -{ - 8000360: b580 push {r7, lr} - 8000362: b096 sub sp, #88 @ 0x58 - 8000364: af00 add r7, sp, #0 - - /* USER CODE BEGIN TIM1_Init 0 */ - - /* USER CODE END TIM1_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 8000366: f107 0348 add.w r3, r7, #72 @ 0x48 - 800036a: 2200 movs r2, #0 - 800036c: 601a str r2, [r3, #0] - 800036e: 605a str r2, [r3, #4] - 8000370: 609a str r2, [r3, #8] - 8000372: 60da str r2, [r3, #12] - TIM_MasterConfigTypeDef sMasterConfig = {0}; - 8000374: f107 0340 add.w r3, r7, #64 @ 0x40 - 8000378: 2200 movs r2, #0 - 800037a: 601a str r2, [r3, #0] - 800037c: 605a str r2, [r3, #4] - TIM_OC_InitTypeDef sConfigOC = {0}; - 800037e: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000382: 2200 movs r2, #0 - 8000384: 601a str r2, [r3, #0] - 8000386: 605a str r2, [r3, #4] - 8000388: 609a str r2, [r3, #8] - 800038a: 60da str r2, [r3, #12] - 800038c: 611a str r2, [r3, #16] - 800038e: 615a str r2, [r3, #20] - 8000390: 619a str r2, [r3, #24] - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0}; - 8000392: 1d3b adds r3, r7, #4 - 8000394: 2220 movs r2, #32 - 8000396: 2100 movs r1, #0 - 8000398: 4618 mov r0, r3 - 800039a: f008 fdd1 bl 8008f40 - - /* USER CODE BEGIN TIM1_Init 1 */ - - /* USER CODE END TIM1_Init 1 */ - htim1.Instance = TIM1; - 800039e: 4b4e ldr r3, [pc, #312] @ (80004d8 ) - 80003a0: 4a4e ldr r2, [pc, #312] @ (80004dc ) - 80003a2: 601a str r2, [r3, #0] - htim1.Init.Prescaler = 0; - 80003a4: 4b4c ldr r3, [pc, #304] @ (80004d8 ) - 80003a6: 2200 movs r2, #0 - 80003a8: 605a str r2, [r3, #4] - htim1.Init.CounterMode = TIM_COUNTERMODE_UP; - 80003aa: 4b4b ldr r3, [pc, #300] @ (80004d8 ) - 80003ac: 2200 movs r2, #0 - 80003ae: 609a str r2, [r3, #8] - htim1.Init.Period = 17999; - 80003b0: 4b49 ldr r3, [pc, #292] @ (80004d8 ) - 80003b2: f244 624f movw r2, #17999 @ 0x464f - 80003b6: 60da str r2, [r3, #12] - htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 80003b8: 4b47 ldr r3, [pc, #284] @ (80004d8 ) - 80003ba: 2200 movs r2, #0 - 80003bc: 611a str r2, [r3, #16] - htim1.Init.RepetitionCounter = 0; - 80003be: 4b46 ldr r3, [pc, #280] @ (80004d8 ) - 80003c0: 2200 movs r2, #0 - 80003c2: 615a str r2, [r3, #20] - htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 80003c4: 4b44 ldr r3, [pc, #272] @ (80004d8 ) - 80003c6: 2200 movs r2, #0 - 80003c8: 619a str r2, [r3, #24] - if (HAL_TIM_Base_Init(&htim1) != HAL_OK) - 80003ca: 4843 ldr r0, [pc, #268] @ (80004d8 ) - 80003cc: f003 fc0c bl 8003be8 - 80003d0: 4603 mov r3, r0 - 80003d2: 2b00 cmp r3, #0 - 80003d4: d001 beq.n 80003da - { - Error_Handler(); - 80003d6: f000 fac3 bl 8000960 - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 80003da: f44f 5380 mov.w r3, #4096 @ 0x1000 - 80003de: 64bb str r3, [r7, #72] @ 0x48 - if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) - 80003e0: f107 0348 add.w r3, r7, #72 @ 0x48 - 80003e4: 4619 mov r1, r3 - 80003e6: 483c ldr r0, [pc, #240] @ (80004d8 ) - 80003e8: f003 fd68 bl 8003ebc - 80003ec: 4603 mov r3, r0 - 80003ee: 2b00 cmp r3, #0 - 80003f0: d001 beq.n 80003f6 - { - Error_Handler(); - 80003f2: f000 fab5 bl 8000960 - } - if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) - 80003f6: 4838 ldr r0, [pc, #224] @ (80004d8 ) - 80003f8: f003 fc45 bl 8003c86 - 80003fc: 4603 mov r3, r0 - 80003fe: 2b00 cmp r3, #0 - 8000400: d001 beq.n 8000406 - { - Error_Handler(); - 8000402: f000 faad bl 8000960 - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 8000406: 2300 movs r3, #0 - 8000408: 643b str r3, [r7, #64] @ 0x40 - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 800040a: 2300 movs r3, #0 - 800040c: 647b str r3, [r7, #68] @ 0x44 - if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - 800040e: f107 0340 add.w r3, r7, #64 @ 0x40 - 8000412: 4619 mov r1, r3 - 8000414: 4830 ldr r0, [pc, #192] @ (80004d8 ) - 8000416: f004 f8a5 bl 8004564 - 800041a: 4603 mov r3, r0 - 800041c: 2b00 cmp r3, #0 - 800041e: d001 beq.n 8000424 - { - Error_Handler(); - 8000420: f000 fa9e bl 8000960 - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - 8000424: 2360 movs r3, #96 @ 0x60 - 8000426: 627b str r3, [r7, #36] @ 0x24 - sConfigOC.Pulse = 2400; - 8000428: f44f 6316 mov.w r3, #2400 @ 0x960 - 800042c: 62bb str r3, [r7, #40] @ 0x28 - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 800042e: 2300 movs r3, #0 - 8000430: 62fb str r3, [r7, #44] @ 0x2c - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; - 8000432: 2300 movs r3, #0 - 8000434: 633b str r3, [r7, #48] @ 0x30 - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - 8000436: 2304 movs r3, #4 - 8000438: 637b str r3, [r7, #52] @ 0x34 - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - 800043a: 2300 movs r3, #0 - 800043c: 63bb str r3, [r7, #56] @ 0x38 - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - 800043e: 2300 movs r3, #0 - 8000440: 63fb str r3, [r7, #60] @ 0x3c - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - 8000442: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000446: 2200 movs r2, #0 - 8000448: 4619 mov r1, r3 - 800044a: 4823 ldr r0, [pc, #140] @ (80004d8 ) - 800044c: f003 fc74 bl 8003d38 - 8000450: 4603 mov r3, r0 - 8000452: 2b00 cmp r3, #0 - 8000454: d001 beq.n 800045a - { - Error_Handler(); - 8000456: f000 fa83 bl 8000960 - } - sConfigOC.Pulse = 5500; - 800045a: f241 537c movw r3, #5500 @ 0x157c - 800045e: 62bb str r3, [r7, #40] @ 0x28 - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - 8000460: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000464: 2204 movs r2, #4 - 8000466: 4619 mov r1, r3 - 8000468: 481b ldr r0, [pc, #108] @ (80004d8 ) - 800046a: f003 fc65 bl 8003d38 - 800046e: 4603 mov r3, r0 - 8000470: 2b00 cmp r3, #0 - 8000472: d001 beq.n 8000478 - { - Error_Handler(); - 8000474: f000 fa74 bl 8000960 - } - sConfigOC.Pulse = 6500; - 8000478: f641 1364 movw r3, #6500 @ 0x1964 - 800047c: 62bb str r3, [r7, #40] @ 0x28 - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - 800047e: f107 0324 add.w r3, r7, #36 @ 0x24 - 8000482: 2208 movs r2, #8 - 8000484: 4619 mov r1, r3 - 8000486: 4814 ldr r0, [pc, #80] @ (80004d8 ) - 8000488: f003 fc56 bl 8003d38 - 800048c: 4603 mov r3, r0 - 800048e: 2b00 cmp r3, #0 - 8000490: d001 beq.n 8000496 - { - Error_Handler(); - 8000492: f000 fa65 bl 8000960 - } - sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; - 8000496: 2300 movs r3, #0 - 8000498: 607b str r3, [r7, #4] - sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; - 800049a: 2300 movs r3, #0 - 800049c: 60bb str r3, [r7, #8] - sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - 800049e: 2300 movs r3, #0 - 80004a0: 60fb str r3, [r7, #12] - sBreakDeadTimeConfig.DeadTime = 0; - 80004a2: 2300 movs r3, #0 - 80004a4: 613b str r3, [r7, #16] - sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - 80004a6: 2300 movs r3, #0 - 80004a8: 617b str r3, [r7, #20] - sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; - 80004aa: f44f 5300 mov.w r3, #8192 @ 0x2000 - 80004ae: 61bb str r3, [r7, #24] - sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - 80004b0: 2300 movs r3, #0 - 80004b2: 623b str r3, [r7, #32] - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - 80004b4: 1d3b adds r3, r7, #4 - 80004b6: 4619 mov r1, r3 - 80004b8: 4807 ldr r0, [pc, #28] @ (80004d8 ) - 80004ba: f004 f8b1 bl 8004620 - 80004be: 4603 mov r3, r0 - 80004c0: 2b00 cmp r3, #0 - 80004c2: d001 beq.n 80004c8 - { - Error_Handler(); - 80004c4: f000 fa4c bl 8000960 - } - /* USER CODE BEGIN TIM1_Init 2 */ - - /* USER CODE END TIM1_Init 2 */ - HAL_TIM_MspPostInit(&htim1); - 80004c8: 4803 ldr r0, [pc, #12] @ (80004d8 ) - 80004ca: f000 fb15 bl 8000af8 - -} - 80004ce: bf00 nop - 80004d0: 3758 adds r7, #88 @ 0x58 - 80004d2: 46bd mov sp, r7 - 80004d4: bd80 pop {r7, pc} - 80004d6: bf00 nop - 80004d8: 20000218 .word 0x20000218 - 80004dc: 40012c00 .word 0x40012c00 - -080004e0 : - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - 80004e0: b580 push {r7, lr} - 80004e2: b08e sub sp, #56 @ 0x38 - 80004e4: af00 add r7, sp, #0 - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 80004e6: f107 0328 add.w r3, r7, #40 @ 0x28 - 80004ea: 2200 movs r2, #0 - 80004ec: 601a str r2, [r3, #0] - 80004ee: 605a str r2, [r3, #4] - 80004f0: 609a str r2, [r3, #8] - 80004f2: 60da str r2, [r3, #12] - TIM_MasterConfigTypeDef sMasterConfig = {0}; - 80004f4: f107 0320 add.w r3, r7, #32 - 80004f8: 2200 movs r2, #0 - 80004fa: 601a str r2, [r3, #0] - 80004fc: 605a str r2, [r3, #4] - TIM_OC_InitTypeDef sConfigOC = {0}; - 80004fe: 1d3b adds r3, r7, #4 - 8000500: 2200 movs r2, #0 - 8000502: 601a str r2, [r3, #0] - 8000504: 605a str r2, [r3, #4] - 8000506: 609a str r2, [r3, #8] - 8000508: 60da str r2, [r3, #12] - 800050a: 611a str r2, [r3, #16] - 800050c: 615a str r2, [r3, #20] - 800050e: 619a str r2, [r3, #24] - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - 8000510: 4b44 ldr r3, [pc, #272] @ (8000624 ) - 8000512: f04f 4280 mov.w r2, #1073741824 @ 0x40000000 - 8000516: 601a str r2, [r3, #0] - htim2.Init.Prescaler = 0; - 8000518: 4b42 ldr r3, [pc, #264] @ (8000624 ) - 800051a: 2200 movs r2, #0 - 800051c: 605a str r2, [r3, #4] - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - 800051e: 4b41 ldr r3, [pc, #260] @ (8000624 ) - 8000520: 2200 movs r2, #0 - 8000522: 609a str r2, [r3, #8] - htim2.Init.Period = 17999; - 8000524: 4b3f ldr r3, [pc, #252] @ (8000624 ) - 8000526: f244 624f movw r2, #17999 @ 0x464f - 800052a: 60da str r2, [r3, #12] - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 800052c: 4b3d ldr r3, [pc, #244] @ (8000624 ) - 800052e: 2200 movs r2, #0 - 8000530: 611a str r2, [r3, #16] - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8000532: 4b3c ldr r3, [pc, #240] @ (8000624 ) - 8000534: 2200 movs r2, #0 - 8000536: 619a str r2, [r3, #24] - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - 8000538: 483a ldr r0, [pc, #232] @ (8000624 ) - 800053a: f003 fb55 bl 8003be8 - 800053e: 4603 mov r3, r0 - 8000540: 2b00 cmp r3, #0 - 8000542: d001 beq.n 8000548 - { - Error_Handler(); - 8000544: f000 fa0c bl 8000960 - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 8000548: f44f 5380 mov.w r3, #4096 @ 0x1000 - 800054c: 62bb str r3, [r7, #40] @ 0x28 - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - 800054e: f107 0328 add.w r3, r7, #40 @ 0x28 - 8000552: 4619 mov r1, r3 - 8000554: 4833 ldr r0, [pc, #204] @ (8000624 ) - 8000556: f003 fcb1 bl 8003ebc - 800055a: 4603 mov r3, r0 - 800055c: 2b00 cmp r3, #0 - 800055e: d001 beq.n 8000564 - { - Error_Handler(); - 8000560: f000 f9fe bl 8000960 - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - 8000564: 482f ldr r0, [pc, #188] @ (8000624 ) - 8000566: f003 fb8e bl 8003c86 - 800056a: 4603 mov r3, r0 - 800056c: 2b00 cmp r3, #0 - 800056e: d001 beq.n 8000574 - { - Error_Handler(); - 8000570: f000 f9f6 bl 8000960 - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 8000574: 2300 movs r3, #0 - 8000576: 623b str r3, [r7, #32] - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 8000578: 2300 movs r3, #0 - 800057a: 627b str r3, [r7, #36] @ 0x24 - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - 800057c: f107 0320 add.w r3, r7, #32 - 8000580: 4619 mov r1, r3 - 8000582: 4828 ldr r0, [pc, #160] @ (8000624 ) - 8000584: f003 ffee bl 8004564 - 8000588: 4603 mov r3, r0 - 800058a: 2b00 cmp r3, #0 - 800058c: d001 beq.n 8000592 - { - Error_Handler(); - 800058e: f000 f9e7 bl 8000960 - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - 8000592: 2360 movs r3, #96 @ 0x60 - 8000594: 607b str r3, [r7, #4] - sConfigOC.Pulse = 1000; - 8000596: f44f 737a mov.w r3, #1000 @ 0x3e8 - 800059a: 60bb str r3, [r7, #8] - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 800059c: 2300 movs r3, #0 - 800059e: 60fb str r3, [r7, #12] - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - 80005a0: 2304 movs r3, #4 - 80005a2: 617b str r3, [r7, #20] - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - 80005a4: 1d3b adds r3, r7, #4 - 80005a6: 2200 movs r2, #0 - 80005a8: 4619 mov r1, r3 - 80005aa: 481e ldr r0, [pc, #120] @ (8000624 ) - 80005ac: f003 fbc4 bl 8003d38 - 80005b0: 4603 mov r3, r0 - 80005b2: 2b00 cmp r3, #0 - 80005b4: d001 beq.n 80005ba - { - Error_Handler(); - 80005b6: f000 f9d3 bl 8000960 - } - sConfigOC.Pulse = 2000; - 80005ba: f44f 63fa mov.w r3, #2000 @ 0x7d0 - 80005be: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - 80005c0: 1d3b adds r3, r7, #4 - 80005c2: 2204 movs r2, #4 - 80005c4: 4619 mov r1, r3 - 80005c6: 4817 ldr r0, [pc, #92] @ (8000624 ) - 80005c8: f003 fbb6 bl 8003d38 - 80005cc: 4603 mov r3, r0 - 80005ce: 2b00 cmp r3, #0 - 80005d0: d001 beq.n 80005d6 - { - Error_Handler(); - 80005d2: f000 f9c5 bl 8000960 - } - sConfigOC.Pulse = 3000; - 80005d6: f640 33b8 movw r3, #3000 @ 0xbb8 - 80005da: 60bb str r3, [r7, #8] - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - 80005dc: 2300 movs r3, #0 - 80005de: 617b str r3, [r7, #20] - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - 80005e0: 1d3b adds r3, r7, #4 - 80005e2: 2208 movs r2, #8 - 80005e4: 4619 mov r1, r3 - 80005e6: 480f ldr r0, [pc, #60] @ (8000624 ) - 80005e8: f003 fba6 bl 8003d38 - 80005ec: 4603 mov r3, r0 - 80005ee: 2b00 cmp r3, #0 - 80005f0: d001 beq.n 80005f6 - { - Error_Handler(); - 80005f2: f000 f9b5 bl 8000960 - } - sConfigOC.Pulse = 4000; - 80005f6: f44f 637a mov.w r3, #4000 @ 0xfa0 - 80005fa: 60bb str r3, [r7, #8] - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - 80005fc: 2304 movs r3, #4 - 80005fe: 617b str r3, [r7, #20] - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - 8000600: 1d3b adds r3, r7, #4 - 8000602: 220c movs r2, #12 - 8000604: 4619 mov r1, r3 - 8000606: 4807 ldr r0, [pc, #28] @ (8000624 ) - 8000608: f003 fb96 bl 8003d38 - 800060c: 4603 mov r3, r0 - 800060e: 2b00 cmp r3, #0 - 8000610: d001 beq.n 8000616 - { - Error_Handler(); - 8000612: f000 f9a5 bl 8000960 - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - 8000616: 4803 ldr r0, [pc, #12] @ (8000624 ) - 8000618: f000 fa6e bl 8000af8 - -} - 800061c: bf00 nop - 800061e: 3738 adds r7, #56 @ 0x38 - 8000620: 46bd mov sp, r7 - 8000622: bd80 pop {r7, pc} - 8000624: 20000260 .word 0x20000260 - -08000628 : - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - 8000628: b580 push {r7, lr} - 800062a: b08e sub sp, #56 @ 0x38 - 800062c: af00 add r7, sp, #0 - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 800062e: f107 0328 add.w r3, r7, #40 @ 0x28 - 8000632: 2200 movs r2, #0 - 8000634: 601a str r2, [r3, #0] - 8000636: 605a str r2, [r3, #4] - 8000638: 609a str r2, [r3, #8] - 800063a: 60da str r2, [r3, #12] - TIM_MasterConfigTypeDef sMasterConfig = {0}; - 800063c: f107 0320 add.w r3, r7, #32 - 8000640: 2200 movs r2, #0 - 8000642: 601a str r2, [r3, #0] - 8000644: 605a str r2, [r3, #4] - TIM_OC_InitTypeDef sConfigOC = {0}; - 8000646: 1d3b adds r3, r7, #4 - 8000648: 2200 movs r2, #0 - 800064a: 601a str r2, [r3, #0] - 800064c: 605a str r2, [r3, #4] - 800064e: 609a str r2, [r3, #8] - 8000650: 60da str r2, [r3, #12] - 8000652: 611a str r2, [r3, #16] - 8000654: 615a str r2, [r3, #20] - 8000656: 619a str r2, [r3, #24] - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - 8000658: 4b42 ldr r3, [pc, #264] @ (8000764 ) - 800065a: 4a43 ldr r2, [pc, #268] @ (8000768 ) - 800065c: 601a str r2, [r3, #0] - htim3.Init.Prescaler = 0; - 800065e: 4b41 ldr r3, [pc, #260] @ (8000764 ) - 8000660: 2200 movs r2, #0 - 8000662: 605a str r2, [r3, #4] - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - 8000664: 4b3f ldr r3, [pc, #252] @ (8000764 ) - 8000666: 2200 movs r2, #0 - 8000668: 609a str r2, [r3, #8] - htim3.Init.Period = 17999; - 800066a: 4b3e ldr r3, [pc, #248] @ (8000764 ) - 800066c: f244 624f movw r2, #17999 @ 0x464f - 8000670: 60da str r2, [r3, #12] - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 8000672: 4b3c ldr r3, [pc, #240] @ (8000764 ) - 8000674: 2200 movs r2, #0 - 8000676: 611a str r2, [r3, #16] - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8000678: 4b3a ldr r3, [pc, #232] @ (8000764 ) - 800067a: 2200 movs r2, #0 - 800067c: 619a str r2, [r3, #24] - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - 800067e: 4839 ldr r0, [pc, #228] @ (8000764 ) - 8000680: f003 fab2 bl 8003be8 - 8000684: 4603 mov r3, r0 - 8000686: 2b00 cmp r3, #0 - 8000688: d001 beq.n 800068e - { - Error_Handler(); - 800068a: f000 f969 bl 8000960 - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 800068e: f44f 5380 mov.w r3, #4096 @ 0x1000 - 8000692: 62bb str r3, [r7, #40] @ 0x28 - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - 8000694: f107 0328 add.w r3, r7, #40 @ 0x28 - 8000698: 4619 mov r1, r3 - 800069a: 4832 ldr r0, [pc, #200] @ (8000764 ) - 800069c: f003 fc0e bl 8003ebc - 80006a0: 4603 mov r3, r0 - 80006a2: 2b00 cmp r3, #0 - 80006a4: d001 beq.n 80006aa - { - Error_Handler(); - 80006a6: f000 f95b bl 8000960 - } - if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) - 80006aa: 482e ldr r0, [pc, #184] @ (8000764 ) - 80006ac: f003 faeb bl 8003c86 - 80006b0: 4603 mov r3, r0 - 80006b2: 2b00 cmp r3, #0 - 80006b4: d001 beq.n 80006ba - { - Error_Handler(); - 80006b6: f000 f953 bl 8000960 - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 80006ba: 2300 movs r3, #0 - 80006bc: 623b str r3, [r7, #32] - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 80006be: 2300 movs r3, #0 - 80006c0: 627b str r3, [r7, #36] @ 0x24 - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - 80006c2: f107 0320 add.w r3, r7, #32 - 80006c6: 4619 mov r1, r3 - 80006c8: 4826 ldr r0, [pc, #152] @ (8000764 ) - 80006ca: f003 ff4b bl 8004564 - 80006ce: 4603 mov r3, r0 - 80006d0: 2b00 cmp r3, #0 - 80006d2: d001 beq.n 80006d8 - { - Error_Handler(); - 80006d4: f000 f944 bl 8000960 - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - 80006d8: 2360 movs r3, #96 @ 0x60 - 80006da: 607b str r3, [r7, #4] - sConfigOC.Pulse = 9000; - 80006dc: f242 3328 movw r3, #9000 @ 0x2328 - 80006e0: 60bb str r3, [r7, #8] - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 80006e2: 2300 movs r3, #0 - 80006e4: 60fb str r3, [r7, #12] - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - 80006e6: 2304 movs r3, #4 - 80006e8: 617b str r3, [r7, #20] - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - 80006ea: 1d3b adds r3, r7, #4 - 80006ec: 2200 movs r2, #0 - 80006ee: 4619 mov r1, r3 - 80006f0: 481c ldr r0, [pc, #112] @ (8000764 ) - 80006f2: f003 fb21 bl 8003d38 - 80006f6: 4603 mov r3, r0 - 80006f8: 2b00 cmp r3, #0 - 80006fa: d001 beq.n 8000700 - { - Error_Handler(); - 80006fc: f000 f930 bl 8000960 - } - sConfigOC.Pulse = 10000; - 8000700: f242 7310 movw r3, #10000 @ 0x2710 - 8000704: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - 8000706: 1d3b adds r3, r7, #4 - 8000708: 2204 movs r2, #4 - 800070a: 4619 mov r1, r3 - 800070c: 4815 ldr r0, [pc, #84] @ (8000764 ) - 800070e: f003 fb13 bl 8003d38 - 8000712: 4603 mov r3, r0 - 8000714: 2b00 cmp r3, #0 - 8000716: d001 beq.n 800071c - { - Error_Handler(); - 8000718: f000 f922 bl 8000960 - } - sConfigOC.Pulse = 11000; - 800071c: f642 23f8 movw r3, #11000 @ 0x2af8 - 8000720: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - 8000722: 1d3b adds r3, r7, #4 - 8000724: 2208 movs r2, #8 - 8000726: 4619 mov r1, r3 - 8000728: 480e ldr r0, [pc, #56] @ (8000764 ) - 800072a: f003 fb05 bl 8003d38 - 800072e: 4603 mov r3, r0 - 8000730: 2b00 cmp r3, #0 - 8000732: d001 beq.n 8000738 - { - Error_Handler(); - 8000734: f000 f914 bl 8000960 - } - sConfigOC.Pulse = 12000; - 8000738: f642 63e0 movw r3, #12000 @ 0x2ee0 - 800073c: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - 800073e: 1d3b adds r3, r7, #4 - 8000740: 220c movs r2, #12 - 8000742: 4619 mov r1, r3 - 8000744: 4807 ldr r0, [pc, #28] @ (8000764 ) - 8000746: f003 faf7 bl 8003d38 - 800074a: 4603 mov r3, r0 - 800074c: 2b00 cmp r3, #0 - 800074e: d001 beq.n 8000754 - { - Error_Handler(); - 8000750: f000 f906 bl 8000960 - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_Init 2 */ - HAL_TIM_MspPostInit(&htim3); - 8000754: 4803 ldr r0, [pc, #12] @ (8000764 ) - 8000756: f000 f9cf bl 8000af8 - -} - 800075a: bf00 nop - 800075c: 3738 adds r7, #56 @ 0x38 - 800075e: 46bd mov sp, r7 - 8000760: bd80 pop {r7, pc} - 8000762: bf00 nop - 8000764: 200002a8 .word 0x200002a8 - 8000768: 40000400 .word 0x40000400 - -0800076c : - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - 800076c: b580 push {r7, lr} - 800076e: b08e sub sp, #56 @ 0x38 - 8000770: af00 add r7, sp, #0 - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 8000772: f107 0328 add.w r3, r7, #40 @ 0x28 - 8000776: 2200 movs r2, #0 - 8000778: 601a str r2, [r3, #0] - 800077a: 605a str r2, [r3, #4] - 800077c: 609a str r2, [r3, #8] - 800077e: 60da str r2, [r3, #12] - TIM_MasterConfigTypeDef sMasterConfig = {0}; - 8000780: f107 0320 add.w r3, r7, #32 - 8000784: 2200 movs r2, #0 - 8000786: 601a str r2, [r3, #0] - 8000788: 605a str r2, [r3, #4] - TIM_OC_InitTypeDef sConfigOC = {0}; - 800078a: 1d3b adds r3, r7, #4 - 800078c: 2200 movs r2, #0 - 800078e: 601a str r2, [r3, #0] - 8000790: 605a str r2, [r3, #4] - 8000792: 609a str r2, [r3, #8] - 8000794: 60da str r2, [r3, #12] - 8000796: 611a str r2, [r3, #16] - 8000798: 615a str r2, [r3, #20] - 800079a: 619a str r2, [r3, #24] - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - 800079c: 4b42 ldr r3, [pc, #264] @ (80008a8 ) - 800079e: 4a43 ldr r2, [pc, #268] @ (80008ac ) - 80007a0: 601a str r2, [r3, #0] - htim4.Init.Prescaler = 0; - 80007a2: 4b41 ldr r3, [pc, #260] @ (80008a8 ) - 80007a4: 2200 movs r2, #0 - 80007a6: 605a str r2, [r3, #4] - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - 80007a8: 4b3f ldr r3, [pc, #252] @ (80008a8 ) - 80007aa: 2200 movs r2, #0 - 80007ac: 609a str r2, [r3, #8] - htim4.Init.Period = 17999; - 80007ae: 4b3e ldr r3, [pc, #248] @ (80008a8 ) - 80007b0: f244 624f movw r2, #17999 @ 0x464f - 80007b4: 60da str r2, [r3, #12] - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 80007b6: 4b3c ldr r3, [pc, #240] @ (80008a8 ) - 80007b8: 2200 movs r2, #0 - 80007ba: 611a str r2, [r3, #16] - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 80007bc: 4b3a ldr r3, [pc, #232] @ (80008a8 ) - 80007be: 2200 movs r2, #0 - 80007c0: 619a str r2, [r3, #24] - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - 80007c2: 4839 ldr r0, [pc, #228] @ (80008a8 ) - 80007c4: f003 fa10 bl 8003be8 - 80007c8: 4603 mov r3, r0 - 80007ca: 2b00 cmp r3, #0 - 80007cc: d001 beq.n 80007d2 - { - Error_Handler(); - 80007ce: f000 f8c7 bl 8000960 - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 80007d2: f44f 5380 mov.w r3, #4096 @ 0x1000 - 80007d6: 62bb str r3, [r7, #40] @ 0x28 - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - 80007d8: f107 0328 add.w r3, r7, #40 @ 0x28 - 80007dc: 4619 mov r1, r3 - 80007de: 4832 ldr r0, [pc, #200] @ (80008a8 ) - 80007e0: f003 fb6c bl 8003ebc - 80007e4: 4603 mov r3, r0 - 80007e6: 2b00 cmp r3, #0 - 80007e8: d001 beq.n 80007ee - { - Error_Handler(); - 80007ea: f000 f8b9 bl 8000960 - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - 80007ee: 482e ldr r0, [pc, #184] @ (80008a8 ) - 80007f0: f003 fa49 bl 8003c86 - 80007f4: 4603 mov r3, r0 - 80007f6: 2b00 cmp r3, #0 - 80007f8: d001 beq.n 80007fe - { - Error_Handler(); - 80007fa: f000 f8b1 bl 8000960 - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 80007fe: 2300 movs r3, #0 - 8000800: 623b str r3, [r7, #32] - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 8000802: 2300 movs r3, #0 - 8000804: 627b str r3, [r7, #36] @ 0x24 - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - 8000806: f107 0320 add.w r3, r7, #32 - 800080a: 4619 mov r1, r3 - 800080c: 4826 ldr r0, [pc, #152] @ (80008a8 ) - 800080e: f003 fea9 bl 8004564 - 8000812: 4603 mov r3, r0 - 8000814: 2b00 cmp r3, #0 - 8000816: d001 beq.n 800081c - { - Error_Handler(); - 8000818: f000 f8a2 bl 8000960 - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - 800081c: 2360 movs r3, #96 @ 0x60 - 800081e: 607b str r3, [r7, #4] - sConfigOC.Pulse = 5000; - 8000820: f241 3388 movw r3, #5000 @ 0x1388 - 8000824: 60bb str r3, [r7, #8] - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 8000826: 2300 movs r3, #0 - 8000828: 60fb str r3, [r7, #12] - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - 800082a: 2304 movs r3, #4 - 800082c: 617b str r3, [r7, #20] - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - 800082e: 1d3b adds r3, r7, #4 - 8000830: 2200 movs r2, #0 - 8000832: 4619 mov r1, r3 - 8000834: 481c ldr r0, [pc, #112] @ (80008a8 ) - 8000836: f003 fa7f bl 8003d38 - 800083a: 4603 mov r3, r0 - 800083c: 2b00 cmp r3, #0 - 800083e: d001 beq.n 8000844 - { - Error_Handler(); - 8000840: f000 f88e bl 8000960 - } - sConfigOC.Pulse = 6000; - 8000844: f241 7370 movw r3, #6000 @ 0x1770 - 8000848: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - 800084a: 1d3b adds r3, r7, #4 - 800084c: 2204 movs r2, #4 - 800084e: 4619 mov r1, r3 - 8000850: 4815 ldr r0, [pc, #84] @ (80008a8 ) - 8000852: f003 fa71 bl 8003d38 - 8000856: 4603 mov r3, r0 - 8000858: 2b00 cmp r3, #0 - 800085a: d001 beq.n 8000860 - { - Error_Handler(); - 800085c: f000 f880 bl 8000960 - } - sConfigOC.Pulse = 7000; - 8000860: f641 3358 movw r3, #7000 @ 0x1b58 - 8000864: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - 8000866: 1d3b adds r3, r7, #4 - 8000868: 2208 movs r2, #8 - 800086a: 4619 mov r1, r3 - 800086c: 480e ldr r0, [pc, #56] @ (80008a8 ) - 800086e: f003 fa63 bl 8003d38 - 8000872: 4603 mov r3, r0 - 8000874: 2b00 cmp r3, #0 - 8000876: d001 beq.n 800087c - { - Error_Handler(); - 8000878: f000 f872 bl 8000960 - } - sConfigOC.Pulse = 8000; - 800087c: f44f 53fa mov.w r3, #8000 @ 0x1f40 - 8000880: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - 8000882: 1d3b adds r3, r7, #4 - 8000884: 220c movs r2, #12 - 8000886: 4619 mov r1, r3 - 8000888: 4807 ldr r0, [pc, #28] @ (80008a8 ) - 800088a: f003 fa55 bl 8003d38 - 800088e: 4603 mov r3, r0 - 8000890: 2b00 cmp r3, #0 - 8000892: d001 beq.n 8000898 - { - Error_Handler(); - 8000894: f000 f864 bl 8000960 - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - 8000898: 4803 ldr r0, [pc, #12] @ (80008a8 ) - 800089a: f000 f92d bl 8000af8 - -} - 800089e: bf00 nop - 80008a0: 3738 adds r7, #56 @ 0x38 - 80008a2: 46bd mov sp, r7 - 80008a4: bd80 pop {r7, pc} - 80008a6: bf00 nop - 80008a8: 200002f0 .word 0x200002f0 - 80008ac: 40000800 .word 0x40000800 - -080008b0 : - * @brief GPIO Initialization Function - * @param None - * @retval None - */ -static void MX_GPIO_Init(void) -{ - 80008b0: b580 push {r7, lr} - 80008b2: b088 sub sp, #32 - 80008b4: af00 add r7, sp, #0 - GPIO_InitTypeDef GPIO_InitStruct = {0}; - 80008b6: f107 0310 add.w r3, r7, #16 - 80008ba: 2200 movs r2, #0 - 80008bc: 601a str r2, [r3, #0] - 80008be: 605a str r2, [r3, #4] - 80008c0: 609a str r2, [r3, #8] - 80008c2: 60da str r2, [r3, #12] - /* USER CODE BEGIN MX_GPIO_Init_1 */ - - /* USER CODE END MX_GPIO_Init_1 */ - - /* GPIO Ports Clock Enable */ - __HAL_RCC_GPIOC_CLK_ENABLE(); - 80008c4: 4b24 ldr r3, [pc, #144] @ (8000958 ) - 80008c6: 699b ldr r3, [r3, #24] - 80008c8: 4a23 ldr r2, [pc, #140] @ (8000958 ) - 80008ca: f043 0310 orr.w r3, r3, #16 - 80008ce: 6193 str r3, [r2, #24] - 80008d0: 4b21 ldr r3, [pc, #132] @ (8000958 ) - 80008d2: 699b ldr r3, [r3, #24] - 80008d4: f003 0310 and.w r3, r3, #16 - 80008d8: 60fb str r3, [r7, #12] - 80008da: 68fb ldr r3, [r7, #12] - __HAL_RCC_GPIOD_CLK_ENABLE(); - 80008dc: 4b1e ldr r3, [pc, #120] @ (8000958 ) - 80008de: 699b ldr r3, [r3, #24] - 80008e0: 4a1d ldr r2, [pc, #116] @ (8000958 ) - 80008e2: f043 0320 orr.w r3, r3, #32 - 80008e6: 6193 str r3, [r2, #24] - 80008e8: 4b1b ldr r3, [pc, #108] @ (8000958 ) - 80008ea: 699b ldr r3, [r3, #24] - 80008ec: f003 0320 and.w r3, r3, #32 - 80008f0: 60bb str r3, [r7, #8] - 80008f2: 68bb ldr r3, [r7, #8] - __HAL_RCC_GPIOA_CLK_ENABLE(); - 80008f4: 4b18 ldr r3, [pc, #96] @ (8000958 ) - 80008f6: 699b ldr r3, [r3, #24] - 80008f8: 4a17 ldr r2, [pc, #92] @ (8000958 ) - 80008fa: f043 0304 orr.w r3, r3, #4 - 80008fe: 6193 str r3, [r2, #24] - 8000900: 4b15 ldr r3, [pc, #84] @ (8000958 ) - 8000902: 699b ldr r3, [r3, #24] - 8000904: f003 0304 and.w r3, r3, #4 - 8000908: 607b str r3, [r7, #4] - 800090a: 687b ldr r3, [r7, #4] - __HAL_RCC_GPIOB_CLK_ENABLE(); - 800090c: 4b12 ldr r3, [pc, #72] @ (8000958 ) - 800090e: 699b ldr r3, [r3, #24] - 8000910: 4a11 ldr r2, [pc, #68] @ (8000958 ) - 8000912: f043 0308 orr.w r3, r3, #8 - 8000916: 6193 str r3, [r2, #24] - 8000918: 4b0f ldr r3, [pc, #60] @ (8000958 ) - 800091a: 699b ldr r3, [r3, #24] - 800091c: f003 0308 and.w r3, r3, #8 - 8000920: 603b str r3, [r7, #0] - 8000922: 683b ldr r3, [r7, #0] - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); - 8000924: 2200 movs r2, #0 - 8000926: f44f 5100 mov.w r1, #8192 @ 0x2000 - 800092a: 480c ldr r0, [pc, #48] @ (800095c ) - 800092c: f000 ff36 bl 800179c - - /*Configure GPIO pin : PC13 */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - 8000930: f44f 5300 mov.w r3, #8192 @ 0x2000 - 8000934: 613b str r3, [r7, #16] - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8000936: 2301 movs r3, #1 - 8000938: 617b str r3, [r7, #20] - GPIO_InitStruct.Pull = GPIO_NOPULL; - 800093a: 2300 movs r3, #0 - 800093c: 61bb str r3, [r7, #24] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 800093e: 2302 movs r3, #2 - 8000940: 61fb str r3, [r7, #28] - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 8000942: f107 0310 add.w r3, r7, #16 - 8000946: 4619 mov r1, r3 - 8000948: 4804 ldr r0, [pc, #16] @ (800095c ) - 800094a: f000 fda3 bl 8001494 - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - 800094e: bf00 nop - 8000950: 3720 adds r7, #32 - 8000952: 46bd mov sp, r7 - 8000954: bd80 pop {r7, pc} - 8000956: bf00 nop - 8000958: 40021000 .word 0x40021000 - 800095c: 40011000 .word 0x40011000 - -08000960 : -/** - * @brief This function is executed in case of error occurrence. - * @retval None - */ -void Error_Handler(void) -{ - 8000960: b480 push {r7} - 8000962: af00 add r7, sp, #0 - \details Disables IRQ interrupts by setting the I-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__STATIC_FORCEINLINE void __disable_irq(void) -{ - __ASM volatile ("cpsid i" : : : "memory"); - 8000964: b672 cpsid i -} - 8000966: 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) - 8000968: bf00 nop - 800096a: e7fd b.n 8000968 - -0800096c : -void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); - /** - * Initializes the Global MSP. - */ -void HAL_MspInit(void) -{ - 800096c: b480 push {r7} - 800096e: b085 sub sp, #20 - 8000970: af00 add r7, sp, #0 - - /* USER CODE BEGIN MspInit 0 */ - - /* USER CODE END MspInit 0 */ - - __HAL_RCC_AFIO_CLK_ENABLE(); - 8000972: 4b15 ldr r3, [pc, #84] @ (80009c8 ) - 8000974: 699b ldr r3, [r3, #24] - 8000976: 4a14 ldr r2, [pc, #80] @ (80009c8 ) - 8000978: f043 0301 orr.w r3, r3, #1 - 800097c: 6193 str r3, [r2, #24] - 800097e: 4b12 ldr r3, [pc, #72] @ (80009c8 ) - 8000980: 699b ldr r3, [r3, #24] - 8000982: f003 0301 and.w r3, r3, #1 - 8000986: 60bb str r3, [r7, #8] - 8000988: 68bb ldr r3, [r7, #8] - __HAL_RCC_PWR_CLK_ENABLE(); - 800098a: 4b0f ldr r3, [pc, #60] @ (80009c8 ) - 800098c: 69db ldr r3, [r3, #28] - 800098e: 4a0e ldr r2, [pc, #56] @ (80009c8 ) - 8000990: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 8000994: 61d3 str r3, [r2, #28] - 8000996: 4b0c ldr r3, [pc, #48] @ (80009c8 ) - 8000998: 69db ldr r3, [r3, #28] - 800099a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 800099e: 607b str r3, [r7, #4] - 80009a0: 687b ldr r3, [r7, #4] - - /* System interrupt init*/ - - /** DISABLE: JTAG-DP Disabled and SW-DP Disabled - */ - __HAL_AFIO_REMAP_SWJ_DISABLE(); - 80009a2: 4b0a ldr r3, [pc, #40] @ (80009cc ) - 80009a4: 685b ldr r3, [r3, #4] - 80009a6: 60fb str r3, [r7, #12] - 80009a8: 68fb ldr r3, [r7, #12] - 80009aa: f023 63e0 bic.w r3, r3, #117440512 @ 0x7000000 - 80009ae: 60fb str r3, [r7, #12] - 80009b0: 68fb ldr r3, [r7, #12] - 80009b2: f043 6380 orr.w r3, r3, #67108864 @ 0x4000000 - 80009b6: 60fb str r3, [r7, #12] - 80009b8: 4a04 ldr r2, [pc, #16] @ (80009cc ) - 80009ba: 68fb ldr r3, [r7, #12] - 80009bc: 6053 str r3, [r2, #4] - - /* USER CODE BEGIN MspInit 1 */ - - /* USER CODE END MspInit 1 */ -} - 80009be: bf00 nop - 80009c0: 3714 adds r7, #20 - 80009c2: 46bd mov sp, r7 - 80009c4: bc80 pop {r7} - 80009c6: 4770 bx lr - 80009c8: 40021000 .word 0x40021000 - 80009cc: 40010000 .word 0x40010000 - -080009d0 : - * This function configures the hardware resources used in this example - * @param hadc: ADC handle pointer - * @retval None - */ -void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) -{ - 80009d0: b580 push {r7, lr} - 80009d2: b088 sub sp, #32 - 80009d4: af00 add r7, sp, #0 - 80009d6: 6078 str r0, [r7, #4] - GPIO_InitTypeDef GPIO_InitStruct = {0}; - 80009d8: f107 0310 add.w r3, r7, #16 - 80009dc: 2200 movs r2, #0 - 80009de: 601a str r2, [r3, #0] - 80009e0: 605a str r2, [r3, #4] - 80009e2: 609a str r2, [r3, #8] - 80009e4: 60da str r2, [r3, #12] - if(hadc->Instance==ADC1) - 80009e6: 687b ldr r3, [r7, #4] - 80009e8: 681b ldr r3, [r3, #0] - 80009ea: 4a14 ldr r2, [pc, #80] @ (8000a3c ) - 80009ec: 4293 cmp r3, r2 - 80009ee: d121 bne.n 8000a34 - { - /* USER CODE BEGIN ADC1_MspInit 0 */ - - /* USER CODE END ADC1_MspInit 0 */ - /* Peripheral clock enable */ - __HAL_RCC_ADC1_CLK_ENABLE(); - 80009f0: 4b13 ldr r3, [pc, #76] @ (8000a40 ) - 80009f2: 699b ldr r3, [r3, #24] - 80009f4: 4a12 ldr r2, [pc, #72] @ (8000a40 ) - 80009f6: f443 7300 orr.w r3, r3, #512 @ 0x200 - 80009fa: 6193 str r3, [r2, #24] - 80009fc: 4b10 ldr r3, [pc, #64] @ (8000a40 ) - 80009fe: 699b ldr r3, [r3, #24] - 8000a00: f403 7300 and.w r3, r3, #512 @ 0x200 - 8000a04: 60fb str r3, [r7, #12] - 8000a06: 68fb ldr r3, [r7, #12] - - __HAL_RCC_GPIOA_CLK_ENABLE(); - 8000a08: 4b0d ldr r3, [pc, #52] @ (8000a40 ) - 8000a0a: 699b ldr r3, [r3, #24] - 8000a0c: 4a0c ldr r2, [pc, #48] @ (8000a40 ) - 8000a0e: f043 0304 orr.w r3, r3, #4 - 8000a12: 6193 str r3, [r2, #24] - 8000a14: 4b0a ldr r3, [pc, #40] @ (8000a40 ) - 8000a16: 699b ldr r3, [r3, #24] - 8000a18: f003 0304 and.w r3, r3, #4 - 8000a1c: 60bb str r3, [r7, #8] - 8000a1e: 68bb ldr r3, [r7, #8] - /**ADC1 GPIO Configuration - PA4 ------> ADC1_IN4 - PA5 ------> ADC1_IN5 - */ - GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5; - 8000a20: 2330 movs r3, #48 @ 0x30 - 8000a22: 613b str r3, [r7, #16] - GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - 8000a24: 2303 movs r3, #3 - 8000a26: 617b str r3, [r7, #20] - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8000a28: f107 0310 add.w r3, r7, #16 - 8000a2c: 4619 mov r1, r3 - 8000a2e: 4805 ldr r0, [pc, #20] @ (8000a44 ) - 8000a30: f000 fd30 bl 8001494 - - /* USER CODE END ADC1_MspInit 1 */ - - } - -} - 8000a34: bf00 nop - 8000a36: 3720 adds r7, #32 - 8000a38: 46bd mov sp, r7 - 8000a3a: bd80 pop {r7, pc} - 8000a3c: 40012400 .word 0x40012400 - 8000a40: 40021000 .word 0x40021000 - 8000a44: 40010800 .word 0x40010800 - -08000a48 : - * 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) -{ - 8000a48: b480 push {r7} - 8000a4a: b087 sub sp, #28 - 8000a4c: af00 add r7, sp, #0 - 8000a4e: 6078 str r0, [r7, #4] - if(htim_base->Instance==TIM1) - 8000a50: 687b ldr r3, [r7, #4] - 8000a52: 681b ldr r3, [r3, #0] - 8000a54: 4a24 ldr r2, [pc, #144] @ (8000ae8 ) - 8000a56: 4293 cmp r3, r2 - 8000a58: d10c bne.n 8000a74 - { - /* USER CODE BEGIN TIM1_MspInit 0 */ - - /* USER CODE END TIM1_MspInit 0 */ - /* Peripheral clock enable */ - __HAL_RCC_TIM1_CLK_ENABLE(); - 8000a5a: 4b24 ldr r3, [pc, #144] @ (8000aec ) - 8000a5c: 699b ldr r3, [r3, #24] - 8000a5e: 4a23 ldr r2, [pc, #140] @ (8000aec ) - 8000a60: f443 6300 orr.w r3, r3, #2048 @ 0x800 - 8000a64: 6193 str r3, [r2, #24] - 8000a66: 4b21 ldr r3, [pc, #132] @ (8000aec ) - 8000a68: 699b ldr r3, [r3, #24] - 8000a6a: f403 6300 and.w r3, r3, #2048 @ 0x800 - 8000a6e: 617b str r3, [r7, #20] - 8000a70: 697b ldr r3, [r7, #20] - /* USER CODE BEGIN TIM4_MspInit 1 */ - - /* USER CODE END TIM4_MspInit 1 */ - } - -} - 8000a72: e034 b.n 8000ade - else if(htim_base->Instance==TIM2) - 8000a74: 687b ldr r3, [r7, #4] - 8000a76: 681b ldr r3, [r3, #0] - 8000a78: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8000a7c: d10c bne.n 8000a98 - __HAL_RCC_TIM2_CLK_ENABLE(); - 8000a7e: 4b1b ldr r3, [pc, #108] @ (8000aec ) - 8000a80: 69db ldr r3, [r3, #28] - 8000a82: 4a1a ldr r2, [pc, #104] @ (8000aec ) - 8000a84: f043 0301 orr.w r3, r3, #1 - 8000a88: 61d3 str r3, [r2, #28] - 8000a8a: 4b18 ldr r3, [pc, #96] @ (8000aec ) - 8000a8c: 69db ldr r3, [r3, #28] - 8000a8e: f003 0301 and.w r3, r3, #1 - 8000a92: 613b str r3, [r7, #16] - 8000a94: 693b ldr r3, [r7, #16] -} - 8000a96: e022 b.n 8000ade - else if(htim_base->Instance==TIM3) - 8000a98: 687b ldr r3, [r7, #4] - 8000a9a: 681b ldr r3, [r3, #0] - 8000a9c: 4a14 ldr r2, [pc, #80] @ (8000af0 ) - 8000a9e: 4293 cmp r3, r2 - 8000aa0: d10c bne.n 8000abc - __HAL_RCC_TIM3_CLK_ENABLE(); - 8000aa2: 4b12 ldr r3, [pc, #72] @ (8000aec ) - 8000aa4: 69db ldr r3, [r3, #28] - 8000aa6: 4a11 ldr r2, [pc, #68] @ (8000aec ) - 8000aa8: f043 0302 orr.w r3, r3, #2 - 8000aac: 61d3 str r3, [r2, #28] - 8000aae: 4b0f ldr r3, [pc, #60] @ (8000aec ) - 8000ab0: 69db ldr r3, [r3, #28] - 8000ab2: f003 0302 and.w r3, r3, #2 - 8000ab6: 60fb str r3, [r7, #12] - 8000ab8: 68fb ldr r3, [r7, #12] -} - 8000aba: e010 b.n 8000ade - else if(htim_base->Instance==TIM4) - 8000abc: 687b ldr r3, [r7, #4] - 8000abe: 681b ldr r3, [r3, #0] - 8000ac0: 4a0c ldr r2, [pc, #48] @ (8000af4 ) - 8000ac2: 4293 cmp r3, r2 - 8000ac4: d10b bne.n 8000ade - __HAL_RCC_TIM4_CLK_ENABLE(); - 8000ac6: 4b09 ldr r3, [pc, #36] @ (8000aec ) - 8000ac8: 69db ldr r3, [r3, #28] - 8000aca: 4a08 ldr r2, [pc, #32] @ (8000aec ) - 8000acc: f043 0304 orr.w r3, r3, #4 - 8000ad0: 61d3 str r3, [r2, #28] - 8000ad2: 4b06 ldr r3, [pc, #24] @ (8000aec ) - 8000ad4: 69db ldr r3, [r3, #28] - 8000ad6: f003 0304 and.w r3, r3, #4 - 8000ada: 60bb str r3, [r7, #8] - 8000adc: 68bb ldr r3, [r7, #8] -} - 8000ade: bf00 nop - 8000ae0: 371c adds r7, #28 - 8000ae2: 46bd mov sp, r7 - 8000ae4: bc80 pop {r7} - 8000ae6: 4770 bx lr - 8000ae8: 40012c00 .word 0x40012c00 - 8000aec: 40021000 .word 0x40021000 - 8000af0: 40000400 .word 0x40000400 - 8000af4: 40000800 .word 0x40000800 - -08000af8 : - -void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) -{ - 8000af8: b580 push {r7, lr} - 8000afa: b08c sub sp, #48 @ 0x30 - 8000afc: af00 add r7, sp, #0 - 8000afe: 6078 str r0, [r7, #4] - GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8000b00: f107 0320 add.w r3, r7, #32 - 8000b04: 2200 movs r2, #0 - 8000b06: 601a str r2, [r3, #0] - 8000b08: 605a str r2, [r3, #4] - 8000b0a: 609a str r2, [r3, #8] - 8000b0c: 60da str r2, [r3, #12] - if(htim->Instance==TIM1) - 8000b0e: 687b ldr r3, [r7, #4] - 8000b10: 681b ldr r3, [r3, #0] - 8000b12: 4a49 ldr r2, [pc, #292] @ (8000c38 ) - 8000b14: 4293 cmp r3, r2 - 8000b16: d119 bne.n 8000b4c - { - /* USER CODE BEGIN TIM1_MspPostInit 0 */ - - /* USER CODE END TIM1_MspPostInit 0 */ - __HAL_RCC_GPIOA_CLK_ENABLE(); - 8000b18: 4b48 ldr r3, [pc, #288] @ (8000c3c ) - 8000b1a: 699b ldr r3, [r3, #24] - 8000b1c: 4a47 ldr r2, [pc, #284] @ (8000c3c ) - 8000b1e: f043 0304 orr.w r3, r3, #4 - 8000b22: 6193 str r3, [r2, #24] - 8000b24: 4b45 ldr r3, [pc, #276] @ (8000c3c ) - 8000b26: 699b ldr r3, [r3, #24] - 8000b28: f003 0304 and.w r3, r3, #4 - 8000b2c: 61fb str r3, [r7, #28] - 8000b2e: 69fb ldr r3, [r7, #28] - /**TIM1 GPIO Configuration - PA8 ------> TIM1_CH1 - PA9 ------> TIM1_CH2 - PA10 ------> TIM1_CH3 - */ - GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10; - 8000b30: f44f 63e0 mov.w r3, #1792 @ 0x700 - 8000b34: 623b str r3, [r7, #32] - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8000b36: 2302 movs r3, #2 - 8000b38: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000b3a: 2302 movs r3, #2 - 8000b3c: 62fb str r3, [r7, #44] @ 0x2c - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8000b3e: f107 0320 add.w r3, r7, #32 - 8000b42: 4619 mov r1, r3 - 8000b44: 483e ldr r0, [pc, #248] @ (8000c40 ) - 8000b46: f000 fca5 bl 8001494 - /* USER CODE BEGIN TIM4_MspPostInit 1 */ - - /* USER CODE END TIM4_MspPostInit 1 */ - } - -} - 8000b4a: e071 b.n 8000c30 - else if(htim->Instance==TIM2) - 8000b4c: 687b ldr r3, [r7, #4] - 8000b4e: 681b ldr r3, [r3, #0] - 8000b50: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8000b54: d118 bne.n 8000b88 - __HAL_RCC_GPIOA_CLK_ENABLE(); - 8000b56: 4b39 ldr r3, [pc, #228] @ (8000c3c ) - 8000b58: 699b ldr r3, [r3, #24] - 8000b5a: 4a38 ldr r2, [pc, #224] @ (8000c3c ) - 8000b5c: f043 0304 orr.w r3, r3, #4 - 8000b60: 6193 str r3, [r2, #24] - 8000b62: 4b36 ldr r3, [pc, #216] @ (8000c3c ) - 8000b64: 699b ldr r3, [r3, #24] - 8000b66: f003 0304 and.w r3, r3, #4 - 8000b6a: 61bb str r3, [r7, #24] - 8000b6c: 69bb ldr r3, [r7, #24] - GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3; - 8000b6e: 230f movs r3, #15 - 8000b70: 623b str r3, [r7, #32] - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8000b72: 2302 movs r3, #2 - 8000b74: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000b76: 2302 movs r3, #2 - 8000b78: 62fb str r3, [r7, #44] @ 0x2c - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8000b7a: f107 0320 add.w r3, r7, #32 - 8000b7e: 4619 mov r1, r3 - 8000b80: 482f ldr r0, [pc, #188] @ (8000c40 ) - 8000b82: f000 fc87 bl 8001494 -} - 8000b86: e053 b.n 8000c30 - else if(htim->Instance==TIM3) - 8000b88: 687b ldr r3, [r7, #4] - 8000b8a: 681b ldr r3, [r3, #0] - 8000b8c: 4a2d ldr r2, [pc, #180] @ (8000c44 ) - 8000b8e: 4293 cmp r3, r2 - 8000b90: d130 bne.n 8000bf4 - __HAL_RCC_GPIOA_CLK_ENABLE(); - 8000b92: 4b2a ldr r3, [pc, #168] @ (8000c3c ) - 8000b94: 699b ldr r3, [r3, #24] - 8000b96: 4a29 ldr r2, [pc, #164] @ (8000c3c ) - 8000b98: f043 0304 orr.w r3, r3, #4 - 8000b9c: 6193 str r3, [r2, #24] - 8000b9e: 4b27 ldr r3, [pc, #156] @ (8000c3c ) - 8000ba0: 699b ldr r3, [r3, #24] - 8000ba2: f003 0304 and.w r3, r3, #4 - 8000ba6: 617b str r3, [r7, #20] - 8000ba8: 697b ldr r3, [r7, #20] - __HAL_RCC_GPIOB_CLK_ENABLE(); - 8000baa: 4b24 ldr r3, [pc, #144] @ (8000c3c ) - 8000bac: 699b ldr r3, [r3, #24] - 8000bae: 4a23 ldr r2, [pc, #140] @ (8000c3c ) - 8000bb0: f043 0308 orr.w r3, r3, #8 - 8000bb4: 6193 str r3, [r2, #24] - 8000bb6: 4b21 ldr r3, [pc, #132] @ (8000c3c ) - 8000bb8: 699b ldr r3, [r3, #24] - 8000bba: f003 0308 and.w r3, r3, #8 - 8000bbe: 613b str r3, [r7, #16] - 8000bc0: 693b ldr r3, [r7, #16] - GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; - 8000bc2: 23c0 movs r3, #192 @ 0xc0 - 8000bc4: 623b str r3, [r7, #32] - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8000bc6: 2302 movs r3, #2 - 8000bc8: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000bca: 2302 movs r3, #2 - 8000bcc: 62fb str r3, [r7, #44] @ 0x2c - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8000bce: f107 0320 add.w r3, r7, #32 - 8000bd2: 4619 mov r1, r3 - 8000bd4: 481a ldr r0, [pc, #104] @ (8000c40 ) - 8000bd6: f000 fc5d bl 8001494 - GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1; - 8000bda: 2303 movs r3, #3 - 8000bdc: 623b str r3, [r7, #32] - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8000bde: 2302 movs r3, #2 - 8000be0: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000be2: 2302 movs r3, #2 - 8000be4: 62fb str r3, [r7, #44] @ 0x2c - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8000be6: f107 0320 add.w r3, r7, #32 - 8000bea: 4619 mov r1, r3 - 8000bec: 4816 ldr r0, [pc, #88] @ (8000c48 ) - 8000bee: f000 fc51 bl 8001494 -} - 8000bf2: e01d b.n 8000c30 - else if(htim->Instance==TIM4) - 8000bf4: 687b ldr r3, [r7, #4] - 8000bf6: 681b ldr r3, [r3, #0] - 8000bf8: 4a14 ldr r2, [pc, #80] @ (8000c4c ) - 8000bfa: 4293 cmp r3, r2 - 8000bfc: d118 bne.n 8000c30 - __HAL_RCC_GPIOB_CLK_ENABLE(); - 8000bfe: 4b0f ldr r3, [pc, #60] @ (8000c3c ) - 8000c00: 699b ldr r3, [r3, #24] - 8000c02: 4a0e ldr r2, [pc, #56] @ (8000c3c ) - 8000c04: f043 0308 orr.w r3, r3, #8 - 8000c08: 6193 str r3, [r2, #24] - 8000c0a: 4b0c ldr r3, [pc, #48] @ (8000c3c ) - 8000c0c: 699b ldr r3, [r3, #24] - 8000c0e: f003 0308 and.w r3, r3, #8 - 8000c12: 60fb str r3, [r7, #12] - 8000c14: 68fb ldr r3, [r7, #12] - GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9; - 8000c16: f44f 7370 mov.w r3, #960 @ 0x3c0 - 8000c1a: 623b str r3, [r7, #32] - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8000c1c: 2302 movs r3, #2 - 8000c1e: 627b str r3, [r7, #36] @ 0x24 - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000c20: 2302 movs r3, #2 - 8000c22: 62fb str r3, [r7, #44] @ 0x2c - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8000c24: f107 0320 add.w r3, r7, #32 - 8000c28: 4619 mov r1, r3 - 8000c2a: 4807 ldr r0, [pc, #28] @ (8000c48 ) - 8000c2c: f000 fc32 bl 8001494 -} - 8000c30: bf00 nop - 8000c32: 3730 adds r7, #48 @ 0x30 - 8000c34: 46bd mov sp, r7 - 8000c36: bd80 pop {r7, pc} - 8000c38: 40012c00 .word 0x40012c00 - 8000c3c: 40021000 .word 0x40021000 - 8000c40: 40010800 .word 0x40010800 - 8000c44: 40000400 .word 0x40000400 - 8000c48: 40010c00 .word 0x40010c00 - 8000c4c: 40000800 .word 0x40000800 - -08000c50 : -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - 8000c50: b480 push {r7} - 8000c52: 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) - 8000c54: bf00 nop - 8000c56: e7fd b.n 8000c54 - -08000c58 : - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - 8000c58: b480 push {r7} - 8000c5a: af00 add r7, sp, #0 - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - 8000c5c: bf00 nop - 8000c5e: e7fd b.n 8000c5c - -08000c60 : - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - 8000c60: b480 push {r7} - 8000c62: af00 add r7, sp, #0 - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - 8000c64: bf00 nop - 8000c66: e7fd b.n 8000c64 - -08000c68 : - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - 8000c68: b480 push {r7} - 8000c6a: af00 add r7, sp, #0 - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - 8000c6c: bf00 nop - 8000c6e: e7fd b.n 8000c6c - -08000c70 : - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - 8000c70: b480 push {r7} - 8000c72: af00 add r7, sp, #0 - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - 8000c74: bf00 nop - 8000c76: e7fd b.n 8000c74 - -08000c78 : - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - 8000c78: b480 push {r7} - 8000c7a: af00 add r7, sp, #0 - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - 8000c7c: bf00 nop - 8000c7e: 46bd mov sp, r7 - 8000c80: bc80 pop {r7} - 8000c82: 4770 bx lr - -08000c84 : - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - 8000c84: b480 push {r7} - 8000c86: af00 add r7, sp, #0 - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - 8000c88: bf00 nop - 8000c8a: 46bd mov sp, r7 - 8000c8c: bc80 pop {r7} - 8000c8e: 4770 bx lr - -08000c90 : - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - 8000c90: b480 push {r7} - 8000c92: af00 add r7, sp, #0 - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - 8000c94: bf00 nop - 8000c96: 46bd mov sp, r7 - 8000c98: bc80 pop {r7} - 8000c9a: 4770 bx lr - -08000c9c : - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - 8000c9c: b580 push {r7, lr} - 8000c9e: af00 add r7, sp, #0 - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - 8000ca0: f000 f8b6 bl 8000e10 - /* USER CODE BEGIN SysTick_IRQn 1 */ - HAL_SYSTICK_IRQHandler(); - 8000ca4: f000 fbef bl 8001486 - /* USER CODE END SysTick_IRQn 1 */ -} - 8000ca8: bf00 nop - 8000caa: bd80 pop {r7, pc} - -08000cac : - -/** - * @brief This function handles USB low priority or CAN RX0 interrupts. - */ -void USB_LP_CAN1_RX0_IRQHandler(void) -{ - 8000cac: b580 push {r7, lr} - 8000cae: af00 add r7, sp, #0 - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - 8000cb0: 4802 ldr r0, [pc, #8] @ (8000cbc ) - 8000cb2: f000 fec0 bl 8001a36 - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ -} - 8000cb6: bf00 nop - 8000cb8: bd80 pop {r7, pc} - 8000cba: bf00 nop - 8000cbc: 20001110 .word 0x20001110 - -08000cc0 <_sbrk>: - * - * @param incr Memory size - * @return Pointer to allocated memory - */ -void *_sbrk(ptrdiff_t incr) -{ - 8000cc0: b580 push {r7, lr} - 8000cc2: b086 sub sp, #24 - 8000cc4: af00 add r7, sp, #0 - 8000cc6: 6078 str r0, [r7, #4] - extern uint8_t _end; /* Symbol defined in the linker script */ - extern uint8_t _estack; /* Symbol defined in the linker script */ - extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ - const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; - 8000cc8: 4a14 ldr r2, [pc, #80] @ (8000d1c <_sbrk+0x5c>) - 8000cca: 4b15 ldr r3, [pc, #84] @ (8000d20 <_sbrk+0x60>) - 8000ccc: 1ad3 subs r3, r2, r3 - 8000cce: 617b str r3, [r7, #20] - const uint8_t *max_heap = (uint8_t *)stack_limit; - 8000cd0: 697b ldr r3, [r7, #20] - 8000cd2: 613b str r3, [r7, #16] - uint8_t *prev_heap_end; - - /* Initialize heap end at first call */ - if (NULL == __sbrk_heap_end) - 8000cd4: 4b13 ldr r3, [pc, #76] @ (8000d24 <_sbrk+0x64>) - 8000cd6: 681b ldr r3, [r3, #0] - 8000cd8: 2b00 cmp r3, #0 - 8000cda: d102 bne.n 8000ce2 <_sbrk+0x22> - { - __sbrk_heap_end = &_end; - 8000cdc: 4b11 ldr r3, [pc, #68] @ (8000d24 <_sbrk+0x64>) - 8000cde: 4a12 ldr r2, [pc, #72] @ (8000d28 <_sbrk+0x68>) - 8000ce0: 601a str r2, [r3, #0] - } - - /* Protect heap from growing into the reserved MSP stack */ - if (__sbrk_heap_end + incr > max_heap) - 8000ce2: 4b10 ldr r3, [pc, #64] @ (8000d24 <_sbrk+0x64>) - 8000ce4: 681a ldr r2, [r3, #0] - 8000ce6: 687b ldr r3, [r7, #4] - 8000ce8: 4413 add r3, r2 - 8000cea: 693a ldr r2, [r7, #16] - 8000cec: 429a cmp r2, r3 - 8000cee: d207 bcs.n 8000d00 <_sbrk+0x40> - { - errno = ENOMEM; - 8000cf0: f008 f92e bl 8008f50 <__errno> - 8000cf4: 4603 mov r3, r0 - 8000cf6: 220c movs r2, #12 - 8000cf8: 601a str r2, [r3, #0] - return (void *)-1; - 8000cfa: f04f 33ff mov.w r3, #4294967295 - 8000cfe: e009 b.n 8000d14 <_sbrk+0x54> - } - - prev_heap_end = __sbrk_heap_end; - 8000d00: 4b08 ldr r3, [pc, #32] @ (8000d24 <_sbrk+0x64>) - 8000d02: 681b ldr r3, [r3, #0] - 8000d04: 60fb str r3, [r7, #12] - __sbrk_heap_end += incr; - 8000d06: 4b07 ldr r3, [pc, #28] @ (8000d24 <_sbrk+0x64>) - 8000d08: 681a ldr r2, [r3, #0] - 8000d0a: 687b ldr r3, [r7, #4] - 8000d0c: 4413 add r3, r2 - 8000d0e: 4a05 ldr r2, [pc, #20] @ (8000d24 <_sbrk+0x64>) - 8000d10: 6013 str r3, [r2, #0] - - return (void *)prev_heap_end; - 8000d12: 68fb ldr r3, [r7, #12] -} - 8000d14: 4618 mov r0, r3 - 8000d16: 3718 adds r7, #24 - 8000d18: 46bd mov sp, r7 - 8000d1a: bd80 pop {r7, pc} - 8000d1c: 20005000 .word 0x20005000 - 8000d20: 00000400 .word 0x00000400 - 8000d24: 2000033c .word 0x2000033c - 8000d28: 20001750 .word 0x20001750 - -08000d2c : - * @note This function should be used only after reset. - * @param None - * @retval None - */ -void SystemInit (void) -{ - 8000d2c: b480 push {r7} - 8000d2e: af00 add r7, sp, #0 - - /* Configure the Vector Table location -------------------------------------*/ -#if defined(USER_VECT_TAB_ADDRESS) - SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ -#endif /* USER_VECT_TAB_ADDRESS */ -} - 8000d30: bf00 nop - 8000d32: 46bd mov sp, r7 - 8000d34: bc80 pop {r7} - 8000d36: 4770 bx lr - -08000d38 : - .weak Reset_Handler - .type Reset_Handler, %function -Reset_Handler: - -/* Call the clock system initialization function.*/ - bl SystemInit - 8000d38: f7ff fff8 bl 8000d2c - -/* Copy the data segment initializers from flash to SRAM */ - ldr r0, =_sdata - 8000d3c: 480b ldr r0, [pc, #44] @ (8000d6c ) - ldr r1, =_edata - 8000d3e: 490c ldr r1, [pc, #48] @ (8000d70 ) - ldr r2, =_sidata - 8000d40: 4a0c ldr r2, [pc, #48] @ (8000d74 ) - movs r3, #0 - 8000d42: 2300 movs r3, #0 - b LoopCopyDataInit - 8000d44: e002 b.n 8000d4c - -08000d46 : - -CopyDataInit: - ldr r4, [r2, r3] - 8000d46: 58d4 ldr r4, [r2, r3] - str r4, [r0, r3] - 8000d48: 50c4 str r4, [r0, r3] - adds r3, r3, #4 - 8000d4a: 3304 adds r3, #4 - -08000d4c : - -LoopCopyDataInit: - adds r4, r0, r3 - 8000d4c: 18c4 adds r4, r0, r3 - cmp r4, r1 - 8000d4e: 428c cmp r4, r1 - bcc CopyDataInit - 8000d50: d3f9 bcc.n 8000d46 - -/* Zero fill the bss segment. */ - ldr r2, =_sbss - 8000d52: 4a09 ldr r2, [pc, #36] @ (8000d78 ) - ldr r4, =_ebss - 8000d54: 4c09 ldr r4, [pc, #36] @ (8000d7c ) - movs r3, #0 - 8000d56: 2300 movs r3, #0 - b LoopFillZerobss - 8000d58: e001 b.n 8000d5e - -08000d5a : - -FillZerobss: - str r3, [r2] - 8000d5a: 6013 str r3, [r2, #0] - adds r2, r2, #4 - 8000d5c: 3204 adds r2, #4 - -08000d5e : - -LoopFillZerobss: - cmp r2, r4 - 8000d5e: 42a2 cmp r2, r4 - bcc FillZerobss - 8000d60: d3fb bcc.n 8000d5a - -/* Call static constructors */ - bl __libc_init_array - 8000d62: f008 f8fb bl 8008f5c <__libc_init_array> -/* Call the application's entry point.*/ - bl main - 8000d66: f7ff fa29 bl 80001bc
- bx lr - 8000d6a: 4770 bx lr - ldr r0, =_sdata - 8000d6c: 20000000 .word 0x20000000 - ldr r1, =_edata - 8000d70: 200001cc .word 0x200001cc - ldr r2, =_sidata - 8000d74: 0800992c .word 0x0800992c - ldr r2, =_sbss - 8000d78: 200001cc .word 0x200001cc - ldr r4, =_ebss - 8000d7c: 20001750 .word 0x20001750 - -08000d80 : - * @retval : None -*/ - .section .text.Default_Handler,"ax",%progbits -Default_Handler: -Infinite_Loop: - b Infinite_Loop - 8000d80: e7fe b.n 8000d80 - ... - -08000d84 : - * 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) -{ - 8000d84: b580 push {r7, lr} - 8000d86: af00 add r7, sp, #0 - defined(STM32F102x6) || defined(STM32F102xB) || \ - defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || \ - defined(STM32F105xC) || defined(STM32F107xC) - - /* Prefetch buffer is not available on value line devices */ - __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); - 8000d88: 4b08 ldr r3, [pc, #32] @ (8000dac ) - 8000d8a: 681b ldr r3, [r3, #0] - 8000d8c: 4a07 ldr r2, [pc, #28] @ (8000dac ) - 8000d8e: f043 0310 orr.w r3, r3, #16 - 8000d92: 6013 str r3, [r2, #0] -#endif -#endif /* PREFETCH_ENABLE */ - - /* Set Interrupt Group Priority */ - HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); - 8000d94: 2003 movs r0, #3 - 8000d96: f000 fb35 bl 8001404 - - /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */ - HAL_InitTick(TICK_INT_PRIORITY); - 8000d9a: 200f movs r0, #15 - 8000d9c: f000 f808 bl 8000db0 - - /* Init the low level hardware */ - HAL_MspInit(); - 8000da0: f7ff fde4 bl 800096c - - /* Return function status */ - return HAL_OK; - 8000da4: 2300 movs r3, #0 -} - 8000da6: 4618 mov r0, r3 - 8000da8: bd80 pop {r7, pc} - 8000daa: bf00 nop - 8000dac: 40022000 .word 0x40022000 - -08000db0 : - * implementation in user file. - * @param TickPriority Tick interrupt priority. - * @retval HAL status - */ -__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) -{ - 8000db0: b580 push {r7, lr} - 8000db2: b082 sub sp, #8 - 8000db4: af00 add r7, sp, #0 - 8000db6: 6078 str r0, [r7, #4] - /* Configure the SysTick to have interrupt in 1ms time basis*/ - if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U) - 8000db8: 4b12 ldr r3, [pc, #72] @ (8000e04 ) - 8000dba: 681a ldr r2, [r3, #0] - 8000dbc: 4b12 ldr r3, [pc, #72] @ (8000e08 ) - 8000dbe: 781b ldrb r3, [r3, #0] - 8000dc0: 4619 mov r1, r3 - 8000dc2: f44f 737a mov.w r3, #1000 @ 0x3e8 - 8000dc6: fbb3 f3f1 udiv r3, r3, r1 - 8000dca: fbb2 f3f3 udiv r3, r2, r3 - 8000dce: 4618 mov r0, r3 - 8000dd0: f000 fb4d bl 800146e - 8000dd4: 4603 mov r3, r0 - 8000dd6: 2b00 cmp r3, #0 - 8000dd8: d001 beq.n 8000dde - { - return HAL_ERROR; - 8000dda: 2301 movs r3, #1 - 8000ddc: e00e b.n 8000dfc - } - - /* Configure the SysTick IRQ priority */ - if (TickPriority < (1UL << __NVIC_PRIO_BITS)) - 8000dde: 687b ldr r3, [r7, #4] - 8000de0: 2b0f cmp r3, #15 - 8000de2: d80a bhi.n 8000dfa - { - HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); - 8000de4: 2200 movs r2, #0 - 8000de6: 6879 ldr r1, [r7, #4] - 8000de8: f04f 30ff mov.w r0, #4294967295 - 8000dec: f000 fb15 bl 800141a - uwTickPrio = TickPriority; - 8000df0: 4a06 ldr r2, [pc, #24] @ (8000e0c ) - 8000df2: 687b ldr r3, [r7, #4] - 8000df4: 6013 str r3, [r2, #0] - { - return HAL_ERROR; - } - - /* Return function status */ - return HAL_OK; - 8000df6: 2300 movs r3, #0 - 8000df8: e000 b.n 8000dfc - return HAL_ERROR; - 8000dfa: 2301 movs r3, #1 -} - 8000dfc: 4618 mov r0, r3 - 8000dfe: 3708 adds r7, #8 - 8000e00: 46bd mov sp, r7 - 8000e02: bd80 pop {r7, pc} - 8000e04: 20000000 .word 0x20000000 - 8000e08: 20000008 .word 0x20000008 - 8000e0c: 20000004 .word 0x20000004 - -08000e10 : - * @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) -{ - 8000e10: b480 push {r7} - 8000e12: af00 add r7, sp, #0 - uwTick += uwTickFreq; - 8000e14: 4b05 ldr r3, [pc, #20] @ (8000e2c ) - 8000e16: 781b ldrb r3, [r3, #0] - 8000e18: 461a mov r2, r3 - 8000e1a: 4b05 ldr r3, [pc, #20] @ (8000e30 ) - 8000e1c: 681b ldr r3, [r3, #0] - 8000e1e: 4413 add r3, r2 - 8000e20: 4a03 ldr r2, [pc, #12] @ (8000e30 ) - 8000e22: 6013 str r3, [r2, #0] -} - 8000e24: bf00 nop - 8000e26: 46bd mov sp, r7 - 8000e28: bc80 pop {r7} - 8000e2a: 4770 bx lr - 8000e2c: 20000008 .word 0x20000008 - 8000e30: 20000340 .word 0x20000340 - -08000e34 : - * @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) -{ - 8000e34: b480 push {r7} - 8000e36: af00 add r7, sp, #0 - return uwTick; - 8000e38: 4b02 ldr r3, [pc, #8] @ (8000e44 ) - 8000e3a: 681b ldr r3, [r3, #0] -} - 8000e3c: 4618 mov r0, r3 - 8000e3e: 46bd mov sp, r7 - 8000e40: bc80 pop {r7} - 8000e42: 4770 bx lr - 8000e44: 20000340 .word 0x20000340 - -08000e48 : - * of structure "ADC_InitTypeDef". - * @param hadc: ADC handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc) -{ - 8000e48: b580 push {r7, lr} - 8000e4a: b086 sub sp, #24 - 8000e4c: af00 add r7, sp, #0 - 8000e4e: 6078 str r0, [r7, #4] - HAL_StatusTypeDef tmp_hal_status = HAL_OK; - 8000e50: 2300 movs r3, #0 - 8000e52: 75fb strb r3, [r7, #23] - uint32_t tmp_cr1 = 0U; - 8000e54: 2300 movs r3, #0 - 8000e56: 613b str r3, [r7, #16] - uint32_t tmp_cr2 = 0U; - 8000e58: 2300 movs r3, #0 - 8000e5a: 60bb str r3, [r7, #8] - uint32_t tmp_sqr1 = 0U; - 8000e5c: 2300 movs r3, #0 - 8000e5e: 60fb str r3, [r7, #12] - - /* Check ADC handle */ - if(hadc == NULL) - 8000e60: 687b ldr r3, [r7, #4] - 8000e62: 2b00 cmp r3, #0 - 8000e64: d101 bne.n 8000e6a - { - return HAL_ERROR; - 8000e66: 2301 movs r3, #1 - 8000e68: e0be b.n 8000fe8 - assert_param(IS_ADC_DATA_ALIGN(hadc->Init.DataAlign)); - assert_param(IS_ADC_SCAN_MODE(hadc->Init.ScanConvMode)); - assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); - assert_param(IS_ADC_EXTTRIG(hadc->Init.ExternalTrigConv)); - - if(hadc->Init.ScanConvMode != ADC_SCAN_DISABLE) - 8000e6a: 687b ldr r3, [r7, #4] - 8000e6c: 689b ldr r3, [r3, #8] - 8000e6e: 2b00 cmp r3, #0 - /* Refer to header of this file for more details on clock enabling */ - /* procedure. */ - - /* Actions performed only if ADC is coming from state reset: */ - /* - Initialization of ADC MSP */ - if (hadc->State == HAL_ADC_STATE_RESET) - 8000e70: 687b ldr r3, [r7, #4] - 8000e72: 6a9b ldr r3, [r3, #40] @ 0x28 - 8000e74: 2b00 cmp r3, #0 - 8000e76: d109 bne.n 8000e8c - { - /* Initialize ADC error code */ - ADC_CLEAR_ERRORCODE(hadc); - 8000e78: 687b ldr r3, [r7, #4] - 8000e7a: 2200 movs r2, #0 - 8000e7c: 62da str r2, [r3, #44] @ 0x2c - - /* Allocate lock resource and initialize it */ - hadc->Lock = HAL_UNLOCKED; - 8000e7e: 687b ldr r3, [r7, #4] - 8000e80: 2200 movs r2, #0 - 8000e82: f883 2024 strb.w r2, [r3, #36] @ 0x24 - - /* Init the low level hardware */ - hadc->MspInitCallback(hadc); -#else - /* Init the low level hardware */ - HAL_ADC_MspInit(hadc); - 8000e86: 6878 ldr r0, [r7, #4] - 8000e88: f7ff fda2 bl 80009d0 - /* Stop potential conversion on going, on regular and injected groups */ - /* Disable ADC peripheral */ - /* Note: In case of ADC already enabled, precaution to not launch an */ - /* unwanted conversion while modifying register CR2 by writing 1 to */ - /* bit ADON. */ - tmp_hal_status = ADC_ConversionStop_Disable(hadc); - 8000e8c: 6878 ldr r0, [r7, #4] - 8000e8e: f000 f9ab bl 80011e8 - 8000e92: 4603 mov r3, r0 - 8000e94: 75fb strb r3, [r7, #23] - - - /* Configuration of ADC parameters if previous preliminary actions are */ - /* correctly completed. */ - if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL) && - 8000e96: 687b ldr r3, [r7, #4] - 8000e98: 6a9b ldr r3, [r3, #40] @ 0x28 - 8000e9a: f003 0310 and.w r3, r3, #16 - 8000e9e: 2b00 cmp r3, #0 - 8000ea0: f040 8099 bne.w 8000fd6 - 8000ea4: 7dfb ldrb r3, [r7, #23] - 8000ea6: 2b00 cmp r3, #0 - 8000ea8: f040 8095 bne.w 8000fd6 - (tmp_hal_status == HAL_OK) ) - { - /* Set ADC state */ - ADC_STATE_CLR_SET(hadc->State, - 8000eac: 687b ldr r3, [r7, #4] - 8000eae: 6a9b ldr r3, [r3, #40] @ 0x28 - 8000eb0: f423 5388 bic.w r3, r3, #4352 @ 0x1100 - 8000eb4: f023 0302 bic.w r3, r3, #2 - 8000eb8: f043 0202 orr.w r2, r3, #2 - 8000ebc: 687b ldr r3, [r7, #4] - 8000ebe: 629a str r2, [r3, #40] @ 0x28 - /* - continuous conversion mode */ - /* Note: External trigger polarity (ADC_CR2_EXTTRIG) is set into */ - /* HAL_ADC_Start_xxx functions because if set in this function, */ - /* a conversion on injected group would start a conversion also on */ - /* regular group after ADC enabling. */ - tmp_cr2 |= (hadc->Init.DataAlign | - 8000ec0: 687b ldr r3, [r7, #4] - 8000ec2: 685a ldr r2, [r3, #4] - ADC_CFGR_EXTSEL(hadc, hadc->Init.ExternalTrigConv) | - 8000ec4: 687b ldr r3, [r7, #4] - 8000ec6: 69db ldr r3, [r3, #28] - tmp_cr2 |= (hadc->Init.DataAlign | - 8000ec8: 431a orrs r2, r3 - ADC_CR2_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) ); - 8000eca: 687b ldr r3, [r7, #4] - 8000ecc: 7b1b ldrb r3, [r3, #12] - 8000ece: 005b lsls r3, r3, #1 - ADC_CFGR_EXTSEL(hadc, hadc->Init.ExternalTrigConv) | - 8000ed0: 4313 orrs r3, r2 - tmp_cr2 |= (hadc->Init.DataAlign | - 8000ed2: 68ba ldr r2, [r7, #8] - 8000ed4: 4313 orrs r3, r2 - 8000ed6: 60bb str r3, [r7, #8] - - /* Configuration of ADC: */ - /* - scan mode */ - /* - discontinuous mode disable/enable */ - /* - discontinuous mode number of conversions */ - tmp_cr1 |= (ADC_CR1_SCAN_SET(hadc->Init.ScanConvMode)); - 8000ed8: 687b ldr r3, [r7, #4] - 8000eda: 689b ldr r3, [r3, #8] - 8000edc: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 8000ee0: d003 beq.n 8000eea - 8000ee2: 687b ldr r3, [r7, #4] - 8000ee4: 689b ldr r3, [r3, #8] - 8000ee6: 2b01 cmp r3, #1 - 8000ee8: d102 bne.n 8000ef0 - 8000eea: f44f 7380 mov.w r3, #256 @ 0x100 - 8000eee: e000 b.n 8000ef2 - 8000ef0: 2300 movs r3, #0 - 8000ef2: 693a ldr r2, [r7, #16] - 8000ef4: 4313 orrs r3, r2 - 8000ef6: 613b str r3, [r7, #16] - - /* Enable discontinuous mode only if continuous mode is disabled */ - /* Note: If parameter "Init.ScanConvMode" is set to disable, parameter */ - /* discontinuous is set anyway, but will have no effect on ADC HW. */ - if (hadc->Init.DiscontinuousConvMode == ENABLE) - 8000ef8: 687b ldr r3, [r7, #4] - 8000efa: 7d1b ldrb r3, [r3, #20] - 8000efc: 2b01 cmp r3, #1 - 8000efe: d119 bne.n 8000f34 - { - if (hadc->Init.ContinuousConvMode == DISABLE) - 8000f00: 687b ldr r3, [r7, #4] - 8000f02: 7b1b ldrb r3, [r3, #12] - 8000f04: 2b00 cmp r3, #0 - 8000f06: d109 bne.n 8000f1c - { - /* Enable the selected ADC regular discontinuous mode */ - /* Set the number of channels to be converted in discontinuous mode */ - SET_BIT(tmp_cr1, ADC_CR1_DISCEN | - 8000f08: 687b ldr r3, [r7, #4] - 8000f0a: 699b ldr r3, [r3, #24] - 8000f0c: 3b01 subs r3, #1 - 8000f0e: 035a lsls r2, r3, #13 - 8000f10: 693b ldr r3, [r7, #16] - 8000f12: 4313 orrs r3, r2 - 8000f14: f443 6300 orr.w r3, r3, #2048 @ 0x800 - 8000f18: 613b str r3, [r7, #16] - 8000f1a: e00b b.n 8000f34 - { - /* ADC regular group settings continuous and sequencer discontinuous*/ - /* cannot be enabled simultaneously. */ - - /* Update ADC state machine to error */ - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); - 8000f1c: 687b ldr r3, [r7, #4] - 8000f1e: 6a9b ldr r3, [r3, #40] @ 0x28 - 8000f20: f043 0220 orr.w r2, r3, #32 - 8000f24: 687b ldr r3, [r7, #4] - 8000f26: 629a str r2, [r3, #40] @ 0x28 - - /* Set ADC error code to ADC IP internal error */ - SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8000f28: 687b ldr r3, [r7, #4] - 8000f2a: 6adb ldr r3, [r3, #44] @ 0x2c - 8000f2c: f043 0201 orr.w r2, r3, #1 - 8000f30: 687b ldr r3, [r7, #4] - 8000f32: 62da str r2, [r3, #44] @ 0x2c - } - } - - /* Update ADC configuration register CR1 with previous settings */ - MODIFY_REG(hadc->Instance->CR1, - 8000f34: 687b ldr r3, [r7, #4] - 8000f36: 681b ldr r3, [r3, #0] - 8000f38: 685b ldr r3, [r3, #4] - 8000f3a: f423 4169 bic.w r1, r3, #59648 @ 0xe900 - 8000f3e: 687b ldr r3, [r7, #4] - 8000f40: 681b ldr r3, [r3, #0] - 8000f42: 693a ldr r2, [r7, #16] - 8000f44: 430a orrs r2, r1 - 8000f46: 605a str r2, [r3, #4] - ADC_CR1_DISCEN | - ADC_CR1_DISCNUM , - tmp_cr1 ); - - /* Update ADC configuration register CR2 with previous settings */ - MODIFY_REG(hadc->Instance->CR2, - 8000f48: 687b ldr r3, [r7, #4] - 8000f4a: 681b ldr r3, [r3, #0] - 8000f4c: 689a ldr r2, [r3, #8] - 8000f4e: 4b28 ldr r3, [pc, #160] @ (8000ff0 ) - 8000f50: 4013 ands r3, r2 - 8000f52: 687a ldr r2, [r7, #4] - 8000f54: 6812 ldr r2, [r2, #0] - 8000f56: 68b9 ldr r1, [r7, #8] - 8000f58: 430b orrs r3, r1 - 8000f5a: 6093 str r3, [r2, #8] - /* Note: Scan mode is present by hardware on this device and, if */ - /* disabled, discards automatically nb of conversions. Anyway, nb of */ - /* conversions is forced to 0x00 for alignment over all STM32 devices. */ - /* - if scan mode is enabled, regular channels sequence length is set to */ - /* parameter "NbrOfConversion" */ - if (ADC_CR1_SCAN_SET(hadc->Init.ScanConvMode) == ADC_SCAN_ENABLE) - 8000f5c: 687b ldr r3, [r7, #4] - 8000f5e: 689b ldr r3, [r3, #8] - 8000f60: f5b3 7f80 cmp.w r3, #256 @ 0x100 - 8000f64: d003 beq.n 8000f6e - 8000f66: 687b ldr r3, [r7, #4] - 8000f68: 689b ldr r3, [r3, #8] - 8000f6a: 2b01 cmp r3, #1 - 8000f6c: d104 bne.n 8000f78 - { - tmp_sqr1 = ADC_SQR1_L_SHIFT(hadc->Init.NbrOfConversion); - 8000f6e: 687b ldr r3, [r7, #4] - 8000f70: 691b ldr r3, [r3, #16] - 8000f72: 3b01 subs r3, #1 - 8000f74: 051b lsls r3, r3, #20 - 8000f76: 60fb str r3, [r7, #12] - } - - MODIFY_REG(hadc->Instance->SQR1, - 8000f78: 687b ldr r3, [r7, #4] - 8000f7a: 681b ldr r3, [r3, #0] - 8000f7c: 6adb ldr r3, [r3, #44] @ 0x2c - 8000f7e: f423 0170 bic.w r1, r3, #15728640 @ 0xf00000 - 8000f82: 687b ldr r3, [r7, #4] - 8000f84: 681b ldr r3, [r3, #0] - 8000f86: 68fa ldr r2, [r7, #12] - 8000f88: 430a orrs r2, r1 - 8000f8a: 62da str r2, [r3, #44] @ 0x2c - /* ensure of no potential problem of ADC core IP clocking. */ - /* Check through register CR2 (excluding bits set in other functions: */ - /* execution control bits (ADON, JSWSTART, SWSTART), regular group bits */ - /* (DMA), injected group bits (JEXTTRIG and JEXTSEL), channel internal */ - /* measurement path bit (TSVREFE). */ - if (READ_BIT(hadc->Instance->CR2, ~(ADC_CR2_ADON | ADC_CR2_DMA | - 8000f8c: 687b ldr r3, [r7, #4] - 8000f8e: 681b ldr r3, [r3, #0] - 8000f90: 689a ldr r2, [r3, #8] - 8000f92: 4b18 ldr r3, [pc, #96] @ (8000ff4 ) - 8000f94: 4013 ands r3, r2 - 8000f96: 68ba ldr r2, [r7, #8] - 8000f98: 429a cmp r2, r3 - 8000f9a: d10b bne.n 8000fb4 - ADC_CR2_JEXTTRIG | ADC_CR2_JEXTSEL | - ADC_CR2_TSVREFE )) - == tmp_cr2) - { - /* Set ADC error code to none */ - ADC_CLEAR_ERRORCODE(hadc); - 8000f9c: 687b ldr r3, [r7, #4] - 8000f9e: 2200 movs r2, #0 - 8000fa0: 62da str r2, [r3, #44] @ 0x2c - - /* Set the ADC state */ - ADC_STATE_CLR_SET(hadc->State, - 8000fa2: 687b ldr r3, [r7, #4] - 8000fa4: 6a9b ldr r3, [r3, #40] @ 0x28 - 8000fa6: f023 0303 bic.w r3, r3, #3 - 8000faa: f043 0201 orr.w r2, r3, #1 - 8000fae: 687b ldr r3, [r7, #4] - 8000fb0: 629a str r2, [r3, #40] @ 0x28 - if (READ_BIT(hadc->Instance->CR2, ~(ADC_CR2_ADON | ADC_CR2_DMA | - 8000fb2: e018 b.n 8000fe6 - HAL_ADC_STATE_READY); - } - else - { - /* Update ADC state machine to error */ - ADC_STATE_CLR_SET(hadc->State, - 8000fb4: 687b ldr r3, [r7, #4] - 8000fb6: 6a9b ldr r3, [r3, #40] @ 0x28 - 8000fb8: f023 0312 bic.w r3, r3, #18 - 8000fbc: f043 0210 orr.w r2, r3, #16 - 8000fc0: 687b ldr r3, [r7, #4] - 8000fc2: 629a str r2, [r3, #40] @ 0x28 - HAL_ADC_STATE_BUSY_INTERNAL, - HAL_ADC_STATE_ERROR_INTERNAL); - - /* Set ADC error code to ADC IP internal error */ - SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8000fc4: 687b ldr r3, [r7, #4] - 8000fc6: 6adb ldr r3, [r3, #44] @ 0x2c - 8000fc8: f043 0201 orr.w r2, r3, #1 - 8000fcc: 687b ldr r3, [r7, #4] - 8000fce: 62da str r2, [r3, #44] @ 0x2c - - tmp_hal_status = HAL_ERROR; - 8000fd0: 2301 movs r3, #1 - 8000fd2: 75fb strb r3, [r7, #23] - if (READ_BIT(hadc->Instance->CR2, ~(ADC_CR2_ADON | ADC_CR2_DMA | - 8000fd4: e007 b.n 8000fe6 - - } - else - { - /* Update ADC state machine to error */ - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 8000fd6: 687b ldr r3, [r7, #4] - 8000fd8: 6a9b ldr r3, [r3, #40] @ 0x28 - 8000fda: f043 0210 orr.w r2, r3, #16 - 8000fde: 687b ldr r3, [r7, #4] - 8000fe0: 629a str r2, [r3, #40] @ 0x28 - - tmp_hal_status = HAL_ERROR; - 8000fe2: 2301 movs r3, #1 - 8000fe4: 75fb strb r3, [r7, #23] - } - - /* Return function status */ - return tmp_hal_status; - 8000fe6: 7dfb ldrb r3, [r7, #23] -} - 8000fe8: 4618 mov r0, r3 - 8000fea: 3718 adds r7, #24 - 8000fec: 46bd mov sp, r7 - 8000fee: bd80 pop {r7, pc} - 8000ff0: ffe1f7fd .word 0xffe1f7fd - 8000ff4: ff1f0efe .word 0xff1f0efe - -08000ff8 : - * @param hadc: ADC handle - * @param sConfig: Structure of ADC channel for regular group. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig) -{ - 8000ff8: b480 push {r7} - 8000ffa: b085 sub sp, #20 - 8000ffc: af00 add r7, sp, #0 - 8000ffe: 6078 str r0, [r7, #4] - 8001000: 6039 str r1, [r7, #0] - HAL_StatusTypeDef tmp_hal_status = HAL_OK; - 8001002: 2300 movs r3, #0 - 8001004: 73fb strb r3, [r7, #15] - __IO uint32_t wait_loop_index = 0U; - 8001006: 2300 movs r3, #0 - 8001008: 60bb str r3, [r7, #8] - assert_param(IS_ADC_CHANNEL(sConfig->Channel)); - assert_param(IS_ADC_REGULAR_RANK(sConfig->Rank)); - assert_param(IS_ADC_SAMPLE_TIME(sConfig->SamplingTime)); - - /* Process locked */ - __HAL_LOCK(hadc); - 800100a: 687b ldr r3, [r7, #4] - 800100c: f893 3024 ldrb.w r3, [r3, #36] @ 0x24 - 8001010: 2b01 cmp r3, #1 - 8001012: d101 bne.n 8001018 - 8001014: 2302 movs r3, #2 - 8001016: e0dc b.n 80011d2 - 8001018: 687b ldr r3, [r7, #4] - 800101a: 2201 movs r2, #1 - 800101c: f883 2024 strb.w r2, [r3, #36] @ 0x24 - - - /* Regular sequence configuration */ - /* For Rank 1 to 6 */ - if (sConfig->Rank < 7U) - 8001020: 683b ldr r3, [r7, #0] - 8001022: 685b ldr r3, [r3, #4] - 8001024: 2b06 cmp r3, #6 - 8001026: d81c bhi.n 8001062 - { - MODIFY_REG(hadc->Instance->SQR3 , - 8001028: 687b ldr r3, [r7, #4] - 800102a: 681b ldr r3, [r3, #0] - 800102c: 6b59 ldr r1, [r3, #52] @ 0x34 - 800102e: 683b ldr r3, [r7, #0] - 8001030: 685a ldr r2, [r3, #4] - 8001032: 4613 mov r3, r2 - 8001034: 009b lsls r3, r3, #2 - 8001036: 4413 add r3, r2 - 8001038: 3b05 subs r3, #5 - 800103a: 221f movs r2, #31 - 800103c: fa02 f303 lsl.w r3, r2, r3 - 8001040: 43db mvns r3, r3 - 8001042: 4019 ands r1, r3 - 8001044: 683b ldr r3, [r7, #0] - 8001046: 6818 ldr r0, [r3, #0] - 8001048: 683b ldr r3, [r7, #0] - 800104a: 685a ldr r2, [r3, #4] - 800104c: 4613 mov r3, r2 - 800104e: 009b lsls r3, r3, #2 - 8001050: 4413 add r3, r2 - 8001052: 3b05 subs r3, #5 - 8001054: fa00 f203 lsl.w r2, r0, r3 - 8001058: 687b ldr r3, [r7, #4] - 800105a: 681b ldr r3, [r3, #0] - 800105c: 430a orrs r2, r1 - 800105e: 635a str r2, [r3, #52] @ 0x34 - 8001060: e03c b.n 80010dc - ADC_SQR3_RK(ADC_SQR3_SQ1, sConfig->Rank) , - ADC_SQR3_RK(sConfig->Channel, sConfig->Rank) ); - } - /* For Rank 7 to 12 */ - else if (sConfig->Rank < 13U) - 8001062: 683b ldr r3, [r7, #0] - 8001064: 685b ldr r3, [r3, #4] - 8001066: 2b0c cmp r3, #12 - 8001068: d81c bhi.n 80010a4 - { - MODIFY_REG(hadc->Instance->SQR2 , - 800106a: 687b ldr r3, [r7, #4] - 800106c: 681b ldr r3, [r3, #0] - 800106e: 6b19 ldr r1, [r3, #48] @ 0x30 - 8001070: 683b ldr r3, [r7, #0] - 8001072: 685a ldr r2, [r3, #4] - 8001074: 4613 mov r3, r2 - 8001076: 009b lsls r3, r3, #2 - 8001078: 4413 add r3, r2 - 800107a: 3b23 subs r3, #35 @ 0x23 - 800107c: 221f movs r2, #31 - 800107e: fa02 f303 lsl.w r3, r2, r3 - 8001082: 43db mvns r3, r3 - 8001084: 4019 ands r1, r3 - 8001086: 683b ldr r3, [r7, #0] - 8001088: 6818 ldr r0, [r3, #0] - 800108a: 683b ldr r3, [r7, #0] - 800108c: 685a ldr r2, [r3, #4] - 800108e: 4613 mov r3, r2 - 8001090: 009b lsls r3, r3, #2 - 8001092: 4413 add r3, r2 - 8001094: 3b23 subs r3, #35 @ 0x23 - 8001096: fa00 f203 lsl.w r2, r0, r3 - 800109a: 687b ldr r3, [r7, #4] - 800109c: 681b ldr r3, [r3, #0] - 800109e: 430a orrs r2, r1 - 80010a0: 631a str r2, [r3, #48] @ 0x30 - 80010a2: e01b b.n 80010dc - ADC_SQR2_RK(sConfig->Channel, sConfig->Rank) ); - } - /* For Rank 13 to 16 */ - else - { - MODIFY_REG(hadc->Instance->SQR1 , - 80010a4: 687b ldr r3, [r7, #4] - 80010a6: 681b ldr r3, [r3, #0] - 80010a8: 6ad9 ldr r1, [r3, #44] @ 0x2c - 80010aa: 683b ldr r3, [r7, #0] - 80010ac: 685a ldr r2, [r3, #4] - 80010ae: 4613 mov r3, r2 - 80010b0: 009b lsls r3, r3, #2 - 80010b2: 4413 add r3, r2 - 80010b4: 3b41 subs r3, #65 @ 0x41 - 80010b6: 221f movs r2, #31 - 80010b8: fa02 f303 lsl.w r3, r2, r3 - 80010bc: 43db mvns r3, r3 - 80010be: 4019 ands r1, r3 - 80010c0: 683b ldr r3, [r7, #0] - 80010c2: 6818 ldr r0, [r3, #0] - 80010c4: 683b ldr r3, [r7, #0] - 80010c6: 685a ldr r2, [r3, #4] - 80010c8: 4613 mov r3, r2 - 80010ca: 009b lsls r3, r3, #2 - 80010cc: 4413 add r3, r2 - 80010ce: 3b41 subs r3, #65 @ 0x41 - 80010d0: fa00 f203 lsl.w r2, r0, r3 - 80010d4: 687b ldr r3, [r7, #4] - 80010d6: 681b ldr r3, [r3, #0] - 80010d8: 430a orrs r2, r1 - 80010da: 62da str r2, [r3, #44] @ 0x2c - } - - - /* Channel sampling time configuration */ - /* For channels 10 to 17 */ - if (sConfig->Channel >= ADC_CHANNEL_10) - 80010dc: 683b ldr r3, [r7, #0] - 80010de: 681b ldr r3, [r3, #0] - 80010e0: 2b09 cmp r3, #9 - 80010e2: d91c bls.n 800111e - { - MODIFY_REG(hadc->Instance->SMPR1 , - 80010e4: 687b ldr r3, [r7, #4] - 80010e6: 681b ldr r3, [r3, #0] - 80010e8: 68d9 ldr r1, [r3, #12] - 80010ea: 683b ldr r3, [r7, #0] - 80010ec: 681a ldr r2, [r3, #0] - 80010ee: 4613 mov r3, r2 - 80010f0: 005b lsls r3, r3, #1 - 80010f2: 4413 add r3, r2 - 80010f4: 3b1e subs r3, #30 - 80010f6: 2207 movs r2, #7 - 80010f8: fa02 f303 lsl.w r3, r2, r3 - 80010fc: 43db mvns r3, r3 - 80010fe: 4019 ands r1, r3 - 8001100: 683b ldr r3, [r7, #0] - 8001102: 6898 ldr r0, [r3, #8] - 8001104: 683b ldr r3, [r7, #0] - 8001106: 681a ldr r2, [r3, #0] - 8001108: 4613 mov r3, r2 - 800110a: 005b lsls r3, r3, #1 - 800110c: 4413 add r3, r2 - 800110e: 3b1e subs r3, #30 - 8001110: fa00 f203 lsl.w r2, r0, r3 - 8001114: 687b ldr r3, [r7, #4] - 8001116: 681b ldr r3, [r3, #0] - 8001118: 430a orrs r2, r1 - 800111a: 60da str r2, [r3, #12] - 800111c: e019 b.n 8001152 - ADC_SMPR1(ADC_SMPR1_SMP10, sConfig->Channel) , - ADC_SMPR1(sConfig->SamplingTime, sConfig->Channel) ); - } - else /* For channels 0 to 9 */ - { - MODIFY_REG(hadc->Instance->SMPR2 , - 800111e: 687b ldr r3, [r7, #4] - 8001120: 681b ldr r3, [r3, #0] - 8001122: 6919 ldr r1, [r3, #16] - 8001124: 683b ldr r3, [r7, #0] - 8001126: 681a ldr r2, [r3, #0] - 8001128: 4613 mov r3, r2 - 800112a: 005b lsls r3, r3, #1 - 800112c: 4413 add r3, r2 - 800112e: 2207 movs r2, #7 - 8001130: fa02 f303 lsl.w r3, r2, r3 - 8001134: 43db mvns r3, r3 - 8001136: 4019 ands r1, r3 - 8001138: 683b ldr r3, [r7, #0] - 800113a: 6898 ldr r0, [r3, #8] - 800113c: 683b ldr r3, [r7, #0] - 800113e: 681a ldr r2, [r3, #0] - 8001140: 4613 mov r3, r2 - 8001142: 005b lsls r3, r3, #1 - 8001144: 4413 add r3, r2 - 8001146: fa00 f203 lsl.w r2, r0, r3 - 800114a: 687b ldr r3, [r7, #4] - 800114c: 681b ldr r3, [r3, #0] - 800114e: 430a orrs r2, r1 - 8001150: 611a str r2, [r3, #16] - ADC_SMPR2(sConfig->SamplingTime, sConfig->Channel) ); - } - - /* If ADC1 Channel_16 or Channel_17 is selected, enable Temperature sensor */ - /* and VREFINT measurement path. */ - if ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) || - 8001152: 683b ldr r3, [r7, #0] - 8001154: 681b ldr r3, [r3, #0] - 8001156: 2b10 cmp r3, #16 - 8001158: d003 beq.n 8001162 - (sConfig->Channel == ADC_CHANNEL_VREFINT) ) - 800115a: 683b ldr r3, [r7, #0] - 800115c: 681b ldr r3, [r3, #0] - if ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) || - 800115e: 2b11 cmp r3, #17 - 8001160: d132 bne.n 80011c8 - { - /* For STM32F1 devices with several ADC: Only ADC1 can access internal */ - /* measurement channels (VrefInt/TempSensor). If these channels are */ - /* intended to be set on other ADC instances, an error is reported. */ - if (hadc->Instance == ADC1) - 8001162: 687b ldr r3, [r7, #4] - 8001164: 681b ldr r3, [r3, #0] - 8001166: 4a1d ldr r2, [pc, #116] @ (80011dc ) - 8001168: 4293 cmp r3, r2 - 800116a: d125 bne.n 80011b8 - { - if (READ_BIT(hadc->Instance->CR2, ADC_CR2_TSVREFE) == RESET) - 800116c: 687b ldr r3, [r7, #4] - 800116e: 681b ldr r3, [r3, #0] - 8001170: 689b ldr r3, [r3, #8] - 8001172: f403 0300 and.w r3, r3, #8388608 @ 0x800000 - 8001176: 2b00 cmp r3, #0 - 8001178: d126 bne.n 80011c8 - { - SET_BIT(hadc->Instance->CR2, ADC_CR2_TSVREFE); - 800117a: 687b ldr r3, [r7, #4] - 800117c: 681b ldr r3, [r3, #0] - 800117e: 689a ldr r2, [r3, #8] - 8001180: 687b ldr r3, [r7, #4] - 8001182: 681b ldr r3, [r3, #0] - 8001184: f442 0200 orr.w r2, r2, #8388608 @ 0x800000 - 8001188: 609a str r2, [r3, #8] - - if (sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) - 800118a: 683b ldr r3, [r7, #0] - 800118c: 681b ldr r3, [r3, #0] - 800118e: 2b10 cmp r3, #16 - 8001190: d11a bne.n 80011c8 - { - /* Delay for temperature sensor stabilization time */ - /* Compute number of CPU cycles to wait for */ - wait_loop_index = (ADC_TEMPSENSOR_DELAY_US * (SystemCoreClock / 1000000U)); - 8001192: 4b13 ldr r3, [pc, #76] @ (80011e0 ) - 8001194: 681b ldr r3, [r3, #0] - 8001196: 4a13 ldr r2, [pc, #76] @ (80011e4 ) - 8001198: fba2 2303 umull r2, r3, r2, r3 - 800119c: 0c9a lsrs r2, r3, #18 - 800119e: 4613 mov r3, r2 - 80011a0: 009b lsls r3, r3, #2 - 80011a2: 4413 add r3, r2 - 80011a4: 005b lsls r3, r3, #1 - 80011a6: 60bb str r3, [r7, #8] - while(wait_loop_index != 0U) - 80011a8: e002 b.n 80011b0 - { - wait_loop_index--; - 80011aa: 68bb ldr r3, [r7, #8] - 80011ac: 3b01 subs r3, #1 - 80011ae: 60bb str r3, [r7, #8] - while(wait_loop_index != 0U) - 80011b0: 68bb ldr r3, [r7, #8] - 80011b2: 2b00 cmp r3, #0 - 80011b4: d1f9 bne.n 80011aa - 80011b6: e007 b.n 80011c8 - } - } - else - { - /* Update ADC state machine to error */ - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); - 80011b8: 687b ldr r3, [r7, #4] - 80011ba: 6a9b ldr r3, [r3, #40] @ 0x28 - 80011bc: f043 0220 orr.w r2, r3, #32 - 80011c0: 687b ldr r3, [r7, #4] - 80011c2: 629a str r2, [r3, #40] @ 0x28 - - tmp_hal_status = HAL_ERROR; - 80011c4: 2301 movs r3, #1 - 80011c6: 73fb strb r3, [r7, #15] - } - } - - /* Process unlocked */ - __HAL_UNLOCK(hadc); - 80011c8: 687b ldr r3, [r7, #4] - 80011ca: 2200 movs r2, #0 - 80011cc: f883 2024 strb.w r2, [r3, #36] @ 0x24 - - /* Return function status */ - return tmp_hal_status; - 80011d0: 7bfb ldrb r3, [r7, #15] -} - 80011d2: 4618 mov r0, r3 - 80011d4: 3714 adds r7, #20 - 80011d6: 46bd mov sp, r7 - 80011d8: bc80 pop {r7} - 80011da: 4770 bx lr - 80011dc: 40012400 .word 0x40012400 - 80011e0: 20000000 .word 0x20000000 - 80011e4: 431bde83 .word 0x431bde83 - -080011e8 : - * stopped to disable the ADC. - * @param hadc: ADC handle - * @retval HAL status. - */ -HAL_StatusTypeDef ADC_ConversionStop_Disable(ADC_HandleTypeDef* hadc) -{ - 80011e8: b580 push {r7, lr} - 80011ea: b084 sub sp, #16 - 80011ec: af00 add r7, sp, #0 - 80011ee: 6078 str r0, [r7, #4] - uint32_t tickstart = 0U; - 80011f0: 2300 movs r3, #0 - 80011f2: 60fb str r3, [r7, #12] - - /* Verification if ADC is not already disabled */ - if (ADC_IS_ENABLE(hadc) != RESET) - 80011f4: 687b ldr r3, [r7, #4] - 80011f6: 681b ldr r3, [r3, #0] - 80011f8: 689b ldr r3, [r3, #8] - 80011fa: f003 0301 and.w r3, r3, #1 - 80011fe: 2b01 cmp r3, #1 - 8001200: d12e bne.n 8001260 - { - /* Disable the ADC peripheral */ - __HAL_ADC_DISABLE(hadc); - 8001202: 687b ldr r3, [r7, #4] - 8001204: 681b ldr r3, [r3, #0] - 8001206: 689a ldr r2, [r3, #8] - 8001208: 687b ldr r3, [r7, #4] - 800120a: 681b ldr r3, [r3, #0] - 800120c: f022 0201 bic.w r2, r2, #1 - 8001210: 609a str r2, [r3, #8] - - /* Get tick count */ - tickstart = HAL_GetTick(); - 8001212: f7ff fe0f bl 8000e34 - 8001216: 60f8 str r0, [r7, #12] - - /* Wait for ADC effectively disabled */ - while(ADC_IS_ENABLE(hadc) != RESET) - 8001218: e01b b.n 8001252 - { - if((HAL_GetTick() - tickstart) > ADC_DISABLE_TIMEOUT) - 800121a: f7ff fe0b bl 8000e34 - 800121e: 4602 mov r2, r0 - 8001220: 68fb ldr r3, [r7, #12] - 8001222: 1ad3 subs r3, r2, r3 - 8001224: 2b02 cmp r3, #2 - 8001226: d914 bls.n 8001252 - { - /* New check to avoid false timeout detection in case of preemption */ - if(ADC_IS_ENABLE(hadc) != RESET) - 8001228: 687b ldr r3, [r7, #4] - 800122a: 681b ldr r3, [r3, #0] - 800122c: 689b ldr r3, [r3, #8] - 800122e: f003 0301 and.w r3, r3, #1 - 8001232: 2b01 cmp r3, #1 - 8001234: d10d bne.n 8001252 - { - /* Update ADC state machine to error */ - SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 8001236: 687b ldr r3, [r7, #4] - 8001238: 6a9b ldr r3, [r3, #40] @ 0x28 - 800123a: f043 0210 orr.w r2, r3, #16 - 800123e: 687b ldr r3, [r7, #4] - 8001240: 629a str r2, [r3, #40] @ 0x28 - - /* Set ADC error code to ADC IP internal error */ - SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 8001242: 687b ldr r3, [r7, #4] - 8001244: 6adb ldr r3, [r3, #44] @ 0x2c - 8001246: f043 0201 orr.w r2, r3, #1 - 800124a: 687b ldr r3, [r7, #4] - 800124c: 62da str r2, [r3, #44] @ 0x2c - - return HAL_ERROR; - 800124e: 2301 movs r3, #1 - 8001250: e007 b.n 8001262 - while(ADC_IS_ENABLE(hadc) != RESET) - 8001252: 687b ldr r3, [r7, #4] - 8001254: 681b ldr r3, [r3, #0] - 8001256: 689b ldr r3, [r3, #8] - 8001258: f003 0301 and.w r3, r3, #1 - 800125c: 2b01 cmp r3, #1 - 800125e: d0dc beq.n 800121a - } - } - } - - /* Return HAL status */ - return HAL_OK; - 8001260: 2300 movs r3, #0 -} - 8001262: 4618 mov r0, r3 - 8001264: 3710 adds r7, #16 - 8001266: 46bd mov sp, r7 - 8001268: bd80 pop {r7, pc} - ... - -0800126c <__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) -{ - 800126c: b480 push {r7} - 800126e: b085 sub sp, #20 - 8001270: af00 add r7, sp, #0 - 8001272: 6078 str r0, [r7, #4] - uint32_t reg_value; - uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 8001274: 687b ldr r3, [r7, #4] - 8001276: f003 0307 and.w r3, r3, #7 - 800127a: 60fb str r3, [r7, #12] - - reg_value = SCB->AIRCR; /* read old register configuration */ - 800127c: 4b0c ldr r3, [pc, #48] @ (80012b0 <__NVIC_SetPriorityGrouping+0x44>) - 800127e: 68db ldr r3, [r3, #12] - 8001280: 60bb str r3, [r7, #8] - reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ - 8001282: 68ba ldr r2, [r7, #8] - 8001284: f64f 03ff movw r3, #63743 @ 0xf8ff - 8001288: 4013 ands r3, r2 - 800128a: 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 */ - 800128c: 68fb ldr r3, [r7, #12] - 800128e: 021a lsls r2, r3, #8 - ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | - 8001290: 68bb ldr r3, [r7, #8] - 8001292: 4313 orrs r3, r2 - reg_value = (reg_value | - 8001294: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 - 8001298: f443 3300 orr.w r3, r3, #131072 @ 0x20000 - 800129c: 60bb str r3, [r7, #8] - SCB->AIRCR = reg_value; - 800129e: 4a04 ldr r2, [pc, #16] @ (80012b0 <__NVIC_SetPriorityGrouping+0x44>) - 80012a0: 68bb ldr r3, [r7, #8] - 80012a2: 60d3 str r3, [r2, #12] -} - 80012a4: bf00 nop - 80012a6: 3714 adds r7, #20 - 80012a8: 46bd mov sp, r7 - 80012aa: bc80 pop {r7} - 80012ac: 4770 bx lr - 80012ae: bf00 nop - 80012b0: e000ed00 .word 0xe000ed00 - -080012b4 <__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) -{ - 80012b4: b480 push {r7} - 80012b6: af00 add r7, sp, #0 - return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); - 80012b8: 4b04 ldr r3, [pc, #16] @ (80012cc <__NVIC_GetPriorityGrouping+0x18>) - 80012ba: 68db ldr r3, [r3, #12] - 80012bc: 0a1b lsrs r3, r3, #8 - 80012be: f003 0307 and.w r3, r3, #7 -} - 80012c2: 4618 mov r0, r3 - 80012c4: 46bd mov sp, r7 - 80012c6: bc80 pop {r7} - 80012c8: 4770 bx lr - 80012ca: bf00 nop - 80012cc: e000ed00 .word 0xe000ed00 - -080012d0 <__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) -{ - 80012d0: b480 push {r7} - 80012d2: b083 sub sp, #12 - 80012d4: af00 add r7, sp, #0 - 80012d6: 4603 mov r3, r0 - 80012d8: 71fb strb r3, [r7, #7] - if ((int32_t)(IRQn) >= 0) - 80012da: f997 3007 ldrsb.w r3, [r7, #7] - 80012de: 2b00 cmp r3, #0 - 80012e0: db0b blt.n 80012fa <__NVIC_EnableIRQ+0x2a> - { - NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); - 80012e2: 79fb ldrb r3, [r7, #7] - 80012e4: f003 021f and.w r2, r3, #31 - 80012e8: 4906 ldr r1, [pc, #24] @ (8001304 <__NVIC_EnableIRQ+0x34>) - 80012ea: f997 3007 ldrsb.w r3, [r7, #7] - 80012ee: 095b lsrs r3, r3, #5 - 80012f0: 2001 movs r0, #1 - 80012f2: fa00 f202 lsl.w r2, r0, r2 - 80012f6: f841 2023 str.w r2, [r1, r3, lsl #2] - } -} - 80012fa: bf00 nop - 80012fc: 370c adds r7, #12 - 80012fe: 46bd mov sp, r7 - 8001300: bc80 pop {r7} - 8001302: 4770 bx lr - 8001304: e000e100 .word 0xe000e100 - -08001308 <__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) -{ - 8001308: b480 push {r7} - 800130a: b083 sub sp, #12 - 800130c: af00 add r7, sp, #0 - 800130e: 4603 mov r3, r0 - 8001310: 6039 str r1, [r7, #0] - 8001312: 71fb strb r3, [r7, #7] - if ((int32_t)(IRQn) >= 0) - 8001314: f997 3007 ldrsb.w r3, [r7, #7] - 8001318: 2b00 cmp r3, #0 - 800131a: db0a blt.n 8001332 <__NVIC_SetPriority+0x2a> - { - NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 800131c: 683b ldr r3, [r7, #0] - 800131e: b2da uxtb r2, r3 - 8001320: 490c ldr r1, [pc, #48] @ (8001354 <__NVIC_SetPriority+0x4c>) - 8001322: f997 3007 ldrsb.w r3, [r7, #7] - 8001326: 0112 lsls r2, r2, #4 - 8001328: b2d2 uxtb r2, r2 - 800132a: 440b add r3, r1 - 800132c: 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); - } -} - 8001330: e00a b.n 8001348 <__NVIC_SetPriority+0x40> - SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 8001332: 683b ldr r3, [r7, #0] - 8001334: b2da uxtb r2, r3 - 8001336: 4908 ldr r1, [pc, #32] @ (8001358 <__NVIC_SetPriority+0x50>) - 8001338: 79fb ldrb r3, [r7, #7] - 800133a: f003 030f and.w r3, r3, #15 - 800133e: 3b04 subs r3, #4 - 8001340: 0112 lsls r2, r2, #4 - 8001342: b2d2 uxtb r2, r2 - 8001344: 440b add r3, r1 - 8001346: 761a strb r2, [r3, #24] -} - 8001348: bf00 nop - 800134a: 370c adds r7, #12 - 800134c: 46bd mov sp, r7 - 800134e: bc80 pop {r7} - 8001350: 4770 bx lr - 8001352: bf00 nop - 8001354: e000e100 .word 0xe000e100 - 8001358: e000ed00 .word 0xe000ed00 - -0800135c : - \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) -{ - 800135c: b480 push {r7} - 800135e: b089 sub sp, #36 @ 0x24 - 8001360: af00 add r7, sp, #0 - 8001362: 60f8 str r0, [r7, #12] - 8001364: 60b9 str r1, [r7, #8] - 8001366: 607a str r2, [r7, #4] - uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 8001368: 68fb ldr r3, [r7, #12] - 800136a: f003 0307 and.w r3, r3, #7 - 800136e: 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); - 8001370: 69fb ldr r3, [r7, #28] - 8001372: f1c3 0307 rsb r3, r3, #7 - 8001376: 2b04 cmp r3, #4 - 8001378: bf28 it cs - 800137a: 2304 movcs r3, #4 - 800137c: 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)); - 800137e: 69fb ldr r3, [r7, #28] - 8001380: 3304 adds r3, #4 - 8001382: 2b06 cmp r3, #6 - 8001384: d902 bls.n 800138c - 8001386: 69fb ldr r3, [r7, #28] - 8001388: 3b03 subs r3, #3 - 800138a: e000 b.n 800138e - 800138c: 2300 movs r3, #0 - 800138e: 617b str r3, [r7, #20] - - return ( - ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 8001390: f04f 32ff mov.w r2, #4294967295 - 8001394: 69bb ldr r3, [r7, #24] - 8001396: fa02 f303 lsl.w r3, r2, r3 - 800139a: 43da mvns r2, r3 - 800139c: 68bb ldr r3, [r7, #8] - 800139e: 401a ands r2, r3 - 80013a0: 697b ldr r3, [r7, #20] - 80013a2: 409a lsls r2, r3 - ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) - 80013a4: f04f 31ff mov.w r1, #4294967295 - 80013a8: 697b ldr r3, [r7, #20] - 80013aa: fa01 f303 lsl.w r3, r1, r3 - 80013ae: 43d9 mvns r1, r3 - 80013b0: 687b ldr r3, [r7, #4] - 80013b2: 400b ands r3, r1 - ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 80013b4: 4313 orrs r3, r2 - ); -} - 80013b6: 4618 mov r0, r3 - 80013b8: 3724 adds r7, #36 @ 0x24 - 80013ba: 46bd mov sp, r7 - 80013bc: bc80 pop {r7} - 80013be: 4770 bx lr - -080013c0 : - \note When the variable __Vendor_SysTickConfig is set to 1, then the - function SysTick_Config is not included. In this case, the file device.h - must contain a vendor-specific implementation of this function. - */ -__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - 80013c0: b580 push {r7, lr} - 80013c2: b082 sub sp, #8 - 80013c4: af00 add r7, sp, #0 - 80013c6: 6078 str r0, [r7, #4] - if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) - 80013c8: 687b ldr r3, [r7, #4] - 80013ca: 3b01 subs r3, #1 - 80013cc: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 - 80013d0: d301 bcc.n 80013d6 - { - return (1UL); /* Reload value impossible */ - 80013d2: 2301 movs r3, #1 - 80013d4: e00f b.n 80013f6 - } - - SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ - 80013d6: 4a0a ldr r2, [pc, #40] @ (8001400 ) - 80013d8: 687b ldr r3, [r7, #4] - 80013da: 3b01 subs r3, #1 - 80013dc: 6053 str r3, [r2, #4] - NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ - 80013de: 210f movs r1, #15 - 80013e0: f04f 30ff mov.w r0, #4294967295 - 80013e4: f7ff ff90 bl 8001308 <__NVIC_SetPriority> - SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ - 80013e8: 4b05 ldr r3, [pc, #20] @ (8001400 ) - 80013ea: 2200 movs r2, #0 - 80013ec: 609a str r2, [r3, #8] - SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - 80013ee: 4b04 ldr r3, [pc, #16] @ (8001400 ) - 80013f0: 2207 movs r2, #7 - 80013f2: 601a str r2, [r3, #0] - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0UL); /* Function successful */ - 80013f4: 2300 movs r3, #0 -} - 80013f6: 4618 mov r0, r3 - 80013f8: 3708 adds r7, #8 - 80013fa: 46bd mov sp, r7 - 80013fc: bd80 pop {r7, pc} - 80013fe: bf00 nop - 8001400: e000e010 .word 0xe000e010 - -08001404 : - * @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) -{ - 8001404: b580 push {r7, lr} - 8001406: b082 sub sp, #8 - 8001408: af00 add r7, sp, #0 - 800140a: 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); - 800140c: 6878 ldr r0, [r7, #4] - 800140e: f7ff ff2d bl 800126c <__NVIC_SetPriorityGrouping> -} - 8001412: bf00 nop - 8001414: 3708 adds r7, #8 - 8001416: 46bd mov sp, r7 - 8001418: bd80 pop {r7, pc} - -0800141a : - * 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) -{ - 800141a: b580 push {r7, lr} - 800141c: b086 sub sp, #24 - 800141e: af00 add r7, sp, #0 - 8001420: 4603 mov r3, r0 - 8001422: 60b9 str r1, [r7, #8] - 8001424: 607a str r2, [r7, #4] - 8001426: 73fb strb r3, [r7, #15] - uint32_t prioritygroup = 0x00U; - 8001428: 2300 movs r3, #0 - 800142a: 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(); - 800142c: f7ff ff42 bl 80012b4 <__NVIC_GetPriorityGrouping> - 8001430: 6178 str r0, [r7, #20] - - NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); - 8001432: 687a ldr r2, [r7, #4] - 8001434: 68b9 ldr r1, [r7, #8] - 8001436: 6978 ldr r0, [r7, #20] - 8001438: f7ff ff90 bl 800135c - 800143c: 4602 mov r2, r0 - 800143e: f997 300f ldrsb.w r3, [r7, #15] - 8001442: 4611 mov r1, r2 - 8001444: 4618 mov r0, r3 - 8001446: f7ff ff5f bl 8001308 <__NVIC_SetPriority> -} - 800144a: bf00 nop - 800144c: 3718 adds r7, #24 - 800144e: 46bd mov sp, r7 - 8001450: bd80 pop {r7, pc} - -08001452 : - * This parameter can be an enumerator of IRQn_Type enumeration - * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h)) - * @retval None - */ -void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) -{ - 8001452: b580 push {r7, lr} - 8001454: b082 sub sp, #8 - 8001456: af00 add r7, sp, #0 - 8001458: 4603 mov r3, r0 - 800145a: 71fb strb r3, [r7, #7] - /* Check the parameters */ - assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); - - /* Enable interrupt */ - NVIC_EnableIRQ(IRQn); - 800145c: f997 3007 ldrsb.w r3, [r7, #7] - 8001460: 4618 mov r0, r3 - 8001462: f7ff ff35 bl 80012d0 <__NVIC_EnableIRQ> -} - 8001466: bf00 nop - 8001468: 3708 adds r7, #8 - 800146a: 46bd mov sp, r7 - 800146c: bd80 pop {r7, pc} - -0800146e : - * @param TicksNumb: Specifies the ticks Number of ticks between two interrupts. - * @retval status: - 0 Function succeeded. - * - 1 Function failed. - */ -uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) -{ - 800146e: b580 push {r7, lr} - 8001470: b082 sub sp, #8 - 8001472: af00 add r7, sp, #0 - 8001474: 6078 str r0, [r7, #4] - return SysTick_Config(TicksNumb); - 8001476: 6878 ldr r0, [r7, #4] - 8001478: f7ff ffa2 bl 80013c0 - 800147c: 4603 mov r3, r0 -} - 800147e: 4618 mov r0, r3 - 8001480: 3708 adds r7, #8 - 8001482: 46bd mov sp, r7 - 8001484: bd80 pop {r7, pc} - -08001486 : -/** - * @brief This function handles SYSTICK interrupt request. - * @retval None - */ -void HAL_SYSTICK_IRQHandler(void) -{ - 8001486: b580 push {r7, lr} - 8001488: af00 add r7, sp, #0 - HAL_SYSTICK_Callback(); - 800148a: f7fe fe5f bl 800014c -} - 800148e: bf00 nop - 8001490: bd80 pop {r7, pc} - ... - -08001494 : - * @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) -{ - 8001494: b480 push {r7} - 8001496: b08b sub sp, #44 @ 0x2c - 8001498: af00 add r7, sp, #0 - 800149a: 6078 str r0, [r7, #4] - 800149c: 6039 str r1, [r7, #0] - uint32_t position = 0x00u; - 800149e: 2300 movs r3, #0 - 80014a0: 627b str r3, [r7, #36] @ 0x24 - uint32_t ioposition; - uint32_t iocurrent; - uint32_t temp; - uint32_t config = 0x00u; - 80014a2: 2300 movs r3, #0 - 80014a4: 623b str r3, [r7, #32] - assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); - assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); - assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); - - /* Configure the port pins */ - while (((GPIO_Init->Pin) >> position) != 0x00u) - 80014a6: e169 b.n 800177c - { - /* Get the IO position */ - ioposition = (0x01uL << position); - 80014a8: 2201 movs r2, #1 - 80014aa: 6a7b ldr r3, [r7, #36] @ 0x24 - 80014ac: fa02 f303 lsl.w r3, r2, r3 - 80014b0: 61fb str r3, [r7, #28] - - /* Get the current IO position */ - iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition; - 80014b2: 683b ldr r3, [r7, #0] - 80014b4: 681b ldr r3, [r3, #0] - 80014b6: 69fa ldr r2, [r7, #28] - 80014b8: 4013 ands r3, r2 - 80014ba: 61bb str r3, [r7, #24] - - if (iocurrent == ioposition) - 80014bc: 69ba ldr r2, [r7, #24] - 80014be: 69fb ldr r3, [r7, #28] - 80014c0: 429a cmp r2, r3 - 80014c2: f040 8158 bne.w 8001776 - { - /* Check the Alternate function parameters */ - assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); - - /* Based on the required mode, filling config variable with MODEy[1:0] and CNFy[3:2] corresponding bits */ - switch (GPIO_Init->Mode) - 80014c6: 683b ldr r3, [r7, #0] - 80014c8: 685b ldr r3, [r3, #4] - 80014ca: 4a9a ldr r2, [pc, #616] @ (8001734 ) - 80014cc: 4293 cmp r3, r2 - 80014ce: d05e beq.n 800158e - 80014d0: 4a98 ldr r2, [pc, #608] @ (8001734 ) - 80014d2: 4293 cmp r3, r2 - 80014d4: d875 bhi.n 80015c2 - 80014d6: 4a98 ldr r2, [pc, #608] @ (8001738 ) - 80014d8: 4293 cmp r3, r2 - 80014da: d058 beq.n 800158e - 80014dc: 4a96 ldr r2, [pc, #600] @ (8001738 ) - 80014de: 4293 cmp r3, r2 - 80014e0: d86f bhi.n 80015c2 - 80014e2: 4a96 ldr r2, [pc, #600] @ (800173c ) - 80014e4: 4293 cmp r3, r2 - 80014e6: d052 beq.n 800158e - 80014e8: 4a94 ldr r2, [pc, #592] @ (800173c ) - 80014ea: 4293 cmp r3, r2 - 80014ec: d869 bhi.n 80015c2 - 80014ee: 4a94 ldr r2, [pc, #592] @ (8001740 ) - 80014f0: 4293 cmp r3, r2 - 80014f2: d04c beq.n 800158e - 80014f4: 4a92 ldr r2, [pc, #584] @ (8001740 ) - 80014f6: 4293 cmp r3, r2 - 80014f8: d863 bhi.n 80015c2 - 80014fa: 4a92 ldr r2, [pc, #584] @ (8001744 ) - 80014fc: 4293 cmp r3, r2 - 80014fe: d046 beq.n 800158e - 8001500: 4a90 ldr r2, [pc, #576] @ (8001744 ) - 8001502: 4293 cmp r3, r2 - 8001504: d85d bhi.n 80015c2 - 8001506: 2b12 cmp r3, #18 - 8001508: d82a bhi.n 8001560 - 800150a: 2b12 cmp r3, #18 - 800150c: d859 bhi.n 80015c2 - 800150e: a201 add r2, pc, #4 @ (adr r2, 8001514 ) - 8001510: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8001514: 0800158f .word 0x0800158f - 8001518: 08001569 .word 0x08001569 - 800151c: 0800157b .word 0x0800157b - 8001520: 080015bd .word 0x080015bd - 8001524: 080015c3 .word 0x080015c3 - 8001528: 080015c3 .word 0x080015c3 - 800152c: 080015c3 .word 0x080015c3 - 8001530: 080015c3 .word 0x080015c3 - 8001534: 080015c3 .word 0x080015c3 - 8001538: 080015c3 .word 0x080015c3 - 800153c: 080015c3 .word 0x080015c3 - 8001540: 080015c3 .word 0x080015c3 - 8001544: 080015c3 .word 0x080015c3 - 8001548: 080015c3 .word 0x080015c3 - 800154c: 080015c3 .word 0x080015c3 - 8001550: 080015c3 .word 0x080015c3 - 8001554: 080015c3 .word 0x080015c3 - 8001558: 08001571 .word 0x08001571 - 800155c: 08001585 .word 0x08001585 - 8001560: 4a79 ldr r2, [pc, #484] @ (8001748 ) - 8001562: 4293 cmp r3, r2 - 8001564: d013 beq.n 800158e - config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG; - break; - - /* Parameters are checked with assert_param */ - default: - break; - 8001566: e02c b.n 80015c2 - config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_PP; - 8001568: 683b ldr r3, [r7, #0] - 800156a: 68db ldr r3, [r3, #12] - 800156c: 623b str r3, [r7, #32] - break; - 800156e: e029 b.n 80015c4 - config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_OD; - 8001570: 683b ldr r3, [r7, #0] - 8001572: 68db ldr r3, [r3, #12] - 8001574: 3304 adds r3, #4 - 8001576: 623b str r3, [r7, #32] - break; - 8001578: e024 b.n 80015c4 - config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_PP; - 800157a: 683b ldr r3, [r7, #0] - 800157c: 68db ldr r3, [r3, #12] - 800157e: 3308 adds r3, #8 - 8001580: 623b str r3, [r7, #32] - break; - 8001582: e01f b.n 80015c4 - config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_OD; - 8001584: 683b ldr r3, [r7, #0] - 8001586: 68db ldr r3, [r3, #12] - 8001588: 330c adds r3, #12 - 800158a: 623b str r3, [r7, #32] - break; - 800158c: e01a b.n 80015c4 - if (GPIO_Init->Pull == GPIO_NOPULL) - 800158e: 683b ldr r3, [r7, #0] - 8001590: 689b ldr r3, [r3, #8] - 8001592: 2b00 cmp r3, #0 - 8001594: d102 bne.n 800159c - config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_FLOATING; - 8001596: 2304 movs r3, #4 - 8001598: 623b str r3, [r7, #32] - break; - 800159a: e013 b.n 80015c4 - else if (GPIO_Init->Pull == GPIO_PULLUP) - 800159c: 683b ldr r3, [r7, #0] - 800159e: 689b ldr r3, [r3, #8] - 80015a0: 2b01 cmp r3, #1 - 80015a2: d105 bne.n 80015b0 - config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD; - 80015a4: 2308 movs r3, #8 - 80015a6: 623b str r3, [r7, #32] - GPIOx->BSRR = ioposition; - 80015a8: 687b ldr r3, [r7, #4] - 80015aa: 69fa ldr r2, [r7, #28] - 80015ac: 611a str r2, [r3, #16] - break; - 80015ae: e009 b.n 80015c4 - config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD; - 80015b0: 2308 movs r3, #8 - 80015b2: 623b str r3, [r7, #32] - GPIOx->BRR = ioposition; - 80015b4: 687b ldr r3, [r7, #4] - 80015b6: 69fa ldr r2, [r7, #28] - 80015b8: 615a str r2, [r3, #20] - break; - 80015ba: e003 b.n 80015c4 - config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG; - 80015bc: 2300 movs r3, #0 - 80015be: 623b str r3, [r7, #32] - break; - 80015c0: e000 b.n 80015c4 - break; - 80015c2: bf00 nop - } - - /* Check if the current bit belongs to first half or last half of the pin count number - in order to address CRH or CRL register*/ - configregister = (iocurrent < GPIO_PIN_8) ? &GPIOx->CRL : &GPIOx->CRH; - 80015c4: 69bb ldr r3, [r7, #24] - 80015c6: 2bff cmp r3, #255 @ 0xff - 80015c8: d801 bhi.n 80015ce - 80015ca: 687b ldr r3, [r7, #4] - 80015cc: e001 b.n 80015d2 - 80015ce: 687b ldr r3, [r7, #4] - 80015d0: 3304 adds r3, #4 - 80015d2: 617b str r3, [r7, #20] - registeroffset = (iocurrent < GPIO_PIN_8) ? (position << 2u) : ((position - 8u) << 2u); - 80015d4: 69bb ldr r3, [r7, #24] - 80015d6: 2bff cmp r3, #255 @ 0xff - 80015d8: d802 bhi.n 80015e0 - 80015da: 6a7b ldr r3, [r7, #36] @ 0x24 - 80015dc: 009b lsls r3, r3, #2 - 80015de: e002 b.n 80015e6 - 80015e0: 6a7b ldr r3, [r7, #36] @ 0x24 - 80015e2: 3b08 subs r3, #8 - 80015e4: 009b lsls r3, r3, #2 - 80015e6: 613b str r3, [r7, #16] - - /* Apply the new configuration of the pin to the register */ - MODIFY_REG((*configregister), ((GPIO_CRL_MODE0 | GPIO_CRL_CNF0) << registeroffset), (config << registeroffset)); - 80015e8: 697b ldr r3, [r7, #20] - 80015ea: 681a ldr r2, [r3, #0] - 80015ec: 210f movs r1, #15 - 80015ee: 693b ldr r3, [r7, #16] - 80015f0: fa01 f303 lsl.w r3, r1, r3 - 80015f4: 43db mvns r3, r3 - 80015f6: 401a ands r2, r3 - 80015f8: 6a39 ldr r1, [r7, #32] - 80015fa: 693b ldr r3, [r7, #16] - 80015fc: fa01 f303 lsl.w r3, r1, r3 - 8001600: 431a orrs r2, r3 - 8001602: 697b ldr r3, [r7, #20] - 8001604: 601a str r2, [r3, #0] - - /*--------------------- EXTI Mode Configuration ------------------------*/ - /* Configure the External Interrupt or event for the current IO */ - if ((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE) - 8001606: 683b ldr r3, [r7, #0] - 8001608: 685b ldr r3, [r3, #4] - 800160a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 800160e: 2b00 cmp r3, #0 - 8001610: f000 80b1 beq.w 8001776 - { - /* Enable AFIO Clock */ - __HAL_RCC_AFIO_CLK_ENABLE(); - 8001614: 4b4d ldr r3, [pc, #308] @ (800174c ) - 8001616: 699b ldr r3, [r3, #24] - 8001618: 4a4c ldr r2, [pc, #304] @ (800174c ) - 800161a: f043 0301 orr.w r3, r3, #1 - 800161e: 6193 str r3, [r2, #24] - 8001620: 4b4a ldr r3, [pc, #296] @ (800174c ) - 8001622: 699b ldr r3, [r3, #24] - 8001624: f003 0301 and.w r3, r3, #1 - 8001628: 60bb str r3, [r7, #8] - 800162a: 68bb ldr r3, [r7, #8] - temp = AFIO->EXTICR[position >> 2u]; - 800162c: 4a48 ldr r2, [pc, #288] @ (8001750 ) - 800162e: 6a7b ldr r3, [r7, #36] @ 0x24 - 8001630: 089b lsrs r3, r3, #2 - 8001632: 3302 adds r3, #2 - 8001634: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 8001638: 60fb str r3, [r7, #12] - CLEAR_BIT(temp, (0x0Fu) << (4u * (position & 0x03u))); - 800163a: 6a7b ldr r3, [r7, #36] @ 0x24 - 800163c: f003 0303 and.w r3, r3, #3 - 8001640: 009b lsls r3, r3, #2 - 8001642: 220f movs r2, #15 - 8001644: fa02 f303 lsl.w r3, r2, r3 - 8001648: 43db mvns r3, r3 - 800164a: 68fa ldr r2, [r7, #12] - 800164c: 4013 ands r3, r2 - 800164e: 60fb str r3, [r7, #12] - SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4u * (position & 0x03u))); - 8001650: 687b ldr r3, [r7, #4] - 8001652: 4a40 ldr r2, [pc, #256] @ (8001754 ) - 8001654: 4293 cmp r3, r2 - 8001656: d013 beq.n 8001680 - 8001658: 687b ldr r3, [r7, #4] - 800165a: 4a3f ldr r2, [pc, #252] @ (8001758 ) - 800165c: 4293 cmp r3, r2 - 800165e: d00d beq.n 800167c - 8001660: 687b ldr r3, [r7, #4] - 8001662: 4a3e ldr r2, [pc, #248] @ (800175c ) - 8001664: 4293 cmp r3, r2 - 8001666: d007 beq.n 8001678 - 8001668: 687b ldr r3, [r7, #4] - 800166a: 4a3d ldr r2, [pc, #244] @ (8001760 ) - 800166c: 4293 cmp r3, r2 - 800166e: d101 bne.n 8001674 - 8001670: 2303 movs r3, #3 - 8001672: e006 b.n 8001682 - 8001674: 2304 movs r3, #4 - 8001676: e004 b.n 8001682 - 8001678: 2302 movs r3, #2 - 800167a: e002 b.n 8001682 - 800167c: 2301 movs r3, #1 - 800167e: e000 b.n 8001682 - 8001680: 2300 movs r3, #0 - 8001682: 6a7a ldr r2, [r7, #36] @ 0x24 - 8001684: f002 0203 and.w r2, r2, #3 - 8001688: 0092 lsls r2, r2, #2 - 800168a: 4093 lsls r3, r2 - 800168c: 68fa ldr r2, [r7, #12] - 800168e: 4313 orrs r3, r2 - 8001690: 60fb str r3, [r7, #12] - AFIO->EXTICR[position >> 2u] = temp; - 8001692: 492f ldr r1, [pc, #188] @ (8001750 ) - 8001694: 6a7b ldr r3, [r7, #36] @ 0x24 - 8001696: 089b lsrs r3, r3, #2 - 8001698: 3302 adds r3, #2 - 800169a: 68fa ldr r2, [r7, #12] - 800169c: f841 2023 str.w r2, [r1, r3, lsl #2] - - - /* Enable or disable the rising trigger */ - if ((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE) - 80016a0: 683b ldr r3, [r7, #0] - 80016a2: 685b ldr r3, [r3, #4] - 80016a4: f403 1380 and.w r3, r3, #1048576 @ 0x100000 - 80016a8: 2b00 cmp r3, #0 - 80016aa: d006 beq.n 80016ba - { - SET_BIT(EXTI->RTSR, iocurrent); - 80016ac: 4b2d ldr r3, [pc, #180] @ (8001764 ) - 80016ae: 689a ldr r2, [r3, #8] - 80016b0: 492c ldr r1, [pc, #176] @ (8001764 ) - 80016b2: 69bb ldr r3, [r7, #24] - 80016b4: 4313 orrs r3, r2 - 80016b6: 608b str r3, [r1, #8] - 80016b8: e006 b.n 80016c8 - } - else - { - CLEAR_BIT(EXTI->RTSR, iocurrent); - 80016ba: 4b2a ldr r3, [pc, #168] @ (8001764 ) - 80016bc: 689a ldr r2, [r3, #8] - 80016be: 69bb ldr r3, [r7, #24] - 80016c0: 43db mvns r3, r3 - 80016c2: 4928 ldr r1, [pc, #160] @ (8001764 ) - 80016c4: 4013 ands r3, r2 - 80016c6: 608b str r3, [r1, #8] - } - - /* Enable or disable the falling trigger */ - if ((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE) - 80016c8: 683b ldr r3, [r7, #0] - 80016ca: 685b ldr r3, [r3, #4] - 80016cc: f403 1300 and.w r3, r3, #2097152 @ 0x200000 - 80016d0: 2b00 cmp r3, #0 - 80016d2: d006 beq.n 80016e2 - { - SET_BIT(EXTI->FTSR, iocurrent); - 80016d4: 4b23 ldr r3, [pc, #140] @ (8001764 ) - 80016d6: 68da ldr r2, [r3, #12] - 80016d8: 4922 ldr r1, [pc, #136] @ (8001764 ) - 80016da: 69bb ldr r3, [r7, #24] - 80016dc: 4313 orrs r3, r2 - 80016de: 60cb str r3, [r1, #12] - 80016e0: e006 b.n 80016f0 - } - else - { - CLEAR_BIT(EXTI->FTSR, iocurrent); - 80016e2: 4b20 ldr r3, [pc, #128] @ (8001764 ) - 80016e4: 68da ldr r2, [r3, #12] - 80016e6: 69bb ldr r3, [r7, #24] - 80016e8: 43db mvns r3, r3 - 80016ea: 491e ldr r1, [pc, #120] @ (8001764 ) - 80016ec: 4013 ands r3, r2 - 80016ee: 60cb str r3, [r1, #12] - } - - /* Configure the event mask */ - if ((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT) - 80016f0: 683b ldr r3, [r7, #0] - 80016f2: 685b ldr r3, [r3, #4] - 80016f4: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 80016f8: 2b00 cmp r3, #0 - 80016fa: d006 beq.n 800170a - { - SET_BIT(EXTI->EMR, iocurrent); - 80016fc: 4b19 ldr r3, [pc, #100] @ (8001764 ) - 80016fe: 685a ldr r2, [r3, #4] - 8001700: 4918 ldr r1, [pc, #96] @ (8001764 ) - 8001702: 69bb ldr r3, [r7, #24] - 8001704: 4313 orrs r3, r2 - 8001706: 604b str r3, [r1, #4] - 8001708: e006 b.n 8001718 - } - else - { - CLEAR_BIT(EXTI->EMR, iocurrent); - 800170a: 4b16 ldr r3, [pc, #88] @ (8001764 ) - 800170c: 685a ldr r2, [r3, #4] - 800170e: 69bb ldr r3, [r7, #24] - 8001710: 43db mvns r3, r3 - 8001712: 4914 ldr r1, [pc, #80] @ (8001764 ) - 8001714: 4013 ands r3, r2 - 8001716: 604b str r3, [r1, #4] - } - - /* Configure the interrupt mask */ - if ((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT) - 8001718: 683b ldr r3, [r7, #0] - 800171a: 685b ldr r3, [r3, #4] - 800171c: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 8001720: 2b00 cmp r3, #0 - 8001722: d021 beq.n 8001768 - { - SET_BIT(EXTI->IMR, iocurrent); - 8001724: 4b0f ldr r3, [pc, #60] @ (8001764 ) - 8001726: 681a ldr r2, [r3, #0] - 8001728: 490e ldr r1, [pc, #56] @ (8001764 ) - 800172a: 69bb ldr r3, [r7, #24] - 800172c: 4313 orrs r3, r2 - 800172e: 600b str r3, [r1, #0] - 8001730: e021 b.n 8001776 - 8001732: bf00 nop - 8001734: 10320000 .word 0x10320000 - 8001738: 10310000 .word 0x10310000 - 800173c: 10220000 .word 0x10220000 - 8001740: 10210000 .word 0x10210000 - 8001744: 10120000 .word 0x10120000 - 8001748: 10110000 .word 0x10110000 - 800174c: 40021000 .word 0x40021000 - 8001750: 40010000 .word 0x40010000 - 8001754: 40010800 .word 0x40010800 - 8001758: 40010c00 .word 0x40010c00 - 800175c: 40011000 .word 0x40011000 - 8001760: 40011400 .word 0x40011400 - 8001764: 40010400 .word 0x40010400 - } - else - { - CLEAR_BIT(EXTI->IMR, iocurrent); - 8001768: 4b0b ldr r3, [pc, #44] @ (8001798 ) - 800176a: 681a ldr r2, [r3, #0] - 800176c: 69bb ldr r3, [r7, #24] - 800176e: 43db mvns r3, r3 - 8001770: 4909 ldr r1, [pc, #36] @ (8001798 ) - 8001772: 4013 ands r3, r2 - 8001774: 600b str r3, [r1, #0] - } - } - } - - position++; - 8001776: 6a7b ldr r3, [r7, #36] @ 0x24 - 8001778: 3301 adds r3, #1 - 800177a: 627b str r3, [r7, #36] @ 0x24 - while (((GPIO_Init->Pin) >> position) != 0x00u) - 800177c: 683b ldr r3, [r7, #0] - 800177e: 681a ldr r2, [r3, #0] - 8001780: 6a7b ldr r3, [r7, #36] @ 0x24 - 8001782: fa22 f303 lsr.w r3, r2, r3 - 8001786: 2b00 cmp r3, #0 - 8001788: f47f ae8e bne.w 80014a8 - } -} - 800178c: bf00 nop - 800178e: bf00 nop - 8001790: 372c adds r7, #44 @ 0x2c - 8001792: 46bd mov sp, r7 - 8001794: bc80 pop {r7} - 8001796: 4770 bx lr - 8001798: 40010400 .word 0x40010400 - -0800179c : - * @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) -{ - 800179c: b480 push {r7} - 800179e: b083 sub sp, #12 - 80017a0: af00 add r7, sp, #0 - 80017a2: 6078 str r0, [r7, #4] - 80017a4: 460b mov r3, r1 - 80017a6: 807b strh r3, [r7, #2] - 80017a8: 4613 mov r3, r2 - 80017aa: 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) - 80017ac: 787b ldrb r3, [r7, #1] - 80017ae: 2b00 cmp r3, #0 - 80017b0: d003 beq.n 80017ba - { - GPIOx->BSRR = GPIO_Pin; - 80017b2: 887a ldrh r2, [r7, #2] - 80017b4: 687b ldr r3, [r7, #4] - 80017b6: 611a str r2, [r3, #16] - } - else - { - GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u; - } -} - 80017b8: e003 b.n 80017c2 - GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u; - 80017ba: 887b ldrh r3, [r7, #2] - 80017bc: 041a lsls r2, r3, #16 - 80017be: 687b ldr r3, [r7, #4] - 80017c0: 611a str r2, [r3, #16] -} - 80017c2: bf00 nop - 80017c4: 370c adds r7, #12 - 80017c6: 46bd mov sp, r7 - 80017c8: bc80 pop {r7} - 80017ca: 4770 bx lr - -080017cc : - * @param GPIOx: where x can be (A..G depending on device used) to select the GPIO peripheral - * @param GPIO_Pin: Specifies the pins to be toggled. - * @retval None - */ -void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) -{ - 80017cc: b480 push {r7} - 80017ce: b085 sub sp, #20 - 80017d0: af00 add r7, sp, #0 - 80017d2: 6078 str r0, [r7, #4] - 80017d4: 460b mov r3, r1 - 80017d6: 807b strh r3, [r7, #2] - - /* Check the parameters */ - assert_param(IS_GPIO_PIN(GPIO_Pin)); - - /* get current Output Data Register value */ - odr = GPIOx->ODR; - 80017d8: 687b ldr r3, [r7, #4] - 80017da: 68db ldr r3, [r3, #12] - 80017dc: 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); - 80017de: 887a ldrh r2, [r7, #2] - 80017e0: 68fb ldr r3, [r7, #12] - 80017e2: 4013 ands r3, r2 - 80017e4: 041a lsls r2, r3, #16 - 80017e6: 68fb ldr r3, [r7, #12] - 80017e8: 43d9 mvns r1, r3 - 80017ea: 887b ldrh r3, [r7, #2] - 80017ec: 400b ands r3, r1 - 80017ee: 431a orrs r2, r3 - 80017f0: 687b ldr r3, [r7, #4] - 80017f2: 611a str r2, [r3, #16] -} - 80017f4: bf00 nop - 80017f6: 3714 adds r7, #20 - 80017f8: 46bd mov sp, r7 - 80017fa: bc80 pop {r7} - 80017fc: 4770 bx lr - -080017fe : - * parameters in the PCD_InitTypeDef and initialize the associated handle. - * @param hpcd PCD handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd) -{ - 80017fe: b580 push {r7, lr} - 8001800: b084 sub sp, #16 - 8001802: af00 add r7, sp, #0 - 8001804: 6078 str r0, [r7, #4] - uint8_t i; - - /* Check the PCD handle allocation */ - if (hpcd == NULL) - 8001806: 687b ldr r3, [r7, #4] - 8001808: 2b00 cmp r3, #0 - 800180a: d101 bne.n 8001810 - { - return HAL_ERROR; - 800180c: 2301 movs r3, #1 - 800180e: e0e8 b.n 80019e2 - } - - /* Check the parameters */ - assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance)); - - if (hpcd->State == HAL_PCD_STATE_RESET) - 8001810: 687b ldr r3, [r7, #4] - 8001812: f893 3291 ldrb.w r3, [r3, #657] @ 0x291 - 8001816: b2db uxtb r3, r3 - 8001818: 2b00 cmp r3, #0 - 800181a: d106 bne.n 800182a - { - /* Allocate lock resource and initialize it */ - hpcd->Lock = HAL_UNLOCKED; - 800181c: 687b ldr r3, [r7, #4] - 800181e: 2200 movs r2, #0 - 8001820: f883 2290 strb.w r2, [r3, #656] @ 0x290 - - /* Init the low level hardware */ - hpcd->MspInitCallback(hpcd); -#else - /* Init the low level hardware : GPIO, CLOCK, NVIC... */ - HAL_PCD_MspInit(hpcd); - 8001824: 6878 ldr r0, [r7, #4] - 8001826: f007 f8bf bl 80089a8 -#endif /* (USE_HAL_PCD_REGISTER_CALLBACKS) */ - } - - hpcd->State = HAL_PCD_STATE_BUSY; - 800182a: 687b ldr r3, [r7, #4] - 800182c: 2203 movs r2, #3 - 800182e: f883 2291 strb.w r2, [r3, #657] @ 0x291 - - /* Disable DMA mode for FS instance */ - hpcd->Init.dma_enable = 0U; - 8001832: 687b ldr r3, [r7, #4] - 8001834: 2200 movs r2, #0 - 8001836: 715a strb r2, [r3, #5] - - /* Disable the Interrupts */ - __HAL_PCD_DISABLE(hpcd); - 8001838: 687b ldr r3, [r7, #4] - 800183a: 681b ldr r3, [r3, #0] - 800183c: 4618 mov r0, r3 - 800183e: f002 ff63 bl 8004708 - - /*Init the Core (common init.) */ - if (USB_CoreInit(hpcd->Instance, hpcd->Init) != HAL_OK) - 8001842: 687b ldr r3, [r7, #4] - 8001844: 6818 ldr r0, [r3, #0] - 8001846: 687b ldr r3, [r7, #4] - 8001848: 3304 adds r3, #4 - 800184a: cb0e ldmia r3, {r1, r2, r3} - 800184c: f002 ff39 bl 80046c2 - 8001850: 4603 mov r3, r0 - 8001852: 2b00 cmp r3, #0 - 8001854: d005 beq.n 8001862 - { - hpcd->State = HAL_PCD_STATE_ERROR; - 8001856: 687b ldr r3, [r7, #4] - 8001858: 2202 movs r2, #2 - 800185a: f883 2291 strb.w r2, [r3, #657] @ 0x291 - return HAL_ERROR; - 800185e: 2301 movs r3, #1 - 8001860: e0bf b.n 80019e2 - } - - /* Force Device Mode */ - if (USB_SetCurrentMode(hpcd->Instance, USB_DEVICE_MODE) != HAL_OK) - 8001862: 687b ldr r3, [r7, #4] - 8001864: 681b ldr r3, [r3, #0] - 8001866: 2100 movs r1, #0 - 8001868: 4618 mov r0, r3 - 800186a: f002 ff67 bl 800473c - 800186e: 4603 mov r3, r0 - 8001870: 2b00 cmp r3, #0 - 8001872: d005 beq.n 8001880 - { - hpcd->State = HAL_PCD_STATE_ERROR; - 8001874: 687b ldr r3, [r7, #4] - 8001876: 2202 movs r2, #2 - 8001878: f883 2291 strb.w r2, [r3, #657] @ 0x291 - return HAL_ERROR; - 800187c: 2301 movs r3, #1 - 800187e: e0b0 b.n 80019e2 - } - - /* Init endpoints structures */ - for (i = 0U; i < hpcd->Init.dev_endpoints; i++) - 8001880: 2300 movs r3, #0 - 8001882: 73fb strb r3, [r7, #15] - 8001884: e03e b.n 8001904 - { - /* Init ep structure */ - hpcd->IN_ep[i].is_in = 1U; - 8001886: 7bfa ldrb r2, [r7, #15] - 8001888: 6879 ldr r1, [r7, #4] - 800188a: 4613 mov r3, r2 - 800188c: 009b lsls r3, r3, #2 - 800188e: 4413 add r3, r2 - 8001890: 00db lsls r3, r3, #3 - 8001892: 440b add r3, r1 - 8001894: 3311 adds r3, #17 - 8001896: 2201 movs r2, #1 - 8001898: 701a strb r2, [r3, #0] - hpcd->IN_ep[i].num = i; - 800189a: 7bfa ldrb r2, [r7, #15] - 800189c: 6879 ldr r1, [r7, #4] - 800189e: 4613 mov r3, r2 - 80018a0: 009b lsls r3, r3, #2 - 80018a2: 4413 add r3, r2 - 80018a4: 00db lsls r3, r3, #3 - 80018a6: 440b add r3, r1 - 80018a8: 3310 adds r3, #16 - 80018aa: 7bfa ldrb r2, [r7, #15] - 80018ac: 701a strb r2, [r3, #0] -#if defined (USB_OTG_FS) - hpcd->IN_ep[i].tx_fifo_num = i; -#endif /* defined (USB_OTG_FS) */ - /* Control until ep is activated */ - hpcd->IN_ep[i].type = EP_TYPE_CTRL; - 80018ae: 7bfa ldrb r2, [r7, #15] - 80018b0: 6879 ldr r1, [r7, #4] - 80018b2: 4613 mov r3, r2 - 80018b4: 009b lsls r3, r3, #2 - 80018b6: 4413 add r3, r2 - 80018b8: 00db lsls r3, r3, #3 - 80018ba: 440b add r3, r1 - 80018bc: 3313 adds r3, #19 - 80018be: 2200 movs r2, #0 - 80018c0: 701a strb r2, [r3, #0] - hpcd->IN_ep[i].maxpacket = 0U; - 80018c2: 7bfa ldrb r2, [r7, #15] - 80018c4: 6879 ldr r1, [r7, #4] - 80018c6: 4613 mov r3, r2 - 80018c8: 009b lsls r3, r3, #2 - 80018ca: 4413 add r3, r2 - 80018cc: 00db lsls r3, r3, #3 - 80018ce: 440b add r3, r1 - 80018d0: 3320 adds r3, #32 - 80018d2: 2200 movs r2, #0 - 80018d4: 601a str r2, [r3, #0] - hpcd->IN_ep[i].xfer_buff = 0U; - 80018d6: 7bfa ldrb r2, [r7, #15] - 80018d8: 6879 ldr r1, [r7, #4] - 80018da: 4613 mov r3, r2 - 80018dc: 009b lsls r3, r3, #2 - 80018de: 4413 add r3, r2 - 80018e0: 00db lsls r3, r3, #3 - 80018e2: 440b add r3, r1 - 80018e4: 3324 adds r3, #36 @ 0x24 - 80018e6: 2200 movs r2, #0 - 80018e8: 601a str r2, [r3, #0] - hpcd->IN_ep[i].xfer_len = 0U; - 80018ea: 7bfb ldrb r3, [r7, #15] - 80018ec: 6879 ldr r1, [r7, #4] - 80018ee: 1c5a adds r2, r3, #1 - 80018f0: 4613 mov r3, r2 - 80018f2: 009b lsls r3, r3, #2 - 80018f4: 4413 add r3, r2 - 80018f6: 00db lsls r3, r3, #3 - 80018f8: 440b add r3, r1 - 80018fa: 2200 movs r2, #0 - 80018fc: 601a str r2, [r3, #0] - for (i = 0U; i < hpcd->Init.dev_endpoints; i++) - 80018fe: 7bfb ldrb r3, [r7, #15] - 8001900: 3301 adds r3, #1 - 8001902: 73fb strb r3, [r7, #15] - 8001904: 687b ldr r3, [r7, #4] - 8001906: 791b ldrb r3, [r3, #4] - 8001908: 7bfa ldrb r2, [r7, #15] - 800190a: 429a cmp r2, r3 - 800190c: d3bb bcc.n 8001886 - } - - for (i = 0U; i < hpcd->Init.dev_endpoints; i++) - 800190e: 2300 movs r3, #0 - 8001910: 73fb strb r3, [r7, #15] - 8001912: e044 b.n 800199e - { - hpcd->OUT_ep[i].is_in = 0U; - 8001914: 7bfa ldrb r2, [r7, #15] - 8001916: 6879 ldr r1, [r7, #4] - 8001918: 4613 mov r3, r2 - 800191a: 009b lsls r3, r3, #2 - 800191c: 4413 add r3, r2 - 800191e: 00db lsls r3, r3, #3 - 8001920: 440b add r3, r1 - 8001922: f203 1351 addw r3, r3, #337 @ 0x151 - 8001926: 2200 movs r2, #0 - 8001928: 701a strb r2, [r3, #0] - hpcd->OUT_ep[i].num = i; - 800192a: 7bfa ldrb r2, [r7, #15] - 800192c: 6879 ldr r1, [r7, #4] - 800192e: 4613 mov r3, r2 - 8001930: 009b lsls r3, r3, #2 - 8001932: 4413 add r3, r2 - 8001934: 00db lsls r3, r3, #3 - 8001936: 440b add r3, r1 - 8001938: f503 73a8 add.w r3, r3, #336 @ 0x150 - 800193c: 7bfa ldrb r2, [r7, #15] - 800193e: 701a strb r2, [r3, #0] - /* Control until ep is activated */ - hpcd->OUT_ep[i].type = EP_TYPE_CTRL; - 8001940: 7bfa ldrb r2, [r7, #15] - 8001942: 6879 ldr r1, [r7, #4] - 8001944: 4613 mov r3, r2 - 8001946: 009b lsls r3, r3, #2 - 8001948: 4413 add r3, r2 - 800194a: 00db lsls r3, r3, #3 - 800194c: 440b add r3, r1 - 800194e: f203 1353 addw r3, r3, #339 @ 0x153 - 8001952: 2200 movs r2, #0 - 8001954: 701a strb r2, [r3, #0] - hpcd->OUT_ep[i].maxpacket = 0U; - 8001956: 7bfa ldrb r2, [r7, #15] - 8001958: 6879 ldr r1, [r7, #4] - 800195a: 4613 mov r3, r2 - 800195c: 009b lsls r3, r3, #2 - 800195e: 4413 add r3, r2 - 8001960: 00db lsls r3, r3, #3 - 8001962: 440b add r3, r1 - 8001964: f503 73b0 add.w r3, r3, #352 @ 0x160 - 8001968: 2200 movs r2, #0 - 800196a: 601a str r2, [r3, #0] - hpcd->OUT_ep[i].xfer_buff = 0U; - 800196c: 7bfa ldrb r2, [r7, #15] - 800196e: 6879 ldr r1, [r7, #4] - 8001970: 4613 mov r3, r2 - 8001972: 009b lsls r3, r3, #2 - 8001974: 4413 add r3, r2 - 8001976: 00db lsls r3, r3, #3 - 8001978: 440b add r3, r1 - 800197a: f503 73b2 add.w r3, r3, #356 @ 0x164 - 800197e: 2200 movs r2, #0 - 8001980: 601a str r2, [r3, #0] - hpcd->OUT_ep[i].xfer_len = 0U; - 8001982: 7bfa ldrb r2, [r7, #15] - 8001984: 6879 ldr r1, [r7, #4] - 8001986: 4613 mov r3, r2 - 8001988: 009b lsls r3, r3, #2 - 800198a: 4413 add r3, r2 - 800198c: 00db lsls r3, r3, #3 - 800198e: 440b add r3, r1 - 8001990: f503 73b4 add.w r3, r3, #360 @ 0x168 - 8001994: 2200 movs r2, #0 - 8001996: 601a str r2, [r3, #0] - for (i = 0U; i < hpcd->Init.dev_endpoints; i++) - 8001998: 7bfb ldrb r3, [r7, #15] - 800199a: 3301 adds r3, #1 - 800199c: 73fb strb r3, [r7, #15] - 800199e: 687b ldr r3, [r7, #4] - 80019a0: 791b ldrb r3, [r3, #4] - 80019a2: 7bfa ldrb r2, [r7, #15] - 80019a4: 429a cmp r2, r3 - 80019a6: d3b5 bcc.n 8001914 - } - - /* Init Device */ - if (USB_DevInit(hpcd->Instance, hpcd->Init) != HAL_OK) - 80019a8: 687b ldr r3, [r7, #4] - 80019aa: 6818 ldr r0, [r3, #0] - 80019ac: 687b ldr r3, [r7, #4] - 80019ae: 3304 adds r3, #4 - 80019b0: cb0e ldmia r3, {r1, r2, r3} - 80019b2: f002 fecf bl 8004754 - 80019b6: 4603 mov r3, r0 - 80019b8: 2b00 cmp r3, #0 - 80019ba: d005 beq.n 80019c8 - { - hpcd->State = HAL_PCD_STATE_ERROR; - 80019bc: 687b ldr r3, [r7, #4] - 80019be: 2202 movs r2, #2 - 80019c0: f883 2291 strb.w r2, [r3, #657] @ 0x291 - return HAL_ERROR; - 80019c4: 2301 movs r3, #1 - 80019c6: e00c b.n 80019e2 - } - - hpcd->USB_Address = 0U; - 80019c8: 687b ldr r3, [r7, #4] - 80019ca: 2200 movs r2, #0 - 80019cc: 735a strb r2, [r3, #13] - hpcd->State = HAL_PCD_STATE_READY; - 80019ce: 687b ldr r3, [r7, #4] - 80019d0: 2201 movs r2, #1 - 80019d2: f883 2291 strb.w r2, [r3, #657] @ 0x291 - (void)USB_DevDisconnect(hpcd->Instance); - 80019d6: 687b ldr r3, [r7, #4] - 80019d8: 681b ldr r3, [r3, #0] - 80019da: 4618 mov r0, r3 - 80019dc: f005 f94f bl 8006c7e - - return HAL_OK; - 80019e0: 2300 movs r3, #0 -} - 80019e2: 4618 mov r0, r3 - 80019e4: 3710 adds r7, #16 - 80019e6: 46bd mov sp, r7 - 80019e8: bd80 pop {r7, pc} - -080019ea : - * @brief Start the USB device - * @param hpcd PCD handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd) -{ - 80019ea: b580 push {r7, lr} - 80019ec: b082 sub sp, #8 - 80019ee: af00 add r7, sp, #0 - 80019f0: 6078 str r0, [r7, #4] - __HAL_LOCK(hpcd); - 80019f2: 687b ldr r3, [r7, #4] - 80019f4: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 - 80019f8: 2b01 cmp r3, #1 - 80019fa: d101 bne.n 8001a00 - 80019fc: 2302 movs r3, #2 - 80019fe: e016 b.n 8001a2e - 8001a00: 687b ldr r3, [r7, #4] - 8001a02: 2201 movs r2, #1 - 8001a04: f883 2290 strb.w r2, [r3, #656] @ 0x290 - __HAL_PCD_ENABLE(hpcd); - 8001a08: 687b ldr r3, [r7, #4] - 8001a0a: 681b ldr r3, [r3, #0] - 8001a0c: 4618 mov r0, r3 - 8001a0e: f002 fe65 bl 80046dc - -#if defined (USB) - HAL_PCDEx_SetConnectionState(hpcd, 1U); - 8001a12: 2101 movs r1, #1 - 8001a14: 6878 ldr r0, [r7, #4] - 8001a16: f007 fa3a bl 8008e8e -#endif /* defined (USB) */ - - (void)USB_DevConnect(hpcd->Instance); - 8001a1a: 687b ldr r3, [r7, #4] - 8001a1c: 681b ldr r3, [r3, #0] - 8001a1e: 4618 mov r0, r3 - 8001a20: f005 f923 bl 8006c6a - __HAL_UNLOCK(hpcd); - 8001a24: 687b ldr r3, [r7, #4] - 8001a26: 2200 movs r2, #0 - 8001a28: f883 2290 strb.w r2, [r3, #656] @ 0x290 - - return HAL_OK; - 8001a2c: 2300 movs r3, #0 -} - 8001a2e: 4618 mov r0, r3 - 8001a30: 3708 adds r7, #8 - 8001a32: 46bd mov sp, r7 - 8001a34: bd80 pop {r7, pc} - -08001a36 : - * @brief This function handles PCD interrupt request. - * @param hpcd PCD handle - * @retval HAL status - */ -void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) -{ - 8001a36: b580 push {r7, lr} - 8001a38: b088 sub sp, #32 - 8001a3a: af00 add r7, sp, #0 - 8001a3c: 6078 str r0, [r7, #4] - uint32_t wIstr = USB_ReadInterrupts(hpcd->Instance); - 8001a3e: 687b ldr r3, [r7, #4] - 8001a40: 681b ldr r3, [r3, #0] - 8001a42: 4618 mov r0, r3 - 8001a44: f005 f925 bl 8006c92 - 8001a48: 61b8 str r0, [r7, #24] - uint16_t store_ep[8]; - uint8_t i; - - if ((wIstr & USB_ISTR_CTR) == USB_ISTR_CTR) - 8001a4a: 69bb ldr r3, [r7, #24] - 8001a4c: f403 4300 and.w r3, r3, #32768 @ 0x8000 - 8001a50: 2b00 cmp r3, #0 - 8001a52: d003 beq.n 8001a5c - { - /* servicing of the endpoint correct transfer interrupt */ - /* clear of the CTR flag into the sub */ - (void)PCD_EP_ISR_Handler(hpcd); - 8001a54: 6878 ldr r0, [r7, #4] - 8001a56: f000 fb1a bl 800208e - - return; - 8001a5a: e119 b.n 8001c90 - } - - if ((wIstr & USB_ISTR_RESET) == USB_ISTR_RESET) - 8001a5c: 69bb ldr r3, [r7, #24] - 8001a5e: f403 6380 and.w r3, r3, #1024 @ 0x400 - 8001a62: 2b00 cmp r3, #0 - 8001a64: d013 beq.n 8001a8e - { - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET); - 8001a66: 687b ldr r3, [r7, #4] - 8001a68: 681b ldr r3, [r3, #0] - 8001a6a: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 8001a6e: b29a uxth r2, r3 - 8001a70: 687b ldr r3, [r7, #4] - 8001a72: 681b ldr r3, [r3, #0] - 8001a74: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 8001a78: b292 uxth r2, r2 - 8001a7a: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->ResetCallback(hpcd); -#else - HAL_PCD_ResetCallback(hpcd); - 8001a7e: 6878 ldr r0, [r7, #4] - 8001a80: f007 f80d bl 8008a9e -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - - (void)HAL_PCD_SetAddress(hpcd, 0U); - 8001a84: 2100 movs r1, #0 - 8001a86: 6878 ldr r0, [r7, #4] - 8001a88: f000 f905 bl 8001c96 - - return; - 8001a8c: e100 b.n 8001c90 - } - - if ((wIstr & USB_ISTR_PMAOVR) == USB_ISTR_PMAOVR) - 8001a8e: 69bb ldr r3, [r7, #24] - 8001a90: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8001a94: 2b00 cmp r3, #0 - 8001a96: d00c beq.n 8001ab2 - { - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_PMAOVR); - 8001a98: 687b ldr r3, [r7, #4] - 8001a9a: 681b ldr r3, [r3, #0] - 8001a9c: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 8001aa0: b29a uxth r2, r3 - 8001aa2: 687b ldr r3, [r7, #4] - 8001aa4: 681b ldr r3, [r3, #0] - 8001aa6: f422 4280 bic.w r2, r2, #16384 @ 0x4000 - 8001aaa: b292 uxth r2, r2 - 8001aac: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - return; - 8001ab0: e0ee b.n 8001c90 - } - - if ((wIstr & USB_ISTR_ERR) == USB_ISTR_ERR) - 8001ab2: 69bb ldr r3, [r7, #24] - 8001ab4: f403 5300 and.w r3, r3, #8192 @ 0x2000 - 8001ab8: 2b00 cmp r3, #0 - 8001aba: d00c beq.n 8001ad6 - { - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ERR); - 8001abc: 687b ldr r3, [r7, #4] - 8001abe: 681b ldr r3, [r3, #0] - 8001ac0: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 8001ac4: b29a uxth r2, r3 - 8001ac6: 687b ldr r3, [r7, #4] - 8001ac8: 681b ldr r3, [r3, #0] - 8001aca: f422 5200 bic.w r2, r2, #8192 @ 0x2000 - 8001ace: b292 uxth r2, r2 - 8001ad0: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - return; - 8001ad4: e0dc b.n 8001c90 - } - - if ((wIstr & USB_ISTR_WKUP) == USB_ISTR_WKUP) - 8001ad6: 69bb ldr r3, [r7, #24] - 8001ad8: f403 5380 and.w r3, r3, #4096 @ 0x1000 - 8001adc: 2b00 cmp r3, #0 - 8001ade: d027 beq.n 8001b30 - { - hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_LP_MODE); - 8001ae0: 687b ldr r3, [r7, #4] - 8001ae2: 681b ldr r3, [r3, #0] - 8001ae4: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 8001ae8: b29a uxth r2, r3 - 8001aea: 687b ldr r3, [r7, #4] - 8001aec: 681b ldr r3, [r3, #0] - 8001aee: f022 0204 bic.w r2, r2, #4 - 8001af2: b292 uxth r2, r2 - 8001af4: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_FSUSP); - 8001af8: 687b ldr r3, [r7, #4] - 8001afa: 681b ldr r3, [r3, #0] - 8001afc: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 8001b00: b29a uxth r2, r3 - 8001b02: 687b ldr r3, [r7, #4] - 8001b04: 681b ldr r3, [r3, #0] - 8001b06: f022 0208 bic.w r2, r2, #8 - 8001b0a: b292 uxth r2, r2 - 8001b0c: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->ResumeCallback(hpcd); -#else - HAL_PCD_ResumeCallback(hpcd); - 8001b10: 6878 ldr r0, [r7, #4] - 8001b12: f006 fffd bl 8008b10 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_WKUP); - 8001b16: 687b ldr r3, [r7, #4] - 8001b18: 681b ldr r3, [r3, #0] - 8001b1a: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 8001b1e: b29a uxth r2, r3 - 8001b20: 687b ldr r3, [r7, #4] - 8001b22: 681b ldr r3, [r3, #0] - 8001b24: f422 5280 bic.w r2, r2, #4096 @ 0x1000 - 8001b28: b292 uxth r2, r2 - 8001b2a: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - return; - 8001b2e: e0af b.n 8001c90 - } - - if ((wIstr & USB_ISTR_SUSP) == USB_ISTR_SUSP) - 8001b30: 69bb ldr r3, [r7, #24] - 8001b32: f403 6300 and.w r3, r3, #2048 @ 0x800 - 8001b36: 2b00 cmp r3, #0 - 8001b38: f000 8083 beq.w 8001c42 - { - /* WA: To Clear Wakeup flag if raised with suspend signal */ - - /* Store Endpoint registers */ - for (i = 0U; i < 8U; i++) - 8001b3c: 2300 movs r3, #0 - 8001b3e: 77fb strb r3, [r7, #31] - 8001b40: e010 b.n 8001b64 - { - store_ep[i] = PCD_GET_ENDPOINT(hpcd->Instance, i); - 8001b42: 687b ldr r3, [r7, #4] - 8001b44: 681b ldr r3, [r3, #0] - 8001b46: 461a mov r2, r3 - 8001b48: 7ffb ldrb r3, [r7, #31] - 8001b4a: 009b lsls r3, r3, #2 - 8001b4c: 441a add r2, r3 - 8001b4e: 7ffb ldrb r3, [r7, #31] - 8001b50: 8812 ldrh r2, [r2, #0] - 8001b52: b292 uxth r2, r2 - 8001b54: 005b lsls r3, r3, #1 - 8001b56: 3320 adds r3, #32 - 8001b58: 443b add r3, r7 - 8001b5a: f823 2c18 strh.w r2, [r3, #-24] - for (i = 0U; i < 8U; i++) - 8001b5e: 7ffb ldrb r3, [r7, #31] - 8001b60: 3301 adds r3, #1 - 8001b62: 77fb strb r3, [r7, #31] - 8001b64: 7ffb ldrb r3, [r7, #31] - 8001b66: 2b07 cmp r3, #7 - 8001b68: d9eb bls.n 8001b42 - } - - /* FORCE RESET */ - hpcd->Instance->CNTR |= (uint16_t)(USB_CNTR_FRES); - 8001b6a: 687b ldr r3, [r7, #4] - 8001b6c: 681b ldr r3, [r3, #0] - 8001b6e: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 8001b72: b29a uxth r2, r3 - 8001b74: 687b ldr r3, [r7, #4] - 8001b76: 681b ldr r3, [r3, #0] - 8001b78: f042 0201 orr.w r2, r2, #1 - 8001b7c: b292 uxth r2, r2 - 8001b7e: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - /* CLEAR RESET */ - hpcd->Instance->CNTR &= (uint16_t)(~USB_CNTR_FRES); - 8001b82: 687b ldr r3, [r7, #4] - 8001b84: 681b ldr r3, [r3, #0] - 8001b86: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 8001b8a: b29a uxth r2, r3 - 8001b8c: 687b ldr r3, [r7, #4] - 8001b8e: 681b ldr r3, [r3, #0] - 8001b90: f022 0201 bic.w r2, r2, #1 - 8001b94: b292 uxth r2, r2 - 8001b96: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - /* wait for reset flag in ISTR */ - while ((hpcd->Instance->ISTR & USB_ISTR_RESET) == 0U) - 8001b9a: bf00 nop - 8001b9c: 687b ldr r3, [r7, #4] - 8001b9e: 681b ldr r3, [r3, #0] - 8001ba0: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 8001ba4: b29b uxth r3, r3 - 8001ba6: f403 6380 and.w r3, r3, #1024 @ 0x400 - 8001baa: 2b00 cmp r3, #0 - 8001bac: d0f6 beq.n 8001b9c - { - } - - /* Clear Reset Flag */ - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET); - 8001bae: 687b ldr r3, [r7, #4] - 8001bb0: 681b ldr r3, [r3, #0] - 8001bb2: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 8001bb6: b29a uxth r2, r3 - 8001bb8: 687b ldr r3, [r7, #4] - 8001bba: 681b ldr r3, [r3, #0] - 8001bbc: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 8001bc0: b292 uxth r2, r2 - 8001bc2: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - /* Restore Registre */ - for (i = 0U; i < 8U; i++) - 8001bc6: 2300 movs r3, #0 - 8001bc8: 77fb strb r3, [r7, #31] - 8001bca: e00f b.n 8001bec - { - PCD_SET_ENDPOINT(hpcd->Instance, i, store_ep[i]); - 8001bcc: 7ffb ldrb r3, [r7, #31] - 8001bce: 687a ldr r2, [r7, #4] - 8001bd0: 6812 ldr r2, [r2, #0] - 8001bd2: 4611 mov r1, r2 - 8001bd4: 7ffa ldrb r2, [r7, #31] - 8001bd6: 0092 lsls r2, r2, #2 - 8001bd8: 440a add r2, r1 - 8001bda: 005b lsls r3, r3, #1 - 8001bdc: 3320 adds r3, #32 - 8001bde: 443b add r3, r7 - 8001be0: f833 3c18 ldrh.w r3, [r3, #-24] - 8001be4: 8013 strh r3, [r2, #0] - for (i = 0U; i < 8U; i++) - 8001be6: 7ffb ldrb r3, [r7, #31] - 8001be8: 3301 adds r3, #1 - 8001bea: 77fb strb r3, [r7, #31] - 8001bec: 7ffb ldrb r3, [r7, #31] - 8001bee: 2b07 cmp r3, #7 - 8001bf0: d9ec bls.n 8001bcc - } - - /* Force low-power mode in the macrocell */ - hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_FSUSP; - 8001bf2: 687b ldr r3, [r7, #4] - 8001bf4: 681b ldr r3, [r3, #0] - 8001bf6: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 8001bfa: b29a uxth r2, r3 - 8001bfc: 687b ldr r3, [r7, #4] - 8001bfe: 681b ldr r3, [r3, #0] - 8001c00: f042 0208 orr.w r2, r2, #8 - 8001c04: b292 uxth r2, r2 - 8001c06: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */ - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SUSP); - 8001c0a: 687b ldr r3, [r7, #4] - 8001c0c: 681b ldr r3, [r3, #0] - 8001c0e: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 8001c12: b29a uxth r2, r3 - 8001c14: 687b ldr r3, [r7, #4] - 8001c16: 681b ldr r3, [r3, #0] - 8001c18: f422 6200 bic.w r2, r2, #2048 @ 0x800 - 8001c1c: b292 uxth r2, r2 - 8001c1e: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_LP_MODE; - 8001c22: 687b ldr r3, [r7, #4] - 8001c24: 681b ldr r3, [r3, #0] - 8001c26: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 8001c2a: b29a uxth r2, r3 - 8001c2c: 687b ldr r3, [r7, #4] - 8001c2e: 681b ldr r3, [r3, #0] - 8001c30: f042 0204 orr.w r2, r2, #4 - 8001c34: b292 uxth r2, r2 - 8001c36: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->SuspendCallback(hpcd); -#else - HAL_PCD_SuspendCallback(hpcd); - 8001c3a: 6878 ldr r0, [r7, #4] - 8001c3c: f006 ff4e bl 8008adc -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - - return; - 8001c40: e026 b.n 8001c90 - } - - if ((wIstr & USB_ISTR_SOF) == USB_ISTR_SOF) - 8001c42: 69bb ldr r3, [r7, #24] - 8001c44: f403 7300 and.w r3, r3, #512 @ 0x200 - 8001c48: 2b00 cmp r3, #0 - 8001c4a: d00f beq.n 8001c6c - { - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SOF); - 8001c4c: 687b ldr r3, [r7, #4] - 8001c4e: 681b ldr r3, [r3, #0] - 8001c50: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 8001c54: b29a uxth r2, r3 - 8001c56: 687b ldr r3, [r7, #4] - 8001c58: 681b ldr r3, [r3, #0] - 8001c5a: f422 7200 bic.w r2, r2, #512 @ 0x200 - 8001c5e: b292 uxth r2, r2 - 8001c60: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->SOFCallback(hpcd); -#else - HAL_PCD_SOFCallback(hpcd); - 8001c64: 6878 ldr r0, [r7, #4] - 8001c66: f006 ff0c bl 8008a82 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - - return; - 8001c6a: e011 b.n 8001c90 - } - - if ((wIstr & USB_ISTR_ESOF) == USB_ISTR_ESOF) - 8001c6c: 69bb ldr r3, [r7, #24] - 8001c6e: f403 7380 and.w r3, r3, #256 @ 0x100 - 8001c72: 2b00 cmp r3, #0 - 8001c74: d00c beq.n 8001c90 - { - /* clear ESOF flag in ISTR */ - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ESOF); - 8001c76: 687b ldr r3, [r7, #4] - 8001c78: 681b ldr r3, [r3, #0] - 8001c7a: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 8001c7e: b29a uxth r2, r3 - 8001c80: 687b ldr r3, [r7, #4] - 8001c82: 681b ldr r3, [r3, #0] - 8001c84: f422 7280 bic.w r2, r2, #256 @ 0x100 - 8001c88: b292 uxth r2, r2 - 8001c8a: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - return; - 8001c8e: bf00 nop - } -} - 8001c90: 3720 adds r7, #32 - 8001c92: 46bd mov sp, r7 - 8001c94: bd80 pop {r7, pc} - -08001c96 : - * @param hpcd PCD handle - * @param address new device address - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address) -{ - 8001c96: b580 push {r7, lr} - 8001c98: b082 sub sp, #8 - 8001c9a: af00 add r7, sp, #0 - 8001c9c: 6078 str r0, [r7, #4] - 8001c9e: 460b mov r3, r1 - 8001ca0: 70fb strb r3, [r7, #3] - __HAL_LOCK(hpcd); - 8001ca2: 687b ldr r3, [r7, #4] - 8001ca4: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 - 8001ca8: 2b01 cmp r3, #1 - 8001caa: d101 bne.n 8001cb0 - 8001cac: 2302 movs r3, #2 - 8001cae: e012 b.n 8001cd6 - 8001cb0: 687b ldr r3, [r7, #4] - 8001cb2: 2201 movs r2, #1 - 8001cb4: f883 2290 strb.w r2, [r3, #656] @ 0x290 - hpcd->USB_Address = address; - 8001cb8: 687b ldr r3, [r7, #4] - 8001cba: 78fa ldrb r2, [r7, #3] - 8001cbc: 735a strb r2, [r3, #13] - (void)USB_SetDevAddress(hpcd->Instance, address); - 8001cbe: 687b ldr r3, [r7, #4] - 8001cc0: 681b ldr r3, [r3, #0] - 8001cc2: 78fa ldrb r2, [r7, #3] - 8001cc4: 4611 mov r1, r2 - 8001cc6: 4618 mov r0, r3 - 8001cc8: f004 ffbc bl 8006c44 - __HAL_UNLOCK(hpcd); - 8001ccc: 687b ldr r3, [r7, #4] - 8001cce: 2200 movs r2, #0 - 8001cd0: f883 2290 strb.w r2, [r3, #656] @ 0x290 - - return HAL_OK; - 8001cd4: 2300 movs r3, #0 -} - 8001cd6: 4618 mov r0, r3 - 8001cd8: 3708 adds r7, #8 - 8001cda: 46bd mov sp, r7 - 8001cdc: bd80 pop {r7, pc} - -08001cde : - * @param ep_type endpoint type - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, - uint16_t ep_mps, uint8_t ep_type) -{ - 8001cde: b580 push {r7, lr} - 8001ce0: b084 sub sp, #16 - 8001ce2: af00 add r7, sp, #0 - 8001ce4: 6078 str r0, [r7, #4] - 8001ce6: 4608 mov r0, r1 - 8001ce8: 4611 mov r1, r2 - 8001cea: 461a mov r2, r3 - 8001cec: 4603 mov r3, r0 - 8001cee: 70fb strb r3, [r7, #3] - 8001cf0: 460b mov r3, r1 - 8001cf2: 803b strh r3, [r7, #0] - 8001cf4: 4613 mov r3, r2 - 8001cf6: 70bb strb r3, [r7, #2] - HAL_StatusTypeDef ret = HAL_OK; - 8001cf8: 2300 movs r3, #0 - 8001cfa: 72fb strb r3, [r7, #11] - PCD_EPTypeDef *ep; - - if ((ep_addr & 0x80U) == 0x80U) - 8001cfc: f997 3003 ldrsb.w r3, [r7, #3] - 8001d00: 2b00 cmp r3, #0 - 8001d02: da0e bge.n 8001d22 - { - ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; - 8001d04: 78fb ldrb r3, [r7, #3] - 8001d06: f003 0207 and.w r2, r3, #7 - 8001d0a: 4613 mov r3, r2 - 8001d0c: 009b lsls r3, r3, #2 - 8001d0e: 4413 add r3, r2 - 8001d10: 00db lsls r3, r3, #3 - 8001d12: 3310 adds r3, #16 - 8001d14: 687a ldr r2, [r7, #4] - 8001d16: 4413 add r3, r2 - 8001d18: 60fb str r3, [r7, #12] - ep->is_in = 1U; - 8001d1a: 68fb ldr r3, [r7, #12] - 8001d1c: 2201 movs r2, #1 - 8001d1e: 705a strb r2, [r3, #1] - 8001d20: e00e b.n 8001d40 - } - else - { - ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; - 8001d22: 78fb ldrb r3, [r7, #3] - 8001d24: f003 0207 and.w r2, r3, #7 - 8001d28: 4613 mov r3, r2 - 8001d2a: 009b lsls r3, r3, #2 - 8001d2c: 4413 add r3, r2 - 8001d2e: 00db lsls r3, r3, #3 - 8001d30: f503 73a8 add.w r3, r3, #336 @ 0x150 - 8001d34: 687a ldr r2, [r7, #4] - 8001d36: 4413 add r3, r2 - 8001d38: 60fb str r3, [r7, #12] - ep->is_in = 0U; - 8001d3a: 68fb ldr r3, [r7, #12] - 8001d3c: 2200 movs r2, #0 - 8001d3e: 705a strb r2, [r3, #1] - } - - ep->num = ep_addr & EP_ADDR_MSK; - 8001d40: 78fb ldrb r3, [r7, #3] - 8001d42: f003 0307 and.w r3, r3, #7 - 8001d46: b2da uxtb r2, r3 - 8001d48: 68fb ldr r3, [r7, #12] - 8001d4a: 701a strb r2, [r3, #0] - ep->maxpacket = ep_mps; - 8001d4c: 883a ldrh r2, [r7, #0] - 8001d4e: 68fb ldr r3, [r7, #12] - 8001d50: 611a str r2, [r3, #16] - ep->type = ep_type; - 8001d52: 68fb ldr r3, [r7, #12] - 8001d54: 78ba ldrb r2, [r7, #2] - 8001d56: 70da strb r2, [r3, #3] - ep->tx_fifo_num = ep->num; - } -#endif /* defined (USB_OTG_FS) */ - - /* Set initial data PID. */ - if (ep_type == EP_TYPE_BULK) - 8001d58: 78bb ldrb r3, [r7, #2] - 8001d5a: 2b02 cmp r3, #2 - 8001d5c: d102 bne.n 8001d64 - { - ep->data_pid_start = 0U; - 8001d5e: 68fb ldr r3, [r7, #12] - 8001d60: 2200 movs r2, #0 - 8001d62: 711a strb r2, [r3, #4] - } - - __HAL_LOCK(hpcd); - 8001d64: 687b ldr r3, [r7, #4] - 8001d66: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 - 8001d6a: 2b01 cmp r3, #1 - 8001d6c: d101 bne.n 8001d72 - 8001d6e: 2302 movs r3, #2 - 8001d70: e00e b.n 8001d90 - 8001d72: 687b ldr r3, [r7, #4] - 8001d74: 2201 movs r2, #1 - 8001d76: f883 2290 strb.w r2, [r3, #656] @ 0x290 - (void)USB_ActivateEndpoint(hpcd->Instance, ep); - 8001d7a: 687b ldr r3, [r7, #4] - 8001d7c: 681b ldr r3, [r3, #0] - 8001d7e: 68f9 ldr r1, [r7, #12] - 8001d80: 4618 mov r0, r3 - 8001d82: f002 fd05 bl 8004790 - __HAL_UNLOCK(hpcd); - 8001d86: 687b ldr r3, [r7, #4] - 8001d88: 2200 movs r2, #0 - 8001d8a: f883 2290 strb.w r2, [r3, #656] @ 0x290 - - return ret; - 8001d8e: 7afb ldrb r3, [r7, #11] -} - 8001d90: 4618 mov r0, r3 - 8001d92: 3710 adds r7, #16 - 8001d94: 46bd mov sp, r7 - 8001d96: bd80 pop {r7, pc} - -08001d98 : - * @param hpcd PCD handle - * @param ep_addr endpoint address - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) -{ - 8001d98: b580 push {r7, lr} - 8001d9a: b084 sub sp, #16 - 8001d9c: af00 add r7, sp, #0 - 8001d9e: 6078 str r0, [r7, #4] - 8001da0: 460b mov r3, r1 - 8001da2: 70fb strb r3, [r7, #3] - PCD_EPTypeDef *ep; - - if ((ep_addr & 0x80U) == 0x80U) - 8001da4: f997 3003 ldrsb.w r3, [r7, #3] - 8001da8: 2b00 cmp r3, #0 - 8001daa: da0e bge.n 8001dca - { - ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; - 8001dac: 78fb ldrb r3, [r7, #3] - 8001dae: f003 0207 and.w r2, r3, #7 - 8001db2: 4613 mov r3, r2 - 8001db4: 009b lsls r3, r3, #2 - 8001db6: 4413 add r3, r2 - 8001db8: 00db lsls r3, r3, #3 - 8001dba: 3310 adds r3, #16 - 8001dbc: 687a ldr r2, [r7, #4] - 8001dbe: 4413 add r3, r2 - 8001dc0: 60fb str r3, [r7, #12] - ep->is_in = 1U; - 8001dc2: 68fb ldr r3, [r7, #12] - 8001dc4: 2201 movs r2, #1 - 8001dc6: 705a strb r2, [r3, #1] - 8001dc8: e00e b.n 8001de8 - } - else - { - ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; - 8001dca: 78fb ldrb r3, [r7, #3] - 8001dcc: f003 0207 and.w r2, r3, #7 - 8001dd0: 4613 mov r3, r2 - 8001dd2: 009b lsls r3, r3, #2 - 8001dd4: 4413 add r3, r2 - 8001dd6: 00db lsls r3, r3, #3 - 8001dd8: f503 73a8 add.w r3, r3, #336 @ 0x150 - 8001ddc: 687a ldr r2, [r7, #4] - 8001dde: 4413 add r3, r2 - 8001de0: 60fb str r3, [r7, #12] - ep->is_in = 0U; - 8001de2: 68fb ldr r3, [r7, #12] - 8001de4: 2200 movs r2, #0 - 8001de6: 705a strb r2, [r3, #1] - } - ep->num = ep_addr & EP_ADDR_MSK; - 8001de8: 78fb ldrb r3, [r7, #3] - 8001dea: f003 0307 and.w r3, r3, #7 - 8001dee: b2da uxtb r2, r3 - 8001df0: 68fb ldr r3, [r7, #12] - 8001df2: 701a strb r2, [r3, #0] - - __HAL_LOCK(hpcd); - 8001df4: 687b ldr r3, [r7, #4] - 8001df6: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 - 8001dfa: 2b01 cmp r3, #1 - 8001dfc: d101 bne.n 8001e02 - 8001dfe: 2302 movs r3, #2 - 8001e00: e00e b.n 8001e20 - 8001e02: 687b ldr r3, [r7, #4] - 8001e04: 2201 movs r2, #1 - 8001e06: f883 2290 strb.w r2, [r3, #656] @ 0x290 - (void)USB_DeactivateEndpoint(hpcd->Instance, ep); - 8001e0a: 687b ldr r3, [r7, #4] - 8001e0c: 681b ldr r3, [r3, #0] - 8001e0e: 68f9 ldr r1, [r7, #12] - 8001e10: 4618 mov r0, r3 - 8001e12: f003 f87d bl 8004f10 - __HAL_UNLOCK(hpcd); - 8001e16: 687b ldr r3, [r7, #4] - 8001e18: 2200 movs r2, #0 - 8001e1a: f883 2290 strb.w r2, [r3, #656] @ 0x290 - return HAL_OK; - 8001e1e: 2300 movs r3, #0 -} - 8001e20: 4618 mov r0, r3 - 8001e22: 3710 adds r7, #16 - 8001e24: 46bd mov sp, r7 - 8001e26: bd80 pop {r7, pc} - -08001e28 : - * @param pBuf pointer to the reception buffer - * @param len amount of data to be received - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len) -{ - 8001e28: b580 push {r7, lr} - 8001e2a: b086 sub sp, #24 - 8001e2c: af00 add r7, sp, #0 - 8001e2e: 60f8 str r0, [r7, #12] - 8001e30: 607a str r2, [r7, #4] - 8001e32: 603b str r3, [r7, #0] - 8001e34: 460b mov r3, r1 - 8001e36: 72fb strb r3, [r7, #11] - PCD_EPTypeDef *ep; - - ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; - 8001e38: 7afb ldrb r3, [r7, #11] - 8001e3a: f003 0207 and.w r2, r3, #7 - 8001e3e: 4613 mov r3, r2 - 8001e40: 009b lsls r3, r3, #2 - 8001e42: 4413 add r3, r2 - 8001e44: 00db lsls r3, r3, #3 - 8001e46: f503 73a8 add.w r3, r3, #336 @ 0x150 - 8001e4a: 68fa ldr r2, [r7, #12] - 8001e4c: 4413 add r3, r2 - 8001e4e: 617b str r3, [r7, #20] - - /*setup and start the Xfer */ - ep->xfer_buff = pBuf; - 8001e50: 697b ldr r3, [r7, #20] - 8001e52: 687a ldr r2, [r7, #4] - 8001e54: 615a str r2, [r3, #20] - ep->xfer_len = len; - 8001e56: 697b ldr r3, [r7, #20] - 8001e58: 683a ldr r2, [r7, #0] - 8001e5a: 619a str r2, [r3, #24] - ep->xfer_count = 0U; - 8001e5c: 697b ldr r3, [r7, #20] - 8001e5e: 2200 movs r2, #0 - 8001e60: 61da str r2, [r3, #28] - ep->is_in = 0U; - 8001e62: 697b ldr r3, [r7, #20] - 8001e64: 2200 movs r2, #0 - 8001e66: 705a strb r2, [r3, #1] - ep->num = ep_addr & EP_ADDR_MSK; - 8001e68: 7afb ldrb r3, [r7, #11] - 8001e6a: f003 0307 and.w r3, r3, #7 - 8001e6e: b2da uxtb r2, r3 - 8001e70: 697b ldr r3, [r7, #20] - 8001e72: 701a strb r2, [r3, #0] - - (void)USB_EPStartXfer(hpcd->Instance, ep); - 8001e74: 68fb ldr r3, [r7, #12] - 8001e76: 681b ldr r3, [r3, #0] - 8001e78: 6979 ldr r1, [r7, #20] - 8001e7a: 4618 mov r0, r3 - 8001e7c: f003 fa34 bl 80052e8 - - return HAL_OK; - 8001e80: 2300 movs r3, #0 -} - 8001e82: 4618 mov r0, r3 - 8001e84: 3718 adds r7, #24 - 8001e86: 46bd mov sp, r7 - 8001e88: bd80 pop {r7, pc} - -08001e8a : - * @param hpcd PCD handle - * @param ep_addr endpoint address - * @retval Data Size - */ -uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef const *hpcd, uint8_t ep_addr) -{ - 8001e8a: b480 push {r7} - 8001e8c: b083 sub sp, #12 - 8001e8e: af00 add r7, sp, #0 - 8001e90: 6078 str r0, [r7, #4] - 8001e92: 460b mov r3, r1 - 8001e94: 70fb strb r3, [r7, #3] - return hpcd->OUT_ep[ep_addr & EP_ADDR_MSK].xfer_count; - 8001e96: 78fb ldrb r3, [r7, #3] - 8001e98: f003 0207 and.w r2, r3, #7 - 8001e9c: 6879 ldr r1, [r7, #4] - 8001e9e: 4613 mov r3, r2 - 8001ea0: 009b lsls r3, r3, #2 - 8001ea2: 4413 add r3, r2 - 8001ea4: 00db lsls r3, r3, #3 - 8001ea6: 440b add r3, r1 - 8001ea8: f503 73b6 add.w r3, r3, #364 @ 0x16c - 8001eac: 681b ldr r3, [r3, #0] -} - 8001eae: 4618 mov r0, r3 - 8001eb0: 370c adds r7, #12 - 8001eb2: 46bd mov sp, r7 - 8001eb4: bc80 pop {r7} - 8001eb6: 4770 bx lr - -08001eb8 : - * @param pBuf pointer to the transmission buffer - * @param len amount of data to be sent - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len) -{ - 8001eb8: b580 push {r7, lr} - 8001eba: b086 sub sp, #24 - 8001ebc: af00 add r7, sp, #0 - 8001ebe: 60f8 str r0, [r7, #12] - 8001ec0: 607a str r2, [r7, #4] - 8001ec2: 603b str r3, [r7, #0] - 8001ec4: 460b mov r3, r1 - 8001ec6: 72fb strb r3, [r7, #11] - PCD_EPTypeDef *ep; - - ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; - 8001ec8: 7afb ldrb r3, [r7, #11] - 8001eca: f003 0207 and.w r2, r3, #7 - 8001ece: 4613 mov r3, r2 - 8001ed0: 009b lsls r3, r3, #2 - 8001ed2: 4413 add r3, r2 - 8001ed4: 00db lsls r3, r3, #3 - 8001ed6: 3310 adds r3, #16 - 8001ed8: 68fa ldr r2, [r7, #12] - 8001eda: 4413 add r3, r2 - 8001edc: 617b str r3, [r7, #20] - - /*setup and start the Xfer */ - ep->xfer_buff = pBuf; - 8001ede: 697b ldr r3, [r7, #20] - 8001ee0: 687a ldr r2, [r7, #4] - 8001ee2: 615a str r2, [r3, #20] - ep->xfer_len = len; - 8001ee4: 697b ldr r3, [r7, #20] - 8001ee6: 683a ldr r2, [r7, #0] - 8001ee8: 619a str r2, [r3, #24] -#if defined (USB) - ep->xfer_fill_db = 1U; - 8001eea: 697b ldr r3, [r7, #20] - 8001eec: 2201 movs r2, #1 - 8001eee: f883 2024 strb.w r2, [r3, #36] @ 0x24 - ep->xfer_len_db = len; - 8001ef2: 697b ldr r3, [r7, #20] - 8001ef4: 683a ldr r2, [r7, #0] - 8001ef6: 621a str r2, [r3, #32] -#endif /* defined (USB) */ - ep->xfer_count = 0U; - 8001ef8: 697b ldr r3, [r7, #20] - 8001efa: 2200 movs r2, #0 - 8001efc: 61da str r2, [r3, #28] - ep->is_in = 1U; - 8001efe: 697b ldr r3, [r7, #20] - 8001f00: 2201 movs r2, #1 - 8001f02: 705a strb r2, [r3, #1] - ep->num = ep_addr & EP_ADDR_MSK; - 8001f04: 7afb ldrb r3, [r7, #11] - 8001f06: f003 0307 and.w r3, r3, #7 - 8001f0a: b2da uxtb r2, r3 - 8001f0c: 697b ldr r3, [r7, #20] - 8001f0e: 701a strb r2, [r3, #0] - - (void)USB_EPStartXfer(hpcd->Instance, ep); - 8001f10: 68fb ldr r3, [r7, #12] - 8001f12: 681b ldr r3, [r3, #0] - 8001f14: 6979 ldr r1, [r7, #20] - 8001f16: 4618 mov r0, r3 - 8001f18: f003 f9e6 bl 80052e8 - - return HAL_OK; - 8001f1c: 2300 movs r3, #0 -} - 8001f1e: 4618 mov r0, r3 - 8001f20: 3718 adds r7, #24 - 8001f22: 46bd mov sp, r7 - 8001f24: bd80 pop {r7, pc} - -08001f26 : - * @param hpcd PCD handle - * @param ep_addr endpoint address - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) -{ - 8001f26: b580 push {r7, lr} - 8001f28: b084 sub sp, #16 - 8001f2a: af00 add r7, sp, #0 - 8001f2c: 6078 str r0, [r7, #4] - 8001f2e: 460b mov r3, r1 - 8001f30: 70fb strb r3, [r7, #3] - PCD_EPTypeDef *ep; - - if (((uint32_t)ep_addr & EP_ADDR_MSK) > hpcd->Init.dev_endpoints) - 8001f32: 78fb ldrb r3, [r7, #3] - 8001f34: f003 0307 and.w r3, r3, #7 - 8001f38: 687a ldr r2, [r7, #4] - 8001f3a: 7912 ldrb r2, [r2, #4] - 8001f3c: 4293 cmp r3, r2 - 8001f3e: d901 bls.n 8001f44 - { - return HAL_ERROR; - 8001f40: 2301 movs r3, #1 - 8001f42: e04c b.n 8001fde - } - - if ((0x80U & ep_addr) == 0x80U) - 8001f44: f997 3003 ldrsb.w r3, [r7, #3] - 8001f48: 2b00 cmp r3, #0 - 8001f4a: da0e bge.n 8001f6a - { - ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; - 8001f4c: 78fb ldrb r3, [r7, #3] - 8001f4e: f003 0207 and.w r2, r3, #7 - 8001f52: 4613 mov r3, r2 - 8001f54: 009b lsls r3, r3, #2 - 8001f56: 4413 add r3, r2 - 8001f58: 00db lsls r3, r3, #3 - 8001f5a: 3310 adds r3, #16 - 8001f5c: 687a ldr r2, [r7, #4] - 8001f5e: 4413 add r3, r2 - 8001f60: 60fb str r3, [r7, #12] - ep->is_in = 1U; - 8001f62: 68fb ldr r3, [r7, #12] - 8001f64: 2201 movs r2, #1 - 8001f66: 705a strb r2, [r3, #1] - 8001f68: e00c b.n 8001f84 - } - else - { - ep = &hpcd->OUT_ep[ep_addr]; - 8001f6a: 78fa ldrb r2, [r7, #3] - 8001f6c: 4613 mov r3, r2 - 8001f6e: 009b lsls r3, r3, #2 - 8001f70: 4413 add r3, r2 - 8001f72: 00db lsls r3, r3, #3 - 8001f74: f503 73a8 add.w r3, r3, #336 @ 0x150 - 8001f78: 687a ldr r2, [r7, #4] - 8001f7a: 4413 add r3, r2 - 8001f7c: 60fb str r3, [r7, #12] - ep->is_in = 0U; - 8001f7e: 68fb ldr r3, [r7, #12] - 8001f80: 2200 movs r2, #0 - 8001f82: 705a strb r2, [r3, #1] - } - - ep->is_stall = 1U; - 8001f84: 68fb ldr r3, [r7, #12] - 8001f86: 2201 movs r2, #1 - 8001f88: 709a strb r2, [r3, #2] - ep->num = ep_addr & EP_ADDR_MSK; - 8001f8a: 78fb ldrb r3, [r7, #3] - 8001f8c: f003 0307 and.w r3, r3, #7 - 8001f90: b2da uxtb r2, r3 - 8001f92: 68fb ldr r3, [r7, #12] - 8001f94: 701a strb r2, [r3, #0] - - __HAL_LOCK(hpcd); - 8001f96: 687b ldr r3, [r7, #4] - 8001f98: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 - 8001f9c: 2b01 cmp r3, #1 - 8001f9e: d101 bne.n 8001fa4 - 8001fa0: 2302 movs r3, #2 - 8001fa2: e01c b.n 8001fde - 8001fa4: 687b ldr r3, [r7, #4] - 8001fa6: 2201 movs r2, #1 - 8001fa8: f883 2290 strb.w r2, [r3, #656] @ 0x290 - - (void)USB_EPSetStall(hpcd->Instance, ep); - 8001fac: 687b ldr r3, [r7, #4] - 8001fae: 681b ldr r3, [r3, #0] - 8001fb0: 68f9 ldr r1, [r7, #12] - 8001fb2: 4618 mov r0, r3 - 8001fb4: f004 fd49 bl 8006a4a - - if ((ep_addr & EP_ADDR_MSK) == 0U) - 8001fb8: 78fb ldrb r3, [r7, #3] - 8001fba: f003 0307 and.w r3, r3, #7 - 8001fbe: 2b00 cmp r3, #0 - 8001fc0: d108 bne.n 8001fd4 - { - (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t *)hpcd->Setup); - 8001fc2: 687b ldr r3, [r7, #4] - 8001fc4: 681a ldr r2, [r3, #0] - 8001fc6: 687b ldr r3, [r7, #4] - 8001fc8: f503 7326 add.w r3, r3, #664 @ 0x298 - 8001fcc: 4619 mov r1, r3 - 8001fce: 4610 mov r0, r2 - 8001fd0: f004 fe6e bl 8006cb0 - } - - __HAL_UNLOCK(hpcd); - 8001fd4: 687b ldr r3, [r7, #4] - 8001fd6: 2200 movs r2, #0 - 8001fd8: f883 2290 strb.w r2, [r3, #656] @ 0x290 - - return HAL_OK; - 8001fdc: 2300 movs r3, #0 -} - 8001fde: 4618 mov r0, r3 - 8001fe0: 3710 adds r7, #16 - 8001fe2: 46bd mov sp, r7 - 8001fe4: bd80 pop {r7, pc} - -08001fe6 : - * @param hpcd PCD handle - * @param ep_addr endpoint address - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) -{ - 8001fe6: b580 push {r7, lr} - 8001fe8: b084 sub sp, #16 - 8001fea: af00 add r7, sp, #0 - 8001fec: 6078 str r0, [r7, #4] - 8001fee: 460b mov r3, r1 - 8001ff0: 70fb strb r3, [r7, #3] - PCD_EPTypeDef *ep; - - if (((uint32_t)ep_addr & 0x0FU) > hpcd->Init.dev_endpoints) - 8001ff2: 78fb ldrb r3, [r7, #3] - 8001ff4: f003 030f and.w r3, r3, #15 - 8001ff8: 687a ldr r2, [r7, #4] - 8001ffa: 7912 ldrb r2, [r2, #4] - 8001ffc: 4293 cmp r3, r2 - 8001ffe: d901 bls.n 8002004 - { - return HAL_ERROR; - 8002000: 2301 movs r3, #1 - 8002002: e040 b.n 8002086 - } - - if ((0x80U & ep_addr) == 0x80U) - 8002004: f997 3003 ldrsb.w r3, [r7, #3] - 8002008: 2b00 cmp r3, #0 - 800200a: da0e bge.n 800202a - { - ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; - 800200c: 78fb ldrb r3, [r7, #3] - 800200e: f003 0207 and.w r2, r3, #7 - 8002012: 4613 mov r3, r2 - 8002014: 009b lsls r3, r3, #2 - 8002016: 4413 add r3, r2 - 8002018: 00db lsls r3, r3, #3 - 800201a: 3310 adds r3, #16 - 800201c: 687a ldr r2, [r7, #4] - 800201e: 4413 add r3, r2 - 8002020: 60fb str r3, [r7, #12] - ep->is_in = 1U; - 8002022: 68fb ldr r3, [r7, #12] - 8002024: 2201 movs r2, #1 - 8002026: 705a strb r2, [r3, #1] - 8002028: e00e b.n 8002048 - } - else - { - ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; - 800202a: 78fb ldrb r3, [r7, #3] - 800202c: f003 0207 and.w r2, r3, #7 - 8002030: 4613 mov r3, r2 - 8002032: 009b lsls r3, r3, #2 - 8002034: 4413 add r3, r2 - 8002036: 00db lsls r3, r3, #3 - 8002038: f503 73a8 add.w r3, r3, #336 @ 0x150 - 800203c: 687a ldr r2, [r7, #4] - 800203e: 4413 add r3, r2 - 8002040: 60fb str r3, [r7, #12] - ep->is_in = 0U; - 8002042: 68fb ldr r3, [r7, #12] - 8002044: 2200 movs r2, #0 - 8002046: 705a strb r2, [r3, #1] - } - - ep->is_stall = 0U; - 8002048: 68fb ldr r3, [r7, #12] - 800204a: 2200 movs r2, #0 - 800204c: 709a strb r2, [r3, #2] - ep->num = ep_addr & EP_ADDR_MSK; - 800204e: 78fb ldrb r3, [r7, #3] - 8002050: f003 0307 and.w r3, r3, #7 - 8002054: b2da uxtb r2, r3 - 8002056: 68fb ldr r3, [r7, #12] - 8002058: 701a strb r2, [r3, #0] - - __HAL_LOCK(hpcd); - 800205a: 687b ldr r3, [r7, #4] - 800205c: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 - 8002060: 2b01 cmp r3, #1 - 8002062: d101 bne.n 8002068 - 8002064: 2302 movs r3, #2 - 8002066: e00e b.n 8002086 - 8002068: 687b ldr r3, [r7, #4] - 800206a: 2201 movs r2, #1 - 800206c: f883 2290 strb.w r2, [r3, #656] @ 0x290 - (void)USB_EPClearStall(hpcd->Instance, ep); - 8002070: 687b ldr r3, [r7, #4] - 8002072: 681b ldr r3, [r3, #0] - 8002074: 68f9 ldr r1, [r7, #12] - 8002076: 4618 mov r0, r3 - 8002078: f004 fd37 bl 8006aea - __HAL_UNLOCK(hpcd); - 800207c: 687b ldr r3, [r7, #4] - 800207e: 2200 movs r2, #0 - 8002080: f883 2290 strb.w r2, [r3, #656] @ 0x290 - - return HAL_OK; - 8002084: 2300 movs r3, #0 -} - 8002086: 4618 mov r0, r3 - 8002088: 3710 adds r7, #16 - 800208a: 46bd mov sp, r7 - 800208c: bd80 pop {r7, pc} - -0800208e : - * @brief This function handles PCD Endpoint interrupt request. - * @param hpcd PCD handle - * @retval HAL status - */ -static HAL_StatusTypeDef PCD_EP_ISR_Handler(PCD_HandleTypeDef *hpcd) -{ - 800208e: b580 push {r7, lr} - 8002090: b096 sub sp, #88 @ 0x58 - 8002092: af00 add r7, sp, #0 - 8002094: 6078 str r0, [r7, #4] -#if (USE_USB_DOUBLE_BUFFER != 1U) - count = 0U; -#endif /* USE_USB_DOUBLE_BUFFER */ - - /* stay in loop while pending interrupts */ - while ((hpcd->Instance->ISTR & USB_ISTR_CTR) != 0U) - 8002096: e3bb b.n 8002810 - { - wIstr = hpcd->Instance->ISTR; - 8002098: 687b ldr r3, [r7, #4] - 800209a: 681b ldr r3, [r3, #0] - 800209c: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 80020a0: f8a7 304e strh.w r3, [r7, #78] @ 0x4e - - /* extract highest priority endpoint number */ - epindex = (uint8_t)(wIstr & USB_ISTR_EP_ID); - 80020a4: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e - 80020a8: b2db uxtb r3, r3 - 80020aa: f003 030f and.w r3, r3, #15 - 80020ae: f887 304d strb.w r3, [r7, #77] @ 0x4d - - if (epindex == 0U) - 80020b2: f897 304d ldrb.w r3, [r7, #77] @ 0x4d - 80020b6: 2b00 cmp r3, #0 - 80020b8: f040 8175 bne.w 80023a6 - { - /* Decode and service control endpoint interrupt */ - - /* DIR bit = origin of the interrupt */ - if ((wIstr & USB_ISTR_DIR) == 0U) - 80020bc: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e - 80020c0: f003 0310 and.w r3, r3, #16 - 80020c4: 2b00 cmp r3, #0 - 80020c6: d14e bne.n 8002166 - { - /* DIR = 0 */ - - /* DIR = 0 => IN int */ - /* DIR = 0 implies that (EP_CTR_TX = 1) always */ - PCD_CLEAR_TX_EP_CTR(hpcd->Instance, PCD_ENDP0); - 80020c8: 687b ldr r3, [r7, #4] - 80020ca: 681b ldr r3, [r3, #0] - 80020cc: 881b ldrh r3, [r3, #0] - 80020ce: b29b uxth r3, r3 - 80020d0: f423 43e1 bic.w r3, r3, #28800 @ 0x7080 - 80020d4: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80020d8: 81fb strh r3, [r7, #14] - 80020da: 687b ldr r3, [r7, #4] - 80020dc: 681a ldr r2, [r3, #0] - 80020de: 89fb ldrh r3, [r7, #14] - 80020e0: ea6f 4343 mvn.w r3, r3, lsl #17 - 80020e4: ea6f 4353 mvn.w r3, r3, lsr #17 - 80020e8: b29b uxth r3, r3 - 80020ea: 8013 strh r3, [r2, #0] - ep = &hpcd->IN_ep[0]; - 80020ec: 687b ldr r3, [r7, #4] - 80020ee: 3310 adds r3, #16 - 80020f0: 657b str r3, [r7, #84] @ 0x54 - - ep->xfer_count = PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); - 80020f2: 687b ldr r3, [r7, #4] - 80020f4: 681b ldr r3, [r3, #0] - 80020f6: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80020fa: b29b uxth r3, r3 - 80020fc: 461a mov r2, r3 - 80020fe: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002100: 781b ldrb r3, [r3, #0] - 8002102: 00db lsls r3, r3, #3 - 8002104: 4413 add r3, r2 - 8002106: 3302 adds r3, #2 - 8002108: 005b lsls r3, r3, #1 - 800210a: 687a ldr r2, [r7, #4] - 800210c: 6812 ldr r2, [r2, #0] - 800210e: 4413 add r3, r2 - 8002110: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8002114: 881b ldrh r3, [r3, #0] - 8002116: f3c3 0209 ubfx r2, r3, #0, #10 - 800211a: 6d7b ldr r3, [r7, #84] @ 0x54 - 800211c: 61da str r2, [r3, #28] - ep->xfer_buff += ep->xfer_count; - 800211e: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002120: 695a ldr r2, [r3, #20] - 8002122: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002124: 69db ldr r3, [r3, #28] - 8002126: 441a add r2, r3 - 8002128: 6d7b ldr r3, [r7, #84] @ 0x54 - 800212a: 615a str r2, [r3, #20] - - /* TX COMPLETE */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->DataInStageCallback(hpcd, 0U); -#else - HAL_PCD_DataInStageCallback(hpcd, 0U); - 800212c: 2100 movs r1, #0 - 800212e: 6878 ldr r0, [r7, #4] - 8002130: f006 fc8d bl 8008a4e -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - - if ((hpcd->USB_Address > 0U) && (ep->xfer_len == 0U)) - 8002134: 687b ldr r3, [r7, #4] - 8002136: 7b5b ldrb r3, [r3, #13] - 8002138: b2db uxtb r3, r3 - 800213a: 2b00 cmp r3, #0 - 800213c: f000 8368 beq.w 8002810 - 8002140: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002142: 699b ldr r3, [r3, #24] - 8002144: 2b00 cmp r3, #0 - 8002146: f040 8363 bne.w 8002810 - { - hpcd->Instance->DADDR = ((uint16_t)hpcd->USB_Address | USB_DADDR_EF); - 800214a: 687b ldr r3, [r7, #4] - 800214c: 7b5b ldrb r3, [r3, #13] - 800214e: b2db uxtb r3, r3 - 8002150: f063 037f orn r3, r3, #127 @ 0x7f - 8002154: b2da uxtb r2, r3 - 8002156: 687b ldr r3, [r7, #4] - 8002158: 681b ldr r3, [r3, #0] - 800215a: f8a3 204c strh.w r2, [r3, #76] @ 0x4c - hpcd->USB_Address = 0U; - 800215e: 687b ldr r3, [r7, #4] - 8002160: 2200 movs r2, #0 - 8002162: 735a strb r2, [r3, #13] - 8002164: e354 b.n 8002810 - { - /* DIR = 1 */ - - /* DIR = 1 & CTR_RX => SETUP or OUT int */ - /* DIR = 1 & (CTR_TX | CTR_RX) => 2 int pending */ - ep = &hpcd->OUT_ep[0]; - 8002166: 687b ldr r3, [r7, #4] - 8002168: f503 73a8 add.w r3, r3, #336 @ 0x150 - 800216c: 657b str r3, [r7, #84] @ 0x54 - wEPVal = PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); - 800216e: 687b ldr r3, [r7, #4] - 8002170: 681b ldr r3, [r3, #0] - 8002172: 881b ldrh r3, [r3, #0] - 8002174: f8a7 304a strh.w r3, [r7, #74] @ 0x4a - - if ((wEPVal & USB_EP_SETUP) != 0U) - 8002178: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 800217c: f403 6300 and.w r3, r3, #2048 @ 0x800 - 8002180: 2b00 cmp r3, #0 - 8002182: d034 beq.n 80021ee - { - /* Get SETUP Packet */ - ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); - 8002184: 687b ldr r3, [r7, #4] - 8002186: 681b ldr r3, [r3, #0] - 8002188: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800218c: b29b uxth r3, r3 - 800218e: 461a mov r2, r3 - 8002190: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002192: 781b ldrb r3, [r3, #0] - 8002194: 00db lsls r3, r3, #3 - 8002196: 4413 add r3, r2 - 8002198: 3306 adds r3, #6 - 800219a: 005b lsls r3, r3, #1 - 800219c: 687a ldr r2, [r7, #4] - 800219e: 6812 ldr r2, [r2, #0] - 80021a0: 4413 add r3, r2 - 80021a2: f503 6380 add.w r3, r3, #1024 @ 0x400 - 80021a6: 881b ldrh r3, [r3, #0] - 80021a8: f3c3 0209 ubfx r2, r3, #0, #10 - 80021ac: 6d7b ldr r3, [r7, #84] @ 0x54 - 80021ae: 61da str r2, [r3, #28] - - USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup, - 80021b0: 687b ldr r3, [r7, #4] - 80021b2: 6818 ldr r0, [r3, #0] - 80021b4: 687b ldr r3, [r7, #4] - 80021b6: f503 7126 add.w r1, r3, #664 @ 0x298 - 80021ba: 6d7b ldr r3, [r7, #84] @ 0x54 - 80021bc: 88da ldrh r2, [r3, #6] - ep->pmaadress, (uint16_t)ep->xfer_count); - 80021be: 6d7b ldr r3, [r7, #84] @ 0x54 - 80021c0: 69db ldr r3, [r3, #28] - USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup, - 80021c2: b29b uxth r3, r3 - 80021c4: f004 fdc5 bl 8006d52 - - /* SETUP bit kept frozen while CTR_RX = 1 */ - PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); - 80021c8: 687b ldr r3, [r7, #4] - 80021ca: 681b ldr r3, [r3, #0] - 80021cc: 881b ldrh r3, [r3, #0] - 80021ce: b29a uxth r2, r3 - 80021d0: f640 738f movw r3, #3983 @ 0xf8f - 80021d4: 4013 ands r3, r2 - 80021d6: 823b strh r3, [r7, #16] - 80021d8: 687b ldr r3, [r7, #4] - 80021da: 681b ldr r3, [r3, #0] - 80021dc: 8a3a ldrh r2, [r7, #16] - 80021de: f042 0280 orr.w r2, r2, #128 @ 0x80 - 80021e2: b292 uxth r2, r2 - 80021e4: 801a strh r2, [r3, #0] - - /* Process SETUP Packet*/ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->SetupStageCallback(hpcd); -#else - HAL_PCD_SetupStageCallback(hpcd); - 80021e6: 6878 ldr r0, [r7, #4] - 80021e8: f006 fc04 bl 80089f4 - 80021ec: e310 b.n 8002810 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - } - else if ((wEPVal & USB_EP_CTR_RX) != 0U) - 80021ee: f9b7 304a ldrsh.w r3, [r7, #74] @ 0x4a - 80021f2: 2b00 cmp r3, #0 - 80021f4: f280 830c bge.w 8002810 - { - PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); - 80021f8: 687b ldr r3, [r7, #4] - 80021fa: 681b ldr r3, [r3, #0] - 80021fc: 881b ldrh r3, [r3, #0] - 80021fe: b29a uxth r2, r3 - 8002200: f640 738f movw r3, #3983 @ 0xf8f - 8002204: 4013 ands r3, r2 - 8002206: 83fb strh r3, [r7, #30] - 8002208: 687b ldr r3, [r7, #4] - 800220a: 681b ldr r3, [r3, #0] - 800220c: 8bfa ldrh r2, [r7, #30] - 800220e: f042 0280 orr.w r2, r2, #128 @ 0x80 - 8002212: b292 uxth r2, r2 - 8002214: 801a strh r2, [r3, #0] - - /* Get Control Data OUT Packet */ - ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); - 8002216: 687b ldr r3, [r7, #4] - 8002218: 681b ldr r3, [r3, #0] - 800221a: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800221e: b29b uxth r3, r3 - 8002220: 461a mov r2, r3 - 8002222: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002224: 781b ldrb r3, [r3, #0] - 8002226: 00db lsls r3, r3, #3 - 8002228: 4413 add r3, r2 - 800222a: 3306 adds r3, #6 - 800222c: 005b lsls r3, r3, #1 - 800222e: 687a ldr r2, [r7, #4] - 8002230: 6812 ldr r2, [r2, #0] - 8002232: 4413 add r3, r2 - 8002234: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8002238: 881b ldrh r3, [r3, #0] - 800223a: f3c3 0209 ubfx r2, r3, #0, #10 - 800223e: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002240: 61da str r2, [r3, #28] - - if ((ep->xfer_count != 0U) && (ep->xfer_buff != 0U)) - 8002242: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002244: 69db ldr r3, [r3, #28] - 8002246: 2b00 cmp r3, #0 - 8002248: d019 beq.n 800227e - 800224a: 6d7b ldr r3, [r7, #84] @ 0x54 - 800224c: 695b ldr r3, [r3, #20] - 800224e: 2b00 cmp r3, #0 - 8002250: d015 beq.n 800227e - { - USB_ReadPMA(hpcd->Instance, ep->xfer_buff, - 8002252: 687b ldr r3, [r7, #4] - 8002254: 6818 ldr r0, [r3, #0] - 8002256: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002258: 6959 ldr r1, [r3, #20] - 800225a: 6d7b ldr r3, [r7, #84] @ 0x54 - 800225c: 88da ldrh r2, [r3, #6] - ep->pmaadress, (uint16_t)ep->xfer_count); - 800225e: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002260: 69db ldr r3, [r3, #28] - USB_ReadPMA(hpcd->Instance, ep->xfer_buff, - 8002262: b29b uxth r3, r3 - 8002264: f004 fd75 bl 8006d52 - - ep->xfer_buff += ep->xfer_count; - 8002268: 6d7b ldr r3, [r7, #84] @ 0x54 - 800226a: 695a ldr r2, [r3, #20] - 800226c: 6d7b ldr r3, [r7, #84] @ 0x54 - 800226e: 69db ldr r3, [r3, #28] - 8002270: 441a add r2, r3 - 8002272: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002274: 615a str r2, [r3, #20] - - /* Process Control Data OUT Packet */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->DataOutStageCallback(hpcd, 0U); -#else - HAL_PCD_DataOutStageCallback(hpcd, 0U); - 8002276: 2100 movs r1, #0 - 8002278: 6878 ldr r0, [r7, #4] - 800227a: f006 fbcd bl 8008a18 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - } - - wEPVal = (uint16_t)PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); - 800227e: 687b ldr r3, [r7, #4] - 8002280: 681b ldr r3, [r3, #0] - 8002282: 881b ldrh r3, [r3, #0] - 8002284: f8a7 304a strh.w r3, [r7, #74] @ 0x4a - - if (((wEPVal & USB_EP_SETUP) == 0U) && ((wEPVal & USB_EP_RX_STRX) != USB_EP_RX_VALID)) - 8002288: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 800228c: f403 6300 and.w r3, r3, #2048 @ 0x800 - 8002290: 2b00 cmp r3, #0 - 8002292: f040 82bd bne.w 8002810 - 8002296: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 800229a: f403 5340 and.w r3, r3, #12288 @ 0x3000 - 800229e: f5b3 5f40 cmp.w r3, #12288 @ 0x3000 - 80022a2: f000 82b5 beq.w 8002810 - { - PCD_SET_EP_RX_CNT(hpcd->Instance, PCD_ENDP0, ep->maxpacket); - 80022a6: 687b ldr r3, [r7, #4] - 80022a8: 681b ldr r3, [r3, #0] - 80022aa: 61bb str r3, [r7, #24] - 80022ac: 687b ldr r3, [r7, #4] - 80022ae: 681b ldr r3, [r3, #0] - 80022b0: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80022b4: b29b uxth r3, r3 - 80022b6: 461a mov r2, r3 - 80022b8: 69bb ldr r3, [r7, #24] - 80022ba: 4413 add r3, r2 - 80022bc: 61bb str r3, [r7, #24] - 80022be: 69bb ldr r3, [r7, #24] - 80022c0: f203 430c addw r3, r3, #1036 @ 0x40c - 80022c4: 617b str r3, [r7, #20] - 80022c6: 697b ldr r3, [r7, #20] - 80022c8: 881b ldrh r3, [r3, #0] - 80022ca: b29b uxth r3, r3 - 80022cc: f3c3 0309 ubfx r3, r3, #0, #10 - 80022d0: b29a uxth r2, r3 - 80022d2: 697b ldr r3, [r7, #20] - 80022d4: 801a strh r2, [r3, #0] - 80022d6: 6d7b ldr r3, [r7, #84] @ 0x54 - 80022d8: 691b ldr r3, [r3, #16] - 80022da: 2b3e cmp r3, #62 @ 0x3e - 80022dc: d91d bls.n 800231a - 80022de: 6d7b ldr r3, [r7, #84] @ 0x54 - 80022e0: 691b ldr r3, [r3, #16] - 80022e2: 095b lsrs r3, r3, #5 - 80022e4: 647b str r3, [r7, #68] @ 0x44 - 80022e6: 6d7b ldr r3, [r7, #84] @ 0x54 - 80022e8: 691b ldr r3, [r3, #16] - 80022ea: f003 031f and.w r3, r3, #31 - 80022ee: 2b00 cmp r3, #0 - 80022f0: d102 bne.n 80022f8 - 80022f2: 6c7b ldr r3, [r7, #68] @ 0x44 - 80022f4: 3b01 subs r3, #1 - 80022f6: 647b str r3, [r7, #68] @ 0x44 - 80022f8: 697b ldr r3, [r7, #20] - 80022fa: 881b ldrh r3, [r3, #0] - 80022fc: b29a uxth r2, r3 - 80022fe: 6c7b ldr r3, [r7, #68] @ 0x44 - 8002300: b29b uxth r3, r3 - 8002302: 029b lsls r3, r3, #10 - 8002304: b29b uxth r3, r3 - 8002306: 4313 orrs r3, r2 - 8002308: b29b uxth r3, r3 - 800230a: ea6f 4343 mvn.w r3, r3, lsl #17 - 800230e: ea6f 4353 mvn.w r3, r3, lsr #17 - 8002312: b29a uxth r2, r3 - 8002314: 697b ldr r3, [r7, #20] - 8002316: 801a strh r2, [r3, #0] - 8002318: e026 b.n 8002368 - 800231a: 6d7b ldr r3, [r7, #84] @ 0x54 - 800231c: 691b ldr r3, [r3, #16] - 800231e: 2b00 cmp r3, #0 - 8002320: d10a bne.n 8002338 - 8002322: 697b ldr r3, [r7, #20] - 8002324: 881b ldrh r3, [r3, #0] - 8002326: b29b uxth r3, r3 - 8002328: ea6f 4343 mvn.w r3, r3, lsl #17 - 800232c: ea6f 4353 mvn.w r3, r3, lsr #17 - 8002330: b29a uxth r2, r3 - 8002332: 697b ldr r3, [r7, #20] - 8002334: 801a strh r2, [r3, #0] - 8002336: e017 b.n 8002368 - 8002338: 6d7b ldr r3, [r7, #84] @ 0x54 - 800233a: 691b ldr r3, [r3, #16] - 800233c: 085b lsrs r3, r3, #1 - 800233e: 647b str r3, [r7, #68] @ 0x44 - 8002340: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002342: 691b ldr r3, [r3, #16] - 8002344: f003 0301 and.w r3, r3, #1 - 8002348: 2b00 cmp r3, #0 - 800234a: d002 beq.n 8002352 - 800234c: 6c7b ldr r3, [r7, #68] @ 0x44 - 800234e: 3301 adds r3, #1 - 8002350: 647b str r3, [r7, #68] @ 0x44 - 8002352: 697b ldr r3, [r7, #20] - 8002354: 881b ldrh r3, [r3, #0] - 8002356: b29a uxth r2, r3 - 8002358: 6c7b ldr r3, [r7, #68] @ 0x44 - 800235a: b29b uxth r3, r3 - 800235c: 029b lsls r3, r3, #10 - 800235e: b29b uxth r3, r3 - 8002360: 4313 orrs r3, r2 - 8002362: b29a uxth r2, r3 - 8002364: 697b ldr r3, [r7, #20] - 8002366: 801a strh r2, [r3, #0] - PCD_SET_EP_RX_STATUS(hpcd->Instance, PCD_ENDP0, USB_EP_RX_VALID); - 8002368: 687b ldr r3, [r7, #4] - 800236a: 681b ldr r3, [r3, #0] - 800236c: 881b ldrh r3, [r3, #0] - 800236e: b29b uxth r3, r3 - 8002370: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8002374: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8002378: 827b strh r3, [r7, #18] - 800237a: 8a7b ldrh r3, [r7, #18] - 800237c: f483 5380 eor.w r3, r3, #4096 @ 0x1000 - 8002380: 827b strh r3, [r7, #18] - 8002382: 8a7b ldrh r3, [r7, #18] - 8002384: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 8002388: 827b strh r3, [r7, #18] - 800238a: 687b ldr r3, [r7, #4] - 800238c: 681a ldr r2, [r3, #0] - 800238e: 8a7b ldrh r3, [r7, #18] - 8002390: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8002394: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8002398: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800239c: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80023a0: b29b uxth r3, r3 - 80023a2: 8013 strh r3, [r2, #0] - 80023a4: e234 b.n 8002810 - } - else - { - /* Decode and service non control endpoints interrupt */ - /* process related endpoint register */ - wEPVal = PCD_GET_ENDPOINT(hpcd->Instance, epindex); - 80023a6: 687b ldr r3, [r7, #4] - 80023a8: 681b ldr r3, [r3, #0] - 80023aa: 461a mov r2, r3 - 80023ac: f897 304d ldrb.w r3, [r7, #77] @ 0x4d - 80023b0: 009b lsls r3, r3, #2 - 80023b2: 4413 add r3, r2 - 80023b4: 881b ldrh r3, [r3, #0] - 80023b6: f8a7 304a strh.w r3, [r7, #74] @ 0x4a - - if ((wEPVal & USB_EP_CTR_RX) != 0U) - 80023ba: f9b7 304a ldrsh.w r3, [r7, #74] @ 0x4a - 80023be: 2b00 cmp r3, #0 - 80023c0: f280 80fc bge.w 80025bc - { - /* clear int flag */ - PCD_CLEAR_RX_EP_CTR(hpcd->Instance, epindex); - 80023c4: 687b ldr r3, [r7, #4] - 80023c6: 681b ldr r3, [r3, #0] - 80023c8: 461a mov r2, r3 - 80023ca: f897 304d ldrb.w r3, [r7, #77] @ 0x4d - 80023ce: 009b lsls r3, r3, #2 - 80023d0: 4413 add r3, r2 - 80023d2: 881b ldrh r3, [r3, #0] - 80023d4: b29a uxth r2, r3 - 80023d6: f640 738f movw r3, #3983 @ 0xf8f - 80023da: 4013 ands r3, r2 - 80023dc: f8a7 3048 strh.w r3, [r7, #72] @ 0x48 - 80023e0: 687b ldr r3, [r7, #4] - 80023e2: 681b ldr r3, [r3, #0] - 80023e4: 461a mov r2, r3 - 80023e6: f897 304d ldrb.w r3, [r7, #77] @ 0x4d - 80023ea: 009b lsls r3, r3, #2 - 80023ec: 4413 add r3, r2 - 80023ee: f8b7 2048 ldrh.w r2, [r7, #72] @ 0x48 - 80023f2: f042 0280 orr.w r2, r2, #128 @ 0x80 - 80023f6: b292 uxth r2, r2 - 80023f8: 801a strh r2, [r3, #0] - ep = &hpcd->OUT_ep[epindex]; - 80023fa: f897 204d ldrb.w r2, [r7, #77] @ 0x4d - 80023fe: 4613 mov r3, r2 - 8002400: 009b lsls r3, r3, #2 - 8002402: 4413 add r3, r2 - 8002404: 00db lsls r3, r3, #3 - 8002406: f503 73a8 add.w r3, r3, #336 @ 0x150 - 800240a: 687a ldr r2, [r7, #4] - 800240c: 4413 add r3, r2 - 800240e: 657b str r3, [r7, #84] @ 0x54 - - /* OUT Single Buffering */ - if (ep->doublebuffer == 0U) - 8002410: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002412: 7b1b ldrb r3, [r3, #12] - 8002414: 2b00 cmp r3, #0 - 8002416: d125 bne.n 8002464 - { - count = (uint16_t)PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); - 8002418: 687b ldr r3, [r7, #4] - 800241a: 681b ldr r3, [r3, #0] - 800241c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002420: b29b uxth r3, r3 - 8002422: 461a mov r2, r3 - 8002424: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002426: 781b ldrb r3, [r3, #0] - 8002428: 00db lsls r3, r3, #3 - 800242a: 4413 add r3, r2 - 800242c: 3306 adds r3, #6 - 800242e: 005b lsls r3, r3, #1 - 8002430: 687a ldr r2, [r7, #4] - 8002432: 6812 ldr r2, [r2, #0] - 8002434: 4413 add r3, r2 - 8002436: f503 6380 add.w r3, r3, #1024 @ 0x400 - 800243a: 881b ldrh r3, [r3, #0] - 800243c: f3c3 0309 ubfx r3, r3, #0, #10 - 8002440: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 - - if (count != 0U) - 8002444: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 8002448: 2b00 cmp r3, #0 - 800244a: f000 8092 beq.w 8002572 - { - USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaadress, count); - 800244e: 687b ldr r3, [r7, #4] - 8002450: 6818 ldr r0, [r3, #0] - 8002452: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002454: 6959 ldr r1, [r3, #20] - 8002456: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002458: 88da ldrh r2, [r3, #6] - 800245a: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 800245e: f004 fc78 bl 8006d52 - 8002462: e086 b.n 8002572 - } -#if (USE_USB_DOUBLE_BUFFER == 1U) - else - { - /* manage double buffer bulk out */ - if (ep->type == EP_TYPE_BULK) - 8002464: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002466: 78db ldrb r3, [r3, #3] - 8002468: 2b02 cmp r3, #2 - 800246a: d10a bne.n 8002482 - { - count = HAL_PCD_EP_DB_Receive(hpcd, ep, wEPVal); - 800246c: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 8002470: 461a mov r2, r3 - 8002472: 6d79 ldr r1, [r7, #84] @ 0x54 - 8002474: 6878 ldr r0, [r7, #4] - 8002476: f000 f9d9 bl 800282c - 800247a: 4603 mov r3, r0 - 800247c: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 - 8002480: e077 b.n 8002572 - } - else /* manage double buffer iso out */ - { - /* free EP OUT Buffer */ - PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); - 8002482: 687b ldr r3, [r7, #4] - 8002484: 681b ldr r3, [r3, #0] - 8002486: 461a mov r2, r3 - 8002488: 6d7b ldr r3, [r7, #84] @ 0x54 - 800248a: 781b ldrb r3, [r3, #0] - 800248c: 009b lsls r3, r3, #2 - 800248e: 4413 add r3, r2 - 8002490: 881b ldrh r3, [r3, #0] - 8002492: b29b uxth r3, r3 - 8002494: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8002498: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800249c: f8a7 3052 strh.w r3, [r7, #82] @ 0x52 - 80024a0: 687b ldr r3, [r7, #4] - 80024a2: 681b ldr r3, [r3, #0] - 80024a4: 461a mov r2, r3 - 80024a6: 6d7b ldr r3, [r7, #84] @ 0x54 - 80024a8: 781b ldrb r3, [r3, #0] - 80024aa: 009b lsls r3, r3, #2 - 80024ac: 441a add r2, r3 - 80024ae: f8b7 3052 ldrh.w r3, [r7, #82] @ 0x52 - 80024b2: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80024b6: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80024ba: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 80024be: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 80024c2: b29b uxth r3, r3 - 80024c4: 8013 strh r3, [r2, #0] - - if ((PCD_GET_ENDPOINT(hpcd->Instance, ep->num) & USB_EP_DTOG_RX) != 0U) - 80024c6: 687b ldr r3, [r7, #4] - 80024c8: 681b ldr r3, [r3, #0] - 80024ca: 461a mov r2, r3 - 80024cc: 6d7b ldr r3, [r7, #84] @ 0x54 - 80024ce: 781b ldrb r3, [r3, #0] - 80024d0: 009b lsls r3, r3, #2 - 80024d2: 4413 add r3, r2 - 80024d4: 881b ldrh r3, [r3, #0] - 80024d6: b29b uxth r3, r3 - 80024d8: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 80024dc: 2b00 cmp r3, #0 - 80024de: d024 beq.n 800252a - { - /* read from endpoint BUF0Addr buffer */ - count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); - 80024e0: 687b ldr r3, [r7, #4] - 80024e2: 681b ldr r3, [r3, #0] - 80024e4: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80024e8: b29b uxth r3, r3 - 80024ea: 461a mov r2, r3 - 80024ec: 6d7b ldr r3, [r7, #84] @ 0x54 - 80024ee: 781b ldrb r3, [r3, #0] - 80024f0: 00db lsls r3, r3, #3 - 80024f2: 4413 add r3, r2 - 80024f4: 3302 adds r3, #2 - 80024f6: 005b lsls r3, r3, #1 - 80024f8: 687a ldr r2, [r7, #4] - 80024fa: 6812 ldr r2, [r2, #0] - 80024fc: 4413 add r3, r2 - 80024fe: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8002502: 881b ldrh r3, [r3, #0] - 8002504: f3c3 0309 ubfx r3, r3, #0, #10 - 8002508: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 - - if (count != 0U) - 800250c: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 8002510: 2b00 cmp r3, #0 - 8002512: d02e beq.n 8002572 - { - USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); - 8002514: 687b ldr r3, [r7, #4] - 8002516: 6818 ldr r0, [r3, #0] - 8002518: 6d7b ldr r3, [r7, #84] @ 0x54 - 800251a: 6959 ldr r1, [r3, #20] - 800251c: 6d7b ldr r3, [r7, #84] @ 0x54 - 800251e: 891a ldrh r2, [r3, #8] - 8002520: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 8002524: f004 fc15 bl 8006d52 - 8002528: e023 b.n 8002572 - } - } - else - { - /* read from endpoint BUF1Addr buffer */ - count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); - 800252a: 687b ldr r3, [r7, #4] - 800252c: 681b ldr r3, [r3, #0] - 800252e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002532: b29b uxth r3, r3 - 8002534: 461a mov r2, r3 - 8002536: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002538: 781b ldrb r3, [r3, #0] - 800253a: 00db lsls r3, r3, #3 - 800253c: 4413 add r3, r2 - 800253e: 3306 adds r3, #6 - 8002540: 005b lsls r3, r3, #1 - 8002542: 687a ldr r2, [r7, #4] - 8002544: 6812 ldr r2, [r2, #0] - 8002546: 4413 add r3, r2 - 8002548: f503 6380 add.w r3, r3, #1024 @ 0x400 - 800254c: 881b ldrh r3, [r3, #0] - 800254e: f3c3 0309 ubfx r3, r3, #0, #10 - 8002552: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 - - if (count != 0U) - 8002556: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 800255a: 2b00 cmp r3, #0 - 800255c: d009 beq.n 8002572 - { - USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); - 800255e: 687b ldr r3, [r7, #4] - 8002560: 6818 ldr r0, [r3, #0] - 8002562: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002564: 6959 ldr r1, [r3, #20] - 8002566: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002568: 895a ldrh r2, [r3, #10] - 800256a: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 800256e: f004 fbf0 bl 8006d52 - } - } -#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ - - /* multi-packet on the NON control OUT endpoint */ - ep->xfer_count += count; - 8002572: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002574: 69da ldr r2, [r3, #28] - 8002576: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 800257a: 441a add r2, r3 - 800257c: 6d7b ldr r3, [r7, #84] @ 0x54 - 800257e: 61da str r2, [r3, #28] - ep->xfer_buff += count; - 8002580: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002582: 695a ldr r2, [r3, #20] - 8002584: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 8002588: 441a add r2, r3 - 800258a: 6d7b ldr r3, [r7, #84] @ 0x54 - 800258c: 615a str r2, [r3, #20] - - if ((ep->xfer_len == 0U) || (count < ep->maxpacket)) - 800258e: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002590: 699b ldr r3, [r3, #24] - 8002592: 2b00 cmp r3, #0 - 8002594: d005 beq.n 80025a2 - 8002596: f8b7 2050 ldrh.w r2, [r7, #80] @ 0x50 - 800259a: 6d7b ldr r3, [r7, #84] @ 0x54 - 800259c: 691b ldr r3, [r3, #16] - 800259e: 429a cmp r2, r3 - 80025a0: d206 bcs.n 80025b0 - { - /* RX COMPLETE */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->DataOutStageCallback(hpcd, ep->num); -#else - HAL_PCD_DataOutStageCallback(hpcd, ep->num); - 80025a2: 6d7b ldr r3, [r7, #84] @ 0x54 - 80025a4: 781b ldrb r3, [r3, #0] - 80025a6: 4619 mov r1, r3 - 80025a8: 6878 ldr r0, [r7, #4] - 80025aa: f006 fa35 bl 8008a18 - 80025ae: e005 b.n 80025bc -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - } - else - { - (void)USB_EPStartXfer(hpcd->Instance, ep); - 80025b0: 687b ldr r3, [r7, #4] - 80025b2: 681b ldr r3, [r3, #0] - 80025b4: 6d79 ldr r1, [r7, #84] @ 0x54 - 80025b6: 4618 mov r0, r3 - 80025b8: f002 fe96 bl 80052e8 - } - } - - if ((wEPVal & USB_EP_CTR_TX) != 0U) - 80025bc: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 80025c0: f003 0380 and.w r3, r3, #128 @ 0x80 - 80025c4: 2b00 cmp r3, #0 - 80025c6: f000 8123 beq.w 8002810 - { - ep = &hpcd->IN_ep[epindex]; - 80025ca: f897 204d ldrb.w r2, [r7, #77] @ 0x4d - 80025ce: 4613 mov r3, r2 - 80025d0: 009b lsls r3, r3, #2 - 80025d2: 4413 add r3, r2 - 80025d4: 00db lsls r3, r3, #3 - 80025d6: 3310 adds r3, #16 - 80025d8: 687a ldr r2, [r7, #4] - 80025da: 4413 add r3, r2 - 80025dc: 657b str r3, [r7, #84] @ 0x54 - - /* clear int flag */ - PCD_CLEAR_TX_EP_CTR(hpcd->Instance, epindex); - 80025de: 687b ldr r3, [r7, #4] - 80025e0: 681b ldr r3, [r3, #0] - 80025e2: 461a mov r2, r3 - 80025e4: f897 304d ldrb.w r3, [r7, #77] @ 0x4d - 80025e8: 009b lsls r3, r3, #2 - 80025ea: 4413 add r3, r2 - 80025ec: 881b ldrh r3, [r3, #0] - 80025ee: b29b uxth r3, r3 - 80025f0: f423 43e1 bic.w r3, r3, #28800 @ 0x7080 - 80025f4: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80025f8: f8a7 3042 strh.w r3, [r7, #66] @ 0x42 - 80025fc: 687b ldr r3, [r7, #4] - 80025fe: 681b ldr r3, [r3, #0] - 8002600: 461a mov r2, r3 - 8002602: f897 304d ldrb.w r3, [r7, #77] @ 0x4d - 8002606: 009b lsls r3, r3, #2 - 8002608: 441a add r2, r3 - 800260a: f8b7 3042 ldrh.w r3, [r7, #66] @ 0x42 - 800260e: ea6f 4343 mvn.w r3, r3, lsl #17 - 8002612: ea6f 4353 mvn.w r3, r3, lsr #17 - 8002616: b29b uxth r3, r3 - 8002618: 8013 strh r3, [r2, #0] - - if (ep->type == EP_TYPE_ISOC) - 800261a: 6d7b ldr r3, [r7, #84] @ 0x54 - 800261c: 78db ldrb r3, [r3, #3] - 800261e: 2b01 cmp r3, #1 - 8002620: f040 80a2 bne.w 8002768 - { - ep->xfer_len = 0U; - 8002624: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002626: 2200 movs r2, #0 - 8002628: 619a str r2, [r3, #24] - -#if (USE_USB_DOUBLE_BUFFER == 1U) - if (ep->doublebuffer != 0U) - 800262a: 6d7b ldr r3, [r7, #84] @ 0x54 - 800262c: 7b1b ldrb r3, [r3, #12] - 800262e: 2b00 cmp r3, #0 - 8002630: f000 8093 beq.w 800275a - { - if ((wEPVal & USB_EP_DTOG_TX) != 0U) - 8002634: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 8002638: f003 0340 and.w r3, r3, #64 @ 0x40 - 800263c: 2b00 cmp r3, #0 - 800263e: d046 beq.n 80026ce - { - PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); - 8002640: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002642: 785b ldrb r3, [r3, #1] - 8002644: 2b00 cmp r3, #0 - 8002646: d126 bne.n 8002696 - 8002648: 687b ldr r3, [r7, #4] - 800264a: 681b ldr r3, [r3, #0] - 800264c: 627b str r3, [r7, #36] @ 0x24 - 800264e: 687b ldr r3, [r7, #4] - 8002650: 681b ldr r3, [r3, #0] - 8002652: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002656: b29b uxth r3, r3 - 8002658: 461a mov r2, r3 - 800265a: 6a7b ldr r3, [r7, #36] @ 0x24 - 800265c: 4413 add r3, r2 - 800265e: 627b str r3, [r7, #36] @ 0x24 - 8002660: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002662: 781b ldrb r3, [r3, #0] - 8002664: 011a lsls r2, r3, #4 - 8002666: 6a7b ldr r3, [r7, #36] @ 0x24 - 8002668: 4413 add r3, r2 - 800266a: f203 4304 addw r3, r3, #1028 @ 0x404 - 800266e: 623b str r3, [r7, #32] - 8002670: 6a3b ldr r3, [r7, #32] - 8002672: 881b ldrh r3, [r3, #0] - 8002674: b29b uxth r3, r3 - 8002676: f3c3 0309 ubfx r3, r3, #0, #10 - 800267a: b29a uxth r2, r3 - 800267c: 6a3b ldr r3, [r7, #32] - 800267e: 801a strh r2, [r3, #0] - 8002680: 6a3b ldr r3, [r7, #32] - 8002682: 881b ldrh r3, [r3, #0] - 8002684: b29b uxth r3, r3 - 8002686: ea6f 4343 mvn.w r3, r3, lsl #17 - 800268a: ea6f 4353 mvn.w r3, r3, lsr #17 - 800268e: b29a uxth r2, r3 - 8002690: 6a3b ldr r3, [r7, #32] - 8002692: 801a strh r2, [r3, #0] - 8002694: e061 b.n 800275a - 8002696: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002698: 785b ldrb r3, [r3, #1] - 800269a: 2b01 cmp r3, #1 - 800269c: d15d bne.n 800275a - 800269e: 687b ldr r3, [r7, #4] - 80026a0: 681b ldr r3, [r3, #0] - 80026a2: 62fb str r3, [r7, #44] @ 0x2c - 80026a4: 687b ldr r3, [r7, #4] - 80026a6: 681b ldr r3, [r3, #0] - 80026a8: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80026ac: b29b uxth r3, r3 - 80026ae: 461a mov r2, r3 - 80026b0: 6afb ldr r3, [r7, #44] @ 0x2c - 80026b2: 4413 add r3, r2 - 80026b4: 62fb str r3, [r7, #44] @ 0x2c - 80026b6: 6d7b ldr r3, [r7, #84] @ 0x54 - 80026b8: 781b ldrb r3, [r3, #0] - 80026ba: 011a lsls r2, r3, #4 - 80026bc: 6afb ldr r3, [r7, #44] @ 0x2c - 80026be: 4413 add r3, r2 - 80026c0: f203 4304 addw r3, r3, #1028 @ 0x404 - 80026c4: 62bb str r3, [r7, #40] @ 0x28 - 80026c6: 6abb ldr r3, [r7, #40] @ 0x28 - 80026c8: 2200 movs r2, #0 - 80026ca: 801a strh r2, [r3, #0] - 80026cc: e045 b.n 800275a - } - else - { - PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); - 80026ce: 687b ldr r3, [r7, #4] - 80026d0: 681b ldr r3, [r3, #0] - 80026d2: 63fb str r3, [r7, #60] @ 0x3c - 80026d4: 6d7b ldr r3, [r7, #84] @ 0x54 - 80026d6: 785b ldrb r3, [r3, #1] - 80026d8: 2b00 cmp r3, #0 - 80026da: d126 bne.n 800272a - 80026dc: 687b ldr r3, [r7, #4] - 80026de: 681b ldr r3, [r3, #0] - 80026e0: 637b str r3, [r7, #52] @ 0x34 - 80026e2: 687b ldr r3, [r7, #4] - 80026e4: 681b ldr r3, [r3, #0] - 80026e6: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80026ea: b29b uxth r3, r3 - 80026ec: 461a mov r2, r3 - 80026ee: 6b7b ldr r3, [r7, #52] @ 0x34 - 80026f0: 4413 add r3, r2 - 80026f2: 637b str r3, [r7, #52] @ 0x34 - 80026f4: 6d7b ldr r3, [r7, #84] @ 0x54 - 80026f6: 781b ldrb r3, [r3, #0] - 80026f8: 011a lsls r2, r3, #4 - 80026fa: 6b7b ldr r3, [r7, #52] @ 0x34 - 80026fc: 4413 add r3, r2 - 80026fe: f203 430c addw r3, r3, #1036 @ 0x40c - 8002702: 633b str r3, [r7, #48] @ 0x30 - 8002704: 6b3b ldr r3, [r7, #48] @ 0x30 - 8002706: 881b ldrh r3, [r3, #0] - 8002708: b29b uxth r3, r3 - 800270a: f3c3 0309 ubfx r3, r3, #0, #10 - 800270e: b29a uxth r2, r3 - 8002710: 6b3b ldr r3, [r7, #48] @ 0x30 - 8002712: 801a strh r2, [r3, #0] - 8002714: 6b3b ldr r3, [r7, #48] @ 0x30 - 8002716: 881b ldrh r3, [r3, #0] - 8002718: b29b uxth r3, r3 - 800271a: ea6f 4343 mvn.w r3, r3, lsl #17 - 800271e: ea6f 4353 mvn.w r3, r3, lsr #17 - 8002722: b29a uxth r2, r3 - 8002724: 6b3b ldr r3, [r7, #48] @ 0x30 - 8002726: 801a strh r2, [r3, #0] - 8002728: e017 b.n 800275a - 800272a: 6d7b ldr r3, [r7, #84] @ 0x54 - 800272c: 785b ldrb r3, [r3, #1] - 800272e: 2b01 cmp r3, #1 - 8002730: d113 bne.n 800275a - 8002732: 687b ldr r3, [r7, #4] - 8002734: 681b ldr r3, [r3, #0] - 8002736: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800273a: b29b uxth r3, r3 - 800273c: 461a mov r2, r3 - 800273e: 6bfb ldr r3, [r7, #60] @ 0x3c - 8002740: 4413 add r3, r2 - 8002742: 63fb str r3, [r7, #60] @ 0x3c - 8002744: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002746: 781b ldrb r3, [r3, #0] - 8002748: 011a lsls r2, r3, #4 - 800274a: 6bfb ldr r3, [r7, #60] @ 0x3c - 800274c: 4413 add r3, r2 - 800274e: f203 430c addw r3, r3, #1036 @ 0x40c - 8002752: 63bb str r3, [r7, #56] @ 0x38 - 8002754: 6bbb ldr r3, [r7, #56] @ 0x38 - 8002756: 2200 movs r2, #0 - 8002758: 801a strh r2, [r3, #0] - - /* TX COMPLETE */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->DataInStageCallback(hpcd, ep->num); -#else - HAL_PCD_DataInStageCallback(hpcd, ep->num); - 800275a: 6d7b ldr r3, [r7, #84] @ 0x54 - 800275c: 781b ldrb r3, [r3, #0] - 800275e: 4619 mov r1, r3 - 8002760: 6878 ldr r0, [r7, #4] - 8002762: f006 f974 bl 8008a4e - 8002766: e053 b.n 8002810 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - } - else - { - /* Manage Single Buffer Transaction */ - if ((wEPVal & USB_EP_KIND) == 0U) - 8002768: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 800276c: f403 7380 and.w r3, r3, #256 @ 0x100 - 8002770: 2b00 cmp r3, #0 - 8002772: d146 bne.n 8002802 - { - /* multi-packet on the NON control IN endpoint */ - TxPctSize = (uint16_t)PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); - 8002774: 687b ldr r3, [r7, #4] - 8002776: 681b ldr r3, [r3, #0] - 8002778: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800277c: b29b uxth r3, r3 - 800277e: 461a mov r2, r3 - 8002780: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002782: 781b ldrb r3, [r3, #0] - 8002784: 00db lsls r3, r3, #3 - 8002786: 4413 add r3, r2 - 8002788: 3302 adds r3, #2 - 800278a: 005b lsls r3, r3, #1 - 800278c: 687a ldr r2, [r7, #4] - 800278e: 6812 ldr r2, [r2, #0] - 8002790: 4413 add r3, r2 - 8002792: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8002796: 881b ldrh r3, [r3, #0] - 8002798: f3c3 0309 ubfx r3, r3, #0, #10 - 800279c: f8a7 3040 strh.w r3, [r7, #64] @ 0x40 - - if (ep->xfer_len > TxPctSize) - 80027a0: 6d7b ldr r3, [r7, #84] @ 0x54 - 80027a2: 699a ldr r2, [r3, #24] - 80027a4: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 - 80027a8: 429a cmp r2, r3 - 80027aa: d907 bls.n 80027bc - { - ep->xfer_len -= TxPctSize; - 80027ac: 6d7b ldr r3, [r7, #84] @ 0x54 - 80027ae: 699a ldr r2, [r3, #24] - 80027b0: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 - 80027b4: 1ad2 subs r2, r2, r3 - 80027b6: 6d7b ldr r3, [r7, #84] @ 0x54 - 80027b8: 619a str r2, [r3, #24] - 80027ba: e002 b.n 80027c2 - } - else - { - ep->xfer_len = 0U; - 80027bc: 6d7b ldr r3, [r7, #84] @ 0x54 - 80027be: 2200 movs r2, #0 - 80027c0: 619a str r2, [r3, #24] - } - - /* Zero Length Packet? */ - if (ep->xfer_len == 0U) - 80027c2: 6d7b ldr r3, [r7, #84] @ 0x54 - 80027c4: 699b ldr r3, [r3, #24] - 80027c6: 2b00 cmp r3, #0 - 80027c8: d106 bne.n 80027d8 - { - /* TX COMPLETE */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->DataInStageCallback(hpcd, ep->num); -#else - HAL_PCD_DataInStageCallback(hpcd, ep->num); - 80027ca: 6d7b ldr r3, [r7, #84] @ 0x54 - 80027cc: 781b ldrb r3, [r3, #0] - 80027ce: 4619 mov r1, r3 - 80027d0: 6878 ldr r0, [r7, #4] - 80027d2: f006 f93c bl 8008a4e - 80027d6: e01b b.n 8002810 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - } - else - { - /* Transfer is not yet Done */ - ep->xfer_buff += TxPctSize; - 80027d8: 6d7b ldr r3, [r7, #84] @ 0x54 - 80027da: 695a ldr r2, [r3, #20] - 80027dc: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 - 80027e0: 441a add r2, r3 - 80027e2: 6d7b ldr r3, [r7, #84] @ 0x54 - 80027e4: 615a str r2, [r3, #20] - ep->xfer_count += TxPctSize; - 80027e6: 6d7b ldr r3, [r7, #84] @ 0x54 - 80027e8: 69da ldr r2, [r3, #28] - 80027ea: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 - 80027ee: 441a add r2, r3 - 80027f0: 6d7b ldr r3, [r7, #84] @ 0x54 - 80027f2: 61da str r2, [r3, #28] - (void)USB_EPStartXfer(hpcd->Instance, ep); - 80027f4: 687b ldr r3, [r7, #4] - 80027f6: 681b ldr r3, [r3, #0] - 80027f8: 6d79 ldr r1, [r7, #84] @ 0x54 - 80027fa: 4618 mov r0, r3 - 80027fc: f002 fd74 bl 80052e8 - 8002800: e006 b.n 8002810 - } -#if (USE_USB_DOUBLE_BUFFER == 1U) - /* Double Buffer bulk IN (bulk transfer Len > Ep_Mps) */ - else - { - (void)HAL_PCD_EP_DB_Transmit(hpcd, ep, wEPVal); - 8002802: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 8002806: 461a mov r2, r3 - 8002808: 6d79 ldr r1, [r7, #84] @ 0x54 - 800280a: 6878 ldr r0, [r7, #4] - 800280c: f000 f91b bl 8002a46 - while ((hpcd->Instance->ISTR & USB_ISTR_CTR) != 0U) - 8002810: 687b ldr r3, [r7, #4] - 8002812: 681b ldr r3, [r3, #0] - 8002814: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 8002818: b29b uxth r3, r3 - 800281a: b21b sxth r3, r3 - 800281c: 2b00 cmp r3, #0 - 800281e: f6ff ac3b blt.w 8002098 - } - } - } - } - - return HAL_OK; - 8002822: 2300 movs r3, #0 -} - 8002824: 4618 mov r0, r3 - 8002826: 3758 adds r7, #88 @ 0x58 - 8002828: 46bd mov sp, r7 - 800282a: bd80 pop {r7, pc} - -0800282c : - * @param wEPVal Last snapshot of EPRx register value taken in ISR - * @retval HAL status - */ -static uint16_t HAL_PCD_EP_DB_Receive(PCD_HandleTypeDef *hpcd, - PCD_EPTypeDef *ep, uint16_t wEPVal) -{ - 800282c: b580 push {r7, lr} - 800282e: b088 sub sp, #32 - 8002830: af00 add r7, sp, #0 - 8002832: 60f8 str r0, [r7, #12] - 8002834: 60b9 str r1, [r7, #8] - 8002836: 4613 mov r3, r2 - 8002838: 80fb strh r3, [r7, #6] - uint16_t count; - - /* Manage Buffer0 OUT */ - if ((wEPVal & USB_EP_DTOG_RX) != 0U) - 800283a: 88fb ldrh r3, [r7, #6] - 800283c: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8002840: 2b00 cmp r3, #0 - 8002842: d07e beq.n 8002942 - { - /* Get count of received Data on buffer0 */ - count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); - 8002844: 68fb ldr r3, [r7, #12] - 8002846: 681b ldr r3, [r3, #0] - 8002848: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800284c: b29b uxth r3, r3 - 800284e: 461a mov r2, r3 - 8002850: 68bb ldr r3, [r7, #8] - 8002852: 781b ldrb r3, [r3, #0] - 8002854: 00db lsls r3, r3, #3 - 8002856: 4413 add r3, r2 - 8002858: 3302 adds r3, #2 - 800285a: 005b lsls r3, r3, #1 - 800285c: 68fa ldr r2, [r7, #12] - 800285e: 6812 ldr r2, [r2, #0] - 8002860: 4413 add r3, r2 - 8002862: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8002866: 881b ldrh r3, [r3, #0] - 8002868: f3c3 0309 ubfx r3, r3, #0, #10 - 800286c: 837b strh r3, [r7, #26] - - if (ep->xfer_len >= count) - 800286e: 68bb ldr r3, [r7, #8] - 8002870: 699a ldr r2, [r3, #24] - 8002872: 8b7b ldrh r3, [r7, #26] - 8002874: 429a cmp r2, r3 - 8002876: d306 bcc.n 8002886 - { - ep->xfer_len -= count; - 8002878: 68bb ldr r3, [r7, #8] - 800287a: 699a ldr r2, [r3, #24] - 800287c: 8b7b ldrh r3, [r7, #26] - 800287e: 1ad2 subs r2, r2, r3 - 8002880: 68bb ldr r3, [r7, #8] - 8002882: 619a str r2, [r3, #24] - 8002884: e002 b.n 800288c - } - else - { - ep->xfer_len = 0U; - 8002886: 68bb ldr r3, [r7, #8] - 8002888: 2200 movs r2, #0 - 800288a: 619a str r2, [r3, #24] - } - - if (ep->xfer_len == 0U) - 800288c: 68bb ldr r3, [r7, #8] - 800288e: 699b ldr r3, [r3, #24] - 8002890: 2b00 cmp r3, #0 - 8002892: d123 bne.n 80028dc - { - /* set NAK to OUT endpoint since double buffer is enabled */ - PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); - 8002894: 68fb ldr r3, [r7, #12] - 8002896: 681b ldr r3, [r3, #0] - 8002898: 461a mov r2, r3 - 800289a: 68bb ldr r3, [r7, #8] - 800289c: 781b ldrb r3, [r3, #0] - 800289e: 009b lsls r3, r3, #2 - 80028a0: 4413 add r3, r2 - 80028a2: 881b ldrh r3, [r3, #0] - 80028a4: b29b uxth r3, r3 - 80028a6: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 80028aa: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80028ae: 833b strh r3, [r7, #24] - 80028b0: 8b3b ldrh r3, [r7, #24] - 80028b2: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 80028b6: 833b strh r3, [r7, #24] - 80028b8: 68fb ldr r3, [r7, #12] - 80028ba: 681b ldr r3, [r3, #0] - 80028bc: 461a mov r2, r3 - 80028be: 68bb ldr r3, [r7, #8] - 80028c0: 781b ldrb r3, [r3, #0] - 80028c2: 009b lsls r3, r3, #2 - 80028c4: 441a add r2, r3 - 80028c6: 8b3b ldrh r3, [r7, #24] - 80028c8: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80028cc: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80028d0: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 80028d4: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80028d8: b29b uxth r3, r3 - 80028da: 8013 strh r3, [r2, #0] - } - - /* Check if Buffer1 is in blocked state which requires to toggle */ - if ((wEPVal & USB_EP_DTOG_TX) != 0U) - 80028dc: 88fb ldrh r3, [r7, #6] - 80028de: f003 0340 and.w r3, r3, #64 @ 0x40 - 80028e2: 2b00 cmp r3, #0 - 80028e4: d01f beq.n 8002926 - { - PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); - 80028e6: 68fb ldr r3, [r7, #12] - 80028e8: 681b ldr r3, [r3, #0] - 80028ea: 461a mov r2, r3 - 80028ec: 68bb ldr r3, [r7, #8] - 80028ee: 781b ldrb r3, [r3, #0] - 80028f0: 009b lsls r3, r3, #2 - 80028f2: 4413 add r3, r2 - 80028f4: 881b ldrh r3, [r3, #0] - 80028f6: b29b uxth r3, r3 - 80028f8: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80028fc: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8002900: 82fb strh r3, [r7, #22] - 8002902: 68fb ldr r3, [r7, #12] - 8002904: 681b ldr r3, [r3, #0] - 8002906: 461a mov r2, r3 - 8002908: 68bb ldr r3, [r7, #8] - 800290a: 781b ldrb r3, [r3, #0] - 800290c: 009b lsls r3, r3, #2 - 800290e: 441a add r2, r3 - 8002910: 8afb ldrh r3, [r7, #22] - 8002912: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8002916: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800291a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800291e: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8002922: b29b uxth r3, r3 - 8002924: 8013 strh r3, [r2, #0] - } - - if (count != 0U) - 8002926: 8b7b ldrh r3, [r7, #26] - 8002928: 2b00 cmp r3, #0 - 800292a: f000 8087 beq.w 8002a3c - { - USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); - 800292e: 68fb ldr r3, [r7, #12] - 8002930: 6818 ldr r0, [r3, #0] - 8002932: 68bb ldr r3, [r7, #8] - 8002934: 6959 ldr r1, [r3, #20] - 8002936: 68bb ldr r3, [r7, #8] - 8002938: 891a ldrh r2, [r3, #8] - 800293a: 8b7b ldrh r3, [r7, #26] - 800293c: f004 fa09 bl 8006d52 - 8002940: e07c b.n 8002a3c - } - /* Manage Buffer 1 DTOG_RX=0 */ - else - { - /* Get count of received data */ - count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); - 8002942: 68fb ldr r3, [r7, #12] - 8002944: 681b ldr r3, [r3, #0] - 8002946: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800294a: b29b uxth r3, r3 - 800294c: 461a mov r2, r3 - 800294e: 68bb ldr r3, [r7, #8] - 8002950: 781b ldrb r3, [r3, #0] - 8002952: 00db lsls r3, r3, #3 - 8002954: 4413 add r3, r2 - 8002956: 3306 adds r3, #6 - 8002958: 005b lsls r3, r3, #1 - 800295a: 68fa ldr r2, [r7, #12] - 800295c: 6812 ldr r2, [r2, #0] - 800295e: 4413 add r3, r2 - 8002960: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8002964: 881b ldrh r3, [r3, #0] - 8002966: f3c3 0309 ubfx r3, r3, #0, #10 - 800296a: 837b strh r3, [r7, #26] - - if (ep->xfer_len >= count) - 800296c: 68bb ldr r3, [r7, #8] - 800296e: 699a ldr r2, [r3, #24] - 8002970: 8b7b ldrh r3, [r7, #26] - 8002972: 429a cmp r2, r3 - 8002974: d306 bcc.n 8002984 - { - ep->xfer_len -= count; - 8002976: 68bb ldr r3, [r7, #8] - 8002978: 699a ldr r2, [r3, #24] - 800297a: 8b7b ldrh r3, [r7, #26] - 800297c: 1ad2 subs r2, r2, r3 - 800297e: 68bb ldr r3, [r7, #8] - 8002980: 619a str r2, [r3, #24] - 8002982: e002 b.n 800298a - } - else - { - ep->xfer_len = 0U; - 8002984: 68bb ldr r3, [r7, #8] - 8002986: 2200 movs r2, #0 - 8002988: 619a str r2, [r3, #24] - } - - if (ep->xfer_len == 0U) - 800298a: 68bb ldr r3, [r7, #8] - 800298c: 699b ldr r3, [r3, #24] - 800298e: 2b00 cmp r3, #0 - 8002990: d123 bne.n 80029da - { - /* set NAK on the current endpoint */ - PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); - 8002992: 68fb ldr r3, [r7, #12] - 8002994: 681b ldr r3, [r3, #0] - 8002996: 461a mov r2, r3 - 8002998: 68bb ldr r3, [r7, #8] - 800299a: 781b ldrb r3, [r3, #0] - 800299c: 009b lsls r3, r3, #2 - 800299e: 4413 add r3, r2 - 80029a0: 881b ldrh r3, [r3, #0] - 80029a2: b29b uxth r3, r3 - 80029a4: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 80029a8: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80029ac: 83fb strh r3, [r7, #30] - 80029ae: 8bfb ldrh r3, [r7, #30] - 80029b0: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 80029b4: 83fb strh r3, [r7, #30] - 80029b6: 68fb ldr r3, [r7, #12] - 80029b8: 681b ldr r3, [r3, #0] - 80029ba: 461a mov r2, r3 - 80029bc: 68bb ldr r3, [r7, #8] - 80029be: 781b ldrb r3, [r3, #0] - 80029c0: 009b lsls r3, r3, #2 - 80029c2: 441a add r2, r3 - 80029c4: 8bfb ldrh r3, [r7, #30] - 80029c6: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80029ca: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80029ce: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 80029d2: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80029d6: b29b uxth r3, r3 - 80029d8: 8013 strh r3, [r2, #0] - } - - /*Need to FreeUser Buffer*/ - if ((wEPVal & USB_EP_DTOG_TX) == 0U) - 80029da: 88fb ldrh r3, [r7, #6] - 80029dc: f003 0340 and.w r3, r3, #64 @ 0x40 - 80029e0: 2b00 cmp r3, #0 - 80029e2: d11f bne.n 8002a24 - { - PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); - 80029e4: 68fb ldr r3, [r7, #12] - 80029e6: 681b ldr r3, [r3, #0] - 80029e8: 461a mov r2, r3 - 80029ea: 68bb ldr r3, [r7, #8] - 80029ec: 781b ldrb r3, [r3, #0] - 80029ee: 009b lsls r3, r3, #2 - 80029f0: 4413 add r3, r2 - 80029f2: 881b ldrh r3, [r3, #0] - 80029f4: b29b uxth r3, r3 - 80029f6: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80029fa: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80029fe: 83bb strh r3, [r7, #28] - 8002a00: 68fb ldr r3, [r7, #12] - 8002a02: 681b ldr r3, [r3, #0] - 8002a04: 461a mov r2, r3 - 8002a06: 68bb ldr r3, [r7, #8] - 8002a08: 781b ldrb r3, [r3, #0] - 8002a0a: 009b lsls r3, r3, #2 - 8002a0c: 441a add r2, r3 - 8002a0e: 8bbb ldrh r3, [r7, #28] - 8002a10: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8002a14: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8002a18: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8002a1c: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8002a20: b29b uxth r3, r3 - 8002a22: 8013 strh r3, [r2, #0] - } - - if (count != 0U) - 8002a24: 8b7b ldrh r3, [r7, #26] - 8002a26: 2b00 cmp r3, #0 - 8002a28: d008 beq.n 8002a3c - { - USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); - 8002a2a: 68fb ldr r3, [r7, #12] - 8002a2c: 6818 ldr r0, [r3, #0] - 8002a2e: 68bb ldr r3, [r7, #8] - 8002a30: 6959 ldr r1, [r3, #20] - 8002a32: 68bb ldr r3, [r7, #8] - 8002a34: 895a ldrh r2, [r3, #10] - 8002a36: 8b7b ldrh r3, [r7, #26] - 8002a38: f004 f98b bl 8006d52 - } - } - - return count; - 8002a3c: 8b7b ldrh r3, [r7, #26] -} - 8002a3e: 4618 mov r0, r3 - 8002a40: 3720 adds r7, #32 - 8002a42: 46bd mov sp, r7 - 8002a44: bd80 pop {r7, pc} - -08002a46 : - * @param wEPVal Last snapshot of EPRx register value taken in ISR - * @retval HAL status - */ -static HAL_StatusTypeDef HAL_PCD_EP_DB_Transmit(PCD_HandleTypeDef *hpcd, - PCD_EPTypeDef *ep, uint16_t wEPVal) -{ - 8002a46: b580 push {r7, lr} - 8002a48: b0a4 sub sp, #144 @ 0x90 - 8002a4a: af00 add r7, sp, #0 - 8002a4c: 60f8 str r0, [r7, #12] - 8002a4e: 60b9 str r1, [r7, #8] - 8002a50: 4613 mov r3, r2 - 8002a52: 80fb strh r3, [r7, #6] - uint32_t len; - uint16_t TxPctSize; - - /* Data Buffer0 ACK received */ - if ((wEPVal & USB_EP_DTOG_TX) != 0U) - 8002a54: 88fb ldrh r3, [r7, #6] - 8002a56: f003 0340 and.w r3, r3, #64 @ 0x40 - 8002a5a: 2b00 cmp r3, #0 - 8002a5c: f000 81dd beq.w 8002e1a - { - /* multi-packet on the NON control IN endpoint */ - TxPctSize = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); - 8002a60: 68fb ldr r3, [r7, #12] - 8002a62: 681b ldr r3, [r3, #0] - 8002a64: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002a68: b29b uxth r3, r3 - 8002a6a: 461a mov r2, r3 - 8002a6c: 68bb ldr r3, [r7, #8] - 8002a6e: 781b ldrb r3, [r3, #0] - 8002a70: 00db lsls r3, r3, #3 - 8002a72: 4413 add r3, r2 - 8002a74: 3302 adds r3, #2 - 8002a76: 005b lsls r3, r3, #1 - 8002a78: 68fa ldr r2, [r7, #12] - 8002a7a: 6812 ldr r2, [r2, #0] - 8002a7c: 4413 add r3, r2 - 8002a7e: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8002a82: 881b ldrh r3, [r3, #0] - 8002a84: f3c3 0309 ubfx r3, r3, #0, #10 - 8002a88: f8a7 3086 strh.w r3, [r7, #134] @ 0x86 - - if (ep->xfer_len > TxPctSize) - 8002a8c: 68bb ldr r3, [r7, #8] - 8002a8e: 699a ldr r2, [r3, #24] - 8002a90: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 8002a94: 429a cmp r2, r3 - 8002a96: d907 bls.n 8002aa8 - { - ep->xfer_len -= TxPctSize; - 8002a98: 68bb ldr r3, [r7, #8] - 8002a9a: 699a ldr r2, [r3, #24] - 8002a9c: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 8002aa0: 1ad2 subs r2, r2, r3 - 8002aa2: 68bb ldr r3, [r7, #8] - 8002aa4: 619a str r2, [r3, #24] - 8002aa6: e002 b.n 8002aae - } - else - { - ep->xfer_len = 0U; - 8002aa8: 68bb ldr r3, [r7, #8] - 8002aaa: 2200 movs r2, #0 - 8002aac: 619a str r2, [r3, #24] - } - - /* Transfer is completed */ - if (ep->xfer_len == 0U) - 8002aae: 68bb ldr r3, [r7, #8] - 8002ab0: 699b ldr r3, [r3, #24] - 8002ab2: 2b00 cmp r3, #0 - 8002ab4: f040 80b9 bne.w 8002c2a - { - PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); - 8002ab8: 68bb ldr r3, [r7, #8] - 8002aba: 785b ldrb r3, [r3, #1] - 8002abc: 2b00 cmp r3, #0 - 8002abe: d126 bne.n 8002b0e - 8002ac0: 68fb ldr r3, [r7, #12] - 8002ac2: 681b ldr r3, [r3, #0] - 8002ac4: 62fb str r3, [r7, #44] @ 0x2c - 8002ac6: 68fb ldr r3, [r7, #12] - 8002ac8: 681b ldr r3, [r3, #0] - 8002aca: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002ace: b29b uxth r3, r3 - 8002ad0: 461a mov r2, r3 - 8002ad2: 6afb ldr r3, [r7, #44] @ 0x2c - 8002ad4: 4413 add r3, r2 - 8002ad6: 62fb str r3, [r7, #44] @ 0x2c - 8002ad8: 68bb ldr r3, [r7, #8] - 8002ada: 781b ldrb r3, [r3, #0] - 8002adc: 011a lsls r2, r3, #4 - 8002ade: 6afb ldr r3, [r7, #44] @ 0x2c - 8002ae0: 4413 add r3, r2 - 8002ae2: f203 4304 addw r3, r3, #1028 @ 0x404 - 8002ae6: 62bb str r3, [r7, #40] @ 0x28 - 8002ae8: 6abb ldr r3, [r7, #40] @ 0x28 - 8002aea: 881b ldrh r3, [r3, #0] - 8002aec: b29b uxth r3, r3 - 8002aee: f3c3 0309 ubfx r3, r3, #0, #10 - 8002af2: b29a uxth r2, r3 - 8002af4: 6abb ldr r3, [r7, #40] @ 0x28 - 8002af6: 801a strh r2, [r3, #0] - 8002af8: 6abb ldr r3, [r7, #40] @ 0x28 - 8002afa: 881b ldrh r3, [r3, #0] - 8002afc: b29b uxth r3, r3 - 8002afe: ea6f 4343 mvn.w r3, r3, lsl #17 - 8002b02: ea6f 4353 mvn.w r3, r3, lsr #17 - 8002b06: b29a uxth r2, r3 - 8002b08: 6abb ldr r3, [r7, #40] @ 0x28 - 8002b0a: 801a strh r2, [r3, #0] - 8002b0c: e01a b.n 8002b44 - 8002b0e: 68bb ldr r3, [r7, #8] - 8002b10: 785b ldrb r3, [r3, #1] - 8002b12: 2b01 cmp r3, #1 - 8002b14: d116 bne.n 8002b44 - 8002b16: 68fb ldr r3, [r7, #12] - 8002b18: 681b ldr r3, [r3, #0] - 8002b1a: 637b str r3, [r7, #52] @ 0x34 - 8002b1c: 68fb ldr r3, [r7, #12] - 8002b1e: 681b ldr r3, [r3, #0] - 8002b20: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002b24: b29b uxth r3, r3 - 8002b26: 461a mov r2, r3 - 8002b28: 6b7b ldr r3, [r7, #52] @ 0x34 - 8002b2a: 4413 add r3, r2 - 8002b2c: 637b str r3, [r7, #52] @ 0x34 - 8002b2e: 68bb ldr r3, [r7, #8] - 8002b30: 781b ldrb r3, [r3, #0] - 8002b32: 011a lsls r2, r3, #4 - 8002b34: 6b7b ldr r3, [r7, #52] @ 0x34 - 8002b36: 4413 add r3, r2 - 8002b38: f203 4304 addw r3, r3, #1028 @ 0x404 - 8002b3c: 633b str r3, [r7, #48] @ 0x30 - 8002b3e: 6b3b ldr r3, [r7, #48] @ 0x30 - 8002b40: 2200 movs r2, #0 - 8002b42: 801a strh r2, [r3, #0] - PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); - 8002b44: 68fb ldr r3, [r7, #12] - 8002b46: 681b ldr r3, [r3, #0] - 8002b48: 627b str r3, [r7, #36] @ 0x24 - 8002b4a: 68bb ldr r3, [r7, #8] - 8002b4c: 785b ldrb r3, [r3, #1] - 8002b4e: 2b00 cmp r3, #0 - 8002b50: d126 bne.n 8002ba0 - 8002b52: 68fb ldr r3, [r7, #12] - 8002b54: 681b ldr r3, [r3, #0] - 8002b56: 61fb str r3, [r7, #28] - 8002b58: 68fb ldr r3, [r7, #12] - 8002b5a: 681b ldr r3, [r3, #0] - 8002b5c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002b60: b29b uxth r3, r3 - 8002b62: 461a mov r2, r3 - 8002b64: 69fb ldr r3, [r7, #28] - 8002b66: 4413 add r3, r2 - 8002b68: 61fb str r3, [r7, #28] - 8002b6a: 68bb ldr r3, [r7, #8] - 8002b6c: 781b ldrb r3, [r3, #0] - 8002b6e: 011a lsls r2, r3, #4 - 8002b70: 69fb ldr r3, [r7, #28] - 8002b72: 4413 add r3, r2 - 8002b74: f203 430c addw r3, r3, #1036 @ 0x40c - 8002b78: 61bb str r3, [r7, #24] - 8002b7a: 69bb ldr r3, [r7, #24] - 8002b7c: 881b ldrh r3, [r3, #0] - 8002b7e: b29b uxth r3, r3 - 8002b80: f3c3 0309 ubfx r3, r3, #0, #10 - 8002b84: b29a uxth r2, r3 - 8002b86: 69bb ldr r3, [r7, #24] - 8002b88: 801a strh r2, [r3, #0] - 8002b8a: 69bb ldr r3, [r7, #24] - 8002b8c: 881b ldrh r3, [r3, #0] - 8002b8e: b29b uxth r3, r3 - 8002b90: ea6f 4343 mvn.w r3, r3, lsl #17 - 8002b94: ea6f 4353 mvn.w r3, r3, lsr #17 - 8002b98: b29a uxth r2, r3 - 8002b9a: 69bb ldr r3, [r7, #24] - 8002b9c: 801a strh r2, [r3, #0] - 8002b9e: e017 b.n 8002bd0 - 8002ba0: 68bb ldr r3, [r7, #8] - 8002ba2: 785b ldrb r3, [r3, #1] - 8002ba4: 2b01 cmp r3, #1 - 8002ba6: d113 bne.n 8002bd0 - 8002ba8: 68fb ldr r3, [r7, #12] - 8002baa: 681b ldr r3, [r3, #0] - 8002bac: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002bb0: b29b uxth r3, r3 - 8002bb2: 461a mov r2, r3 - 8002bb4: 6a7b ldr r3, [r7, #36] @ 0x24 - 8002bb6: 4413 add r3, r2 - 8002bb8: 627b str r3, [r7, #36] @ 0x24 - 8002bba: 68bb ldr r3, [r7, #8] - 8002bbc: 781b ldrb r3, [r3, #0] - 8002bbe: 011a lsls r2, r3, #4 - 8002bc0: 6a7b ldr r3, [r7, #36] @ 0x24 - 8002bc2: 4413 add r3, r2 - 8002bc4: f203 430c addw r3, r3, #1036 @ 0x40c - 8002bc8: 623b str r3, [r7, #32] - 8002bca: 6a3b ldr r3, [r7, #32] - 8002bcc: 2200 movs r2, #0 - 8002bce: 801a strh r2, [r3, #0] - - /* TX COMPLETE */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->DataInStageCallback(hpcd, ep->num); -#else - HAL_PCD_DataInStageCallback(hpcd, ep->num); - 8002bd0: 68bb ldr r3, [r7, #8] - 8002bd2: 781b ldrb r3, [r3, #0] - 8002bd4: 4619 mov r1, r3 - 8002bd6: 68f8 ldr r0, [r7, #12] - 8002bd8: f005 ff39 bl 8008a4e -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - - if ((wEPVal & USB_EP_DTOG_RX) != 0U) - 8002bdc: 88fb ldrh r3, [r7, #6] - 8002bde: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8002be2: 2b00 cmp r3, #0 - 8002be4: f000 82fc beq.w 80031e0 - { - PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); - 8002be8: 68fb ldr r3, [r7, #12] - 8002bea: 681b ldr r3, [r3, #0] - 8002bec: 461a mov r2, r3 - 8002bee: 68bb ldr r3, [r7, #8] - 8002bf0: 781b ldrb r3, [r3, #0] - 8002bf2: 009b lsls r3, r3, #2 - 8002bf4: 4413 add r3, r2 - 8002bf6: 881b ldrh r3, [r3, #0] - 8002bf8: b29b uxth r3, r3 - 8002bfa: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8002bfe: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8002c02: 82fb strh r3, [r7, #22] - 8002c04: 68fb ldr r3, [r7, #12] - 8002c06: 681b ldr r3, [r3, #0] - 8002c08: 461a mov r2, r3 - 8002c0a: 68bb ldr r3, [r7, #8] - 8002c0c: 781b ldrb r3, [r3, #0] - 8002c0e: 009b lsls r3, r3, #2 - 8002c10: 441a add r2, r3 - 8002c12: 8afb ldrh r3, [r7, #22] - 8002c14: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8002c18: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8002c1c: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8002c20: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8002c24: b29b uxth r3, r3 - 8002c26: 8013 strh r3, [r2, #0] - 8002c28: e2da b.n 80031e0 - } - } - else /* Transfer is not yet Done */ - { - /* need to Free USB Buff */ - if ((wEPVal & USB_EP_DTOG_RX) != 0U) - 8002c2a: 88fb ldrh r3, [r7, #6] - 8002c2c: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8002c30: 2b00 cmp r3, #0 - 8002c32: d021 beq.n 8002c78 - { - PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); - 8002c34: 68fb ldr r3, [r7, #12] - 8002c36: 681b ldr r3, [r3, #0] - 8002c38: 461a mov r2, r3 - 8002c3a: 68bb ldr r3, [r7, #8] - 8002c3c: 781b ldrb r3, [r3, #0] - 8002c3e: 009b lsls r3, r3, #2 - 8002c40: 4413 add r3, r2 - 8002c42: 881b ldrh r3, [r3, #0] - 8002c44: b29b uxth r3, r3 - 8002c46: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8002c4a: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8002c4e: f8a7 308a strh.w r3, [r7, #138] @ 0x8a - 8002c52: 68fb ldr r3, [r7, #12] - 8002c54: 681b ldr r3, [r3, #0] - 8002c56: 461a mov r2, r3 - 8002c58: 68bb ldr r3, [r7, #8] - 8002c5a: 781b ldrb r3, [r3, #0] - 8002c5c: 009b lsls r3, r3, #2 - 8002c5e: 441a add r2, r3 - 8002c60: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a - 8002c64: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8002c68: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8002c6c: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8002c70: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8002c74: b29b uxth r3, r3 - 8002c76: 8013 strh r3, [r2, #0] - } - - /* Still there is data to Fill in the next Buffer */ - if (ep->xfer_fill_db == 1U) - 8002c78: 68bb ldr r3, [r7, #8] - 8002c7a: f893 3024 ldrb.w r3, [r3, #36] @ 0x24 - 8002c7e: 2b01 cmp r3, #1 - 8002c80: f040 82ae bne.w 80031e0 - { - ep->xfer_buff += TxPctSize; - 8002c84: 68bb ldr r3, [r7, #8] - 8002c86: 695a ldr r2, [r3, #20] - 8002c88: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 8002c8c: 441a add r2, r3 - 8002c8e: 68bb ldr r3, [r7, #8] - 8002c90: 615a str r2, [r3, #20] - ep->xfer_count += TxPctSize; - 8002c92: 68bb ldr r3, [r7, #8] - 8002c94: 69da ldr r2, [r3, #28] - 8002c96: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 8002c9a: 441a add r2, r3 - 8002c9c: 68bb ldr r3, [r7, #8] - 8002c9e: 61da str r2, [r3, #28] - - /* Calculate the len of the new buffer to fill */ - if (ep->xfer_len_db >= ep->maxpacket) - 8002ca0: 68bb ldr r3, [r7, #8] - 8002ca2: 6a1a ldr r2, [r3, #32] - 8002ca4: 68bb ldr r3, [r7, #8] - 8002ca6: 691b ldr r3, [r3, #16] - 8002ca8: 429a cmp r2, r3 - 8002caa: d30b bcc.n 8002cc4 - { - len = ep->maxpacket; - 8002cac: 68bb ldr r3, [r7, #8] - 8002cae: 691b ldr r3, [r3, #16] - 8002cb0: f8c7 308c str.w r3, [r7, #140] @ 0x8c - ep->xfer_len_db -= len; - 8002cb4: 68bb ldr r3, [r7, #8] - 8002cb6: 6a1a ldr r2, [r3, #32] - 8002cb8: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8002cbc: 1ad2 subs r2, r2, r3 - 8002cbe: 68bb ldr r3, [r7, #8] - 8002cc0: 621a str r2, [r3, #32] - 8002cc2: e017 b.n 8002cf4 - } - else if (ep->xfer_len_db == 0U) - 8002cc4: 68bb ldr r3, [r7, #8] - 8002cc6: 6a1b ldr r3, [r3, #32] - 8002cc8: 2b00 cmp r3, #0 - 8002cca: d108 bne.n 8002cde - { - len = TxPctSize; - 8002ccc: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 8002cd0: f8c7 308c str.w r3, [r7, #140] @ 0x8c - ep->xfer_fill_db = 0U; - 8002cd4: 68bb ldr r3, [r7, #8] - 8002cd6: 2200 movs r2, #0 - 8002cd8: f883 2024 strb.w r2, [r3, #36] @ 0x24 - 8002cdc: e00a b.n 8002cf4 - } - else - { - ep->xfer_fill_db = 0U; - 8002cde: 68bb ldr r3, [r7, #8] - 8002ce0: 2200 movs r2, #0 - 8002ce2: f883 2024 strb.w r2, [r3, #36] @ 0x24 - len = ep->xfer_len_db; - 8002ce6: 68bb ldr r3, [r7, #8] - 8002ce8: 6a1b ldr r3, [r3, #32] - 8002cea: f8c7 308c str.w r3, [r7, #140] @ 0x8c - ep->xfer_len_db = 0U; - 8002cee: 68bb ldr r3, [r7, #8] - 8002cf0: 2200 movs r2, #0 - 8002cf2: 621a str r2, [r3, #32] - } - - /* Write remaining Data to Buffer */ - /* Set the Double buffer counter for pma buffer1 */ - PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, len); - 8002cf4: 68bb ldr r3, [r7, #8] - 8002cf6: 785b ldrb r3, [r3, #1] - 8002cf8: 2b00 cmp r3, #0 - 8002cfa: d165 bne.n 8002dc8 - 8002cfc: 68fb ldr r3, [r7, #12] - 8002cfe: 681b ldr r3, [r3, #0] - 8002d00: 63fb str r3, [r7, #60] @ 0x3c - 8002d02: 68fb ldr r3, [r7, #12] - 8002d04: 681b ldr r3, [r3, #0] - 8002d06: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002d0a: b29b uxth r3, r3 - 8002d0c: 461a mov r2, r3 - 8002d0e: 6bfb ldr r3, [r7, #60] @ 0x3c - 8002d10: 4413 add r3, r2 - 8002d12: 63fb str r3, [r7, #60] @ 0x3c - 8002d14: 68bb ldr r3, [r7, #8] - 8002d16: 781b ldrb r3, [r3, #0] - 8002d18: 011a lsls r2, r3, #4 - 8002d1a: 6bfb ldr r3, [r7, #60] @ 0x3c - 8002d1c: 4413 add r3, r2 - 8002d1e: f203 4304 addw r3, r3, #1028 @ 0x404 - 8002d22: 63bb str r3, [r7, #56] @ 0x38 - 8002d24: 6bbb ldr r3, [r7, #56] @ 0x38 - 8002d26: 881b ldrh r3, [r3, #0] - 8002d28: b29b uxth r3, r3 - 8002d2a: f3c3 0309 ubfx r3, r3, #0, #10 - 8002d2e: b29a uxth r2, r3 - 8002d30: 6bbb ldr r3, [r7, #56] @ 0x38 - 8002d32: 801a strh r2, [r3, #0] - 8002d34: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8002d38: 2b3e cmp r3, #62 @ 0x3e - 8002d3a: d91d bls.n 8002d78 - 8002d3c: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8002d40: 095b lsrs r3, r3, #5 - 8002d42: 64bb str r3, [r7, #72] @ 0x48 - 8002d44: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8002d48: f003 031f and.w r3, r3, #31 - 8002d4c: 2b00 cmp r3, #0 - 8002d4e: d102 bne.n 8002d56 - 8002d50: 6cbb ldr r3, [r7, #72] @ 0x48 - 8002d52: 3b01 subs r3, #1 - 8002d54: 64bb str r3, [r7, #72] @ 0x48 - 8002d56: 6bbb ldr r3, [r7, #56] @ 0x38 - 8002d58: 881b ldrh r3, [r3, #0] - 8002d5a: b29a uxth r2, r3 - 8002d5c: 6cbb ldr r3, [r7, #72] @ 0x48 - 8002d5e: b29b uxth r3, r3 - 8002d60: 029b lsls r3, r3, #10 - 8002d62: b29b uxth r3, r3 - 8002d64: 4313 orrs r3, r2 - 8002d66: b29b uxth r3, r3 - 8002d68: ea6f 4343 mvn.w r3, r3, lsl #17 - 8002d6c: ea6f 4353 mvn.w r3, r3, lsr #17 - 8002d70: b29a uxth r2, r3 - 8002d72: 6bbb ldr r3, [r7, #56] @ 0x38 - 8002d74: 801a strh r2, [r3, #0] - 8002d76: e044 b.n 8002e02 - 8002d78: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8002d7c: 2b00 cmp r3, #0 - 8002d7e: d10a bne.n 8002d96 - 8002d80: 6bbb ldr r3, [r7, #56] @ 0x38 - 8002d82: 881b ldrh r3, [r3, #0] - 8002d84: b29b uxth r3, r3 - 8002d86: ea6f 4343 mvn.w r3, r3, lsl #17 - 8002d8a: ea6f 4353 mvn.w r3, r3, lsr #17 - 8002d8e: b29a uxth r2, r3 - 8002d90: 6bbb ldr r3, [r7, #56] @ 0x38 - 8002d92: 801a strh r2, [r3, #0] - 8002d94: e035 b.n 8002e02 - 8002d96: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8002d9a: 085b lsrs r3, r3, #1 - 8002d9c: 64bb str r3, [r7, #72] @ 0x48 - 8002d9e: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8002da2: f003 0301 and.w r3, r3, #1 - 8002da6: 2b00 cmp r3, #0 - 8002da8: d002 beq.n 8002db0 - 8002daa: 6cbb ldr r3, [r7, #72] @ 0x48 - 8002dac: 3301 adds r3, #1 - 8002dae: 64bb str r3, [r7, #72] @ 0x48 - 8002db0: 6bbb ldr r3, [r7, #56] @ 0x38 - 8002db2: 881b ldrh r3, [r3, #0] - 8002db4: b29a uxth r2, r3 - 8002db6: 6cbb ldr r3, [r7, #72] @ 0x48 - 8002db8: b29b uxth r3, r3 - 8002dba: 029b lsls r3, r3, #10 - 8002dbc: b29b uxth r3, r3 - 8002dbe: 4313 orrs r3, r2 - 8002dc0: b29a uxth r2, r3 - 8002dc2: 6bbb ldr r3, [r7, #56] @ 0x38 - 8002dc4: 801a strh r2, [r3, #0] - 8002dc6: e01c b.n 8002e02 - 8002dc8: 68bb ldr r3, [r7, #8] - 8002dca: 785b ldrb r3, [r3, #1] - 8002dcc: 2b01 cmp r3, #1 - 8002dce: d118 bne.n 8002e02 - 8002dd0: 68fb ldr r3, [r7, #12] - 8002dd2: 681b ldr r3, [r3, #0] - 8002dd4: 647b str r3, [r7, #68] @ 0x44 - 8002dd6: 68fb ldr r3, [r7, #12] - 8002dd8: 681b ldr r3, [r3, #0] - 8002dda: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002dde: b29b uxth r3, r3 - 8002de0: 461a mov r2, r3 - 8002de2: 6c7b ldr r3, [r7, #68] @ 0x44 - 8002de4: 4413 add r3, r2 - 8002de6: 647b str r3, [r7, #68] @ 0x44 - 8002de8: 68bb ldr r3, [r7, #8] - 8002dea: 781b ldrb r3, [r3, #0] - 8002dec: 011a lsls r2, r3, #4 - 8002dee: 6c7b ldr r3, [r7, #68] @ 0x44 - 8002df0: 4413 add r3, r2 - 8002df2: f203 4304 addw r3, r3, #1028 @ 0x404 - 8002df6: 643b str r3, [r7, #64] @ 0x40 - 8002df8: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8002dfc: b29a uxth r2, r3 - 8002dfe: 6c3b ldr r3, [r7, #64] @ 0x40 - 8002e00: 801a strh r2, [r3, #0] - - /* Copy user buffer to USB PMA */ - USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, (uint16_t)len); - 8002e02: 68fb ldr r3, [r7, #12] - 8002e04: 6818 ldr r0, [r3, #0] - 8002e06: 68bb ldr r3, [r7, #8] - 8002e08: 6959 ldr r1, [r3, #20] - 8002e0a: 68bb ldr r3, [r7, #8] - 8002e0c: 891a ldrh r2, [r3, #8] - 8002e0e: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8002e12: b29b uxth r3, r3 - 8002e14: f003 ff57 bl 8006cc6 - 8002e18: e1e2 b.n 80031e0 - } - } - else /* Data Buffer1 ACK received */ - { - /* multi-packet on the NON control IN endpoint */ - TxPctSize = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); - 8002e1a: 68fb ldr r3, [r7, #12] - 8002e1c: 681b ldr r3, [r3, #0] - 8002e1e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002e22: b29b uxth r3, r3 - 8002e24: 461a mov r2, r3 - 8002e26: 68bb ldr r3, [r7, #8] - 8002e28: 781b ldrb r3, [r3, #0] - 8002e2a: 00db lsls r3, r3, #3 - 8002e2c: 4413 add r3, r2 - 8002e2e: 3306 adds r3, #6 - 8002e30: 005b lsls r3, r3, #1 - 8002e32: 68fa ldr r2, [r7, #12] - 8002e34: 6812 ldr r2, [r2, #0] - 8002e36: 4413 add r3, r2 - 8002e38: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8002e3c: 881b ldrh r3, [r3, #0] - 8002e3e: f3c3 0309 ubfx r3, r3, #0, #10 - 8002e42: f8a7 3086 strh.w r3, [r7, #134] @ 0x86 - - if (ep->xfer_len >= TxPctSize) - 8002e46: 68bb ldr r3, [r7, #8] - 8002e48: 699a ldr r2, [r3, #24] - 8002e4a: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 8002e4e: 429a cmp r2, r3 - 8002e50: d307 bcc.n 8002e62 - { - ep->xfer_len -= TxPctSize; - 8002e52: 68bb ldr r3, [r7, #8] - 8002e54: 699a ldr r2, [r3, #24] - 8002e56: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 8002e5a: 1ad2 subs r2, r2, r3 - 8002e5c: 68bb ldr r3, [r7, #8] - 8002e5e: 619a str r2, [r3, #24] - 8002e60: e002 b.n 8002e68 - } - else - { - ep->xfer_len = 0U; - 8002e62: 68bb ldr r3, [r7, #8] - 8002e64: 2200 movs r2, #0 - 8002e66: 619a str r2, [r3, #24] - } - - /* Transfer is completed */ - if (ep->xfer_len == 0U) - 8002e68: 68bb ldr r3, [r7, #8] - 8002e6a: 699b ldr r3, [r3, #24] - 8002e6c: 2b00 cmp r3, #0 - 8002e6e: f040 80c0 bne.w 8002ff2 - { - PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); - 8002e72: 68bb ldr r3, [r7, #8] - 8002e74: 785b ldrb r3, [r3, #1] - 8002e76: 2b00 cmp r3, #0 - 8002e78: d126 bne.n 8002ec8 - 8002e7a: 68fb ldr r3, [r7, #12] - 8002e7c: 681b ldr r3, [r3, #0] - 8002e7e: 67fb str r3, [r7, #124] @ 0x7c - 8002e80: 68fb ldr r3, [r7, #12] - 8002e82: 681b ldr r3, [r3, #0] - 8002e84: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002e88: b29b uxth r3, r3 - 8002e8a: 461a mov r2, r3 - 8002e8c: 6ffb ldr r3, [r7, #124] @ 0x7c - 8002e8e: 4413 add r3, r2 - 8002e90: 67fb str r3, [r7, #124] @ 0x7c - 8002e92: 68bb ldr r3, [r7, #8] - 8002e94: 781b ldrb r3, [r3, #0] - 8002e96: 011a lsls r2, r3, #4 - 8002e98: 6ffb ldr r3, [r7, #124] @ 0x7c - 8002e9a: 4413 add r3, r2 - 8002e9c: f203 4304 addw r3, r3, #1028 @ 0x404 - 8002ea0: 67bb str r3, [r7, #120] @ 0x78 - 8002ea2: 6fbb ldr r3, [r7, #120] @ 0x78 - 8002ea4: 881b ldrh r3, [r3, #0] - 8002ea6: b29b uxth r3, r3 - 8002ea8: f3c3 0309 ubfx r3, r3, #0, #10 - 8002eac: b29a uxth r2, r3 - 8002eae: 6fbb ldr r3, [r7, #120] @ 0x78 - 8002eb0: 801a strh r2, [r3, #0] - 8002eb2: 6fbb ldr r3, [r7, #120] @ 0x78 - 8002eb4: 881b ldrh r3, [r3, #0] - 8002eb6: b29b uxth r3, r3 - 8002eb8: ea6f 4343 mvn.w r3, r3, lsl #17 - 8002ebc: ea6f 4353 mvn.w r3, r3, lsr #17 - 8002ec0: b29a uxth r2, r3 - 8002ec2: 6fbb ldr r3, [r7, #120] @ 0x78 - 8002ec4: 801a strh r2, [r3, #0] - 8002ec6: e01a b.n 8002efe - 8002ec8: 68bb ldr r3, [r7, #8] - 8002eca: 785b ldrb r3, [r3, #1] - 8002ecc: 2b01 cmp r3, #1 - 8002ece: d116 bne.n 8002efe - 8002ed0: 68fb ldr r3, [r7, #12] - 8002ed2: 681b ldr r3, [r3, #0] - 8002ed4: 667b str r3, [r7, #100] @ 0x64 - 8002ed6: 68fb ldr r3, [r7, #12] - 8002ed8: 681b ldr r3, [r3, #0] - 8002eda: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002ede: b29b uxth r3, r3 - 8002ee0: 461a mov r2, r3 - 8002ee2: 6e7b ldr r3, [r7, #100] @ 0x64 - 8002ee4: 4413 add r3, r2 - 8002ee6: 667b str r3, [r7, #100] @ 0x64 - 8002ee8: 68bb ldr r3, [r7, #8] - 8002eea: 781b ldrb r3, [r3, #0] - 8002eec: 011a lsls r2, r3, #4 - 8002eee: 6e7b ldr r3, [r7, #100] @ 0x64 - 8002ef0: 4413 add r3, r2 - 8002ef2: f203 4304 addw r3, r3, #1028 @ 0x404 - 8002ef6: 663b str r3, [r7, #96] @ 0x60 - 8002ef8: 6e3b ldr r3, [r7, #96] @ 0x60 - 8002efa: 2200 movs r2, #0 - 8002efc: 801a strh r2, [r3, #0] - PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); - 8002efe: 68fb ldr r3, [r7, #12] - 8002f00: 681b ldr r3, [r3, #0] - 8002f02: 677b str r3, [r7, #116] @ 0x74 - 8002f04: 68bb ldr r3, [r7, #8] - 8002f06: 785b ldrb r3, [r3, #1] - 8002f08: 2b00 cmp r3, #0 - 8002f0a: d12b bne.n 8002f64 - 8002f0c: 68fb ldr r3, [r7, #12] - 8002f0e: 681b ldr r3, [r3, #0] - 8002f10: 66fb str r3, [r7, #108] @ 0x6c - 8002f12: 68fb ldr r3, [r7, #12] - 8002f14: 681b ldr r3, [r3, #0] - 8002f16: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002f1a: b29b uxth r3, r3 - 8002f1c: 461a mov r2, r3 - 8002f1e: 6efb ldr r3, [r7, #108] @ 0x6c - 8002f20: 4413 add r3, r2 - 8002f22: 66fb str r3, [r7, #108] @ 0x6c - 8002f24: 68bb ldr r3, [r7, #8] - 8002f26: 781b ldrb r3, [r3, #0] - 8002f28: 011a lsls r2, r3, #4 - 8002f2a: 6efb ldr r3, [r7, #108] @ 0x6c - 8002f2c: 4413 add r3, r2 - 8002f2e: f203 430c addw r3, r3, #1036 @ 0x40c - 8002f32: f8c7 3080 str.w r3, [r7, #128] @ 0x80 - 8002f36: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 - 8002f3a: 881b ldrh r3, [r3, #0] - 8002f3c: b29b uxth r3, r3 - 8002f3e: f3c3 0309 ubfx r3, r3, #0, #10 - 8002f42: b29a uxth r2, r3 - 8002f44: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 - 8002f48: 801a strh r2, [r3, #0] - 8002f4a: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 - 8002f4e: 881b ldrh r3, [r3, #0] - 8002f50: b29b uxth r3, r3 - 8002f52: ea6f 4343 mvn.w r3, r3, lsl #17 - 8002f56: ea6f 4353 mvn.w r3, r3, lsr #17 - 8002f5a: b29a uxth r2, r3 - 8002f5c: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 - 8002f60: 801a strh r2, [r3, #0] - 8002f62: e017 b.n 8002f94 - 8002f64: 68bb ldr r3, [r7, #8] - 8002f66: 785b ldrb r3, [r3, #1] - 8002f68: 2b01 cmp r3, #1 - 8002f6a: d113 bne.n 8002f94 - 8002f6c: 68fb ldr r3, [r7, #12] - 8002f6e: 681b ldr r3, [r3, #0] - 8002f70: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002f74: b29b uxth r3, r3 - 8002f76: 461a mov r2, r3 - 8002f78: 6f7b ldr r3, [r7, #116] @ 0x74 - 8002f7a: 4413 add r3, r2 - 8002f7c: 677b str r3, [r7, #116] @ 0x74 - 8002f7e: 68bb ldr r3, [r7, #8] - 8002f80: 781b ldrb r3, [r3, #0] - 8002f82: 011a lsls r2, r3, #4 - 8002f84: 6f7b ldr r3, [r7, #116] @ 0x74 - 8002f86: 4413 add r3, r2 - 8002f88: f203 430c addw r3, r3, #1036 @ 0x40c - 8002f8c: 673b str r3, [r7, #112] @ 0x70 - 8002f8e: 6f3b ldr r3, [r7, #112] @ 0x70 - 8002f90: 2200 movs r2, #0 - 8002f92: 801a strh r2, [r3, #0] - - /* TX COMPLETE */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->DataInStageCallback(hpcd, ep->num); -#else - HAL_PCD_DataInStageCallback(hpcd, ep->num); - 8002f94: 68bb ldr r3, [r7, #8] - 8002f96: 781b ldrb r3, [r3, #0] - 8002f98: 4619 mov r1, r3 - 8002f9a: 68f8 ldr r0, [r7, #12] - 8002f9c: f005 fd57 bl 8008a4e -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - - /* need to Free USB Buff */ - if ((wEPVal & USB_EP_DTOG_RX) == 0U) - 8002fa0: 88fb ldrh r3, [r7, #6] - 8002fa2: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8002fa6: 2b00 cmp r3, #0 - 8002fa8: f040 811a bne.w 80031e0 - { - PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); - 8002fac: 68fb ldr r3, [r7, #12] - 8002fae: 681b ldr r3, [r3, #0] - 8002fb0: 461a mov r2, r3 - 8002fb2: 68bb ldr r3, [r7, #8] - 8002fb4: 781b ldrb r3, [r3, #0] - 8002fb6: 009b lsls r3, r3, #2 - 8002fb8: 4413 add r3, r2 - 8002fba: 881b ldrh r3, [r3, #0] - 8002fbc: b29b uxth r3, r3 - 8002fbe: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8002fc2: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8002fc6: f8a7 3088 strh.w r3, [r7, #136] @ 0x88 - 8002fca: 68fb ldr r3, [r7, #12] - 8002fcc: 681b ldr r3, [r3, #0] - 8002fce: 461a mov r2, r3 - 8002fd0: 68bb ldr r3, [r7, #8] - 8002fd2: 781b ldrb r3, [r3, #0] - 8002fd4: 009b lsls r3, r3, #2 - 8002fd6: 441a add r2, r3 - 8002fd8: f8b7 3088 ldrh.w r3, [r7, #136] @ 0x88 - 8002fdc: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8002fe0: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8002fe4: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8002fe8: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8002fec: b29b uxth r3, r3 - 8002fee: 8013 strh r3, [r2, #0] - 8002ff0: e0f6 b.n 80031e0 - } - } - else /* Transfer is not yet Done */ - { - /* need to Free USB Buff */ - if ((wEPVal & USB_EP_DTOG_RX) == 0U) - 8002ff2: 88fb ldrh r3, [r7, #6] - 8002ff4: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8002ff8: 2b00 cmp r3, #0 - 8002ffa: d121 bne.n 8003040 - { - PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); - 8002ffc: 68fb ldr r3, [r7, #12] - 8002ffe: 681b ldr r3, [r3, #0] - 8003000: 461a mov r2, r3 - 8003002: 68bb ldr r3, [r7, #8] - 8003004: 781b ldrb r3, [r3, #0] - 8003006: 009b lsls r3, r3, #2 - 8003008: 4413 add r3, r2 - 800300a: 881b ldrh r3, [r3, #0] - 800300c: b29b uxth r3, r3 - 800300e: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8003012: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8003016: f8a7 304e strh.w r3, [r7, #78] @ 0x4e - 800301a: 68fb ldr r3, [r7, #12] - 800301c: 681b ldr r3, [r3, #0] - 800301e: 461a mov r2, r3 - 8003020: 68bb ldr r3, [r7, #8] - 8003022: 781b ldrb r3, [r3, #0] - 8003024: 009b lsls r3, r3, #2 - 8003026: 441a add r2, r3 - 8003028: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e - 800302c: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8003030: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8003034: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8003038: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800303c: b29b uxth r3, r3 - 800303e: 8013 strh r3, [r2, #0] - } - - /* Still there is data to Fill in the next Buffer */ - if (ep->xfer_fill_db == 1U) - 8003040: 68bb ldr r3, [r7, #8] - 8003042: f893 3024 ldrb.w r3, [r3, #36] @ 0x24 - 8003046: 2b01 cmp r3, #1 - 8003048: f040 80ca bne.w 80031e0 - { - ep->xfer_buff += TxPctSize; - 800304c: 68bb ldr r3, [r7, #8] - 800304e: 695a ldr r2, [r3, #20] - 8003050: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 8003054: 441a add r2, r3 - 8003056: 68bb ldr r3, [r7, #8] - 8003058: 615a str r2, [r3, #20] - ep->xfer_count += TxPctSize; - 800305a: 68bb ldr r3, [r7, #8] - 800305c: 69da ldr r2, [r3, #28] - 800305e: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 8003062: 441a add r2, r3 - 8003064: 68bb ldr r3, [r7, #8] - 8003066: 61da str r2, [r3, #28] - - /* Calculate the len of the new buffer to fill */ - if (ep->xfer_len_db >= ep->maxpacket) - 8003068: 68bb ldr r3, [r7, #8] - 800306a: 6a1a ldr r2, [r3, #32] - 800306c: 68bb ldr r3, [r7, #8] - 800306e: 691b ldr r3, [r3, #16] - 8003070: 429a cmp r2, r3 - 8003072: d30b bcc.n 800308c - { - len = ep->maxpacket; - 8003074: 68bb ldr r3, [r7, #8] - 8003076: 691b ldr r3, [r3, #16] - 8003078: f8c7 308c str.w r3, [r7, #140] @ 0x8c - ep->xfer_len_db -= len; - 800307c: 68bb ldr r3, [r7, #8] - 800307e: 6a1a ldr r2, [r3, #32] - 8003080: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8003084: 1ad2 subs r2, r2, r3 - 8003086: 68bb ldr r3, [r7, #8] - 8003088: 621a str r2, [r3, #32] - 800308a: e017 b.n 80030bc - } - else if (ep->xfer_len_db == 0U) - 800308c: 68bb ldr r3, [r7, #8] - 800308e: 6a1b ldr r3, [r3, #32] - 8003090: 2b00 cmp r3, #0 - 8003092: d108 bne.n 80030a6 - { - len = TxPctSize; - 8003094: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 8003098: f8c7 308c str.w r3, [r7, #140] @ 0x8c - ep->xfer_fill_db = 0U; - 800309c: 68bb ldr r3, [r7, #8] - 800309e: 2200 movs r2, #0 - 80030a0: f883 2024 strb.w r2, [r3, #36] @ 0x24 - 80030a4: e00a b.n 80030bc - } - else - { - len = ep->xfer_len_db; - 80030a6: 68bb ldr r3, [r7, #8] - 80030a8: 6a1b ldr r3, [r3, #32] - 80030aa: f8c7 308c str.w r3, [r7, #140] @ 0x8c - ep->xfer_len_db = 0U; - 80030ae: 68bb ldr r3, [r7, #8] - 80030b0: 2200 movs r2, #0 - 80030b2: 621a str r2, [r3, #32] - ep->xfer_fill_db = 0; - 80030b4: 68bb ldr r3, [r7, #8] - 80030b6: 2200 movs r2, #0 - 80030b8: f883 2024 strb.w r2, [r3, #36] @ 0x24 - } - - /* Set the Double buffer counter for pmabuffer1 */ - PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, len); - 80030bc: 68fb ldr r3, [r7, #12] - 80030be: 681b ldr r3, [r3, #0] - 80030c0: 657b str r3, [r7, #84] @ 0x54 - 80030c2: 68bb ldr r3, [r7, #8] - 80030c4: 785b ldrb r3, [r3, #1] - 80030c6: 2b00 cmp r3, #0 - 80030c8: d165 bne.n 8003196 - 80030ca: 68fb ldr r3, [r7, #12] - 80030cc: 681b ldr r3, [r3, #0] - 80030ce: 65fb str r3, [r7, #92] @ 0x5c - 80030d0: 68fb ldr r3, [r7, #12] - 80030d2: 681b ldr r3, [r3, #0] - 80030d4: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80030d8: b29b uxth r3, r3 - 80030da: 461a mov r2, r3 - 80030dc: 6dfb ldr r3, [r7, #92] @ 0x5c - 80030de: 4413 add r3, r2 - 80030e0: 65fb str r3, [r7, #92] @ 0x5c - 80030e2: 68bb ldr r3, [r7, #8] - 80030e4: 781b ldrb r3, [r3, #0] - 80030e6: 011a lsls r2, r3, #4 - 80030e8: 6dfb ldr r3, [r7, #92] @ 0x5c - 80030ea: 4413 add r3, r2 - 80030ec: f203 430c addw r3, r3, #1036 @ 0x40c - 80030f0: 65bb str r3, [r7, #88] @ 0x58 - 80030f2: 6dbb ldr r3, [r7, #88] @ 0x58 - 80030f4: 881b ldrh r3, [r3, #0] - 80030f6: b29b uxth r3, r3 - 80030f8: f3c3 0309 ubfx r3, r3, #0, #10 - 80030fc: b29a uxth r2, r3 - 80030fe: 6dbb ldr r3, [r7, #88] @ 0x58 - 8003100: 801a strh r2, [r3, #0] - 8003102: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8003106: 2b3e cmp r3, #62 @ 0x3e - 8003108: d91d bls.n 8003146 - 800310a: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 800310e: 095b lsrs r3, r3, #5 - 8003110: 66bb str r3, [r7, #104] @ 0x68 - 8003112: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8003116: f003 031f and.w r3, r3, #31 - 800311a: 2b00 cmp r3, #0 - 800311c: d102 bne.n 8003124 - 800311e: 6ebb ldr r3, [r7, #104] @ 0x68 - 8003120: 3b01 subs r3, #1 - 8003122: 66bb str r3, [r7, #104] @ 0x68 - 8003124: 6dbb ldr r3, [r7, #88] @ 0x58 - 8003126: 881b ldrh r3, [r3, #0] - 8003128: b29a uxth r2, r3 - 800312a: 6ebb ldr r3, [r7, #104] @ 0x68 - 800312c: b29b uxth r3, r3 - 800312e: 029b lsls r3, r3, #10 - 8003130: b29b uxth r3, r3 - 8003132: 4313 orrs r3, r2 - 8003134: b29b uxth r3, r3 - 8003136: ea6f 4343 mvn.w r3, r3, lsl #17 - 800313a: ea6f 4353 mvn.w r3, r3, lsr #17 - 800313e: b29a uxth r2, r3 - 8003140: 6dbb ldr r3, [r7, #88] @ 0x58 - 8003142: 801a strh r2, [r3, #0] - 8003144: e041 b.n 80031ca - 8003146: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 800314a: 2b00 cmp r3, #0 - 800314c: d10a bne.n 8003164 - 800314e: 6dbb ldr r3, [r7, #88] @ 0x58 - 8003150: 881b ldrh r3, [r3, #0] - 8003152: b29b uxth r3, r3 - 8003154: ea6f 4343 mvn.w r3, r3, lsl #17 - 8003158: ea6f 4353 mvn.w r3, r3, lsr #17 - 800315c: b29a uxth r2, r3 - 800315e: 6dbb ldr r3, [r7, #88] @ 0x58 - 8003160: 801a strh r2, [r3, #0] - 8003162: e032 b.n 80031ca - 8003164: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8003168: 085b lsrs r3, r3, #1 - 800316a: 66bb str r3, [r7, #104] @ 0x68 - 800316c: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8003170: f003 0301 and.w r3, r3, #1 - 8003174: 2b00 cmp r3, #0 - 8003176: d002 beq.n 800317e - 8003178: 6ebb ldr r3, [r7, #104] @ 0x68 - 800317a: 3301 adds r3, #1 - 800317c: 66bb str r3, [r7, #104] @ 0x68 - 800317e: 6dbb ldr r3, [r7, #88] @ 0x58 - 8003180: 881b ldrh r3, [r3, #0] - 8003182: b29a uxth r2, r3 - 8003184: 6ebb ldr r3, [r7, #104] @ 0x68 - 8003186: b29b uxth r3, r3 - 8003188: 029b lsls r3, r3, #10 - 800318a: b29b uxth r3, r3 - 800318c: 4313 orrs r3, r2 - 800318e: b29a uxth r2, r3 - 8003190: 6dbb ldr r3, [r7, #88] @ 0x58 - 8003192: 801a strh r2, [r3, #0] - 8003194: e019 b.n 80031ca - 8003196: 68bb ldr r3, [r7, #8] - 8003198: 785b ldrb r3, [r3, #1] - 800319a: 2b01 cmp r3, #1 - 800319c: d115 bne.n 80031ca - 800319e: 68fb ldr r3, [r7, #12] - 80031a0: 681b ldr r3, [r3, #0] - 80031a2: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80031a6: b29b uxth r3, r3 - 80031a8: 461a mov r2, r3 - 80031aa: 6d7b ldr r3, [r7, #84] @ 0x54 - 80031ac: 4413 add r3, r2 - 80031ae: 657b str r3, [r7, #84] @ 0x54 - 80031b0: 68bb ldr r3, [r7, #8] - 80031b2: 781b ldrb r3, [r3, #0] - 80031b4: 011a lsls r2, r3, #4 - 80031b6: 6d7b ldr r3, [r7, #84] @ 0x54 - 80031b8: 4413 add r3, r2 - 80031ba: f203 430c addw r3, r3, #1036 @ 0x40c - 80031be: 653b str r3, [r7, #80] @ 0x50 - 80031c0: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 80031c4: b29a uxth r2, r3 - 80031c6: 6d3b ldr r3, [r7, #80] @ 0x50 - 80031c8: 801a strh r2, [r3, #0] - - /* Copy the user buffer to USB PMA */ - USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, (uint16_t)len); - 80031ca: 68fb ldr r3, [r7, #12] - 80031cc: 6818 ldr r0, [r3, #0] - 80031ce: 68bb ldr r3, [r7, #8] - 80031d0: 6959 ldr r1, [r3, #20] - 80031d2: 68bb ldr r3, [r7, #8] - 80031d4: 895a ldrh r2, [r3, #10] - 80031d6: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 80031da: b29b uxth r3, r3 - 80031dc: f003 fd73 bl 8006cc6 - } - } - } - - /*enable endpoint IN*/ - PCD_SET_EP_TX_STATUS(hpcd->Instance, ep->num, USB_EP_TX_VALID); - 80031e0: 68fb ldr r3, [r7, #12] - 80031e2: 681b ldr r3, [r3, #0] - 80031e4: 461a mov r2, r3 - 80031e6: 68bb ldr r3, [r7, #8] - 80031e8: 781b ldrb r3, [r3, #0] - 80031ea: 009b lsls r3, r3, #2 - 80031ec: 4413 add r3, r2 - 80031ee: 881b ldrh r3, [r3, #0] - 80031f0: b29b uxth r3, r3 - 80031f2: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80031f6: f023 0340 bic.w r3, r3, #64 @ 0x40 - 80031fa: 82bb strh r3, [r7, #20] - 80031fc: 8abb ldrh r3, [r7, #20] - 80031fe: f083 0310 eor.w r3, r3, #16 - 8003202: 82bb strh r3, [r7, #20] - 8003204: 8abb ldrh r3, [r7, #20] - 8003206: f083 0320 eor.w r3, r3, #32 - 800320a: 82bb strh r3, [r7, #20] - 800320c: 68fb ldr r3, [r7, #12] - 800320e: 681b ldr r3, [r3, #0] - 8003210: 461a mov r2, r3 - 8003212: 68bb ldr r3, [r7, #8] - 8003214: 781b ldrb r3, [r3, #0] - 8003216: 009b lsls r3, r3, #2 - 8003218: 441a add r2, r3 - 800321a: 8abb ldrh r3, [r7, #20] - 800321c: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8003220: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8003224: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8003228: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800322c: b29b uxth r3, r3 - 800322e: 8013 strh r3, [r2, #0] - - return HAL_OK; - 8003230: 2300 movs r3, #0 -} - 8003232: 4618 mov r0, r3 - 8003234: 3790 adds r7, #144 @ 0x90 - 8003236: 46bd mov sp, r7 - 8003238: bd80 pop {r7, pc} - -0800323a : - * @retval HAL status - */ - -HAL_StatusTypeDef HAL_PCDEx_PMAConfig(PCD_HandleTypeDef *hpcd, uint16_t ep_addr, - uint16_t ep_kind, uint32_t pmaadress) -{ - 800323a: b480 push {r7} - 800323c: b087 sub sp, #28 - 800323e: af00 add r7, sp, #0 - 8003240: 60f8 str r0, [r7, #12] - 8003242: 607b str r3, [r7, #4] - 8003244: 460b mov r3, r1 - 8003246: 817b strh r3, [r7, #10] - 8003248: 4613 mov r3, r2 - 800324a: 813b strh r3, [r7, #8] - PCD_EPTypeDef *ep; - - /* initialize ep structure*/ - if ((0x80U & ep_addr) == 0x80U) - 800324c: 897b ldrh r3, [r7, #10] - 800324e: f003 0380 and.w r3, r3, #128 @ 0x80 - 8003252: b29b uxth r3, r3 - 8003254: 2b00 cmp r3, #0 - 8003256: d00b beq.n 8003270 - { - ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; - 8003258: 897b ldrh r3, [r7, #10] - 800325a: f003 0207 and.w r2, r3, #7 - 800325e: 4613 mov r3, r2 - 8003260: 009b lsls r3, r3, #2 - 8003262: 4413 add r3, r2 - 8003264: 00db lsls r3, r3, #3 - 8003266: 3310 adds r3, #16 - 8003268: 68fa ldr r2, [r7, #12] - 800326a: 4413 add r3, r2 - 800326c: 617b str r3, [r7, #20] - 800326e: e009 b.n 8003284 - } - else - { - ep = &hpcd->OUT_ep[ep_addr]; - 8003270: 897a ldrh r2, [r7, #10] - 8003272: 4613 mov r3, r2 - 8003274: 009b lsls r3, r3, #2 - 8003276: 4413 add r3, r2 - 8003278: 00db lsls r3, r3, #3 - 800327a: f503 73a8 add.w r3, r3, #336 @ 0x150 - 800327e: 68fa ldr r2, [r7, #12] - 8003280: 4413 add r3, r2 - 8003282: 617b str r3, [r7, #20] - } - - /* Here we check if the endpoint is single or double Buffer*/ - if (ep_kind == PCD_SNG_BUF) - 8003284: 893b ldrh r3, [r7, #8] - 8003286: 2b00 cmp r3, #0 - 8003288: d107 bne.n 800329a - { - /* Single Buffer */ - ep->doublebuffer = 0U; - 800328a: 697b ldr r3, [r7, #20] - 800328c: 2200 movs r2, #0 - 800328e: 731a strb r2, [r3, #12] - /* Configure the PMA */ - ep->pmaadress = (uint16_t)pmaadress; - 8003290: 687b ldr r3, [r7, #4] - 8003292: b29a uxth r2, r3 - 8003294: 697b ldr r3, [r7, #20] - 8003296: 80da strh r2, [r3, #6] - 8003298: e00b b.n 80032b2 - } -#if (USE_USB_DOUBLE_BUFFER == 1U) - else /* USB_DBL_BUF */ - { - /* Double Buffer Endpoint */ - ep->doublebuffer = 1U; - 800329a: 697b ldr r3, [r7, #20] - 800329c: 2201 movs r2, #1 - 800329e: 731a strb r2, [r3, #12] - /* Configure the PMA */ - ep->pmaaddr0 = (uint16_t)(pmaadress & 0xFFFFU); - 80032a0: 687b ldr r3, [r7, #4] - 80032a2: b29a uxth r2, r3 - 80032a4: 697b ldr r3, [r7, #20] - 80032a6: 811a strh r2, [r3, #8] - ep->pmaaddr1 = (uint16_t)((pmaadress & 0xFFFF0000U) >> 16); - 80032a8: 687b ldr r3, [r7, #4] - 80032aa: 0c1b lsrs r3, r3, #16 - 80032ac: b29a uxth r2, r3 - 80032ae: 697b ldr r3, [r7, #20] - 80032b0: 815a strh r2, [r3, #10] - } -#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ - - return HAL_OK; - 80032b2: 2300 movs r3, #0 -} - 80032b4: 4618 mov r0, r3 - 80032b6: 371c adds r7, #28 - 80032b8: 46bd mov sp, r7 - 80032ba: bc80 pop {r7} - 80032bc: 4770 bx lr - ... - -080032c0 : - * supported by this macro. User should request a transition to HSE Off - * first and then HSE On or HSE Bypass. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) -{ - 80032c0: b580 push {r7, lr} - 80032c2: b086 sub sp, #24 - 80032c4: af00 add r7, sp, #0 - 80032c6: 6078 str r0, [r7, #4] - uint32_t tickstart; - uint32_t pll_config; - - /* Check Null pointer */ - if (RCC_OscInitStruct == NULL) - 80032c8: 687b ldr r3, [r7, #4] - 80032ca: 2b00 cmp r3, #0 - 80032cc: d101 bne.n 80032d2 - { - return HAL_ERROR; - 80032ce: 2301 movs r3, #1 - 80032d0: e272 b.n 80037b8 - - /* Check the parameters */ - assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); - - /*------------------------------- HSE Configuration ------------------------*/ - if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) - 80032d2: 687b ldr r3, [r7, #4] - 80032d4: 681b ldr r3, [r3, #0] - 80032d6: f003 0301 and.w r3, r3, #1 - 80032da: 2b00 cmp r3, #0 - 80032dc: f000 8087 beq.w 80033ee - { - /* Check the parameters */ - assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); - - /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ - if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE) - 80032e0: 4b92 ldr r3, [pc, #584] @ (800352c ) - 80032e2: 685b ldr r3, [r3, #4] - 80032e4: f003 030c and.w r3, r3, #12 - 80032e8: 2b04 cmp r3, #4 - 80032ea: d00c beq.n 8003306 - || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSE))) - 80032ec: 4b8f ldr r3, [pc, #572] @ (800352c ) - 80032ee: 685b ldr r3, [r3, #4] - 80032f0: f003 030c and.w r3, r3, #12 - 80032f4: 2b08 cmp r3, #8 - 80032f6: d112 bne.n 800331e - 80032f8: 4b8c ldr r3, [pc, #560] @ (800352c ) - 80032fa: 685b ldr r3, [r3, #4] - 80032fc: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 8003300: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8003304: d10b bne.n 800331e - { - if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8003306: 4b89 ldr r3, [pc, #548] @ (800352c ) - 8003308: 681b ldr r3, [r3, #0] - 800330a: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 800330e: 2b00 cmp r3, #0 - 8003310: d06c beq.n 80033ec - 8003312: 687b ldr r3, [r7, #4] - 8003314: 685b ldr r3, [r3, #4] - 8003316: 2b00 cmp r3, #0 - 8003318: d168 bne.n 80033ec - { - return HAL_ERROR; - 800331a: 2301 movs r3, #1 - 800331c: e24c b.n 80037b8 - } - } - else - { - /* Set the new HSE configuration ---------------------------------------*/ - __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); - 800331e: 687b ldr r3, [r7, #4] - 8003320: 685b ldr r3, [r3, #4] - 8003322: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8003326: d106 bne.n 8003336 - 8003328: 4b80 ldr r3, [pc, #512] @ (800352c ) - 800332a: 681b ldr r3, [r3, #0] - 800332c: 4a7f ldr r2, [pc, #508] @ (800352c ) - 800332e: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 8003332: 6013 str r3, [r2, #0] - 8003334: e02e b.n 8003394 - 8003336: 687b ldr r3, [r7, #4] - 8003338: 685b ldr r3, [r3, #4] - 800333a: 2b00 cmp r3, #0 - 800333c: d10c bne.n 8003358 - 800333e: 4b7b ldr r3, [pc, #492] @ (800352c ) - 8003340: 681b ldr r3, [r3, #0] - 8003342: 4a7a ldr r2, [pc, #488] @ (800352c ) - 8003344: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 8003348: 6013 str r3, [r2, #0] - 800334a: 4b78 ldr r3, [pc, #480] @ (800352c ) - 800334c: 681b ldr r3, [r3, #0] - 800334e: 4a77 ldr r2, [pc, #476] @ (800352c ) - 8003350: f423 2380 bic.w r3, r3, #262144 @ 0x40000 - 8003354: 6013 str r3, [r2, #0] - 8003356: e01d b.n 8003394 - 8003358: 687b ldr r3, [r7, #4] - 800335a: 685b ldr r3, [r3, #4] - 800335c: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 - 8003360: d10c bne.n 800337c - 8003362: 4b72 ldr r3, [pc, #456] @ (800352c ) - 8003364: 681b ldr r3, [r3, #0] - 8003366: 4a71 ldr r2, [pc, #452] @ (800352c ) - 8003368: f443 2380 orr.w r3, r3, #262144 @ 0x40000 - 800336c: 6013 str r3, [r2, #0] - 800336e: 4b6f ldr r3, [pc, #444] @ (800352c ) - 8003370: 681b ldr r3, [r3, #0] - 8003372: 4a6e ldr r2, [pc, #440] @ (800352c ) - 8003374: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 8003378: 6013 str r3, [r2, #0] - 800337a: e00b b.n 8003394 - 800337c: 4b6b ldr r3, [pc, #428] @ (800352c ) - 800337e: 681b ldr r3, [r3, #0] - 8003380: 4a6a ldr r2, [pc, #424] @ (800352c ) - 8003382: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 8003386: 6013 str r3, [r2, #0] - 8003388: 4b68 ldr r3, [pc, #416] @ (800352c ) - 800338a: 681b ldr r3, [r3, #0] - 800338c: 4a67 ldr r2, [pc, #412] @ (800352c ) - 800338e: f423 2380 bic.w r3, r3, #262144 @ 0x40000 - 8003392: 6013 str r3, [r2, #0] - - - /* Check the HSE State */ - if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF) - 8003394: 687b ldr r3, [r7, #4] - 8003396: 685b ldr r3, [r3, #4] - 8003398: 2b00 cmp r3, #0 - 800339a: d013 beq.n 80033c4 - { - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 800339c: f7fd fd4a bl 8000e34 - 80033a0: 6138 str r0, [r7, #16] - - /* Wait till HSE is ready */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 80033a2: e008 b.n 80033b6 - { - if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 80033a4: f7fd fd46 bl 8000e34 - 80033a8: 4602 mov r2, r0 - 80033aa: 693b ldr r3, [r7, #16] - 80033ac: 1ad3 subs r3, r2, r3 - 80033ae: 2b64 cmp r3, #100 @ 0x64 - 80033b0: d901 bls.n 80033b6 - { - return HAL_TIMEOUT; - 80033b2: 2303 movs r3, #3 - 80033b4: e200 b.n 80037b8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 80033b6: 4b5d ldr r3, [pc, #372] @ (800352c ) - 80033b8: 681b ldr r3, [r3, #0] - 80033ba: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 80033be: 2b00 cmp r3, #0 - 80033c0: d0f0 beq.n 80033a4 - 80033c2: e014 b.n 80033ee - } - } - else - { - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 80033c4: f7fd fd36 bl 8000e34 - 80033c8: 6138 str r0, [r7, #16] - - /* Wait till HSE is disabled */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 80033ca: e008 b.n 80033de - { - if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 80033cc: f7fd fd32 bl 8000e34 - 80033d0: 4602 mov r2, r0 - 80033d2: 693b ldr r3, [r7, #16] - 80033d4: 1ad3 subs r3, r2, r3 - 80033d6: 2b64 cmp r3, #100 @ 0x64 - 80033d8: d901 bls.n 80033de - { - return HAL_TIMEOUT; - 80033da: 2303 movs r3, #3 - 80033dc: e1ec b.n 80037b8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 80033de: 4b53 ldr r3, [pc, #332] @ (800352c ) - 80033e0: 681b ldr r3, [r3, #0] - 80033e2: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 80033e6: 2b00 cmp r3, #0 - 80033e8: d1f0 bne.n 80033cc - 80033ea: e000 b.n 80033ee - if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 80033ec: bf00 nop - } - } - } - } - /*----------------------------- HSI Configuration --------------------------*/ - if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) - 80033ee: 687b ldr r3, [r7, #4] - 80033f0: 681b ldr r3, [r3, #0] - 80033f2: f003 0302 and.w r3, r3, #2 - 80033f6: 2b00 cmp r3, #0 - 80033f8: d063 beq.n 80034c2 - /* Check the parameters */ - assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); - assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); - - /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ - if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI) - 80033fa: 4b4c ldr r3, [pc, #304] @ (800352c ) - 80033fc: 685b ldr r3, [r3, #4] - 80033fe: f003 030c and.w r3, r3, #12 - 8003402: 2b00 cmp r3, #0 - 8003404: d00b beq.n 800341e - || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSI_DIV2))) - 8003406: 4b49 ldr r3, [pc, #292] @ (800352c ) - 8003408: 685b ldr r3, [r3, #4] - 800340a: f003 030c and.w r3, r3, #12 - 800340e: 2b08 cmp r3, #8 - 8003410: d11c bne.n 800344c - 8003412: 4b46 ldr r3, [pc, #280] @ (800352c ) - 8003414: 685b ldr r3, [r3, #4] - 8003416: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 800341a: 2b00 cmp r3, #0 - 800341c: d116 bne.n 800344c - { - /* 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)) - 800341e: 4b43 ldr r3, [pc, #268] @ (800352c ) - 8003420: 681b ldr r3, [r3, #0] - 8003422: f003 0302 and.w r3, r3, #2 - 8003426: 2b00 cmp r3, #0 - 8003428: d005 beq.n 8003436 - 800342a: 687b ldr r3, [r7, #4] - 800342c: 691b ldr r3, [r3, #16] - 800342e: 2b01 cmp r3, #1 - 8003430: d001 beq.n 8003436 - { - return HAL_ERROR; - 8003432: 2301 movs r3, #1 - 8003434: e1c0 b.n 80037b8 - } - /* Otherwise, just the calibration is allowed */ - else - { - /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ - __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8003436: 4b3d ldr r3, [pc, #244] @ (800352c ) - 8003438: 681b ldr r3, [r3, #0] - 800343a: f023 02f8 bic.w r2, r3, #248 @ 0xf8 - 800343e: 687b ldr r3, [r7, #4] - 8003440: 695b ldr r3, [r3, #20] - 8003442: 00db lsls r3, r3, #3 - 8003444: 4939 ldr r1, [pc, #228] @ (800352c ) - 8003446: 4313 orrs r3, r2 - 8003448: 600b str r3, [r1, #0] - if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) - 800344a: e03a b.n 80034c2 - } - } - else - { - /* Check the HSI State */ - if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF) - 800344c: 687b ldr r3, [r7, #4] - 800344e: 691b ldr r3, [r3, #16] - 8003450: 2b00 cmp r3, #0 - 8003452: d020 beq.n 8003496 - { - /* Enable the Internal High Speed oscillator (HSI). */ - __HAL_RCC_HSI_ENABLE(); - 8003454: 4b36 ldr r3, [pc, #216] @ (8003530 ) - 8003456: 2201 movs r2, #1 - 8003458: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 800345a: f7fd fceb bl 8000e34 - 800345e: 6138 str r0, [r7, #16] - - /* Wait till HSI is ready */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8003460: e008 b.n 8003474 - { - if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 8003462: f7fd fce7 bl 8000e34 - 8003466: 4602 mov r2, r0 - 8003468: 693b ldr r3, [r7, #16] - 800346a: 1ad3 subs r3, r2, r3 - 800346c: 2b02 cmp r3, #2 - 800346e: d901 bls.n 8003474 - { - return HAL_TIMEOUT; - 8003470: 2303 movs r3, #3 - 8003472: e1a1 b.n 80037b8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8003474: 4b2d ldr r3, [pc, #180] @ (800352c ) - 8003476: 681b ldr r3, [r3, #0] - 8003478: f003 0302 and.w r3, r3, #2 - 800347c: 2b00 cmp r3, #0 - 800347e: d0f0 beq.n 8003462 - } - } - - /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ - __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8003480: 4b2a ldr r3, [pc, #168] @ (800352c ) - 8003482: 681b ldr r3, [r3, #0] - 8003484: f023 02f8 bic.w r2, r3, #248 @ 0xf8 - 8003488: 687b ldr r3, [r7, #4] - 800348a: 695b ldr r3, [r3, #20] - 800348c: 00db lsls r3, r3, #3 - 800348e: 4927 ldr r1, [pc, #156] @ (800352c ) - 8003490: 4313 orrs r3, r2 - 8003492: 600b str r3, [r1, #0] - 8003494: e015 b.n 80034c2 - } - else - { - /* Disable the Internal High Speed oscillator (HSI). */ - __HAL_RCC_HSI_DISABLE(); - 8003496: 4b26 ldr r3, [pc, #152] @ (8003530 ) - 8003498: 2200 movs r2, #0 - 800349a: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 800349c: f7fd fcca bl 8000e34 - 80034a0: 6138 str r0, [r7, #16] - - /* Wait till HSI is disabled */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 80034a2: e008 b.n 80034b6 - { - if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 80034a4: f7fd fcc6 bl 8000e34 - 80034a8: 4602 mov r2, r0 - 80034aa: 693b ldr r3, [r7, #16] - 80034ac: 1ad3 subs r3, r2, r3 - 80034ae: 2b02 cmp r3, #2 - 80034b0: d901 bls.n 80034b6 - { - return HAL_TIMEOUT; - 80034b2: 2303 movs r3, #3 - 80034b4: e180 b.n 80037b8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 80034b6: 4b1d ldr r3, [pc, #116] @ (800352c ) - 80034b8: 681b ldr r3, [r3, #0] - 80034ba: f003 0302 and.w r3, r3, #2 - 80034be: 2b00 cmp r3, #0 - 80034c0: d1f0 bne.n 80034a4 - } - } - } - } - /*------------------------------ LSI Configuration -------------------------*/ - if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) - 80034c2: 687b ldr r3, [r7, #4] - 80034c4: 681b ldr r3, [r3, #0] - 80034c6: f003 0308 and.w r3, r3, #8 - 80034ca: 2b00 cmp r3, #0 - 80034cc: d03a beq.n 8003544 - { - /* Check the parameters */ - assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); - - /* Check the LSI State */ - if (RCC_OscInitStruct->LSIState != RCC_LSI_OFF) - 80034ce: 687b ldr r3, [r7, #4] - 80034d0: 699b ldr r3, [r3, #24] - 80034d2: 2b00 cmp r3, #0 - 80034d4: d019 beq.n 800350a - { - /* Enable the Internal Low Speed oscillator (LSI). */ - __HAL_RCC_LSI_ENABLE(); - 80034d6: 4b17 ldr r3, [pc, #92] @ (8003534 ) - 80034d8: 2201 movs r2, #1 - 80034da: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 80034dc: f7fd fcaa bl 8000e34 - 80034e0: 6138 str r0, [r7, #16] - - /* Wait till LSI is ready */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 80034e2: e008 b.n 80034f6 - { - if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 80034e4: f7fd fca6 bl 8000e34 - 80034e8: 4602 mov r2, r0 - 80034ea: 693b ldr r3, [r7, #16] - 80034ec: 1ad3 subs r3, r2, r3 - 80034ee: 2b02 cmp r3, #2 - 80034f0: d901 bls.n 80034f6 - { - return HAL_TIMEOUT; - 80034f2: 2303 movs r3, #3 - 80034f4: e160 b.n 80037b8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 80034f6: 4b0d ldr r3, [pc, #52] @ (800352c ) - 80034f8: 6a5b ldr r3, [r3, #36] @ 0x24 - 80034fa: f003 0302 and.w r3, r3, #2 - 80034fe: 2b00 cmp r3, #0 - 8003500: d0f0 beq.n 80034e4 - } - } - /* To have a fully stabilized clock in the specified range, a software delay of 1ms - should be added.*/ - RCC_Delay(1); - 8003502: 2001 movs r0, #1 - 8003504: f000 fa9c bl 8003a40 - 8003508: e01c b.n 8003544 - } - else - { - /* Disable the Internal Low Speed oscillator (LSI). */ - __HAL_RCC_LSI_DISABLE(); - 800350a: 4b0a ldr r3, [pc, #40] @ (8003534 ) - 800350c: 2200 movs r2, #0 - 800350e: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8003510: f7fd fc90 bl 8000e34 - 8003514: 6138 str r0, [r7, #16] - - /* Wait till LSI is disabled */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 8003516: e00f b.n 8003538 - { - if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 8003518: f7fd fc8c bl 8000e34 - 800351c: 4602 mov r2, r0 - 800351e: 693b ldr r3, [r7, #16] - 8003520: 1ad3 subs r3, r2, r3 - 8003522: 2b02 cmp r3, #2 - 8003524: d908 bls.n 8003538 - { - return HAL_TIMEOUT; - 8003526: 2303 movs r3, #3 - 8003528: e146 b.n 80037b8 - 800352a: bf00 nop - 800352c: 40021000 .word 0x40021000 - 8003530: 42420000 .word 0x42420000 - 8003534: 42420480 .word 0x42420480 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 8003538: 4b92 ldr r3, [pc, #584] @ (8003784 ) - 800353a: 6a5b ldr r3, [r3, #36] @ 0x24 - 800353c: f003 0302 and.w r3, r3, #2 - 8003540: 2b00 cmp r3, #0 - 8003542: d1e9 bne.n 8003518 - } - } - } - } - /*------------------------------ LSE Configuration -------------------------*/ - if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) - 8003544: 687b ldr r3, [r7, #4] - 8003546: 681b ldr r3, [r3, #0] - 8003548: f003 0304 and.w r3, r3, #4 - 800354c: 2b00 cmp r3, #0 - 800354e: f000 80a6 beq.w 800369e - { - FlagStatus pwrclkchanged = RESET; - 8003552: 2300 movs r3, #0 - 8003554: 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()) - 8003556: 4b8b ldr r3, [pc, #556] @ (8003784 ) - 8003558: 69db ldr r3, [r3, #28] - 800355a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 800355e: 2b00 cmp r3, #0 - 8003560: d10d bne.n 800357e - { - __HAL_RCC_PWR_CLK_ENABLE(); - 8003562: 4b88 ldr r3, [pc, #544] @ (8003784 ) - 8003564: 69db ldr r3, [r3, #28] - 8003566: 4a87 ldr r2, [pc, #540] @ (8003784 ) - 8003568: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 800356c: 61d3 str r3, [r2, #28] - 800356e: 4b85 ldr r3, [pc, #532] @ (8003784 ) - 8003570: 69db ldr r3, [r3, #28] - 8003572: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8003576: 60bb str r3, [r7, #8] - 8003578: 68bb ldr r3, [r7, #8] - pwrclkchanged = SET; - 800357a: 2301 movs r3, #1 - 800357c: 75fb strb r3, [r7, #23] - } - - if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 800357e: 4b82 ldr r3, [pc, #520] @ (8003788 ) - 8003580: 681b ldr r3, [r3, #0] - 8003582: f403 7380 and.w r3, r3, #256 @ 0x100 - 8003586: 2b00 cmp r3, #0 - 8003588: d118 bne.n 80035bc - { - /* Enable write access to Backup domain */ - SET_BIT(PWR->CR, PWR_CR_DBP); - 800358a: 4b7f ldr r3, [pc, #508] @ (8003788 ) - 800358c: 681b ldr r3, [r3, #0] - 800358e: 4a7e ldr r2, [pc, #504] @ (8003788 ) - 8003590: f443 7380 orr.w r3, r3, #256 @ 0x100 - 8003594: 6013 str r3, [r2, #0] - - /* Wait for Backup domain Write protection disable */ - tickstart = HAL_GetTick(); - 8003596: f7fd fc4d bl 8000e34 - 800359a: 6138 str r0, [r7, #16] - - while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 800359c: e008 b.n 80035b0 - { - if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 800359e: f7fd fc49 bl 8000e34 - 80035a2: 4602 mov r2, r0 - 80035a4: 693b ldr r3, [r7, #16] - 80035a6: 1ad3 subs r3, r2, r3 - 80035a8: 2b64 cmp r3, #100 @ 0x64 - 80035aa: d901 bls.n 80035b0 - { - return HAL_TIMEOUT; - 80035ac: 2303 movs r3, #3 - 80035ae: e103 b.n 80037b8 - while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 80035b0: 4b75 ldr r3, [pc, #468] @ (8003788 ) - 80035b2: 681b ldr r3, [r3, #0] - 80035b4: f403 7380 and.w r3, r3, #256 @ 0x100 - 80035b8: 2b00 cmp r3, #0 - 80035ba: d0f0 beq.n 800359e - } - } - } - - /* Set the new LSE configuration -----------------------------------------*/ - __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); - 80035bc: 687b ldr r3, [r7, #4] - 80035be: 68db ldr r3, [r3, #12] - 80035c0: 2b01 cmp r3, #1 - 80035c2: d106 bne.n 80035d2 - 80035c4: 4b6f ldr r3, [pc, #444] @ (8003784 ) - 80035c6: 6a1b ldr r3, [r3, #32] - 80035c8: 4a6e ldr r2, [pc, #440] @ (8003784 ) - 80035ca: f043 0301 orr.w r3, r3, #1 - 80035ce: 6213 str r3, [r2, #32] - 80035d0: e02d b.n 800362e - 80035d2: 687b ldr r3, [r7, #4] - 80035d4: 68db ldr r3, [r3, #12] - 80035d6: 2b00 cmp r3, #0 - 80035d8: d10c bne.n 80035f4 - 80035da: 4b6a ldr r3, [pc, #424] @ (8003784 ) - 80035dc: 6a1b ldr r3, [r3, #32] - 80035de: 4a69 ldr r2, [pc, #420] @ (8003784 ) - 80035e0: f023 0301 bic.w r3, r3, #1 - 80035e4: 6213 str r3, [r2, #32] - 80035e6: 4b67 ldr r3, [pc, #412] @ (8003784 ) - 80035e8: 6a1b ldr r3, [r3, #32] - 80035ea: 4a66 ldr r2, [pc, #408] @ (8003784 ) - 80035ec: f023 0304 bic.w r3, r3, #4 - 80035f0: 6213 str r3, [r2, #32] - 80035f2: e01c b.n 800362e - 80035f4: 687b ldr r3, [r7, #4] - 80035f6: 68db ldr r3, [r3, #12] - 80035f8: 2b05 cmp r3, #5 - 80035fa: d10c bne.n 8003616 - 80035fc: 4b61 ldr r3, [pc, #388] @ (8003784 ) - 80035fe: 6a1b ldr r3, [r3, #32] - 8003600: 4a60 ldr r2, [pc, #384] @ (8003784 ) - 8003602: f043 0304 orr.w r3, r3, #4 - 8003606: 6213 str r3, [r2, #32] - 8003608: 4b5e ldr r3, [pc, #376] @ (8003784 ) - 800360a: 6a1b ldr r3, [r3, #32] - 800360c: 4a5d ldr r2, [pc, #372] @ (8003784 ) - 800360e: f043 0301 orr.w r3, r3, #1 - 8003612: 6213 str r3, [r2, #32] - 8003614: e00b b.n 800362e - 8003616: 4b5b ldr r3, [pc, #364] @ (8003784 ) - 8003618: 6a1b ldr r3, [r3, #32] - 800361a: 4a5a ldr r2, [pc, #360] @ (8003784 ) - 800361c: f023 0301 bic.w r3, r3, #1 - 8003620: 6213 str r3, [r2, #32] - 8003622: 4b58 ldr r3, [pc, #352] @ (8003784 ) - 8003624: 6a1b ldr r3, [r3, #32] - 8003626: 4a57 ldr r2, [pc, #348] @ (8003784 ) - 8003628: f023 0304 bic.w r3, r3, #4 - 800362c: 6213 str r3, [r2, #32] - /* Check the LSE State */ - if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF) - 800362e: 687b ldr r3, [r7, #4] - 8003630: 68db ldr r3, [r3, #12] - 8003632: 2b00 cmp r3, #0 - 8003634: d015 beq.n 8003662 - { - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8003636: f7fd fbfd bl 8000e34 - 800363a: 6138 str r0, [r7, #16] - - /* Wait till LSE is ready */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 800363c: e00a b.n 8003654 - { - if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 800363e: f7fd fbf9 bl 8000e34 - 8003642: 4602 mov r2, r0 - 8003644: 693b ldr r3, [r7, #16] - 8003646: 1ad3 subs r3, r2, r3 - 8003648: f241 3288 movw r2, #5000 @ 0x1388 - 800364c: 4293 cmp r3, r2 - 800364e: d901 bls.n 8003654 - { - return HAL_TIMEOUT; - 8003650: 2303 movs r3, #3 - 8003652: e0b1 b.n 80037b8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 8003654: 4b4b ldr r3, [pc, #300] @ (8003784 ) - 8003656: 6a1b ldr r3, [r3, #32] - 8003658: f003 0302 and.w r3, r3, #2 - 800365c: 2b00 cmp r3, #0 - 800365e: d0ee beq.n 800363e - 8003660: e014 b.n 800368c - } - } - else - { - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8003662: f7fd fbe7 bl 8000e34 - 8003666: 6138 str r0, [r7, #16] - - /* Wait till LSE is disabled */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 8003668: e00a b.n 8003680 - { - if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 800366a: f7fd fbe3 bl 8000e34 - 800366e: 4602 mov r2, r0 - 8003670: 693b ldr r3, [r7, #16] - 8003672: 1ad3 subs r3, r2, r3 - 8003674: f241 3288 movw r2, #5000 @ 0x1388 - 8003678: 4293 cmp r3, r2 - 800367a: d901 bls.n 8003680 - { - return HAL_TIMEOUT; - 800367c: 2303 movs r3, #3 - 800367e: e09b b.n 80037b8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 8003680: 4b40 ldr r3, [pc, #256] @ (8003784 ) - 8003682: 6a1b ldr r3, [r3, #32] - 8003684: f003 0302 and.w r3, r3, #2 - 8003688: 2b00 cmp r3, #0 - 800368a: d1ee bne.n 800366a - } - } - } - - /* Require to disable power clock if necessary */ - if (pwrclkchanged == SET) - 800368c: 7dfb ldrb r3, [r7, #23] - 800368e: 2b01 cmp r3, #1 - 8003690: d105 bne.n 800369e - { - __HAL_RCC_PWR_CLK_DISABLE(); - 8003692: 4b3c ldr r3, [pc, #240] @ (8003784 ) - 8003694: 69db ldr r3, [r3, #28] - 8003696: 4a3b ldr r2, [pc, #236] @ (8003784 ) - 8003698: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 - 800369c: 61d3 str r3, [r2, #28] - -#endif /* RCC_CR_PLL2ON */ - /*-------------------------------- PLL Configuration -----------------------*/ - /* Check the parameters */ - assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); - if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) - 800369e: 687b ldr r3, [r7, #4] - 80036a0: 69db ldr r3, [r3, #28] - 80036a2: 2b00 cmp r3, #0 - 80036a4: f000 8087 beq.w 80037b6 - { - /* Check if the PLL is used as system clock or not */ - if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) - 80036a8: 4b36 ldr r3, [pc, #216] @ (8003784 ) - 80036aa: 685b ldr r3, [r3, #4] - 80036ac: f003 030c and.w r3, r3, #12 - 80036b0: 2b08 cmp r3, #8 - 80036b2: d061 beq.n 8003778 - { - if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) - 80036b4: 687b ldr r3, [r7, #4] - 80036b6: 69db ldr r3, [r3, #28] - 80036b8: 2b02 cmp r3, #2 - 80036ba: d146 bne.n 800374a - /* Check the parameters */ - assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); - assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); - - /* Disable the main PLL. */ - __HAL_RCC_PLL_DISABLE(); - 80036bc: 4b33 ldr r3, [pc, #204] @ (800378c ) - 80036be: 2200 movs r2, #0 - 80036c0: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 80036c2: f7fd fbb7 bl 8000e34 - 80036c6: 6138 str r0, [r7, #16] - - /* Wait till PLL is disabled */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 80036c8: e008 b.n 80036dc - { - if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 80036ca: f7fd fbb3 bl 8000e34 - 80036ce: 4602 mov r2, r0 - 80036d0: 693b ldr r3, [r7, #16] - 80036d2: 1ad3 subs r3, r2, r3 - 80036d4: 2b02 cmp r3, #2 - 80036d6: d901 bls.n 80036dc - { - return HAL_TIMEOUT; - 80036d8: 2303 movs r3, #3 - 80036da: e06d b.n 80037b8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 80036dc: 4b29 ldr r3, [pc, #164] @ (8003784 ) - 80036de: 681b ldr r3, [r3, #0] - 80036e0: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 80036e4: 2b00 cmp r3, #0 - 80036e6: d1f0 bne.n 80036ca - } - } - - /* Configure the HSE prediv factor --------------------------------*/ - /* It can be written only when the PLL is disabled. Not used in PLL source is different than HSE */ - if (RCC_OscInitStruct->PLL.PLLSource == RCC_PLLSOURCE_HSE) - 80036e8: 687b ldr r3, [r7, #4] - 80036ea: 6a1b ldr r3, [r3, #32] - 80036ec: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 80036f0: d108 bne.n 8003704 - /* Set PREDIV1 source */ - SET_BIT(RCC->CFGR2, RCC_OscInitStruct->Prediv1Source); -#endif /* RCC_CFGR2_PREDIV1SRC */ - - /* Set PREDIV1 Value */ - __HAL_RCC_HSE_PREDIV_CONFIG(RCC_OscInitStruct->HSEPredivValue); - 80036f2: 4b24 ldr r3, [pc, #144] @ (8003784 ) - 80036f4: 685b ldr r3, [r3, #4] - 80036f6: f423 3200 bic.w r2, r3, #131072 @ 0x20000 - 80036fa: 687b ldr r3, [r7, #4] - 80036fc: 689b ldr r3, [r3, #8] - 80036fe: 4921 ldr r1, [pc, #132] @ (8003784 ) - 8003700: 4313 orrs r3, r2 - 8003702: 604b str r3, [r1, #4] - } - - /* Configure the main PLL clock source and multiplication factors. */ - __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, - 8003704: 4b1f ldr r3, [pc, #124] @ (8003784 ) - 8003706: 685b ldr r3, [r3, #4] - 8003708: f423 1274 bic.w r2, r3, #3997696 @ 0x3d0000 - 800370c: 687b ldr r3, [r7, #4] - 800370e: 6a19 ldr r1, [r3, #32] - 8003710: 687b ldr r3, [r7, #4] - 8003712: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003714: 430b orrs r3, r1 - 8003716: 491b ldr r1, [pc, #108] @ (8003784 ) - 8003718: 4313 orrs r3, r2 - 800371a: 604b str r3, [r1, #4] - RCC_OscInitStruct->PLL.PLLMUL); - /* Enable the main PLL. */ - __HAL_RCC_PLL_ENABLE(); - 800371c: 4b1b ldr r3, [pc, #108] @ (800378c ) - 800371e: 2201 movs r2, #1 - 8003720: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8003722: f7fd fb87 bl 8000e34 - 8003726: 6138 str r0, [r7, #16] - - /* Wait till PLL is ready */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8003728: e008 b.n 800373c - { - if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 800372a: f7fd fb83 bl 8000e34 - 800372e: 4602 mov r2, r0 - 8003730: 693b ldr r3, [r7, #16] - 8003732: 1ad3 subs r3, r2, r3 - 8003734: 2b02 cmp r3, #2 - 8003736: d901 bls.n 800373c - { - return HAL_TIMEOUT; - 8003738: 2303 movs r3, #3 - 800373a: e03d b.n 80037b8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 800373c: 4b11 ldr r3, [pc, #68] @ (8003784 ) - 800373e: 681b ldr r3, [r3, #0] - 8003740: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 8003744: 2b00 cmp r3, #0 - 8003746: d0f0 beq.n 800372a - 8003748: e035 b.n 80037b6 - } - } - else - { - /* Disable the main PLL. */ - __HAL_RCC_PLL_DISABLE(); - 800374a: 4b10 ldr r3, [pc, #64] @ (800378c ) - 800374c: 2200 movs r2, #0 - 800374e: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8003750: f7fd fb70 bl 8000e34 - 8003754: 6138 str r0, [r7, #16] - - /* Wait till PLL is disabled */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8003756: e008 b.n 800376a - { - if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8003758: f7fd fb6c bl 8000e34 - 800375c: 4602 mov r2, r0 - 800375e: 693b ldr r3, [r7, #16] - 8003760: 1ad3 subs r3, r2, r3 - 8003762: 2b02 cmp r3, #2 - 8003764: d901 bls.n 800376a - { - return HAL_TIMEOUT; - 8003766: 2303 movs r3, #3 - 8003768: e026 b.n 80037b8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 800376a: 4b06 ldr r3, [pc, #24] @ (8003784 ) - 800376c: 681b ldr r3, [r3, #0] - 800376e: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 8003772: 2b00 cmp r3, #0 - 8003774: d1f0 bne.n 8003758 - 8003776: e01e b.n 80037b6 - } - } - else - { - /* Check if there is a request to disable the PLL used as System clock source */ - if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) - 8003778: 687b ldr r3, [r7, #4] - 800377a: 69db ldr r3, [r3, #28] - 800377c: 2b01 cmp r3, #1 - 800377e: d107 bne.n 8003790 - { - return HAL_ERROR; - 8003780: 2301 movs r3, #1 - 8003782: e019 b.n 80037b8 - 8003784: 40021000 .word 0x40021000 - 8003788: 40007000 .word 0x40007000 - 800378c: 42420060 .word 0x42420060 - } - else - { - /* Do not return HAL_ERROR if request repeats the current configuration */ - pll_config = RCC->CFGR; - 8003790: 4b0b ldr r3, [pc, #44] @ (80037c0 ) - 8003792: 685b ldr r3, [r3, #4] - 8003794: 60fb str r3, [r7, #12] - if ((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8003796: 68fb ldr r3, [r7, #12] - 8003798: f403 3280 and.w r2, r3, #65536 @ 0x10000 - 800379c: 687b ldr r3, [r7, #4] - 800379e: 6a1b ldr r3, [r3, #32] - 80037a0: 429a cmp r2, r3 - 80037a2: d106 bne.n 80037b2 - (READ_BIT(pll_config, RCC_CFGR_PLLMULL) != RCC_OscInitStruct->PLL.PLLMUL)) - 80037a4: 68fb ldr r3, [r7, #12] - 80037a6: f403 1270 and.w r2, r3, #3932160 @ 0x3c0000 - 80037aa: 687b ldr r3, [r7, #4] - 80037ac: 6a5b ldr r3, [r3, #36] @ 0x24 - if ((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 80037ae: 429a cmp r2, r3 - 80037b0: d001 beq.n 80037b6 - { - return HAL_ERROR; - 80037b2: 2301 movs r3, #1 - 80037b4: e000 b.n 80037b8 - } - } - } - } - - return HAL_OK; - 80037b6: 2300 movs r3, #0 -} - 80037b8: 4618 mov r0, r3 - 80037ba: 3718 adds r7, #24 - 80037bc: 46bd mov sp, r7 - 80037be: bd80 pop {r7, pc} - 80037c0: 40021000 .word 0x40021000 - -080037c4 : - * You can use @ref HAL_RCC_GetClockConfig() function to know which clock is - * currently used as system clock source. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) -{ - 80037c4: b580 push {r7, lr} - 80037c6: b084 sub sp, #16 - 80037c8: af00 add r7, sp, #0 - 80037ca: 6078 str r0, [r7, #4] - 80037cc: 6039 str r1, [r7, #0] - uint32_t tickstart; - - /* Check Null pointer */ - if (RCC_ClkInitStruct == NULL) - 80037ce: 687b ldr r3, [r7, #4] - 80037d0: 2b00 cmp r3, #0 - 80037d2: d101 bne.n 80037d8 - { - return HAL_ERROR; - 80037d4: 2301 movs r3, #1 - 80037d6: e0d0 b.n 800397a - must be correctly programmed according to the frequency of the CPU clock - (HCLK) of the device. */ - -#if defined(FLASH_ACR_LATENCY) - /* Increasing the number of wait states because of higher CPU frequency */ - if (FLatency > __HAL_FLASH_GET_LATENCY()) - 80037d8: 4b6a ldr r3, [pc, #424] @ (8003984 ) - 80037da: 681b ldr r3, [r3, #0] - 80037dc: f003 0307 and.w r3, r3, #7 - 80037e0: 683a ldr r2, [r7, #0] - 80037e2: 429a cmp r2, r3 - 80037e4: d910 bls.n 8003808 - { - /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ - __HAL_FLASH_SET_LATENCY(FLatency); - 80037e6: 4b67 ldr r3, [pc, #412] @ (8003984 ) - 80037e8: 681b ldr r3, [r3, #0] - 80037ea: f023 0207 bic.w r2, r3, #7 - 80037ee: 4965 ldr r1, [pc, #404] @ (8003984 ) - 80037f0: 683b ldr r3, [r7, #0] - 80037f2: 4313 orrs r3, r2 - 80037f4: 600b str r3, [r1, #0] - - /* Check that the new number of wait states is taken into account to access the Flash - memory by reading the FLASH_ACR register */ - if (__HAL_FLASH_GET_LATENCY() != FLatency) - 80037f6: 4b63 ldr r3, [pc, #396] @ (8003984 ) - 80037f8: 681b ldr r3, [r3, #0] - 80037fa: f003 0307 and.w r3, r3, #7 - 80037fe: 683a ldr r2, [r7, #0] - 8003800: 429a cmp r2, r3 - 8003802: d001 beq.n 8003808 - { - return HAL_ERROR; - 8003804: 2301 movs r3, #1 - 8003806: e0b8 b.n 800397a - } -} - -#endif /* FLASH_ACR_LATENCY */ -/*-------------------------- HCLK Configuration --------------------------*/ -if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) - 8003808: 687b ldr r3, [r7, #4] - 800380a: 681b ldr r3, [r3, #0] - 800380c: f003 0302 and.w r3, r3, #2 - 8003810: 2b00 cmp r3, #0 - 8003812: d020 beq.n 8003856 - { - /* 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) - 8003814: 687b ldr r3, [r7, #4] - 8003816: 681b ldr r3, [r3, #0] - 8003818: f003 0304 and.w r3, r3, #4 - 800381c: 2b00 cmp r3, #0 - 800381e: d005 beq.n 800382c - { - MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16); - 8003820: 4b59 ldr r3, [pc, #356] @ (8003988 ) - 8003822: 685b ldr r3, [r3, #4] - 8003824: 4a58 ldr r2, [pc, #352] @ (8003988 ) - 8003826: f443 63e0 orr.w r3, r3, #1792 @ 0x700 - 800382a: 6053 str r3, [r2, #4] - } - - if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 800382c: 687b ldr r3, [r7, #4] - 800382e: 681b ldr r3, [r3, #0] - 8003830: f003 0308 and.w r3, r3, #8 - 8003834: 2b00 cmp r3, #0 - 8003836: d005 beq.n 8003844 - { - MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3)); - 8003838: 4b53 ldr r3, [pc, #332] @ (8003988 ) - 800383a: 685b ldr r3, [r3, #4] - 800383c: 4a52 ldr r2, [pc, #328] @ (8003988 ) - 800383e: f443 5360 orr.w r3, r3, #14336 @ 0x3800 - 8003842: 6053 str r3, [r2, #4] - } - - /* Set the new HCLK clock divider */ - assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); - MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); - 8003844: 4b50 ldr r3, [pc, #320] @ (8003988 ) - 8003846: 685b ldr r3, [r3, #4] - 8003848: f023 02f0 bic.w r2, r3, #240 @ 0xf0 - 800384c: 687b ldr r3, [r7, #4] - 800384e: 689b ldr r3, [r3, #8] - 8003850: 494d ldr r1, [pc, #308] @ (8003988 ) - 8003852: 4313 orrs r3, r2 - 8003854: 604b str r3, [r1, #4] - } - - /*------------------------- SYSCLK Configuration ---------------------------*/ - if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) - 8003856: 687b ldr r3, [r7, #4] - 8003858: 681b ldr r3, [r3, #0] - 800385a: f003 0301 and.w r3, r3, #1 - 800385e: 2b00 cmp r3, #0 - 8003860: d040 beq.n 80038e4 - { - assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); - - /* HSE is selected as System Clock Source */ - if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) - 8003862: 687b ldr r3, [r7, #4] - 8003864: 685b ldr r3, [r3, #4] - 8003866: 2b01 cmp r3, #1 - 8003868: d107 bne.n 800387a - { - /* Check the HSE ready flag */ - if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 800386a: 4b47 ldr r3, [pc, #284] @ (8003988 ) - 800386c: 681b ldr r3, [r3, #0] - 800386e: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8003872: 2b00 cmp r3, #0 - 8003874: d115 bne.n 80038a2 - { - return HAL_ERROR; - 8003876: 2301 movs r3, #1 - 8003878: e07f b.n 800397a - } - } - /* PLL is selected as System Clock Source */ - else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) - 800387a: 687b ldr r3, [r7, #4] - 800387c: 685b ldr r3, [r3, #4] - 800387e: 2b02 cmp r3, #2 - 8003880: d107 bne.n 8003892 - { - /* Check the PLL ready flag */ - if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8003882: 4b41 ldr r3, [pc, #260] @ (8003988 ) - 8003884: 681b ldr r3, [r3, #0] - 8003886: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 800388a: 2b00 cmp r3, #0 - 800388c: d109 bne.n 80038a2 - { - return HAL_ERROR; - 800388e: 2301 movs r3, #1 - 8003890: e073 b.n 800397a - } - /* HSI is selected as System Clock Source */ - else - { - /* Check the HSI ready flag */ - if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8003892: 4b3d ldr r3, [pc, #244] @ (8003988 ) - 8003894: 681b ldr r3, [r3, #0] - 8003896: f003 0302 and.w r3, r3, #2 - 800389a: 2b00 cmp r3, #0 - 800389c: d101 bne.n 80038a2 - { - return HAL_ERROR; - 800389e: 2301 movs r3, #1 - 80038a0: e06b b.n 800397a - } - } - __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); - 80038a2: 4b39 ldr r3, [pc, #228] @ (8003988 ) - 80038a4: 685b ldr r3, [r3, #4] - 80038a6: f023 0203 bic.w r2, r3, #3 - 80038aa: 687b ldr r3, [r7, #4] - 80038ac: 685b ldr r3, [r3, #4] - 80038ae: 4936 ldr r1, [pc, #216] @ (8003988 ) - 80038b0: 4313 orrs r3, r2 - 80038b2: 604b str r3, [r1, #4] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 80038b4: f7fd fabe bl 8000e34 - 80038b8: 60f8 str r0, [r7, #12] - - while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 80038ba: e00a b.n 80038d2 - { - if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 80038bc: f7fd faba bl 8000e34 - 80038c0: 4602 mov r2, r0 - 80038c2: 68fb ldr r3, [r7, #12] - 80038c4: 1ad3 subs r3, r2, r3 - 80038c6: f241 3288 movw r2, #5000 @ 0x1388 - 80038ca: 4293 cmp r3, r2 - 80038cc: d901 bls.n 80038d2 - { - return HAL_TIMEOUT; - 80038ce: 2303 movs r3, #3 - 80038d0: e053 b.n 800397a - while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 80038d2: 4b2d ldr r3, [pc, #180] @ (8003988 ) - 80038d4: 685b ldr r3, [r3, #4] - 80038d6: f003 020c and.w r2, r3, #12 - 80038da: 687b ldr r3, [r7, #4] - 80038dc: 685b ldr r3, [r3, #4] - 80038de: 009b lsls r3, r3, #2 - 80038e0: 429a cmp r2, r3 - 80038e2: d1eb bne.n 80038bc - } - } - -#if defined(FLASH_ACR_LATENCY) - /* Decreasing the number of wait states because of lower CPU frequency */ - if (FLatency < __HAL_FLASH_GET_LATENCY()) - 80038e4: 4b27 ldr r3, [pc, #156] @ (8003984 ) - 80038e6: 681b ldr r3, [r3, #0] - 80038e8: f003 0307 and.w r3, r3, #7 - 80038ec: 683a ldr r2, [r7, #0] - 80038ee: 429a cmp r2, r3 - 80038f0: d210 bcs.n 8003914 - { - /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ - __HAL_FLASH_SET_LATENCY(FLatency); - 80038f2: 4b24 ldr r3, [pc, #144] @ (8003984 ) - 80038f4: 681b ldr r3, [r3, #0] - 80038f6: f023 0207 bic.w r2, r3, #7 - 80038fa: 4922 ldr r1, [pc, #136] @ (8003984 ) - 80038fc: 683b ldr r3, [r7, #0] - 80038fe: 4313 orrs r3, r2 - 8003900: 600b str r3, [r1, #0] - - /* Check that the new number of wait states is taken into account to access the Flash - memory by reading the FLASH_ACR register */ - if (__HAL_FLASH_GET_LATENCY() != FLatency) - 8003902: 4b20 ldr r3, [pc, #128] @ (8003984 ) - 8003904: 681b ldr r3, [r3, #0] - 8003906: f003 0307 and.w r3, r3, #7 - 800390a: 683a ldr r2, [r7, #0] - 800390c: 429a cmp r2, r3 - 800390e: d001 beq.n 8003914 - { - return HAL_ERROR; - 8003910: 2301 movs r3, #1 - 8003912: e032 b.n 800397a - } -} -#endif /* FLASH_ACR_LATENCY */ - -/*-------------------------- PCLK1 Configuration ---------------------------*/ -if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8003914: 687b ldr r3, [r7, #4] - 8003916: 681b ldr r3, [r3, #0] - 8003918: f003 0304 and.w r3, r3, #4 - 800391c: 2b00 cmp r3, #0 - 800391e: d008 beq.n 8003932 - { - assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); - MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); - 8003920: 4b19 ldr r3, [pc, #100] @ (8003988 ) - 8003922: 685b ldr r3, [r3, #4] - 8003924: f423 62e0 bic.w r2, r3, #1792 @ 0x700 - 8003928: 687b ldr r3, [r7, #4] - 800392a: 68db ldr r3, [r3, #12] - 800392c: 4916 ldr r1, [pc, #88] @ (8003988 ) - 800392e: 4313 orrs r3, r2 - 8003930: 604b str r3, [r1, #4] - } - - /*-------------------------- PCLK2 Configuration ---------------------------*/ - if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 8003932: 687b ldr r3, [r7, #4] - 8003934: 681b ldr r3, [r3, #0] - 8003936: f003 0308 and.w r3, r3, #8 - 800393a: 2b00 cmp r3, #0 - 800393c: d009 beq.n 8003952 - { - assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); - MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3)); - 800393e: 4b12 ldr r3, [pc, #72] @ (8003988 ) - 8003940: 685b ldr r3, [r3, #4] - 8003942: f423 5260 bic.w r2, r3, #14336 @ 0x3800 - 8003946: 687b ldr r3, [r7, #4] - 8003948: 691b ldr r3, [r3, #16] - 800394a: 00db lsls r3, r3, #3 - 800394c: 490e ldr r1, [pc, #56] @ (8003988 ) - 800394e: 4313 orrs r3, r2 - 8003950: 604b str r3, [r1, #4] - } - - /* Update the SystemCoreClock global variable */ - SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]; - 8003952: f000 f821 bl 8003998 - 8003956: 4602 mov r2, r0 - 8003958: 4b0b ldr r3, [pc, #44] @ (8003988 ) - 800395a: 685b ldr r3, [r3, #4] - 800395c: 091b lsrs r3, r3, #4 - 800395e: f003 030f and.w r3, r3, #15 - 8003962: 490a ldr r1, [pc, #40] @ (800398c ) - 8003964: 5ccb ldrb r3, [r1, r3] - 8003966: fa22 f303 lsr.w r3, r2, r3 - 800396a: 4a09 ldr r2, [pc, #36] @ (8003990 ) - 800396c: 6013 str r3, [r2, #0] - - /* Configure the source of time base considering new system clocks settings*/ - HAL_InitTick(uwTickPrio); - 800396e: 4b09 ldr r3, [pc, #36] @ (8003994 ) - 8003970: 681b ldr r3, [r3, #0] - 8003972: 4618 mov r0, r3 - 8003974: f7fd fa1c bl 8000db0 - - return HAL_OK; - 8003978: 2300 movs r3, #0 -} - 800397a: 4618 mov r0, r3 - 800397c: 3710 adds r7, #16 - 800397e: 46bd mov sp, r7 - 8003980: bd80 pop {r7, pc} - 8003982: bf00 nop - 8003984: 40022000 .word 0x40022000 - 8003988: 40021000 .word 0x40021000 - 800398c: 080098cc .word 0x080098cc - 8003990: 20000000 .word 0x20000000 - 8003994: 20000004 .word 0x20000004 - -08003998 : - * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. - * - * @retval SYSCLK frequency - */ -uint32_t HAL_RCC_GetSysClockFreq(void) -{ - 8003998: b480 push {r7} - 800399a: b087 sub sp, #28 - 800399c: af00 add r7, sp, #0 -#else - static const uint8_t aPredivFactorTable[2U] = {1, 2}; -#endif /*RCC_CFGR2_PREDIV1*/ - -#endif - uint32_t tmpreg = 0U, prediv = 0U, pllclk = 0U, pllmul = 0U; - 800399e: 2300 movs r3, #0 - 80039a0: 60fb str r3, [r7, #12] - 80039a2: 2300 movs r3, #0 - 80039a4: 60bb str r3, [r7, #8] - 80039a6: 2300 movs r3, #0 - 80039a8: 617b str r3, [r7, #20] - 80039aa: 2300 movs r3, #0 - 80039ac: 607b str r3, [r7, #4] - uint32_t sysclockfreq = 0U; - 80039ae: 2300 movs r3, #0 - 80039b0: 613b str r3, [r7, #16] -#if defined(RCC_CFGR2_PREDIV1SRC) - uint32_t prediv2 = 0U, pll2mul = 0U; -#endif /*RCC_CFGR2_PREDIV1SRC*/ - - tmpreg = RCC->CFGR; - 80039b2: 4b1e ldr r3, [pc, #120] @ (8003a2c ) - 80039b4: 685b ldr r3, [r3, #4] - 80039b6: 60fb str r3, [r7, #12] - - /* Get SYSCLK source -------------------------------------------------------*/ - switch (tmpreg & RCC_CFGR_SWS) - 80039b8: 68fb ldr r3, [r7, #12] - 80039ba: f003 030c and.w r3, r3, #12 - 80039be: 2b04 cmp r3, #4 - 80039c0: d002 beq.n 80039c8 - 80039c2: 2b08 cmp r3, #8 - 80039c4: d003 beq.n 80039ce - 80039c6: e027 b.n 8003a18 - { - case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ - { - sysclockfreq = HSE_VALUE; - 80039c8: 4b19 ldr r3, [pc, #100] @ (8003a30 ) - 80039ca: 613b str r3, [r7, #16] - break; - 80039cc: e027 b.n 8003a1e - } - case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ - { - pllmul = aPLLMULFactorTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMULL) >> RCC_CFGR_PLLMULL_Pos]; - 80039ce: 68fb ldr r3, [r7, #12] - 80039d0: 0c9b lsrs r3, r3, #18 - 80039d2: f003 030f and.w r3, r3, #15 - 80039d6: 4a17 ldr r2, [pc, #92] @ (8003a34 ) - 80039d8: 5cd3 ldrb r3, [r2, r3] - 80039da: 607b str r3, [r7, #4] - if ((tmpreg & RCC_CFGR_PLLSRC) != RCC_PLLSOURCE_HSI_DIV2) - 80039dc: 68fb ldr r3, [r7, #12] - 80039de: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 80039e2: 2b00 cmp r3, #0 - 80039e4: d010 beq.n 8003a08 - { -#if defined(RCC_CFGR2_PREDIV1) - prediv = aPredivFactorTable[(uint32_t)(RCC->CFGR2 & RCC_CFGR2_PREDIV1) >> RCC_CFGR2_PREDIV1_Pos]; -#else - prediv = aPredivFactorTable[(uint32_t)(RCC->CFGR & RCC_CFGR_PLLXTPRE) >> RCC_CFGR_PLLXTPRE_Pos]; - 80039e6: 4b11 ldr r3, [pc, #68] @ (8003a2c ) - 80039e8: 685b ldr r3, [r3, #4] - 80039ea: 0c5b lsrs r3, r3, #17 - 80039ec: f003 0301 and.w r3, r3, #1 - 80039f0: 4a11 ldr r2, [pc, #68] @ (8003a38 ) - 80039f2: 5cd3 ldrb r3, [r2, r3] - 80039f4: 60bb str r3, [r7, #8] - { - pllclk = pllclk / 2; - } -#else - /* HSE used as PLL clock source : PLLCLK = HSE/PREDIV1 * PLLMUL */ - pllclk = (uint32_t)((HSE_VALUE * pllmul) / prediv); - 80039f6: 687b ldr r3, [r7, #4] - 80039f8: 4a0d ldr r2, [pc, #52] @ (8003a30 ) - 80039fa: fb03 f202 mul.w r2, r3, r2 - 80039fe: 68bb ldr r3, [r7, #8] - 8003a00: fbb2 f3f3 udiv r3, r2, r3 - 8003a04: 617b str r3, [r7, #20] - 8003a06: e004 b.n 8003a12 -#endif /*RCC_CFGR2_PREDIV1SRC*/ - } - else - { - /* HSI used as PLL clock source : PLLCLK = HSI/2 * PLLMUL */ - pllclk = (uint32_t)((HSI_VALUE >> 1) * pllmul); - 8003a08: 687b ldr r3, [r7, #4] - 8003a0a: 4a0c ldr r2, [pc, #48] @ (8003a3c ) - 8003a0c: fb02 f303 mul.w r3, r2, r3 - 8003a10: 617b str r3, [r7, #20] - } - sysclockfreq = pllclk; - 8003a12: 697b ldr r3, [r7, #20] - 8003a14: 613b str r3, [r7, #16] - break; - 8003a16: e002 b.n 8003a1e - } - case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ - default: /* HSI used as system clock */ - { - sysclockfreq = HSI_VALUE; - 8003a18: 4b05 ldr r3, [pc, #20] @ (8003a30 ) - 8003a1a: 613b str r3, [r7, #16] - break; - 8003a1c: bf00 nop - } - } - return sysclockfreq; - 8003a1e: 693b ldr r3, [r7, #16] -} - 8003a20: 4618 mov r0, r3 - 8003a22: 371c adds r7, #28 - 8003a24: 46bd mov sp, r7 - 8003a26: bc80 pop {r7} - 8003a28: 4770 bx lr - 8003a2a: bf00 nop - 8003a2c: 40021000 .word 0x40021000 - 8003a30: 007a1200 .word 0x007a1200 - 8003a34: 080098dc .word 0x080098dc - 8003a38: 080098ec .word 0x080098ec - 8003a3c: 003d0900 .word 0x003d0900 - -08003a40 : - * @brief This function provides delay (in milliseconds) based on CPU cycles method. - * @param mdelay: specifies the delay time length, in milliseconds. - * @retval None - */ -static void RCC_Delay(uint32_t mdelay) -{ - 8003a40: b480 push {r7} - 8003a42: b085 sub sp, #20 - 8003a44: af00 add r7, sp, #0 - 8003a46: 6078 str r0, [r7, #4] - __IO uint32_t Delay = mdelay * (SystemCoreClock / 8U / 1000U); - 8003a48: 4b0a ldr r3, [pc, #40] @ (8003a74 ) - 8003a4a: 681b ldr r3, [r3, #0] - 8003a4c: 4a0a ldr r2, [pc, #40] @ (8003a78 ) - 8003a4e: fba2 2303 umull r2, r3, r2, r3 - 8003a52: 0a5b lsrs r3, r3, #9 - 8003a54: 687a ldr r2, [r7, #4] - 8003a56: fb02 f303 mul.w r3, r2, r3 - 8003a5a: 60fb str r3, [r7, #12] - do - { - __NOP(); - 8003a5c: bf00 nop - } - while (Delay --); - 8003a5e: 68fb ldr r3, [r7, #12] - 8003a60: 1e5a subs r2, r3, #1 - 8003a62: 60fa str r2, [r7, #12] - 8003a64: 2b00 cmp r3, #0 - 8003a66: d1f9 bne.n 8003a5c -} - 8003a68: bf00 nop - 8003a6a: bf00 nop - 8003a6c: 3714 adds r7, #20 - 8003a6e: 46bd mov sp, r7 - 8003a70: bc80 pop {r7} - 8003a72: 4770 bx lr - 8003a74: 20000000 .word 0x20000000 - 8003a78: 10624dd3 .word 0x10624dd3 - -08003a7c : - * manually disable it. - * - * @retval HAL status - */ -HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) -{ - 8003a7c: b580 push {r7, lr} - 8003a7e: b086 sub sp, #24 - 8003a80: af00 add r7, sp, #0 - 8003a82: 6078 str r0, [r7, #4] - uint32_t tickstart = 0U, temp_reg = 0U; - 8003a84: 2300 movs r3, #0 - 8003a86: 613b str r3, [r7, #16] - 8003a88: 2300 movs r3, #0 - 8003a8a: 60fb str r3, [r7, #12] - - /* Check the parameters */ - assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); - - /*------------------------------- RTC/LCD Configuration ------------------------*/ - if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) - 8003a8c: 687b ldr r3, [r7, #4] - 8003a8e: 681b ldr r3, [r3, #0] - 8003a90: f003 0301 and.w r3, r3, #1 - 8003a94: 2b00 cmp r3, #0 - 8003a96: d07d beq.n 8003b94 - { - FlagStatus pwrclkchanged = RESET; - 8003a98: 2300 movs r3, #0 - 8003a9a: 75fb strb r3, [r7, #23] - assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); - - /* As soon as function is called to change RTC clock source, activation of the - power domain is done. */ - /* Requires to enable write access to Backup Domain of necessary */ - if (__HAL_RCC_PWR_IS_CLK_DISABLED()) - 8003a9c: 4b4f ldr r3, [pc, #316] @ (8003bdc ) - 8003a9e: 69db ldr r3, [r3, #28] - 8003aa0: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8003aa4: 2b00 cmp r3, #0 - 8003aa6: d10d bne.n 8003ac4 - { - __HAL_RCC_PWR_CLK_ENABLE(); - 8003aa8: 4b4c ldr r3, [pc, #304] @ (8003bdc ) - 8003aaa: 69db ldr r3, [r3, #28] - 8003aac: 4a4b ldr r2, [pc, #300] @ (8003bdc ) - 8003aae: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 8003ab2: 61d3 str r3, [r2, #28] - 8003ab4: 4b49 ldr r3, [pc, #292] @ (8003bdc ) - 8003ab6: 69db ldr r3, [r3, #28] - 8003ab8: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8003abc: 60bb str r3, [r7, #8] - 8003abe: 68bb ldr r3, [r7, #8] - pwrclkchanged = SET; - 8003ac0: 2301 movs r3, #1 - 8003ac2: 75fb strb r3, [r7, #23] - } - - if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8003ac4: 4b46 ldr r3, [pc, #280] @ (8003be0 ) - 8003ac6: 681b ldr r3, [r3, #0] - 8003ac8: f403 7380 and.w r3, r3, #256 @ 0x100 - 8003acc: 2b00 cmp r3, #0 - 8003ace: d118 bne.n 8003b02 - { - /* Enable write access to Backup domain */ - SET_BIT(PWR->CR, PWR_CR_DBP); - 8003ad0: 4b43 ldr r3, [pc, #268] @ (8003be0 ) - 8003ad2: 681b ldr r3, [r3, #0] - 8003ad4: 4a42 ldr r2, [pc, #264] @ (8003be0 ) - 8003ad6: f443 7380 orr.w r3, r3, #256 @ 0x100 - 8003ada: 6013 str r3, [r2, #0] - - /* Wait for Backup domain Write protection disable */ - tickstart = HAL_GetTick(); - 8003adc: f7fd f9aa bl 8000e34 - 8003ae0: 6138 str r0, [r7, #16] - - while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8003ae2: e008 b.n 8003af6 - { - if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 8003ae4: f7fd f9a6 bl 8000e34 - 8003ae8: 4602 mov r2, r0 - 8003aea: 693b ldr r3, [r7, #16] - 8003aec: 1ad3 subs r3, r2, r3 - 8003aee: 2b64 cmp r3, #100 @ 0x64 - 8003af0: d901 bls.n 8003af6 - { - return HAL_TIMEOUT; - 8003af2: 2303 movs r3, #3 - 8003af4: e06d b.n 8003bd2 - while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8003af6: 4b3a ldr r3, [pc, #232] @ (8003be0 ) - 8003af8: 681b ldr r3, [r3, #0] - 8003afa: f403 7380 and.w r3, r3, #256 @ 0x100 - 8003afe: 2b00 cmp r3, #0 - 8003b00: d0f0 beq.n 8003ae4 - } - } - } - - /* Reset the Backup domain only if the RTC Clock source selection is modified from reset value */ - temp_reg = (RCC->BDCR & RCC_BDCR_RTCSEL); - 8003b02: 4b36 ldr r3, [pc, #216] @ (8003bdc ) - 8003b04: 6a1b ldr r3, [r3, #32] - 8003b06: f403 7340 and.w r3, r3, #768 @ 0x300 - 8003b0a: 60fb str r3, [r7, #12] - if ((temp_reg != 0x00000000U) && (temp_reg != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL))) - 8003b0c: 68fb ldr r3, [r7, #12] - 8003b0e: 2b00 cmp r3, #0 - 8003b10: d02e beq.n 8003b70 - 8003b12: 687b ldr r3, [r7, #4] - 8003b14: 685b ldr r3, [r3, #4] - 8003b16: f403 7340 and.w r3, r3, #768 @ 0x300 - 8003b1a: 68fa ldr r2, [r7, #12] - 8003b1c: 429a cmp r2, r3 - 8003b1e: d027 beq.n 8003b70 - { - /* Store the content of BDCR register before the reset of Backup Domain */ - temp_reg = (RCC->BDCR & ~(RCC_BDCR_RTCSEL)); - 8003b20: 4b2e ldr r3, [pc, #184] @ (8003bdc ) - 8003b22: 6a1b ldr r3, [r3, #32] - 8003b24: f423 7340 bic.w r3, r3, #768 @ 0x300 - 8003b28: 60fb str r3, [r7, #12] - /* RTC Clock selection can be changed only if the Backup Domain is reset */ - __HAL_RCC_BACKUPRESET_FORCE(); - 8003b2a: 4b2e ldr r3, [pc, #184] @ (8003be4 ) - 8003b2c: 2201 movs r2, #1 - 8003b2e: 601a str r2, [r3, #0] - __HAL_RCC_BACKUPRESET_RELEASE(); - 8003b30: 4b2c ldr r3, [pc, #176] @ (8003be4 ) - 8003b32: 2200 movs r2, #0 - 8003b34: 601a str r2, [r3, #0] - /* Restore the Content of BDCR register */ - RCC->BDCR = temp_reg; - 8003b36: 4a29 ldr r2, [pc, #164] @ (8003bdc ) - 8003b38: 68fb ldr r3, [r7, #12] - 8003b3a: 6213 str r3, [r2, #32] - - /* Wait for LSERDY if LSE was enabled */ - if (HAL_IS_BIT_SET(temp_reg, RCC_BDCR_LSEON)) - 8003b3c: 68fb ldr r3, [r7, #12] - 8003b3e: f003 0301 and.w r3, r3, #1 - 8003b42: 2b00 cmp r3, #0 - 8003b44: d014 beq.n 8003b70 - { - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8003b46: f7fd f975 bl 8000e34 - 8003b4a: 6138 str r0, [r7, #16] - - /* Wait till LSE is ready */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 8003b4c: e00a b.n 8003b64 - { - if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8003b4e: f7fd f971 bl 8000e34 - 8003b52: 4602 mov r2, r0 - 8003b54: 693b ldr r3, [r7, #16] - 8003b56: 1ad3 subs r3, r2, r3 - 8003b58: f241 3288 movw r2, #5000 @ 0x1388 - 8003b5c: 4293 cmp r3, r2 - 8003b5e: d901 bls.n 8003b64 - { - return HAL_TIMEOUT; - 8003b60: 2303 movs r3, #3 - 8003b62: e036 b.n 8003bd2 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 8003b64: 4b1d ldr r3, [pc, #116] @ (8003bdc ) - 8003b66: 6a1b ldr r3, [r3, #32] - 8003b68: f003 0302 and.w r3, r3, #2 - 8003b6c: 2b00 cmp r3, #0 - 8003b6e: d0ee beq.n 8003b4e - } - } - } - } - __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); - 8003b70: 4b1a ldr r3, [pc, #104] @ (8003bdc ) - 8003b72: 6a1b ldr r3, [r3, #32] - 8003b74: f423 7240 bic.w r2, r3, #768 @ 0x300 - 8003b78: 687b ldr r3, [r7, #4] - 8003b7a: 685b ldr r3, [r3, #4] - 8003b7c: 4917 ldr r1, [pc, #92] @ (8003bdc ) - 8003b7e: 4313 orrs r3, r2 - 8003b80: 620b str r3, [r1, #32] - - /* Require to disable power clock if necessary */ - if (pwrclkchanged == SET) - 8003b82: 7dfb ldrb r3, [r7, #23] - 8003b84: 2b01 cmp r3, #1 - 8003b86: d105 bne.n 8003b94 - { - __HAL_RCC_PWR_CLK_DISABLE(); - 8003b88: 4b14 ldr r3, [pc, #80] @ (8003bdc ) - 8003b8a: 69db ldr r3, [r3, #28] - 8003b8c: 4a13 ldr r2, [pc, #76] @ (8003bdc ) - 8003b8e: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 - 8003b92: 61d3 str r3, [r2, #28] - } - } - - /*------------------------------ ADC clock Configuration ------------------*/ - if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) - 8003b94: 687b ldr r3, [r7, #4] - 8003b96: 681b ldr r3, [r3, #0] - 8003b98: f003 0302 and.w r3, r3, #2 - 8003b9c: 2b00 cmp r3, #0 - 8003b9e: d008 beq.n 8003bb2 - { - /* Check the parameters */ - assert_param(IS_RCC_ADCPLLCLK_DIV(PeriphClkInit->AdcClockSelection)); - - /* Configure the ADC clock source */ - __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection); - 8003ba0: 4b0e ldr r3, [pc, #56] @ (8003bdc ) - 8003ba2: 685b ldr r3, [r3, #4] - 8003ba4: f423 4240 bic.w r2, r3, #49152 @ 0xc000 - 8003ba8: 687b ldr r3, [r7, #4] - 8003baa: 689b ldr r3, [r3, #8] - 8003bac: 490b ldr r1, [pc, #44] @ (8003bdc ) - 8003bae: 4313 orrs r3, r2 - 8003bb0: 604b str r3, [r1, #4] - -#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\ - || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\ - || defined(STM32F105xC) || defined(STM32F107xC) - /*------------------------------ USB clock Configuration ------------------*/ - if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USB) == RCC_PERIPHCLK_USB) - 8003bb2: 687b ldr r3, [r7, #4] - 8003bb4: 681b ldr r3, [r3, #0] - 8003bb6: f003 0310 and.w r3, r3, #16 - 8003bba: 2b00 cmp r3, #0 - 8003bbc: d008 beq.n 8003bd0 - { - /* Check the parameters */ - assert_param(IS_RCC_USBPLLCLK_DIV(PeriphClkInit->UsbClockSelection)); - - /* Configure the USB clock source */ - __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection); - 8003bbe: 4b07 ldr r3, [pc, #28] @ (8003bdc ) - 8003bc0: 685b ldr r3, [r3, #4] - 8003bc2: f423 0280 bic.w r2, r3, #4194304 @ 0x400000 - 8003bc6: 687b ldr r3, [r7, #4] - 8003bc8: 68db ldr r3, [r3, #12] - 8003bca: 4904 ldr r1, [pc, #16] @ (8003bdc ) - 8003bcc: 4313 orrs r3, r2 - 8003bce: 604b str r3, [r1, #4] - } -#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */ - - return HAL_OK; - 8003bd0: 2300 movs r3, #0 -} - 8003bd2: 4618 mov r0, r3 - 8003bd4: 3718 adds r7, #24 - 8003bd6: 46bd mov sp, r7 - 8003bd8: bd80 pop {r7, pc} - 8003bda: bf00 nop - 8003bdc: 40021000 .word 0x40021000 - 8003be0: 40007000 .word 0x40007000 - 8003be4: 42420440 .word 0x42420440 - -08003be8 : - * 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) -{ - 8003be8: b580 push {r7, lr} - 8003bea: b082 sub sp, #8 - 8003bec: af00 add r7, sp, #0 - 8003bee: 6078 str r0, [r7, #4] - /* Check the TIM handle allocation */ - if (htim == NULL) - 8003bf0: 687b ldr r3, [r7, #4] - 8003bf2: 2b00 cmp r3, #0 - 8003bf4: d101 bne.n 8003bfa - { - return HAL_ERROR; - 8003bf6: 2301 movs r3, #1 - 8003bf8: e041 b.n 8003c7e - assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); - assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); - assert_param(IS_TIM_PERIOD(htim->Init.Period)); - assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); - - if (htim->State == HAL_TIM_STATE_RESET) - 8003bfa: 687b ldr r3, [r7, #4] - 8003bfc: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 8003c00: b2db uxtb r3, r3 - 8003c02: 2b00 cmp r3, #0 - 8003c04: d106 bne.n 8003c14 - { - /* Allocate lock resource and initialize it */ - htim->Lock = HAL_UNLOCKED; - 8003c06: 687b ldr r3, [r7, #4] - 8003c08: 2200 movs r2, #0 - 8003c0a: 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); - 8003c0e: 6878 ldr r0, [r7, #4] - 8003c10: f7fc ff1a bl 8000a48 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - - /* Set the TIM state */ - htim->State = HAL_TIM_STATE_BUSY; - 8003c14: 687b ldr r3, [r7, #4] - 8003c16: 2202 movs r2, #2 - 8003c18: f883 203d strb.w r2, [r3, #61] @ 0x3d - - /* Set the Time Base configuration */ - TIM_Base_SetConfig(htim->Instance, &htim->Init); - 8003c1c: 687b ldr r3, [r7, #4] - 8003c1e: 681a ldr r2, [r3, #0] - 8003c20: 687b ldr r3, [r7, #4] - 8003c22: 3304 adds r3, #4 - 8003c24: 4619 mov r1, r3 - 8003c26: 4610 mov r0, r2 - 8003c28: f000 fa10 bl 800404c - - /* Initialize the DMA burst operation state */ - htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 8003c2c: 687b ldr r3, [r7, #4] - 8003c2e: 2201 movs r2, #1 - 8003c30: f883 2046 strb.w r2, [r3, #70] @ 0x46 - - /* Initialize the TIM channels state */ - TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8003c34: 687b ldr r3, [r7, #4] - 8003c36: 2201 movs r2, #1 - 8003c38: f883 203e strb.w r2, [r3, #62] @ 0x3e - 8003c3c: 687b ldr r3, [r7, #4] - 8003c3e: 2201 movs r2, #1 - 8003c40: f883 203f strb.w r2, [r3, #63] @ 0x3f - 8003c44: 687b ldr r3, [r7, #4] - 8003c46: 2201 movs r2, #1 - 8003c48: f883 2040 strb.w r2, [r3, #64] @ 0x40 - 8003c4c: 687b ldr r3, [r7, #4] - 8003c4e: 2201 movs r2, #1 - 8003c50: f883 2041 strb.w r2, [r3, #65] @ 0x41 - TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8003c54: 687b ldr r3, [r7, #4] - 8003c56: 2201 movs r2, #1 - 8003c58: f883 2042 strb.w r2, [r3, #66] @ 0x42 - 8003c5c: 687b ldr r3, [r7, #4] - 8003c5e: 2201 movs r2, #1 - 8003c60: f883 2043 strb.w r2, [r3, #67] @ 0x43 - 8003c64: 687b ldr r3, [r7, #4] - 8003c66: 2201 movs r2, #1 - 8003c68: f883 2044 strb.w r2, [r3, #68] @ 0x44 - 8003c6c: 687b ldr r3, [r7, #4] - 8003c6e: 2201 movs r2, #1 - 8003c70: f883 2045 strb.w r2, [r3, #69] @ 0x45 - - /* Initialize the TIM state*/ - htim->State = HAL_TIM_STATE_READY; - 8003c74: 687b ldr r3, [r7, #4] - 8003c76: 2201 movs r2, #1 - 8003c78: f883 203d strb.w r2, [r3, #61] @ 0x3d - - return HAL_OK; - 8003c7c: 2300 movs r3, #0 -} - 8003c7e: 4618 mov r0, r3 - 8003c80: 3708 adds r7, #8 - 8003c82: 46bd mov sp, r7 - 8003c84: bd80 pop {r7, pc} - -08003c86 : - * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init() - * @param htim TIM PWM handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim) -{ - 8003c86: b580 push {r7, lr} - 8003c88: b082 sub sp, #8 - 8003c8a: af00 add r7, sp, #0 - 8003c8c: 6078 str r0, [r7, #4] - /* Check the TIM handle allocation */ - if (htim == NULL) - 8003c8e: 687b ldr r3, [r7, #4] - 8003c90: 2b00 cmp r3, #0 - 8003c92: d101 bne.n 8003c98 - { - return HAL_ERROR; - 8003c94: 2301 movs r3, #1 - 8003c96: e041 b.n 8003d1c - assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); - assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); - assert_param(IS_TIM_PERIOD(htim->Init.Period)); - assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); - - if (htim->State == HAL_TIM_STATE_RESET) - 8003c98: 687b ldr r3, [r7, #4] - 8003c9a: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 8003c9e: b2db uxtb r3, r3 - 8003ca0: 2b00 cmp r3, #0 - 8003ca2: d106 bne.n 8003cb2 - { - /* Allocate lock resource and initialize it */ - htim->Lock = HAL_UNLOCKED; - 8003ca4: 687b ldr r3, [r7, #4] - 8003ca6: 2200 movs r2, #0 - 8003ca8: f883 203c strb.w r2, [r3, #60] @ 0x3c - } - /* Init the low level hardware : GPIO, CLOCK, NVIC */ - htim->PWM_MspInitCallback(htim); -#else - /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ - HAL_TIM_PWM_MspInit(htim); - 8003cac: 6878 ldr r0, [r7, #4] - 8003cae: f000 f839 bl 8003d24 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - - /* Set the TIM state */ - htim->State = HAL_TIM_STATE_BUSY; - 8003cb2: 687b ldr r3, [r7, #4] - 8003cb4: 2202 movs r2, #2 - 8003cb6: f883 203d strb.w r2, [r3, #61] @ 0x3d - - /* Init the base time for the PWM */ - TIM_Base_SetConfig(htim->Instance, &htim->Init); - 8003cba: 687b ldr r3, [r7, #4] - 8003cbc: 681a ldr r2, [r3, #0] - 8003cbe: 687b ldr r3, [r7, #4] - 8003cc0: 3304 adds r3, #4 - 8003cc2: 4619 mov r1, r3 - 8003cc4: 4610 mov r0, r2 - 8003cc6: f000 f9c1 bl 800404c - - /* Initialize the DMA burst operation state */ - htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 8003cca: 687b ldr r3, [r7, #4] - 8003ccc: 2201 movs r2, #1 - 8003cce: f883 2046 strb.w r2, [r3, #70] @ 0x46 - - /* Initialize the TIM channels state */ - TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8003cd2: 687b ldr r3, [r7, #4] - 8003cd4: 2201 movs r2, #1 - 8003cd6: f883 203e strb.w r2, [r3, #62] @ 0x3e - 8003cda: 687b ldr r3, [r7, #4] - 8003cdc: 2201 movs r2, #1 - 8003cde: f883 203f strb.w r2, [r3, #63] @ 0x3f - 8003ce2: 687b ldr r3, [r7, #4] - 8003ce4: 2201 movs r2, #1 - 8003ce6: f883 2040 strb.w r2, [r3, #64] @ 0x40 - 8003cea: 687b ldr r3, [r7, #4] - 8003cec: 2201 movs r2, #1 - 8003cee: f883 2041 strb.w r2, [r3, #65] @ 0x41 - TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8003cf2: 687b ldr r3, [r7, #4] - 8003cf4: 2201 movs r2, #1 - 8003cf6: f883 2042 strb.w r2, [r3, #66] @ 0x42 - 8003cfa: 687b ldr r3, [r7, #4] - 8003cfc: 2201 movs r2, #1 - 8003cfe: f883 2043 strb.w r2, [r3, #67] @ 0x43 - 8003d02: 687b ldr r3, [r7, #4] - 8003d04: 2201 movs r2, #1 - 8003d06: f883 2044 strb.w r2, [r3, #68] @ 0x44 - 8003d0a: 687b ldr r3, [r7, #4] - 8003d0c: 2201 movs r2, #1 - 8003d0e: f883 2045 strb.w r2, [r3, #69] @ 0x45 - - /* Initialize the TIM state*/ - htim->State = HAL_TIM_STATE_READY; - 8003d12: 687b ldr r3, [r7, #4] - 8003d14: 2201 movs r2, #1 - 8003d16: f883 203d strb.w r2, [r3, #61] @ 0x3d - - return HAL_OK; - 8003d1a: 2300 movs r3, #0 -} - 8003d1c: 4618 mov r0, r3 - 8003d1e: 3708 adds r7, #8 - 8003d20: 46bd mov sp, r7 - 8003d22: bd80 pop {r7, pc} - -08003d24 : - * @brief Initializes the TIM PWM MSP. - * @param htim TIM PWM handle - * @retval None - */ -__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) -{ - 8003d24: b480 push {r7} - 8003d26: b083 sub sp, #12 - 8003d28: af00 add r7, sp, #0 - 8003d2a: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIM_PWM_MspInit could be implemented in the user file - */ -} - 8003d2c: bf00 nop - 8003d2e: 370c adds r7, #12 - 8003d30: 46bd mov sp, r7 - 8003d32: bc80 pop {r7} - 8003d34: 4770 bx lr - ... - -08003d38 : - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, - const TIM_OC_InitTypeDef *sConfig, - uint32_t Channel) -{ - 8003d38: b580 push {r7, lr} - 8003d3a: b086 sub sp, #24 - 8003d3c: af00 add r7, sp, #0 - 8003d3e: 60f8 str r0, [r7, #12] - 8003d40: 60b9 str r1, [r7, #8] - 8003d42: 607a str r2, [r7, #4] - HAL_StatusTypeDef status = HAL_OK; - 8003d44: 2300 movs r3, #0 - 8003d46: 75fb strb r3, [r7, #23] - assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); - assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); - assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); - - /* Process Locked */ - __HAL_LOCK(htim); - 8003d48: 68fb ldr r3, [r7, #12] - 8003d4a: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8003d4e: 2b01 cmp r3, #1 - 8003d50: d101 bne.n 8003d56 - 8003d52: 2302 movs r3, #2 - 8003d54: e0ae b.n 8003eb4 - 8003d56: 68fb ldr r3, [r7, #12] - 8003d58: 2201 movs r2, #1 - 8003d5a: f883 203c strb.w r2, [r3, #60] @ 0x3c - - switch (Channel) - 8003d5e: 687b ldr r3, [r7, #4] - 8003d60: 2b0c cmp r3, #12 - 8003d62: f200 809f bhi.w 8003ea4 - 8003d66: a201 add r2, pc, #4 @ (adr r2, 8003d6c ) - 8003d68: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8003d6c: 08003da1 .word 0x08003da1 - 8003d70: 08003ea5 .word 0x08003ea5 - 8003d74: 08003ea5 .word 0x08003ea5 - 8003d78: 08003ea5 .word 0x08003ea5 - 8003d7c: 08003de1 .word 0x08003de1 - 8003d80: 08003ea5 .word 0x08003ea5 - 8003d84: 08003ea5 .word 0x08003ea5 - 8003d88: 08003ea5 .word 0x08003ea5 - 8003d8c: 08003e23 .word 0x08003e23 - 8003d90: 08003ea5 .word 0x08003ea5 - 8003d94: 08003ea5 .word 0x08003ea5 - 8003d98: 08003ea5 .word 0x08003ea5 - 8003d9c: 08003e63 .word 0x08003e63 - { - /* Check the parameters */ - assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); - - /* Configure the Channel 1 in PWM mode */ - TIM_OC1_SetConfig(htim->Instance, sConfig); - 8003da0: 68fb ldr r3, [r7, #12] - 8003da2: 681b ldr r3, [r3, #0] - 8003da4: 68b9 ldr r1, [r7, #8] - 8003da6: 4618 mov r0, r3 - 8003da8: f000 f9be bl 8004128 - - /* Set the Preload enable bit for channel1 */ - htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; - 8003dac: 68fb ldr r3, [r7, #12] - 8003dae: 681b ldr r3, [r3, #0] - 8003db0: 699a ldr r2, [r3, #24] - 8003db2: 68fb ldr r3, [r7, #12] - 8003db4: 681b ldr r3, [r3, #0] - 8003db6: f042 0208 orr.w r2, r2, #8 - 8003dba: 619a str r2, [r3, #24] - - /* Configure the Output Fast mode */ - htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; - 8003dbc: 68fb ldr r3, [r7, #12] - 8003dbe: 681b ldr r3, [r3, #0] - 8003dc0: 699a ldr r2, [r3, #24] - 8003dc2: 68fb ldr r3, [r7, #12] - 8003dc4: 681b ldr r3, [r3, #0] - 8003dc6: f022 0204 bic.w r2, r2, #4 - 8003dca: 619a str r2, [r3, #24] - htim->Instance->CCMR1 |= sConfig->OCFastMode; - 8003dcc: 68fb ldr r3, [r7, #12] - 8003dce: 681b ldr r3, [r3, #0] - 8003dd0: 6999 ldr r1, [r3, #24] - 8003dd2: 68bb ldr r3, [r7, #8] - 8003dd4: 691a ldr r2, [r3, #16] - 8003dd6: 68fb ldr r3, [r7, #12] - 8003dd8: 681b ldr r3, [r3, #0] - 8003dda: 430a orrs r2, r1 - 8003ddc: 619a str r2, [r3, #24] - break; - 8003dde: e064 b.n 8003eaa - { - /* Check the parameters */ - assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); - - /* Configure the Channel 2 in PWM mode */ - TIM_OC2_SetConfig(htim->Instance, sConfig); - 8003de0: 68fb ldr r3, [r7, #12] - 8003de2: 681b ldr r3, [r3, #0] - 8003de4: 68b9 ldr r1, [r7, #8] - 8003de6: 4618 mov r0, r3 - 8003de8: f000 fa04 bl 80041f4 - - /* Set the Preload enable bit for channel2 */ - htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; - 8003dec: 68fb ldr r3, [r7, #12] - 8003dee: 681b ldr r3, [r3, #0] - 8003df0: 699a ldr r2, [r3, #24] - 8003df2: 68fb ldr r3, [r7, #12] - 8003df4: 681b ldr r3, [r3, #0] - 8003df6: f442 6200 orr.w r2, r2, #2048 @ 0x800 - 8003dfa: 619a str r2, [r3, #24] - - /* Configure the Output Fast mode */ - htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; - 8003dfc: 68fb ldr r3, [r7, #12] - 8003dfe: 681b ldr r3, [r3, #0] - 8003e00: 699a ldr r2, [r3, #24] - 8003e02: 68fb ldr r3, [r7, #12] - 8003e04: 681b ldr r3, [r3, #0] - 8003e06: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 8003e0a: 619a str r2, [r3, #24] - htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; - 8003e0c: 68fb ldr r3, [r7, #12] - 8003e0e: 681b ldr r3, [r3, #0] - 8003e10: 6999 ldr r1, [r3, #24] - 8003e12: 68bb ldr r3, [r7, #8] - 8003e14: 691b ldr r3, [r3, #16] - 8003e16: 021a lsls r2, r3, #8 - 8003e18: 68fb ldr r3, [r7, #12] - 8003e1a: 681b ldr r3, [r3, #0] - 8003e1c: 430a orrs r2, r1 - 8003e1e: 619a str r2, [r3, #24] - break; - 8003e20: e043 b.n 8003eaa - { - /* Check the parameters */ - assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); - - /* Configure the Channel 3 in PWM mode */ - TIM_OC3_SetConfig(htim->Instance, sConfig); - 8003e22: 68fb ldr r3, [r7, #12] - 8003e24: 681b ldr r3, [r3, #0] - 8003e26: 68b9 ldr r1, [r7, #8] - 8003e28: 4618 mov r0, r3 - 8003e2a: f000 fa4d bl 80042c8 - - /* Set the Preload enable bit for channel3 */ - htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; - 8003e2e: 68fb ldr r3, [r7, #12] - 8003e30: 681b ldr r3, [r3, #0] - 8003e32: 69da ldr r2, [r3, #28] - 8003e34: 68fb ldr r3, [r7, #12] - 8003e36: 681b ldr r3, [r3, #0] - 8003e38: f042 0208 orr.w r2, r2, #8 - 8003e3c: 61da str r2, [r3, #28] - - /* Configure the Output Fast mode */ - htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; - 8003e3e: 68fb ldr r3, [r7, #12] - 8003e40: 681b ldr r3, [r3, #0] - 8003e42: 69da ldr r2, [r3, #28] - 8003e44: 68fb ldr r3, [r7, #12] - 8003e46: 681b ldr r3, [r3, #0] - 8003e48: f022 0204 bic.w r2, r2, #4 - 8003e4c: 61da str r2, [r3, #28] - htim->Instance->CCMR2 |= sConfig->OCFastMode; - 8003e4e: 68fb ldr r3, [r7, #12] - 8003e50: 681b ldr r3, [r3, #0] - 8003e52: 69d9 ldr r1, [r3, #28] - 8003e54: 68bb ldr r3, [r7, #8] - 8003e56: 691a ldr r2, [r3, #16] - 8003e58: 68fb ldr r3, [r7, #12] - 8003e5a: 681b ldr r3, [r3, #0] - 8003e5c: 430a orrs r2, r1 - 8003e5e: 61da str r2, [r3, #28] - break; - 8003e60: e023 b.n 8003eaa - { - /* Check the parameters */ - assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); - - /* Configure the Channel 4 in PWM mode */ - TIM_OC4_SetConfig(htim->Instance, sConfig); - 8003e62: 68fb ldr r3, [r7, #12] - 8003e64: 681b ldr r3, [r3, #0] - 8003e66: 68b9 ldr r1, [r7, #8] - 8003e68: 4618 mov r0, r3 - 8003e6a: f000 fa97 bl 800439c - - /* Set the Preload enable bit for channel4 */ - htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; - 8003e6e: 68fb ldr r3, [r7, #12] - 8003e70: 681b ldr r3, [r3, #0] - 8003e72: 69da ldr r2, [r3, #28] - 8003e74: 68fb ldr r3, [r7, #12] - 8003e76: 681b ldr r3, [r3, #0] - 8003e78: f442 6200 orr.w r2, r2, #2048 @ 0x800 - 8003e7c: 61da str r2, [r3, #28] - - /* Configure the Output Fast mode */ - htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; - 8003e7e: 68fb ldr r3, [r7, #12] - 8003e80: 681b ldr r3, [r3, #0] - 8003e82: 69da ldr r2, [r3, #28] - 8003e84: 68fb ldr r3, [r7, #12] - 8003e86: 681b ldr r3, [r3, #0] - 8003e88: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 8003e8c: 61da str r2, [r3, #28] - htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; - 8003e8e: 68fb ldr r3, [r7, #12] - 8003e90: 681b ldr r3, [r3, #0] - 8003e92: 69d9 ldr r1, [r3, #28] - 8003e94: 68bb ldr r3, [r7, #8] - 8003e96: 691b ldr r3, [r3, #16] - 8003e98: 021a lsls r2, r3, #8 - 8003e9a: 68fb ldr r3, [r7, #12] - 8003e9c: 681b ldr r3, [r3, #0] - 8003e9e: 430a orrs r2, r1 - 8003ea0: 61da str r2, [r3, #28] - break; - 8003ea2: e002 b.n 8003eaa - } - - default: - status = HAL_ERROR; - 8003ea4: 2301 movs r3, #1 - 8003ea6: 75fb strb r3, [r7, #23] - break; - 8003ea8: bf00 nop - } - - __HAL_UNLOCK(htim); - 8003eaa: 68fb ldr r3, [r7, #12] - 8003eac: 2200 movs r2, #0 - 8003eae: f883 203c strb.w r2, [r3, #60] @ 0x3c - - return status; - 8003eb2: 7dfb ldrb r3, [r7, #23] -} - 8003eb4: 4618 mov r0, r3 - 8003eb6: 3718 adds r7, #24 - 8003eb8: 46bd mov sp, r7 - 8003eba: bd80 pop {r7, pc} - -08003ebc : - * @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) -{ - 8003ebc: b580 push {r7, lr} - 8003ebe: b084 sub sp, #16 - 8003ec0: af00 add r7, sp, #0 - 8003ec2: 6078 str r0, [r7, #4] - 8003ec4: 6039 str r1, [r7, #0] - HAL_StatusTypeDef status = HAL_OK; - 8003ec6: 2300 movs r3, #0 - 8003ec8: 73fb strb r3, [r7, #15] - uint32_t tmpsmcr; - - /* Process Locked */ - __HAL_LOCK(htim); - 8003eca: 687b ldr r3, [r7, #4] - 8003ecc: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8003ed0: 2b01 cmp r3, #1 - 8003ed2: d101 bne.n 8003ed8 - 8003ed4: 2302 movs r3, #2 - 8003ed6: e0b4 b.n 8004042 - 8003ed8: 687b ldr r3, [r7, #4] - 8003eda: 2201 movs r2, #1 - 8003edc: f883 203c strb.w r2, [r3, #60] @ 0x3c - - htim->State = HAL_TIM_STATE_BUSY; - 8003ee0: 687b ldr r3, [r7, #4] - 8003ee2: 2202 movs r2, #2 - 8003ee4: 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; - 8003ee8: 687b ldr r3, [r7, #4] - 8003eea: 681b ldr r3, [r3, #0] - 8003eec: 689b ldr r3, [r3, #8] - 8003eee: 60bb str r3, [r7, #8] - tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); - 8003ef0: 68bb ldr r3, [r7, #8] - 8003ef2: f023 0377 bic.w r3, r3, #119 @ 0x77 - 8003ef6: 60bb str r3, [r7, #8] - tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 8003ef8: 68bb ldr r3, [r7, #8] - 8003efa: f423 437f bic.w r3, r3, #65280 @ 0xff00 - 8003efe: 60bb str r3, [r7, #8] - htim->Instance->SMCR = tmpsmcr; - 8003f00: 687b ldr r3, [r7, #4] - 8003f02: 681b ldr r3, [r3, #0] - 8003f04: 68ba ldr r2, [r7, #8] - 8003f06: 609a str r2, [r3, #8] - - switch (sClockSourceConfig->ClockSource) - 8003f08: 683b ldr r3, [r7, #0] - 8003f0a: 681b ldr r3, [r3, #0] - 8003f0c: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8003f10: d03e beq.n 8003f90 - 8003f12: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8003f16: f200 8087 bhi.w 8004028 - 8003f1a: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8003f1e: f000 8086 beq.w 800402e - 8003f22: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8003f26: d87f bhi.n 8004028 - 8003f28: 2b70 cmp r3, #112 @ 0x70 - 8003f2a: d01a beq.n 8003f62 - 8003f2c: 2b70 cmp r3, #112 @ 0x70 - 8003f2e: d87b bhi.n 8004028 - 8003f30: 2b60 cmp r3, #96 @ 0x60 - 8003f32: d050 beq.n 8003fd6 - 8003f34: 2b60 cmp r3, #96 @ 0x60 - 8003f36: d877 bhi.n 8004028 - 8003f38: 2b50 cmp r3, #80 @ 0x50 - 8003f3a: d03c beq.n 8003fb6 - 8003f3c: 2b50 cmp r3, #80 @ 0x50 - 8003f3e: d873 bhi.n 8004028 - 8003f40: 2b40 cmp r3, #64 @ 0x40 - 8003f42: d058 beq.n 8003ff6 - 8003f44: 2b40 cmp r3, #64 @ 0x40 - 8003f46: d86f bhi.n 8004028 - 8003f48: 2b30 cmp r3, #48 @ 0x30 - 8003f4a: d064 beq.n 8004016 - 8003f4c: 2b30 cmp r3, #48 @ 0x30 - 8003f4e: d86b bhi.n 8004028 - 8003f50: 2b20 cmp r3, #32 - 8003f52: d060 beq.n 8004016 - 8003f54: 2b20 cmp r3, #32 - 8003f56: d867 bhi.n 8004028 - 8003f58: 2b00 cmp r3, #0 - 8003f5a: d05c beq.n 8004016 - 8003f5c: 2b10 cmp r3, #16 - 8003f5e: d05a beq.n 8004016 - 8003f60: e062 b.n 8004028 - 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, - 8003f62: 687b ldr r3, [r7, #4] - 8003f64: 6818 ldr r0, [r3, #0] - sClockSourceConfig->ClockPrescaler, - 8003f66: 683b ldr r3, [r7, #0] - 8003f68: 6899 ldr r1, [r3, #8] - sClockSourceConfig->ClockPolarity, - 8003f6a: 683b ldr r3, [r7, #0] - 8003f6c: 685a ldr r2, [r3, #4] - sClockSourceConfig->ClockFilter); - 8003f6e: 683b ldr r3, [r7, #0] - 8003f70: 68db ldr r3, [r3, #12] - TIM_ETR_SetConfig(htim->Instance, - 8003f72: f000 fad8 bl 8004526 - - /* Select the External clock mode1 and the ETRF trigger */ - tmpsmcr = htim->Instance->SMCR; - 8003f76: 687b ldr r3, [r7, #4] - 8003f78: 681b ldr r3, [r3, #0] - 8003f7a: 689b ldr r3, [r3, #8] - 8003f7c: 60bb str r3, [r7, #8] - tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); - 8003f7e: 68bb ldr r3, [r7, #8] - 8003f80: f043 0377 orr.w r3, r3, #119 @ 0x77 - 8003f84: 60bb str r3, [r7, #8] - /* Write to TIMx SMCR */ - htim->Instance->SMCR = tmpsmcr; - 8003f86: 687b ldr r3, [r7, #4] - 8003f88: 681b ldr r3, [r3, #0] - 8003f8a: 68ba ldr r2, [r7, #8] - 8003f8c: 609a str r2, [r3, #8] - break; - 8003f8e: e04f b.n 8004030 - 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, - 8003f90: 687b ldr r3, [r7, #4] - 8003f92: 6818 ldr r0, [r3, #0] - sClockSourceConfig->ClockPrescaler, - 8003f94: 683b ldr r3, [r7, #0] - 8003f96: 6899 ldr r1, [r3, #8] - sClockSourceConfig->ClockPolarity, - 8003f98: 683b ldr r3, [r7, #0] - 8003f9a: 685a ldr r2, [r3, #4] - sClockSourceConfig->ClockFilter); - 8003f9c: 683b ldr r3, [r7, #0] - 8003f9e: 68db ldr r3, [r3, #12] - TIM_ETR_SetConfig(htim->Instance, - 8003fa0: f000 fac1 bl 8004526 - /* Enable the External clock mode2 */ - htim->Instance->SMCR |= TIM_SMCR_ECE; - 8003fa4: 687b ldr r3, [r7, #4] - 8003fa6: 681b ldr r3, [r3, #0] - 8003fa8: 689a ldr r2, [r3, #8] - 8003faa: 687b ldr r3, [r7, #4] - 8003fac: 681b ldr r3, [r3, #0] - 8003fae: f442 4280 orr.w r2, r2, #16384 @ 0x4000 - 8003fb2: 609a str r2, [r3, #8] - break; - 8003fb4: e03c b.n 8004030 - - /* 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, - 8003fb6: 687b ldr r3, [r7, #4] - 8003fb8: 6818 ldr r0, [r3, #0] - sClockSourceConfig->ClockPolarity, - 8003fba: 683b ldr r3, [r7, #0] - 8003fbc: 6859 ldr r1, [r3, #4] - sClockSourceConfig->ClockFilter); - 8003fbe: 683b ldr r3, [r7, #0] - 8003fc0: 68db ldr r3, [r3, #12] - TIM_TI1_ConfigInputStage(htim->Instance, - 8003fc2: 461a mov r2, r3 - 8003fc4: f000 fa38 bl 8004438 - TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); - 8003fc8: 687b ldr r3, [r7, #4] - 8003fca: 681b ldr r3, [r3, #0] - 8003fcc: 2150 movs r1, #80 @ 0x50 - 8003fce: 4618 mov r0, r3 - 8003fd0: f000 fa8f bl 80044f2 - break; - 8003fd4: e02c b.n 8004030 - - /* 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, - 8003fd6: 687b ldr r3, [r7, #4] - 8003fd8: 6818 ldr r0, [r3, #0] - sClockSourceConfig->ClockPolarity, - 8003fda: 683b ldr r3, [r7, #0] - 8003fdc: 6859 ldr r1, [r3, #4] - sClockSourceConfig->ClockFilter); - 8003fde: 683b ldr r3, [r7, #0] - 8003fe0: 68db ldr r3, [r3, #12] - TIM_TI2_ConfigInputStage(htim->Instance, - 8003fe2: 461a mov r2, r3 - 8003fe4: f000 fa56 bl 8004494 - TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); - 8003fe8: 687b ldr r3, [r7, #4] - 8003fea: 681b ldr r3, [r3, #0] - 8003fec: 2160 movs r1, #96 @ 0x60 - 8003fee: 4618 mov r0, r3 - 8003ff0: f000 fa7f bl 80044f2 - break; - 8003ff4: e01c b.n 8004030 - - /* 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, - 8003ff6: 687b ldr r3, [r7, #4] - 8003ff8: 6818 ldr r0, [r3, #0] - sClockSourceConfig->ClockPolarity, - 8003ffa: 683b ldr r3, [r7, #0] - 8003ffc: 6859 ldr r1, [r3, #4] - sClockSourceConfig->ClockFilter); - 8003ffe: 683b ldr r3, [r7, #0] - 8004000: 68db ldr r3, [r3, #12] - TIM_TI1_ConfigInputStage(htim->Instance, - 8004002: 461a mov r2, r3 - 8004004: f000 fa18 bl 8004438 - TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); - 8004008: 687b ldr r3, [r7, #4] - 800400a: 681b ldr r3, [r3, #0] - 800400c: 2140 movs r1, #64 @ 0x40 - 800400e: 4618 mov r0, r3 - 8004010: f000 fa6f bl 80044f2 - break; - 8004014: e00c b.n 8004030 - 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); - 8004016: 687b ldr r3, [r7, #4] - 8004018: 681a ldr r2, [r3, #0] - 800401a: 683b ldr r3, [r7, #0] - 800401c: 681b ldr r3, [r3, #0] - 800401e: 4619 mov r1, r3 - 8004020: 4610 mov r0, r2 - 8004022: f000 fa66 bl 80044f2 - break; - 8004026: e003 b.n 8004030 - } - - default: - status = HAL_ERROR; - 8004028: 2301 movs r3, #1 - 800402a: 73fb strb r3, [r7, #15] - break; - 800402c: e000 b.n 8004030 - break; - 800402e: bf00 nop - } - htim->State = HAL_TIM_STATE_READY; - 8004030: 687b ldr r3, [r7, #4] - 8004032: 2201 movs r2, #1 - 8004034: f883 203d strb.w r2, [r3, #61] @ 0x3d - - __HAL_UNLOCK(htim); - 8004038: 687b ldr r3, [r7, #4] - 800403a: 2200 movs r2, #0 - 800403c: f883 203c strb.w r2, [r3, #60] @ 0x3c - - return status; - 8004040: 7bfb ldrb r3, [r7, #15] -} - 8004042: 4618 mov r0, r3 - 8004044: 3710 adds r7, #16 - 8004046: 46bd mov sp, r7 - 8004048: bd80 pop {r7, pc} - ... - -0800404c : - * @param TIMx TIM peripheral - * @param Structure TIM Base configuration structure - * @retval None - */ -void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) -{ - 800404c: b480 push {r7} - 800404e: b085 sub sp, #20 - 8004050: af00 add r7, sp, #0 - 8004052: 6078 str r0, [r7, #4] - 8004054: 6039 str r1, [r7, #0] - uint32_t tmpcr1; - tmpcr1 = TIMx->CR1; - 8004056: 687b ldr r3, [r7, #4] - 8004058: 681b ldr r3, [r3, #0] - 800405a: 60fb str r3, [r7, #12] - - /* Set TIM Time Base Unit parameters ---------------------------------------*/ - if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) - 800405c: 687b ldr r3, [r7, #4] - 800405e: 4a2f ldr r2, [pc, #188] @ (800411c ) - 8004060: 4293 cmp r3, r2 - 8004062: d00b beq.n 800407c - 8004064: 687b ldr r3, [r7, #4] - 8004066: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800406a: d007 beq.n 800407c - 800406c: 687b ldr r3, [r7, #4] - 800406e: 4a2c ldr r2, [pc, #176] @ (8004120 ) - 8004070: 4293 cmp r3, r2 - 8004072: d003 beq.n 800407c - 8004074: 687b ldr r3, [r7, #4] - 8004076: 4a2b ldr r2, [pc, #172] @ (8004124 ) - 8004078: 4293 cmp r3, r2 - 800407a: d108 bne.n 800408e - { - /* Select the Counter Mode */ - tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); - 800407c: 68fb ldr r3, [r7, #12] - 800407e: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004082: 60fb str r3, [r7, #12] - tmpcr1 |= Structure->CounterMode; - 8004084: 683b ldr r3, [r7, #0] - 8004086: 685b ldr r3, [r3, #4] - 8004088: 68fa ldr r2, [r7, #12] - 800408a: 4313 orrs r3, r2 - 800408c: 60fb str r3, [r7, #12] - } - - if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) - 800408e: 687b ldr r3, [r7, #4] - 8004090: 4a22 ldr r2, [pc, #136] @ (800411c ) - 8004092: 4293 cmp r3, r2 - 8004094: d00b beq.n 80040ae - 8004096: 687b ldr r3, [r7, #4] - 8004098: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800409c: d007 beq.n 80040ae - 800409e: 687b ldr r3, [r7, #4] - 80040a0: 4a1f ldr r2, [pc, #124] @ (8004120 ) - 80040a2: 4293 cmp r3, r2 - 80040a4: d003 beq.n 80040ae - 80040a6: 687b ldr r3, [r7, #4] - 80040a8: 4a1e ldr r2, [pc, #120] @ (8004124 ) - 80040aa: 4293 cmp r3, r2 - 80040ac: d108 bne.n 80040c0 - { - /* Set the clock division */ - tmpcr1 &= ~TIM_CR1_CKD; - 80040ae: 68fb ldr r3, [r7, #12] - 80040b0: f423 7340 bic.w r3, r3, #768 @ 0x300 - 80040b4: 60fb str r3, [r7, #12] - tmpcr1 |= (uint32_t)Structure->ClockDivision; - 80040b6: 683b ldr r3, [r7, #0] - 80040b8: 68db ldr r3, [r3, #12] - 80040ba: 68fa ldr r2, [r7, #12] - 80040bc: 4313 orrs r3, r2 - 80040be: 60fb str r3, [r7, #12] - } - - /* Set the auto-reload preload */ - MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); - 80040c0: 68fb ldr r3, [r7, #12] - 80040c2: f023 0280 bic.w r2, r3, #128 @ 0x80 - 80040c6: 683b ldr r3, [r7, #0] - 80040c8: 695b ldr r3, [r3, #20] - 80040ca: 4313 orrs r3, r2 - 80040cc: 60fb str r3, [r7, #12] - - TIMx->CR1 = tmpcr1; - 80040ce: 687b ldr r3, [r7, #4] - 80040d0: 68fa ldr r2, [r7, #12] - 80040d2: 601a str r2, [r3, #0] - - /* Set the Autoreload value */ - TIMx->ARR = (uint32_t)Structure->Period ; - 80040d4: 683b ldr r3, [r7, #0] - 80040d6: 689a ldr r2, [r3, #8] - 80040d8: 687b ldr r3, [r7, #4] - 80040da: 62da str r2, [r3, #44] @ 0x2c - - /* Set the Prescaler value */ - TIMx->PSC = Structure->Prescaler; - 80040dc: 683b ldr r3, [r7, #0] - 80040de: 681a ldr r2, [r3, #0] - 80040e0: 687b ldr r3, [r7, #4] - 80040e2: 629a str r2, [r3, #40] @ 0x28 - - if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) - 80040e4: 687b ldr r3, [r7, #4] - 80040e6: 4a0d ldr r2, [pc, #52] @ (800411c ) - 80040e8: 4293 cmp r3, r2 - 80040ea: d103 bne.n 80040f4 - { - /* Set the Repetition Counter value */ - TIMx->RCR = Structure->RepetitionCounter; - 80040ec: 683b ldr r3, [r7, #0] - 80040ee: 691a ldr r2, [r3, #16] - 80040f0: 687b ldr r3, [r7, #4] - 80040f2: 631a str r2, [r3, #48] @ 0x30 - } - - /* Generate an update event to reload the Prescaler - and the repetition counter (only for advanced timer) value immediately */ - TIMx->EGR = TIM_EGR_UG; - 80040f4: 687b ldr r3, [r7, #4] - 80040f6: 2201 movs r2, #1 - 80040f8: 615a str r2, [r3, #20] - - /* Check if the update flag is set after the Update Generation, if so clear the UIF flag */ - if (HAL_IS_BIT_SET(TIMx->SR, TIM_FLAG_UPDATE)) - 80040fa: 687b ldr r3, [r7, #4] - 80040fc: 691b ldr r3, [r3, #16] - 80040fe: f003 0301 and.w r3, r3, #1 - 8004102: 2b00 cmp r3, #0 - 8004104: d005 beq.n 8004112 - { - /* Clear the update flag */ - CLEAR_BIT(TIMx->SR, TIM_FLAG_UPDATE); - 8004106: 687b ldr r3, [r7, #4] - 8004108: 691b ldr r3, [r3, #16] - 800410a: f023 0201 bic.w r2, r3, #1 - 800410e: 687b ldr r3, [r7, #4] - 8004110: 611a str r2, [r3, #16] - } -} - 8004112: bf00 nop - 8004114: 3714 adds r7, #20 - 8004116: 46bd mov sp, r7 - 8004118: bc80 pop {r7} - 800411a: 4770 bx lr - 800411c: 40012c00 .word 0x40012c00 - 8004120: 40000400 .word 0x40000400 - 8004124: 40000800 .word 0x40000800 - -08004128 : - * @param TIMx to select the TIM peripheral - * @param OC_Config The output configuration structure - * @retval None - */ -static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) -{ - 8004128: b480 push {r7} - 800412a: b087 sub sp, #28 - 800412c: af00 add r7, sp, #0 - 800412e: 6078 str r0, [r7, #4] - 8004130: 6039 str r1, [r7, #0] - uint32_t tmpccmrx; - uint32_t tmpccer; - uint32_t tmpcr2; - - /* Get the TIMx CCER register value */ - tmpccer = TIMx->CCER; - 8004132: 687b ldr r3, [r7, #4] - 8004134: 6a1b ldr r3, [r3, #32] - 8004136: 617b str r3, [r7, #20] - - /* Disable the Channel 1: Reset the CC1E Bit */ - TIMx->CCER &= ~TIM_CCER_CC1E; - 8004138: 687b ldr r3, [r7, #4] - 800413a: 6a1b ldr r3, [r3, #32] - 800413c: f023 0201 bic.w r2, r3, #1 - 8004140: 687b ldr r3, [r7, #4] - 8004142: 621a str r2, [r3, #32] - - /* Get the TIMx CR2 register value */ - tmpcr2 = TIMx->CR2; - 8004144: 687b ldr r3, [r7, #4] - 8004146: 685b ldr r3, [r3, #4] - 8004148: 613b str r3, [r7, #16] - - /* Get the TIMx CCMR1 register value */ - tmpccmrx = TIMx->CCMR1; - 800414a: 687b ldr r3, [r7, #4] - 800414c: 699b ldr r3, [r3, #24] - 800414e: 60fb str r3, [r7, #12] - - /* Reset the Output Compare Mode Bits */ - tmpccmrx &= ~TIM_CCMR1_OC1M; - 8004150: 68fb ldr r3, [r7, #12] - 8004152: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004156: 60fb str r3, [r7, #12] - tmpccmrx &= ~TIM_CCMR1_CC1S; - 8004158: 68fb ldr r3, [r7, #12] - 800415a: f023 0303 bic.w r3, r3, #3 - 800415e: 60fb str r3, [r7, #12] - /* Select the Output Compare Mode */ - tmpccmrx |= OC_Config->OCMode; - 8004160: 683b ldr r3, [r7, #0] - 8004162: 681b ldr r3, [r3, #0] - 8004164: 68fa ldr r2, [r7, #12] - 8004166: 4313 orrs r3, r2 - 8004168: 60fb str r3, [r7, #12] - - /* Reset the Output Polarity level */ - tmpccer &= ~TIM_CCER_CC1P; - 800416a: 697b ldr r3, [r7, #20] - 800416c: f023 0302 bic.w r3, r3, #2 - 8004170: 617b str r3, [r7, #20] - /* Set the Output Compare Polarity */ - tmpccer |= OC_Config->OCPolarity; - 8004172: 683b ldr r3, [r7, #0] - 8004174: 689b ldr r3, [r3, #8] - 8004176: 697a ldr r2, [r7, #20] - 8004178: 4313 orrs r3, r2 - 800417a: 617b str r3, [r7, #20] - - if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_1)) - 800417c: 687b ldr r3, [r7, #4] - 800417e: 4a1c ldr r2, [pc, #112] @ (80041f0 ) - 8004180: 4293 cmp r3, r2 - 8004182: d10c bne.n 800419e - { - /* Check parameters */ - assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); - - /* Reset the Output N Polarity level */ - tmpccer &= ~TIM_CCER_CC1NP; - 8004184: 697b ldr r3, [r7, #20] - 8004186: f023 0308 bic.w r3, r3, #8 - 800418a: 617b str r3, [r7, #20] - /* Set the Output N Polarity */ - tmpccer |= OC_Config->OCNPolarity; - 800418c: 683b ldr r3, [r7, #0] - 800418e: 68db ldr r3, [r3, #12] - 8004190: 697a ldr r2, [r7, #20] - 8004192: 4313 orrs r3, r2 - 8004194: 617b str r3, [r7, #20] - /* Reset the Output N State */ - tmpccer &= ~TIM_CCER_CC1NE; - 8004196: 697b ldr r3, [r7, #20] - 8004198: f023 0304 bic.w r3, r3, #4 - 800419c: 617b str r3, [r7, #20] - } - - if (IS_TIM_BREAK_INSTANCE(TIMx)) - 800419e: 687b ldr r3, [r7, #4] - 80041a0: 4a13 ldr r2, [pc, #76] @ (80041f0 ) - 80041a2: 4293 cmp r3, r2 - 80041a4: d111 bne.n 80041ca - /* Check parameters */ - assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); - assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - - /* Reset the Output Compare and Output Compare N IDLE State */ - tmpcr2 &= ~TIM_CR2_OIS1; - 80041a6: 693b ldr r3, [r7, #16] - 80041a8: f423 7380 bic.w r3, r3, #256 @ 0x100 - 80041ac: 613b str r3, [r7, #16] - tmpcr2 &= ~TIM_CR2_OIS1N; - 80041ae: 693b ldr r3, [r7, #16] - 80041b0: f423 7300 bic.w r3, r3, #512 @ 0x200 - 80041b4: 613b str r3, [r7, #16] - /* Set the Output Idle state */ - tmpcr2 |= OC_Config->OCIdleState; - 80041b6: 683b ldr r3, [r7, #0] - 80041b8: 695b ldr r3, [r3, #20] - 80041ba: 693a ldr r2, [r7, #16] - 80041bc: 4313 orrs r3, r2 - 80041be: 613b str r3, [r7, #16] - /* Set the Output N Idle state */ - tmpcr2 |= OC_Config->OCNIdleState; - 80041c0: 683b ldr r3, [r7, #0] - 80041c2: 699b ldr r3, [r3, #24] - 80041c4: 693a ldr r2, [r7, #16] - 80041c6: 4313 orrs r3, r2 - 80041c8: 613b str r3, [r7, #16] - } - - /* Write to TIMx CR2 */ - TIMx->CR2 = tmpcr2; - 80041ca: 687b ldr r3, [r7, #4] - 80041cc: 693a ldr r2, [r7, #16] - 80041ce: 605a str r2, [r3, #4] - - /* Write to TIMx CCMR1 */ - TIMx->CCMR1 = tmpccmrx; - 80041d0: 687b ldr r3, [r7, #4] - 80041d2: 68fa ldr r2, [r7, #12] - 80041d4: 619a str r2, [r3, #24] - - /* Set the Capture Compare Register value */ - TIMx->CCR1 = OC_Config->Pulse; - 80041d6: 683b ldr r3, [r7, #0] - 80041d8: 685a ldr r2, [r3, #4] - 80041da: 687b ldr r3, [r7, #4] - 80041dc: 635a str r2, [r3, #52] @ 0x34 - - /* Write to TIMx CCER */ - TIMx->CCER = tmpccer; - 80041de: 687b ldr r3, [r7, #4] - 80041e0: 697a ldr r2, [r7, #20] - 80041e2: 621a str r2, [r3, #32] -} - 80041e4: bf00 nop - 80041e6: 371c adds r7, #28 - 80041e8: 46bd mov sp, r7 - 80041ea: bc80 pop {r7} - 80041ec: 4770 bx lr - 80041ee: bf00 nop - 80041f0: 40012c00 .word 0x40012c00 - -080041f4 : - * @param TIMx to select the TIM peripheral - * @param OC_Config The output configuration structure - * @retval None - */ -void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) -{ - 80041f4: b480 push {r7} - 80041f6: b087 sub sp, #28 - 80041f8: af00 add r7, sp, #0 - 80041fa: 6078 str r0, [r7, #4] - 80041fc: 6039 str r1, [r7, #0] - uint32_t tmpccmrx; - uint32_t tmpccer; - uint32_t tmpcr2; - - /* Get the TIMx CCER register value */ - tmpccer = TIMx->CCER; - 80041fe: 687b ldr r3, [r7, #4] - 8004200: 6a1b ldr r3, [r3, #32] - 8004202: 617b str r3, [r7, #20] - - /* Disable the Channel 2: Reset the CC2E Bit */ - TIMx->CCER &= ~TIM_CCER_CC2E; - 8004204: 687b ldr r3, [r7, #4] - 8004206: 6a1b ldr r3, [r3, #32] - 8004208: f023 0210 bic.w r2, r3, #16 - 800420c: 687b ldr r3, [r7, #4] - 800420e: 621a str r2, [r3, #32] - - /* Get the TIMx CR2 register value */ - tmpcr2 = TIMx->CR2; - 8004210: 687b ldr r3, [r7, #4] - 8004212: 685b ldr r3, [r3, #4] - 8004214: 613b str r3, [r7, #16] - - /* Get the TIMx CCMR1 register value */ - tmpccmrx = TIMx->CCMR1; - 8004216: 687b ldr r3, [r7, #4] - 8004218: 699b ldr r3, [r3, #24] - 800421a: 60fb str r3, [r7, #12] - - /* Reset the Output Compare mode and Capture/Compare selection Bits */ - tmpccmrx &= ~TIM_CCMR1_OC2M; - 800421c: 68fb ldr r3, [r7, #12] - 800421e: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004222: 60fb str r3, [r7, #12] - tmpccmrx &= ~TIM_CCMR1_CC2S; - 8004224: 68fb ldr r3, [r7, #12] - 8004226: f423 7340 bic.w r3, r3, #768 @ 0x300 - 800422a: 60fb str r3, [r7, #12] - - /* Select the Output Compare Mode */ - tmpccmrx |= (OC_Config->OCMode << 8U); - 800422c: 683b ldr r3, [r7, #0] - 800422e: 681b ldr r3, [r3, #0] - 8004230: 021b lsls r3, r3, #8 - 8004232: 68fa ldr r2, [r7, #12] - 8004234: 4313 orrs r3, r2 - 8004236: 60fb str r3, [r7, #12] - - /* Reset the Output Polarity level */ - tmpccer &= ~TIM_CCER_CC2P; - 8004238: 697b ldr r3, [r7, #20] - 800423a: f023 0320 bic.w r3, r3, #32 - 800423e: 617b str r3, [r7, #20] - /* Set the Output Compare Polarity */ - tmpccer |= (OC_Config->OCPolarity << 4U); - 8004240: 683b ldr r3, [r7, #0] - 8004242: 689b ldr r3, [r3, #8] - 8004244: 011b lsls r3, r3, #4 - 8004246: 697a ldr r2, [r7, #20] - 8004248: 4313 orrs r3, r2 - 800424a: 617b str r3, [r7, #20] - - if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_2)) - 800424c: 687b ldr r3, [r7, #4] - 800424e: 4a1d ldr r2, [pc, #116] @ (80042c4 ) - 8004250: 4293 cmp r3, r2 - 8004252: d10d bne.n 8004270 - { - assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); - - /* Reset the Output N Polarity level */ - tmpccer &= ~TIM_CCER_CC2NP; - 8004254: 697b ldr r3, [r7, #20] - 8004256: f023 0380 bic.w r3, r3, #128 @ 0x80 - 800425a: 617b str r3, [r7, #20] - /* Set the Output N Polarity */ - tmpccer |= (OC_Config->OCNPolarity << 4U); - 800425c: 683b ldr r3, [r7, #0] - 800425e: 68db ldr r3, [r3, #12] - 8004260: 011b lsls r3, r3, #4 - 8004262: 697a ldr r2, [r7, #20] - 8004264: 4313 orrs r3, r2 - 8004266: 617b str r3, [r7, #20] - /* Reset the Output N State */ - tmpccer &= ~TIM_CCER_CC2NE; - 8004268: 697b ldr r3, [r7, #20] - 800426a: f023 0340 bic.w r3, r3, #64 @ 0x40 - 800426e: 617b str r3, [r7, #20] - } - - if (IS_TIM_BREAK_INSTANCE(TIMx)) - 8004270: 687b ldr r3, [r7, #4] - 8004272: 4a14 ldr r2, [pc, #80] @ (80042c4 ) - 8004274: 4293 cmp r3, r2 - 8004276: d113 bne.n 80042a0 - /* Check parameters */ - assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); - assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - - /* Reset the Output Compare and Output Compare N IDLE State */ - tmpcr2 &= ~TIM_CR2_OIS2; - 8004278: 693b ldr r3, [r7, #16] - 800427a: f423 6380 bic.w r3, r3, #1024 @ 0x400 - 800427e: 613b str r3, [r7, #16] - tmpcr2 &= ~TIM_CR2_OIS2N; - 8004280: 693b ldr r3, [r7, #16] - 8004282: f423 6300 bic.w r3, r3, #2048 @ 0x800 - 8004286: 613b str r3, [r7, #16] - /* Set the Output Idle state */ - tmpcr2 |= (OC_Config->OCIdleState << 2U); - 8004288: 683b ldr r3, [r7, #0] - 800428a: 695b ldr r3, [r3, #20] - 800428c: 009b lsls r3, r3, #2 - 800428e: 693a ldr r2, [r7, #16] - 8004290: 4313 orrs r3, r2 - 8004292: 613b str r3, [r7, #16] - /* Set the Output N Idle state */ - tmpcr2 |= (OC_Config->OCNIdleState << 2U); - 8004294: 683b ldr r3, [r7, #0] - 8004296: 699b ldr r3, [r3, #24] - 8004298: 009b lsls r3, r3, #2 - 800429a: 693a ldr r2, [r7, #16] - 800429c: 4313 orrs r3, r2 - 800429e: 613b str r3, [r7, #16] - } - - /* Write to TIMx CR2 */ - TIMx->CR2 = tmpcr2; - 80042a0: 687b ldr r3, [r7, #4] - 80042a2: 693a ldr r2, [r7, #16] - 80042a4: 605a str r2, [r3, #4] - - /* Write to TIMx CCMR1 */ - TIMx->CCMR1 = tmpccmrx; - 80042a6: 687b ldr r3, [r7, #4] - 80042a8: 68fa ldr r2, [r7, #12] - 80042aa: 619a str r2, [r3, #24] - - /* Set the Capture Compare Register value */ - TIMx->CCR2 = OC_Config->Pulse; - 80042ac: 683b ldr r3, [r7, #0] - 80042ae: 685a ldr r2, [r3, #4] - 80042b0: 687b ldr r3, [r7, #4] - 80042b2: 639a str r2, [r3, #56] @ 0x38 - - /* Write to TIMx CCER */ - TIMx->CCER = tmpccer; - 80042b4: 687b ldr r3, [r7, #4] - 80042b6: 697a ldr r2, [r7, #20] - 80042b8: 621a str r2, [r3, #32] -} - 80042ba: bf00 nop - 80042bc: 371c adds r7, #28 - 80042be: 46bd mov sp, r7 - 80042c0: bc80 pop {r7} - 80042c2: 4770 bx lr - 80042c4: 40012c00 .word 0x40012c00 - -080042c8 : - * @param TIMx to select the TIM peripheral - * @param OC_Config The output configuration structure - * @retval None - */ -static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) -{ - 80042c8: b480 push {r7} - 80042ca: b087 sub sp, #28 - 80042cc: af00 add r7, sp, #0 - 80042ce: 6078 str r0, [r7, #4] - 80042d0: 6039 str r1, [r7, #0] - uint32_t tmpccmrx; - uint32_t tmpccer; - uint32_t tmpcr2; - - /* Get the TIMx CCER register value */ - tmpccer = TIMx->CCER; - 80042d2: 687b ldr r3, [r7, #4] - 80042d4: 6a1b ldr r3, [r3, #32] - 80042d6: 617b str r3, [r7, #20] - - /* Disable the Channel 3: Reset the CC2E Bit */ - TIMx->CCER &= ~TIM_CCER_CC3E; - 80042d8: 687b ldr r3, [r7, #4] - 80042da: 6a1b ldr r3, [r3, #32] - 80042dc: f423 7280 bic.w r2, r3, #256 @ 0x100 - 80042e0: 687b ldr r3, [r7, #4] - 80042e2: 621a str r2, [r3, #32] - - /* Get the TIMx CR2 register value */ - tmpcr2 = TIMx->CR2; - 80042e4: 687b ldr r3, [r7, #4] - 80042e6: 685b ldr r3, [r3, #4] - 80042e8: 613b str r3, [r7, #16] - - /* Get the TIMx CCMR2 register value */ - tmpccmrx = TIMx->CCMR2; - 80042ea: 687b ldr r3, [r7, #4] - 80042ec: 69db ldr r3, [r3, #28] - 80042ee: 60fb str r3, [r7, #12] - - /* Reset the Output Compare mode and Capture/Compare selection Bits */ - tmpccmrx &= ~TIM_CCMR2_OC3M; - 80042f0: 68fb ldr r3, [r7, #12] - 80042f2: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80042f6: 60fb str r3, [r7, #12] - tmpccmrx &= ~TIM_CCMR2_CC3S; - 80042f8: 68fb ldr r3, [r7, #12] - 80042fa: f023 0303 bic.w r3, r3, #3 - 80042fe: 60fb str r3, [r7, #12] - /* Select the Output Compare Mode */ - tmpccmrx |= OC_Config->OCMode; - 8004300: 683b ldr r3, [r7, #0] - 8004302: 681b ldr r3, [r3, #0] - 8004304: 68fa ldr r2, [r7, #12] - 8004306: 4313 orrs r3, r2 - 8004308: 60fb str r3, [r7, #12] - - /* Reset the Output Polarity level */ - tmpccer &= ~TIM_CCER_CC3P; - 800430a: 697b ldr r3, [r7, #20] - 800430c: f423 7300 bic.w r3, r3, #512 @ 0x200 - 8004310: 617b str r3, [r7, #20] - /* Set the Output Compare Polarity */ - tmpccer |= (OC_Config->OCPolarity << 8U); - 8004312: 683b ldr r3, [r7, #0] - 8004314: 689b ldr r3, [r3, #8] - 8004316: 021b lsls r3, r3, #8 - 8004318: 697a ldr r2, [r7, #20] - 800431a: 4313 orrs r3, r2 - 800431c: 617b str r3, [r7, #20] - - if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_3)) - 800431e: 687b ldr r3, [r7, #4] - 8004320: 4a1d ldr r2, [pc, #116] @ (8004398 ) - 8004322: 4293 cmp r3, r2 - 8004324: d10d bne.n 8004342 - { - assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); - - /* Reset the Output N Polarity level */ - tmpccer &= ~TIM_CCER_CC3NP; - 8004326: 697b ldr r3, [r7, #20] - 8004328: f423 6300 bic.w r3, r3, #2048 @ 0x800 - 800432c: 617b str r3, [r7, #20] - /* Set the Output N Polarity */ - tmpccer |= (OC_Config->OCNPolarity << 8U); - 800432e: 683b ldr r3, [r7, #0] - 8004330: 68db ldr r3, [r3, #12] - 8004332: 021b lsls r3, r3, #8 - 8004334: 697a ldr r2, [r7, #20] - 8004336: 4313 orrs r3, r2 - 8004338: 617b str r3, [r7, #20] - /* Reset the Output N State */ - tmpccer &= ~TIM_CCER_CC3NE; - 800433a: 697b ldr r3, [r7, #20] - 800433c: f423 6380 bic.w r3, r3, #1024 @ 0x400 - 8004340: 617b str r3, [r7, #20] - } - - if (IS_TIM_BREAK_INSTANCE(TIMx)) - 8004342: 687b ldr r3, [r7, #4] - 8004344: 4a14 ldr r2, [pc, #80] @ (8004398 ) - 8004346: 4293 cmp r3, r2 - 8004348: d113 bne.n 8004372 - /* Check parameters */ - assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); - assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - - /* Reset the Output Compare and Output Compare N IDLE State */ - tmpcr2 &= ~TIM_CR2_OIS3; - 800434a: 693b ldr r3, [r7, #16] - 800434c: f423 5380 bic.w r3, r3, #4096 @ 0x1000 - 8004350: 613b str r3, [r7, #16] - tmpcr2 &= ~TIM_CR2_OIS3N; - 8004352: 693b ldr r3, [r7, #16] - 8004354: f423 5300 bic.w r3, r3, #8192 @ 0x2000 - 8004358: 613b str r3, [r7, #16] - /* Set the Output Idle state */ - tmpcr2 |= (OC_Config->OCIdleState << 4U); - 800435a: 683b ldr r3, [r7, #0] - 800435c: 695b ldr r3, [r3, #20] - 800435e: 011b lsls r3, r3, #4 - 8004360: 693a ldr r2, [r7, #16] - 8004362: 4313 orrs r3, r2 - 8004364: 613b str r3, [r7, #16] - /* Set the Output N Idle state */ - tmpcr2 |= (OC_Config->OCNIdleState << 4U); - 8004366: 683b ldr r3, [r7, #0] - 8004368: 699b ldr r3, [r3, #24] - 800436a: 011b lsls r3, r3, #4 - 800436c: 693a ldr r2, [r7, #16] - 800436e: 4313 orrs r3, r2 - 8004370: 613b str r3, [r7, #16] - } - - /* Write to TIMx CR2 */ - TIMx->CR2 = tmpcr2; - 8004372: 687b ldr r3, [r7, #4] - 8004374: 693a ldr r2, [r7, #16] - 8004376: 605a str r2, [r3, #4] - - /* Write to TIMx CCMR2 */ - TIMx->CCMR2 = tmpccmrx; - 8004378: 687b ldr r3, [r7, #4] - 800437a: 68fa ldr r2, [r7, #12] - 800437c: 61da str r2, [r3, #28] - - /* Set the Capture Compare Register value */ - TIMx->CCR3 = OC_Config->Pulse; - 800437e: 683b ldr r3, [r7, #0] - 8004380: 685a ldr r2, [r3, #4] - 8004382: 687b ldr r3, [r7, #4] - 8004384: 63da str r2, [r3, #60] @ 0x3c - - /* Write to TIMx CCER */ - TIMx->CCER = tmpccer; - 8004386: 687b ldr r3, [r7, #4] - 8004388: 697a ldr r2, [r7, #20] - 800438a: 621a str r2, [r3, #32] -} - 800438c: bf00 nop - 800438e: 371c adds r7, #28 - 8004390: 46bd mov sp, r7 - 8004392: bc80 pop {r7} - 8004394: 4770 bx lr - 8004396: bf00 nop - 8004398: 40012c00 .word 0x40012c00 - -0800439c : - * @param TIMx to select the TIM peripheral - * @param OC_Config The output configuration structure - * @retval None - */ -static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) -{ - 800439c: b480 push {r7} - 800439e: b087 sub sp, #28 - 80043a0: af00 add r7, sp, #0 - 80043a2: 6078 str r0, [r7, #4] - 80043a4: 6039 str r1, [r7, #0] - uint32_t tmpccmrx; - uint32_t tmpccer; - uint32_t tmpcr2; - - /* Get the TIMx CCER register value */ - tmpccer = TIMx->CCER; - 80043a6: 687b ldr r3, [r7, #4] - 80043a8: 6a1b ldr r3, [r3, #32] - 80043aa: 613b str r3, [r7, #16] - - /* Disable the Channel 4: Reset the CC4E Bit */ - TIMx->CCER &= ~TIM_CCER_CC4E; - 80043ac: 687b ldr r3, [r7, #4] - 80043ae: 6a1b ldr r3, [r3, #32] - 80043b0: f423 5280 bic.w r2, r3, #4096 @ 0x1000 - 80043b4: 687b ldr r3, [r7, #4] - 80043b6: 621a str r2, [r3, #32] - - /* Get the TIMx CR2 register value */ - tmpcr2 = TIMx->CR2; - 80043b8: 687b ldr r3, [r7, #4] - 80043ba: 685b ldr r3, [r3, #4] - 80043bc: 617b str r3, [r7, #20] - - /* Get the TIMx CCMR2 register value */ - tmpccmrx = TIMx->CCMR2; - 80043be: 687b ldr r3, [r7, #4] - 80043c0: 69db ldr r3, [r3, #28] - 80043c2: 60fb str r3, [r7, #12] - - /* Reset the Output Compare mode and Capture/Compare selection Bits */ - tmpccmrx &= ~TIM_CCMR2_OC4M; - 80043c4: 68fb ldr r3, [r7, #12] - 80043c6: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80043ca: 60fb str r3, [r7, #12] - tmpccmrx &= ~TIM_CCMR2_CC4S; - 80043cc: 68fb ldr r3, [r7, #12] - 80043ce: f423 7340 bic.w r3, r3, #768 @ 0x300 - 80043d2: 60fb str r3, [r7, #12] - - /* Select the Output Compare Mode */ - tmpccmrx |= (OC_Config->OCMode << 8U); - 80043d4: 683b ldr r3, [r7, #0] - 80043d6: 681b ldr r3, [r3, #0] - 80043d8: 021b lsls r3, r3, #8 - 80043da: 68fa ldr r2, [r7, #12] - 80043dc: 4313 orrs r3, r2 - 80043de: 60fb str r3, [r7, #12] - - /* Reset the Output Polarity level */ - tmpccer &= ~TIM_CCER_CC4P; - 80043e0: 693b ldr r3, [r7, #16] - 80043e2: f423 5300 bic.w r3, r3, #8192 @ 0x2000 - 80043e6: 613b str r3, [r7, #16] - /* Set the Output Compare Polarity */ - tmpccer |= (OC_Config->OCPolarity << 12U); - 80043e8: 683b ldr r3, [r7, #0] - 80043ea: 689b ldr r3, [r3, #8] - 80043ec: 031b lsls r3, r3, #12 - 80043ee: 693a ldr r2, [r7, #16] - 80043f0: 4313 orrs r3, r2 - 80043f2: 613b str r3, [r7, #16] - - if (IS_TIM_BREAK_INSTANCE(TIMx)) - 80043f4: 687b ldr r3, [r7, #4] - 80043f6: 4a0f ldr r2, [pc, #60] @ (8004434 ) - 80043f8: 4293 cmp r3, r2 - 80043fa: d109 bne.n 8004410 - { - /* Check parameters */ - assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - - /* Reset the Output Compare IDLE State */ - tmpcr2 &= ~TIM_CR2_OIS4; - 80043fc: 697b ldr r3, [r7, #20] - 80043fe: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8004402: 617b str r3, [r7, #20] - - /* Set the Output Idle state */ - tmpcr2 |= (OC_Config->OCIdleState << 6U); - 8004404: 683b ldr r3, [r7, #0] - 8004406: 695b ldr r3, [r3, #20] - 8004408: 019b lsls r3, r3, #6 - 800440a: 697a ldr r2, [r7, #20] - 800440c: 4313 orrs r3, r2 - 800440e: 617b str r3, [r7, #20] - } - - /* Write to TIMx CR2 */ - TIMx->CR2 = tmpcr2; - 8004410: 687b ldr r3, [r7, #4] - 8004412: 697a ldr r2, [r7, #20] - 8004414: 605a str r2, [r3, #4] - - /* Write to TIMx CCMR2 */ - TIMx->CCMR2 = tmpccmrx; - 8004416: 687b ldr r3, [r7, #4] - 8004418: 68fa ldr r2, [r7, #12] - 800441a: 61da str r2, [r3, #28] - - /* Set the Capture Compare Register value */ - TIMx->CCR4 = OC_Config->Pulse; - 800441c: 683b ldr r3, [r7, #0] - 800441e: 685a ldr r2, [r3, #4] - 8004420: 687b ldr r3, [r7, #4] - 8004422: 641a str r2, [r3, #64] @ 0x40 - - /* Write to TIMx CCER */ - TIMx->CCER = tmpccer; - 8004424: 687b ldr r3, [r7, #4] - 8004426: 693a ldr r2, [r7, #16] - 8004428: 621a str r2, [r3, #32] -} - 800442a: bf00 nop - 800442c: 371c adds r7, #28 - 800442e: 46bd mov sp, r7 - 8004430: bc80 pop {r7} - 8004432: 4770 bx lr - 8004434: 40012c00 .word 0x40012c00 - -08004438 : - * @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) -{ - 8004438: b480 push {r7} - 800443a: b087 sub sp, #28 - 800443c: af00 add r7, sp, #0 - 800443e: 60f8 str r0, [r7, #12] - 8004440: 60b9 str r1, [r7, #8] - 8004442: 607a str r2, [r7, #4] - uint32_t tmpccmr1; - uint32_t tmpccer; - - /* Disable the Channel 1: Reset the CC1E Bit */ - tmpccer = TIMx->CCER; - 8004444: 68fb ldr r3, [r7, #12] - 8004446: 6a1b ldr r3, [r3, #32] - 8004448: 617b str r3, [r7, #20] - TIMx->CCER &= ~TIM_CCER_CC1E; - 800444a: 68fb ldr r3, [r7, #12] - 800444c: 6a1b ldr r3, [r3, #32] - 800444e: f023 0201 bic.w r2, r3, #1 - 8004452: 68fb ldr r3, [r7, #12] - 8004454: 621a str r2, [r3, #32] - tmpccmr1 = TIMx->CCMR1; - 8004456: 68fb ldr r3, [r7, #12] - 8004458: 699b ldr r3, [r3, #24] - 800445a: 613b str r3, [r7, #16] - - /* Set the filter */ - tmpccmr1 &= ~TIM_CCMR1_IC1F; - 800445c: 693b ldr r3, [r7, #16] - 800445e: f023 03f0 bic.w r3, r3, #240 @ 0xf0 - 8004462: 613b str r3, [r7, #16] - tmpccmr1 |= (TIM_ICFilter << 4U); - 8004464: 687b ldr r3, [r7, #4] - 8004466: 011b lsls r3, r3, #4 - 8004468: 693a ldr r2, [r7, #16] - 800446a: 4313 orrs r3, r2 - 800446c: 613b str r3, [r7, #16] - - /* Select the Polarity and set the CC1E Bit */ - tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); - 800446e: 697b ldr r3, [r7, #20] - 8004470: f023 030a bic.w r3, r3, #10 - 8004474: 617b str r3, [r7, #20] - tmpccer |= TIM_ICPolarity; - 8004476: 697a ldr r2, [r7, #20] - 8004478: 68bb ldr r3, [r7, #8] - 800447a: 4313 orrs r3, r2 - 800447c: 617b str r3, [r7, #20] - - /* Write to TIMx CCMR1 and CCER registers */ - TIMx->CCMR1 = tmpccmr1; - 800447e: 68fb ldr r3, [r7, #12] - 8004480: 693a ldr r2, [r7, #16] - 8004482: 619a str r2, [r3, #24] - TIMx->CCER = tmpccer; - 8004484: 68fb ldr r3, [r7, #12] - 8004486: 697a ldr r2, [r7, #20] - 8004488: 621a str r2, [r3, #32] -} - 800448a: bf00 nop - 800448c: 371c adds r7, #28 - 800448e: 46bd mov sp, r7 - 8004490: bc80 pop {r7} - 8004492: 4770 bx lr - -08004494 : - * @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) -{ - 8004494: b480 push {r7} - 8004496: b087 sub sp, #28 - 8004498: af00 add r7, sp, #0 - 800449a: 60f8 str r0, [r7, #12] - 800449c: 60b9 str r1, [r7, #8] - 800449e: 607a str r2, [r7, #4] - uint32_t tmpccmr1; - uint32_t tmpccer; - - /* Disable the Channel 2: Reset the CC2E Bit */ - tmpccer = TIMx->CCER; - 80044a0: 68fb ldr r3, [r7, #12] - 80044a2: 6a1b ldr r3, [r3, #32] - 80044a4: 617b str r3, [r7, #20] - TIMx->CCER &= ~TIM_CCER_CC2E; - 80044a6: 68fb ldr r3, [r7, #12] - 80044a8: 6a1b ldr r3, [r3, #32] - 80044aa: f023 0210 bic.w r2, r3, #16 - 80044ae: 68fb ldr r3, [r7, #12] - 80044b0: 621a str r2, [r3, #32] - tmpccmr1 = TIMx->CCMR1; - 80044b2: 68fb ldr r3, [r7, #12] - 80044b4: 699b ldr r3, [r3, #24] - 80044b6: 613b str r3, [r7, #16] - - /* Set the filter */ - tmpccmr1 &= ~TIM_CCMR1_IC2F; - 80044b8: 693b ldr r3, [r7, #16] - 80044ba: f423 4370 bic.w r3, r3, #61440 @ 0xf000 - 80044be: 613b str r3, [r7, #16] - tmpccmr1 |= (TIM_ICFilter << 12U); - 80044c0: 687b ldr r3, [r7, #4] - 80044c2: 031b lsls r3, r3, #12 - 80044c4: 693a ldr r2, [r7, #16] - 80044c6: 4313 orrs r3, r2 - 80044c8: 613b str r3, [r7, #16] - - /* Select the Polarity and set the CC2E Bit */ - tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); - 80044ca: 697b ldr r3, [r7, #20] - 80044cc: f023 03a0 bic.w r3, r3, #160 @ 0xa0 - 80044d0: 617b str r3, [r7, #20] - tmpccer |= (TIM_ICPolarity << 4U); - 80044d2: 68bb ldr r3, [r7, #8] - 80044d4: 011b lsls r3, r3, #4 - 80044d6: 697a ldr r2, [r7, #20] - 80044d8: 4313 orrs r3, r2 - 80044da: 617b str r3, [r7, #20] - - /* Write to TIMx CCMR1 and CCER registers */ - TIMx->CCMR1 = tmpccmr1 ; - 80044dc: 68fb ldr r3, [r7, #12] - 80044de: 693a ldr r2, [r7, #16] - 80044e0: 619a str r2, [r3, #24] - TIMx->CCER = tmpccer; - 80044e2: 68fb ldr r3, [r7, #12] - 80044e4: 697a ldr r2, [r7, #20] - 80044e6: 621a str r2, [r3, #32] -} - 80044e8: bf00 nop - 80044ea: 371c adds r7, #28 - 80044ec: 46bd mov sp, r7 - 80044ee: bc80 pop {r7} - 80044f0: 4770 bx lr - -080044f2 : - * @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) -{ - 80044f2: b480 push {r7} - 80044f4: b085 sub sp, #20 - 80044f6: af00 add r7, sp, #0 - 80044f8: 6078 str r0, [r7, #4] - 80044fa: 6039 str r1, [r7, #0] - uint32_t tmpsmcr; - - /* Get the TIMx SMCR register value */ - tmpsmcr = TIMx->SMCR; - 80044fc: 687b ldr r3, [r7, #4] - 80044fe: 689b ldr r3, [r3, #8] - 8004500: 60fb str r3, [r7, #12] - /* Reset the TS Bits */ - tmpsmcr &= ~TIM_SMCR_TS; - 8004502: 68fb ldr r3, [r7, #12] - 8004504: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004508: 60fb str r3, [r7, #12] - /* Set the Input Trigger source and the slave mode*/ - tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); - 800450a: 683a ldr r2, [r7, #0] - 800450c: 68fb ldr r3, [r7, #12] - 800450e: 4313 orrs r3, r2 - 8004510: f043 0307 orr.w r3, r3, #7 - 8004514: 60fb str r3, [r7, #12] - /* Write to TIMx SMCR */ - TIMx->SMCR = tmpsmcr; - 8004516: 687b ldr r3, [r7, #4] - 8004518: 68fa ldr r2, [r7, #12] - 800451a: 609a str r2, [r3, #8] -} - 800451c: bf00 nop - 800451e: 3714 adds r7, #20 - 8004520: 46bd mov sp, r7 - 8004522: bc80 pop {r7} - 8004524: 4770 bx lr - -08004526 : - * 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) -{ - 8004526: b480 push {r7} - 8004528: b087 sub sp, #28 - 800452a: af00 add r7, sp, #0 - 800452c: 60f8 str r0, [r7, #12] - 800452e: 60b9 str r1, [r7, #8] - 8004530: 607a str r2, [r7, #4] - 8004532: 603b str r3, [r7, #0] - uint32_t tmpsmcr; - - tmpsmcr = TIMx->SMCR; - 8004534: 68fb ldr r3, [r7, #12] - 8004536: 689b ldr r3, [r3, #8] - 8004538: 617b str r3, [r7, #20] - - /* Reset the ETR Bits */ - tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 800453a: 697b ldr r3, [r7, #20] - 800453c: f423 437f bic.w r3, r3, #65280 @ 0xff00 - 8004540: 617b str r3, [r7, #20] - - /* Set the Prescaler, the Filter value and the Polarity */ - tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); - 8004542: 683b ldr r3, [r7, #0] - 8004544: 021a lsls r2, r3, #8 - 8004546: 687b ldr r3, [r7, #4] - 8004548: 431a orrs r2, r3 - 800454a: 68bb ldr r3, [r7, #8] - 800454c: 4313 orrs r3, r2 - 800454e: 697a ldr r2, [r7, #20] - 8004550: 4313 orrs r3, r2 - 8004552: 617b str r3, [r7, #20] - - /* Write to TIMx SMCR */ - TIMx->SMCR = tmpsmcr; - 8004554: 68fb ldr r3, [r7, #12] - 8004556: 697a ldr r2, [r7, #20] - 8004558: 609a str r2, [r3, #8] -} - 800455a: bf00 nop - 800455c: 371c adds r7, #28 - 800455e: 46bd mov sp, r7 - 8004560: bc80 pop {r7} - 8004562: 4770 bx lr - -08004564 : - * mode. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, - const TIM_MasterConfigTypeDef *sMasterConfig) -{ - 8004564: b480 push {r7} - 8004566: b085 sub sp, #20 - 8004568: af00 add r7, sp, #0 - 800456a: 6078 str r0, [r7, #4] - 800456c: 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); - 800456e: 687b ldr r3, [r7, #4] - 8004570: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8004574: 2b01 cmp r3, #1 - 8004576: d101 bne.n 800457c - 8004578: 2302 movs r3, #2 - 800457a: e046 b.n 800460a - 800457c: 687b ldr r3, [r7, #4] - 800457e: 2201 movs r2, #1 - 8004580: f883 203c strb.w r2, [r3, #60] @ 0x3c - - /* Change the handler state */ - htim->State = HAL_TIM_STATE_BUSY; - 8004584: 687b ldr r3, [r7, #4] - 8004586: 2202 movs r2, #2 - 8004588: f883 203d strb.w r2, [r3, #61] @ 0x3d - - /* Get the TIMx CR2 register value */ - tmpcr2 = htim->Instance->CR2; - 800458c: 687b ldr r3, [r7, #4] - 800458e: 681b ldr r3, [r3, #0] - 8004590: 685b ldr r3, [r3, #4] - 8004592: 60fb str r3, [r7, #12] - - /* Get the TIMx SMCR register value */ - tmpsmcr = htim->Instance->SMCR; - 8004594: 687b ldr r3, [r7, #4] - 8004596: 681b ldr r3, [r3, #0] - 8004598: 689b ldr r3, [r3, #8] - 800459a: 60bb str r3, [r7, #8] - - /* Reset the MMS Bits */ - tmpcr2 &= ~TIM_CR2_MMS; - 800459c: 68fb ldr r3, [r7, #12] - 800459e: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80045a2: 60fb str r3, [r7, #12] - /* Select the TRGO source */ - tmpcr2 |= sMasterConfig->MasterOutputTrigger; - 80045a4: 683b ldr r3, [r7, #0] - 80045a6: 681b ldr r3, [r3, #0] - 80045a8: 68fa ldr r2, [r7, #12] - 80045aa: 4313 orrs r3, r2 - 80045ac: 60fb str r3, [r7, #12] - - /* Update TIMx CR2 */ - htim->Instance->CR2 = tmpcr2; - 80045ae: 687b ldr r3, [r7, #4] - 80045b0: 681b ldr r3, [r3, #0] - 80045b2: 68fa ldr r2, [r7, #12] - 80045b4: 605a str r2, [r3, #4] - - if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 80045b6: 687b ldr r3, [r7, #4] - 80045b8: 681b ldr r3, [r3, #0] - 80045ba: 4a16 ldr r2, [pc, #88] @ (8004614 ) - 80045bc: 4293 cmp r3, r2 - 80045be: d00e beq.n 80045de - 80045c0: 687b ldr r3, [r7, #4] - 80045c2: 681b ldr r3, [r3, #0] - 80045c4: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 80045c8: d009 beq.n 80045de - 80045ca: 687b ldr r3, [r7, #4] - 80045cc: 681b ldr r3, [r3, #0] - 80045ce: 4a12 ldr r2, [pc, #72] @ (8004618 ) - 80045d0: 4293 cmp r3, r2 - 80045d2: d004 beq.n 80045de - 80045d4: 687b ldr r3, [r7, #4] - 80045d6: 681b ldr r3, [r3, #0] - 80045d8: 4a10 ldr r2, [pc, #64] @ (800461c ) - 80045da: 4293 cmp r3, r2 - 80045dc: d10c bne.n 80045f8 - { - /* Reset the MSM Bit */ - tmpsmcr &= ~TIM_SMCR_MSM; - 80045de: 68bb ldr r3, [r7, #8] - 80045e0: f023 0380 bic.w r3, r3, #128 @ 0x80 - 80045e4: 60bb str r3, [r7, #8] - /* Set master mode */ - tmpsmcr |= sMasterConfig->MasterSlaveMode; - 80045e6: 683b ldr r3, [r7, #0] - 80045e8: 685b ldr r3, [r3, #4] - 80045ea: 68ba ldr r2, [r7, #8] - 80045ec: 4313 orrs r3, r2 - 80045ee: 60bb str r3, [r7, #8] - - /* Update TIMx SMCR */ - htim->Instance->SMCR = tmpsmcr; - 80045f0: 687b ldr r3, [r7, #4] - 80045f2: 681b ldr r3, [r3, #0] - 80045f4: 68ba ldr r2, [r7, #8] - 80045f6: 609a str r2, [r3, #8] - } - - /* Change the htim state */ - htim->State = HAL_TIM_STATE_READY; - 80045f8: 687b ldr r3, [r7, #4] - 80045fa: 2201 movs r2, #1 - 80045fc: f883 203d strb.w r2, [r3, #61] @ 0x3d - - __HAL_UNLOCK(htim); - 8004600: 687b ldr r3, [r7, #4] - 8004602: 2200 movs r2, #0 - 8004604: f883 203c strb.w r2, [r3, #60] @ 0x3c - - return HAL_OK; - 8004608: 2300 movs r3, #0 -} - 800460a: 4618 mov r0, r3 - 800460c: 3714 adds r7, #20 - 800460e: 46bd mov sp, r7 - 8004610: bc80 pop {r7} - 8004612: 4770 bx lr - 8004614: 40012c00 .word 0x40012c00 - 8004618: 40000400 .word 0x40000400 - 800461c: 40000800 .word 0x40000800 - -08004620 : - * interrupt can be enabled by calling the @ref __HAL_TIM_ENABLE_IT macro. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim, - const TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig) -{ - 8004620: b480 push {r7} - 8004622: b085 sub sp, #20 - 8004624: af00 add r7, sp, #0 - 8004626: 6078 str r0, [r7, #4] - 8004628: 6039 str r1, [r7, #0] - /* Keep this variable initialized to 0 as it is used to configure BDTR register */ - uint32_t tmpbdtr = 0U; - 800462a: 2300 movs r3, #0 - 800462c: 60fb str r3, [r7, #12] - assert_param(IS_TIM_BREAK_STATE(sBreakDeadTimeConfig->BreakState)); - assert_param(IS_TIM_BREAK_POLARITY(sBreakDeadTimeConfig->BreakPolarity)); - assert_param(IS_TIM_AUTOMATIC_OUTPUT_STATE(sBreakDeadTimeConfig->AutomaticOutput)); - - /* Check input state */ - __HAL_LOCK(htim); - 800462e: 687b ldr r3, [r7, #4] - 8004630: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8004634: 2b01 cmp r3, #1 - 8004636: d101 bne.n 800463c - 8004638: 2302 movs r3, #2 - 800463a: e03d b.n 80046b8 - 800463c: 687b ldr r3, [r7, #4] - 800463e: 2201 movs r2, #1 - 8004640: f883 203c strb.w r2, [r3, #60] @ 0x3c - - /* Set the Lock level, the Break enable Bit and the Polarity, the OSSR State, - the OSSI State, the dead time value and the Automatic Output Enable Bit */ - - /* Set the BDTR bits */ - MODIFY_REG(tmpbdtr, TIM_BDTR_DTG, sBreakDeadTimeConfig->DeadTime); - 8004644: 68fb ldr r3, [r7, #12] - 8004646: f023 02ff bic.w r2, r3, #255 @ 0xff - 800464a: 683b ldr r3, [r7, #0] - 800464c: 68db ldr r3, [r3, #12] - 800464e: 4313 orrs r3, r2 - 8004650: 60fb str r3, [r7, #12] - MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, sBreakDeadTimeConfig->LockLevel); - 8004652: 68fb ldr r3, [r7, #12] - 8004654: f423 7240 bic.w r2, r3, #768 @ 0x300 - 8004658: 683b ldr r3, [r7, #0] - 800465a: 689b ldr r3, [r3, #8] - 800465c: 4313 orrs r3, r2 - 800465e: 60fb str r3, [r7, #12] - MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, sBreakDeadTimeConfig->OffStateIDLEMode); - 8004660: 68fb ldr r3, [r7, #12] - 8004662: f423 6280 bic.w r2, r3, #1024 @ 0x400 - 8004666: 683b ldr r3, [r7, #0] - 8004668: 685b ldr r3, [r3, #4] - 800466a: 4313 orrs r3, r2 - 800466c: 60fb str r3, [r7, #12] - MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, sBreakDeadTimeConfig->OffStateRunMode); - 800466e: 68fb ldr r3, [r7, #12] - 8004670: f423 6200 bic.w r2, r3, #2048 @ 0x800 - 8004674: 683b ldr r3, [r7, #0] - 8004676: 681b ldr r3, [r3, #0] - 8004678: 4313 orrs r3, r2 - 800467a: 60fb str r3, [r7, #12] - MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, sBreakDeadTimeConfig->BreakState); - 800467c: 68fb ldr r3, [r7, #12] - 800467e: f423 5280 bic.w r2, r3, #4096 @ 0x1000 - 8004682: 683b ldr r3, [r7, #0] - 8004684: 691b ldr r3, [r3, #16] - 8004686: 4313 orrs r3, r2 - 8004688: 60fb str r3, [r7, #12] - MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, sBreakDeadTimeConfig->BreakPolarity); - 800468a: 68fb ldr r3, [r7, #12] - 800468c: f423 5200 bic.w r2, r3, #8192 @ 0x2000 - 8004690: 683b ldr r3, [r7, #0] - 8004692: 695b ldr r3, [r3, #20] - 8004694: 4313 orrs r3, r2 - 8004696: 60fb str r3, [r7, #12] - MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, sBreakDeadTimeConfig->AutomaticOutput); - 8004698: 68fb ldr r3, [r7, #12] - 800469a: f423 4280 bic.w r2, r3, #16384 @ 0x4000 - 800469e: 683b ldr r3, [r7, #0] - 80046a0: 69db ldr r3, [r3, #28] - 80046a2: 4313 orrs r3, r2 - 80046a4: 60fb str r3, [r7, #12] - - - /* Set TIMx_BDTR */ - htim->Instance->BDTR = tmpbdtr; - 80046a6: 687b ldr r3, [r7, #4] - 80046a8: 681b ldr r3, [r3, #0] - 80046aa: 68fa ldr r2, [r7, #12] - 80046ac: 645a str r2, [r3, #68] @ 0x44 - - __HAL_UNLOCK(htim); - 80046ae: 687b ldr r3, [r7, #4] - 80046b0: 2200 movs r2, #0 - 80046b2: f883 203c strb.w r2, [r3, #60] @ 0x3c - - return HAL_OK; - 80046b6: 2300 movs r3, #0 -} - 80046b8: 4618 mov r0, r3 - 80046ba: 3714 adds r7, #20 - 80046bc: 46bd mov sp, r7 - 80046be: bc80 pop {r7} - 80046c0: 4770 bx lr - -080046c2 : - * @param cfg pointer to a USB_CfgTypeDef structure that contains - * the configuration information for the specified USBx peripheral. - * @retval HAL status - */ -HAL_StatusTypeDef USB_CoreInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg) -{ - 80046c2: b480 push {r7} - 80046c4: b085 sub sp, #20 - 80046c6: af00 add r7, sp, #0 - 80046c8: 60f8 str r0, [r7, #12] - 80046ca: 4638 mov r0, r7 - 80046cc: e880 000e stmia.w r0, {r1, r2, r3} - /* NOTE : - This function is not required by USB Device FS peripheral, it is used - only by USB OTG FS peripheral. - - This function is added to ensure compatibility across platforms. - */ - - return HAL_OK; - 80046d0: 2300 movs r3, #0 -} - 80046d2: 4618 mov r0, r3 - 80046d4: 3714 adds r7, #20 - 80046d6: 46bd mov sp, r7 - 80046d8: bc80 pop {r7} - 80046da: 4770 bx lr - -080046dc : - * Enables the controller's Global Int in the AHB Config reg - * @param USBx Selected device - * @retval HAL status - */ -HAL_StatusTypeDef USB_EnableGlobalInt(USB_TypeDef *USBx) -{ - 80046dc: b480 push {r7} - 80046de: b085 sub sp, #20 - 80046e0: af00 add r7, sp, #0 - 80046e2: 6078 str r0, [r7, #4] - uint32_t winterruptmask; - - /* Clear pending interrupts */ - USBx->ISTR = 0U; - 80046e4: 687b ldr r3, [r7, #4] - 80046e6: 2200 movs r2, #0 - 80046e8: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - /* Set winterruptmask variable */ - winterruptmask = USB_CNTR_CTRM | USB_CNTR_WKUPM | - 80046ec: f44f 433f mov.w r3, #48896 @ 0xbf00 - 80046f0: 60fb str r3, [r7, #12] - USB_CNTR_SUSPM | USB_CNTR_ERRM | - USB_CNTR_SOFM | USB_CNTR_ESOFM | - USB_CNTR_RESETM; - - /* Set interrupt mask */ - USBx->CNTR = (uint16_t)winterruptmask; - 80046f2: 68fb ldr r3, [r7, #12] - 80046f4: b29a uxth r2, r3 - 80046f6: 687b ldr r3, [r7, #4] - 80046f8: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - return HAL_OK; - 80046fc: 2300 movs r3, #0 -} - 80046fe: 4618 mov r0, r3 - 8004700: 3714 adds r7, #20 - 8004702: 46bd mov sp, r7 - 8004704: bc80 pop {r7} - 8004706: 4770 bx lr - -08004708 : - * Disable the controller's Global Int in the AHB Config reg - * @param USBx Selected device - * @retval HAL status - */ -HAL_StatusTypeDef USB_DisableGlobalInt(USB_TypeDef *USBx) -{ - 8004708: b480 push {r7} - 800470a: b085 sub sp, #20 - 800470c: af00 add r7, sp, #0 - 800470e: 6078 str r0, [r7, #4] - uint32_t winterruptmask; - - /* Set winterruptmask variable */ - winterruptmask = USB_CNTR_CTRM | USB_CNTR_WKUPM | - 8004710: f44f 433f mov.w r3, #48896 @ 0xbf00 - 8004714: 60fb str r3, [r7, #12] - USB_CNTR_SUSPM | USB_CNTR_ERRM | - USB_CNTR_SOFM | USB_CNTR_ESOFM | - USB_CNTR_RESETM; - - /* Clear interrupt mask */ - USBx->CNTR &= (uint16_t)(~winterruptmask); - 8004716: 687b ldr r3, [r7, #4] - 8004718: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 800471c: b29a uxth r2, r3 - 800471e: 68fb ldr r3, [r7, #12] - 8004720: b29b uxth r3, r3 - 8004722: 43db mvns r3, r3 - 8004724: b29b uxth r3, r3 - 8004726: 4013 ands r3, r2 - 8004728: b29a uxth r2, r3 - 800472a: 687b ldr r3, [r7, #4] - 800472c: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - return HAL_OK; - 8004730: 2300 movs r3, #0 -} - 8004732: 4618 mov r0, r3 - 8004734: 3714 adds r7, #20 - 8004736: 46bd mov sp, r7 - 8004738: bc80 pop {r7} - 800473a: 4770 bx lr - -0800473c : - * This parameter can be one of the these values: - * @arg USB_DEVICE_MODE Peripheral mode - * @retval HAL status - */ -HAL_StatusTypeDef USB_SetCurrentMode(USB_TypeDef *USBx, USB_ModeTypeDef mode) -{ - 800473c: b480 push {r7} - 800473e: b083 sub sp, #12 - 8004740: af00 add r7, sp, #0 - 8004742: 6078 str r0, [r7, #4] - 8004744: 460b mov r3, r1 - 8004746: 70fb strb r3, [r7, #3] - - /* NOTE : - This function is not required by USB Device FS peripheral, it is used - only by USB OTG FS peripheral. - - This function is added to ensure compatibility across platforms. - */ - return HAL_OK; - 8004748: 2300 movs r3, #0 -} - 800474a: 4618 mov r0, r3 - 800474c: 370c adds r7, #12 - 800474e: 46bd mov sp, r7 - 8004750: bc80 pop {r7} - 8004752: 4770 bx lr - -08004754 : - * @param cfg pointer to a USB_CfgTypeDef structure that contains - * the configuration information for the specified USBx peripheral. - * @retval HAL status - */ -HAL_StatusTypeDef USB_DevInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg) -{ - 8004754: b480 push {r7} - 8004756: b085 sub sp, #20 - 8004758: af00 add r7, sp, #0 - 800475a: 60f8 str r0, [r7, #12] - 800475c: 4638 mov r0, r7 - 800475e: e880 000e stmia.w r0, {r1, r2, r3} - /* Prevent unused argument(s) compilation warning */ - UNUSED(cfg); - - /* Init Device */ - /* CNTR_FRES = 1 */ - USBx->CNTR = (uint16_t)USB_CNTR_FRES; - 8004762: 68fb ldr r3, [r7, #12] - 8004764: 2201 movs r2, #1 - 8004766: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - /* CNTR_FRES = 0 */ - USBx->CNTR = 0U; - 800476a: 68fb ldr r3, [r7, #12] - 800476c: 2200 movs r2, #0 - 800476e: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - /* Clear pending interrupts */ - USBx->ISTR = 0U; - 8004772: 68fb ldr r3, [r7, #12] - 8004774: 2200 movs r2, #0 - 8004776: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - /*Set Btable Address*/ - USBx->BTABLE = BTABLE_ADDRESS; - 800477a: 68fb ldr r3, [r7, #12] - 800477c: 2200 movs r2, #0 - 800477e: f8a3 2050 strh.w r2, [r3, #80] @ 0x50 - - return HAL_OK; - 8004782: 2300 movs r3, #0 -} - 8004784: 4618 mov r0, r3 - 8004786: 3714 adds r7, #20 - 8004788: 46bd mov sp, r7 - 800478a: bc80 pop {r7} - 800478c: 4770 bx lr - ... - -08004790 : - * @param USBx Selected device - * @param ep pointer to endpoint structure - * @retval HAL status - */ -HAL_StatusTypeDef USB_ActivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep) -{ - 8004790: b480 push {r7} - 8004792: b09d sub sp, #116 @ 0x74 - 8004794: af00 add r7, sp, #0 - 8004796: 6078 str r0, [r7, #4] - 8004798: 6039 str r1, [r7, #0] - HAL_StatusTypeDef ret = HAL_OK; - 800479a: 2300 movs r3, #0 - 800479c: f887 306f strb.w r3, [r7, #111] @ 0x6f - uint16_t wEpRegVal; - - wEpRegVal = PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_T_MASK; - 80047a0: 687a ldr r2, [r7, #4] - 80047a2: 683b ldr r3, [r7, #0] - 80047a4: 781b ldrb r3, [r3, #0] - 80047a6: 009b lsls r3, r3, #2 - 80047a8: 4413 add r3, r2 - 80047aa: 881b ldrh r3, [r3, #0] - 80047ac: b29b uxth r3, r3 - 80047ae: f423 43ec bic.w r3, r3, #30208 @ 0x7600 - 80047b2: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80047b6: f8a7 306c strh.w r3, [r7, #108] @ 0x6c - - /* initialize Endpoint */ - switch (ep->type) - 80047ba: 683b ldr r3, [r7, #0] - 80047bc: 78db ldrb r3, [r3, #3] - 80047be: 2b03 cmp r3, #3 - 80047c0: d81f bhi.n 8004802 - 80047c2: a201 add r2, pc, #4 @ (adr r2, 80047c8 ) - 80047c4: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80047c8: 080047d9 .word 0x080047d9 - 80047cc: 080047f5 .word 0x080047f5 - 80047d0: 0800480b .word 0x0800480b - 80047d4: 080047e7 .word 0x080047e7 - { - case EP_TYPE_CTRL: - wEpRegVal |= USB_EP_CONTROL; - 80047d8: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c - 80047dc: f443 7300 orr.w r3, r3, #512 @ 0x200 - 80047e0: f8a7 306c strh.w r3, [r7, #108] @ 0x6c - break; - 80047e4: e012 b.n 800480c - case EP_TYPE_BULK: - wEpRegVal |= USB_EP_BULK; - break; - - case EP_TYPE_INTR: - wEpRegVal |= USB_EP_INTERRUPT; - 80047e6: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c - 80047ea: f443 63c0 orr.w r3, r3, #1536 @ 0x600 - 80047ee: f8a7 306c strh.w r3, [r7, #108] @ 0x6c - break; - 80047f2: e00b b.n 800480c - - case EP_TYPE_ISOC: - wEpRegVal |= USB_EP_ISOCHRONOUS; - 80047f4: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c - 80047f8: f443 6380 orr.w r3, r3, #1024 @ 0x400 - 80047fc: f8a7 306c strh.w r3, [r7, #108] @ 0x6c - break; - 8004800: e004 b.n 800480c - - default: - ret = HAL_ERROR; - 8004802: 2301 movs r3, #1 - 8004804: f887 306f strb.w r3, [r7, #111] @ 0x6f - break; - 8004808: e000 b.n 800480c - break; - 800480a: bf00 nop - } - - PCD_SET_ENDPOINT(USBx, ep->num, (wEpRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); - 800480c: 687a ldr r2, [r7, #4] - 800480e: 683b ldr r3, [r7, #0] - 8004810: 781b ldrb r3, [r3, #0] - 8004812: 009b lsls r3, r3, #2 - 8004814: 441a add r2, r3 - 8004816: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c - 800481a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800481e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004822: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004826: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800482a: b29b uxth r3, r3 - 800482c: 8013 strh r3, [r2, #0] - - PCD_SET_EP_ADDRESS(USBx, ep->num, ep->num); - 800482e: 687a ldr r2, [r7, #4] - 8004830: 683b ldr r3, [r7, #0] - 8004832: 781b ldrb r3, [r3, #0] - 8004834: 009b lsls r3, r3, #2 - 8004836: 4413 add r3, r2 - 8004838: 881b ldrh r3, [r3, #0] - 800483a: b29b uxth r3, r3 - 800483c: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004840: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004844: b29b uxth r3, r3 - 8004846: 683a ldr r2, [r7, #0] - 8004848: 7812 ldrb r2, [r2, #0] - 800484a: 4313 orrs r3, r2 - 800484c: f8a7 3066 strh.w r3, [r7, #102] @ 0x66 - 8004850: 687a ldr r2, [r7, #4] - 8004852: 683b ldr r3, [r7, #0] - 8004854: 781b ldrb r3, [r3, #0] - 8004856: 009b lsls r3, r3, #2 - 8004858: 441a add r2, r3 - 800485a: f8b7 3066 ldrh.w r3, [r7, #102] @ 0x66 - 800485e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004862: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004866: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800486a: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800486e: b29b uxth r3, r3 - 8004870: 8013 strh r3, [r2, #0] - - if (ep->doublebuffer == 0U) - 8004872: 683b ldr r3, [r7, #0] - 8004874: 7b1b ldrb r3, [r3, #12] - 8004876: 2b00 cmp r3, #0 - 8004878: f040 8178 bne.w 8004b6c - { - if (ep->is_in != 0U) - 800487c: 683b ldr r3, [r7, #0] - 800487e: 785b ldrb r3, [r3, #1] - 8004880: 2b00 cmp r3, #0 - 8004882: f000 8084 beq.w 800498e - { - /*Set the endpoint Transmit buffer address */ - PCD_SET_EP_TX_ADDRESS(USBx, ep->num, ep->pmaadress); - 8004886: 687b ldr r3, [r7, #4] - 8004888: 61bb str r3, [r7, #24] - 800488a: 687b ldr r3, [r7, #4] - 800488c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8004890: b29b uxth r3, r3 - 8004892: 461a mov r2, r3 - 8004894: 69bb ldr r3, [r7, #24] - 8004896: 4413 add r3, r2 - 8004898: 61bb str r3, [r7, #24] - 800489a: 683b ldr r3, [r7, #0] - 800489c: 781b ldrb r3, [r3, #0] - 800489e: 011a lsls r2, r3, #4 - 80048a0: 69bb ldr r3, [r7, #24] - 80048a2: 4413 add r3, r2 - 80048a4: f503 6380 add.w r3, r3, #1024 @ 0x400 - 80048a8: 617b str r3, [r7, #20] - 80048aa: 683b ldr r3, [r7, #0] - 80048ac: 88db ldrh r3, [r3, #6] - 80048ae: 085b lsrs r3, r3, #1 - 80048b0: b29b uxth r3, r3 - 80048b2: 005b lsls r3, r3, #1 - 80048b4: b29a uxth r2, r3 - 80048b6: 697b ldr r3, [r7, #20] - 80048b8: 801a strh r2, [r3, #0] - PCD_CLEAR_TX_DTOG(USBx, ep->num); - 80048ba: 687a ldr r2, [r7, #4] - 80048bc: 683b ldr r3, [r7, #0] - 80048be: 781b ldrb r3, [r3, #0] - 80048c0: 009b lsls r3, r3, #2 - 80048c2: 4413 add r3, r2 - 80048c4: 881b ldrh r3, [r3, #0] - 80048c6: 827b strh r3, [r7, #18] - 80048c8: 8a7b ldrh r3, [r7, #18] - 80048ca: f003 0340 and.w r3, r3, #64 @ 0x40 - 80048ce: 2b00 cmp r3, #0 - 80048d0: d01b beq.n 800490a - 80048d2: 687a ldr r2, [r7, #4] - 80048d4: 683b ldr r3, [r7, #0] - 80048d6: 781b ldrb r3, [r3, #0] - 80048d8: 009b lsls r3, r3, #2 - 80048da: 4413 add r3, r2 - 80048dc: 881b ldrh r3, [r3, #0] - 80048de: b29b uxth r3, r3 - 80048e0: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80048e4: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80048e8: 823b strh r3, [r7, #16] - 80048ea: 687a ldr r2, [r7, #4] - 80048ec: 683b ldr r3, [r7, #0] - 80048ee: 781b ldrb r3, [r3, #0] - 80048f0: 009b lsls r3, r3, #2 - 80048f2: 441a add r2, r3 - 80048f4: 8a3b ldrh r3, [r7, #16] - 80048f6: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80048fa: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80048fe: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004902: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8004906: b29b uxth r3, r3 - 8004908: 8013 strh r3, [r2, #0] - - if (ep->type != EP_TYPE_ISOC) - 800490a: 683b ldr r3, [r7, #0] - 800490c: 78db ldrb r3, [r3, #3] - 800490e: 2b01 cmp r3, #1 - 8004910: d020 beq.n 8004954 - { - /* Configure NAK status for the Endpoint */ - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); - 8004912: 687a ldr r2, [r7, #4] - 8004914: 683b ldr r3, [r7, #0] - 8004916: 781b ldrb r3, [r3, #0] - 8004918: 009b lsls r3, r3, #2 - 800491a: 4413 add r3, r2 - 800491c: 881b ldrh r3, [r3, #0] - 800491e: b29b uxth r3, r3 - 8004920: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004924: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8004928: 81bb strh r3, [r7, #12] - 800492a: 89bb ldrh r3, [r7, #12] - 800492c: f083 0320 eor.w r3, r3, #32 - 8004930: 81bb strh r3, [r7, #12] - 8004932: 687a ldr r2, [r7, #4] - 8004934: 683b ldr r3, [r7, #0] - 8004936: 781b ldrb r3, [r3, #0] - 8004938: 009b lsls r3, r3, #2 - 800493a: 441a add r2, r3 - 800493c: 89bb ldrh r3, [r7, #12] - 800493e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004942: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004946: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800494a: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800494e: b29b uxth r3, r3 - 8004950: 8013 strh r3, [r2, #0] - 8004952: e2d5 b.n 8004f00 - } - else - { - /* Configure TX Endpoint to disabled state */ - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); - 8004954: 687a ldr r2, [r7, #4] - 8004956: 683b ldr r3, [r7, #0] - 8004958: 781b ldrb r3, [r3, #0] - 800495a: 009b lsls r3, r3, #2 - 800495c: 4413 add r3, r2 - 800495e: 881b ldrh r3, [r3, #0] - 8004960: b29b uxth r3, r3 - 8004962: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004966: f023 0340 bic.w r3, r3, #64 @ 0x40 - 800496a: 81fb strh r3, [r7, #14] - 800496c: 687a ldr r2, [r7, #4] - 800496e: 683b ldr r3, [r7, #0] - 8004970: 781b ldrb r3, [r3, #0] - 8004972: 009b lsls r3, r3, #2 - 8004974: 441a add r2, r3 - 8004976: 89fb ldrh r3, [r7, #14] - 8004978: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800497c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004980: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004984: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004988: b29b uxth r3, r3 - 800498a: 8013 strh r3, [r2, #0] - 800498c: e2b8 b.n 8004f00 - } - } - else - { - /* Set the endpoint Receive buffer address */ - PCD_SET_EP_RX_ADDRESS(USBx, ep->num, ep->pmaadress); - 800498e: 687b ldr r3, [r7, #4] - 8004990: 633b str r3, [r7, #48] @ 0x30 - 8004992: 687b ldr r3, [r7, #4] - 8004994: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8004998: b29b uxth r3, r3 - 800499a: 461a mov r2, r3 - 800499c: 6b3b ldr r3, [r7, #48] @ 0x30 - 800499e: 4413 add r3, r2 - 80049a0: 633b str r3, [r7, #48] @ 0x30 - 80049a2: 683b ldr r3, [r7, #0] - 80049a4: 781b ldrb r3, [r3, #0] - 80049a6: 011a lsls r2, r3, #4 - 80049a8: 6b3b ldr r3, [r7, #48] @ 0x30 - 80049aa: 4413 add r3, r2 - 80049ac: f503 6381 add.w r3, r3, #1032 @ 0x408 - 80049b0: 62fb str r3, [r7, #44] @ 0x2c - 80049b2: 683b ldr r3, [r7, #0] - 80049b4: 88db ldrh r3, [r3, #6] - 80049b6: 085b lsrs r3, r3, #1 - 80049b8: b29b uxth r3, r3 - 80049ba: 005b lsls r3, r3, #1 - 80049bc: b29a uxth r2, r3 - 80049be: 6afb ldr r3, [r7, #44] @ 0x2c - 80049c0: 801a strh r2, [r3, #0] - - /* Set the endpoint Receive buffer counter */ - PCD_SET_EP_RX_CNT(USBx, ep->num, ep->maxpacket); - 80049c2: 687b ldr r3, [r7, #4] - 80049c4: 62bb str r3, [r7, #40] @ 0x28 - 80049c6: 687b ldr r3, [r7, #4] - 80049c8: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80049cc: b29b uxth r3, r3 - 80049ce: 461a mov r2, r3 - 80049d0: 6abb ldr r3, [r7, #40] @ 0x28 - 80049d2: 4413 add r3, r2 - 80049d4: 62bb str r3, [r7, #40] @ 0x28 - 80049d6: 683b ldr r3, [r7, #0] - 80049d8: 781b ldrb r3, [r3, #0] - 80049da: 011a lsls r2, r3, #4 - 80049dc: 6abb ldr r3, [r7, #40] @ 0x28 - 80049de: 4413 add r3, r2 - 80049e0: f203 430c addw r3, r3, #1036 @ 0x40c - 80049e4: 627b str r3, [r7, #36] @ 0x24 - 80049e6: 6a7b ldr r3, [r7, #36] @ 0x24 - 80049e8: 881b ldrh r3, [r3, #0] - 80049ea: b29b uxth r3, r3 - 80049ec: f3c3 0309 ubfx r3, r3, #0, #10 - 80049f0: b29a uxth r2, r3 - 80049f2: 6a7b ldr r3, [r7, #36] @ 0x24 - 80049f4: 801a strh r2, [r3, #0] - 80049f6: 683b ldr r3, [r7, #0] - 80049f8: 691b ldr r3, [r3, #16] - 80049fa: 2b3e cmp r3, #62 @ 0x3e - 80049fc: d91d bls.n 8004a3a - 80049fe: 683b ldr r3, [r7, #0] - 8004a00: 691b ldr r3, [r3, #16] - 8004a02: 095b lsrs r3, r3, #5 - 8004a04: 66bb str r3, [r7, #104] @ 0x68 - 8004a06: 683b ldr r3, [r7, #0] - 8004a08: 691b ldr r3, [r3, #16] - 8004a0a: f003 031f and.w r3, r3, #31 - 8004a0e: 2b00 cmp r3, #0 - 8004a10: d102 bne.n 8004a18 - 8004a12: 6ebb ldr r3, [r7, #104] @ 0x68 - 8004a14: 3b01 subs r3, #1 - 8004a16: 66bb str r3, [r7, #104] @ 0x68 - 8004a18: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004a1a: 881b ldrh r3, [r3, #0] - 8004a1c: b29a uxth r2, r3 - 8004a1e: 6ebb ldr r3, [r7, #104] @ 0x68 - 8004a20: b29b uxth r3, r3 - 8004a22: 029b lsls r3, r3, #10 - 8004a24: b29b uxth r3, r3 - 8004a26: 4313 orrs r3, r2 - 8004a28: b29b uxth r3, r3 - 8004a2a: ea6f 4343 mvn.w r3, r3, lsl #17 - 8004a2e: ea6f 4353 mvn.w r3, r3, lsr #17 - 8004a32: b29a uxth r2, r3 - 8004a34: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004a36: 801a strh r2, [r3, #0] - 8004a38: e026 b.n 8004a88 - 8004a3a: 683b ldr r3, [r7, #0] - 8004a3c: 691b ldr r3, [r3, #16] - 8004a3e: 2b00 cmp r3, #0 - 8004a40: d10a bne.n 8004a58 - 8004a42: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004a44: 881b ldrh r3, [r3, #0] - 8004a46: b29b uxth r3, r3 - 8004a48: ea6f 4343 mvn.w r3, r3, lsl #17 - 8004a4c: ea6f 4353 mvn.w r3, r3, lsr #17 - 8004a50: b29a uxth r2, r3 - 8004a52: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004a54: 801a strh r2, [r3, #0] - 8004a56: e017 b.n 8004a88 - 8004a58: 683b ldr r3, [r7, #0] - 8004a5a: 691b ldr r3, [r3, #16] - 8004a5c: 085b lsrs r3, r3, #1 - 8004a5e: 66bb str r3, [r7, #104] @ 0x68 - 8004a60: 683b ldr r3, [r7, #0] - 8004a62: 691b ldr r3, [r3, #16] - 8004a64: f003 0301 and.w r3, r3, #1 - 8004a68: 2b00 cmp r3, #0 - 8004a6a: d002 beq.n 8004a72 - 8004a6c: 6ebb ldr r3, [r7, #104] @ 0x68 - 8004a6e: 3301 adds r3, #1 - 8004a70: 66bb str r3, [r7, #104] @ 0x68 - 8004a72: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004a74: 881b ldrh r3, [r3, #0] - 8004a76: b29a uxth r2, r3 - 8004a78: 6ebb ldr r3, [r7, #104] @ 0x68 - 8004a7a: b29b uxth r3, r3 - 8004a7c: 029b lsls r3, r3, #10 - 8004a7e: b29b uxth r3, r3 - 8004a80: 4313 orrs r3, r2 - 8004a82: b29a uxth r2, r3 - 8004a84: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004a86: 801a strh r2, [r3, #0] - PCD_CLEAR_RX_DTOG(USBx, ep->num); - 8004a88: 687a ldr r2, [r7, #4] - 8004a8a: 683b ldr r3, [r7, #0] - 8004a8c: 781b ldrb r3, [r3, #0] - 8004a8e: 009b lsls r3, r3, #2 - 8004a90: 4413 add r3, r2 - 8004a92: 881b ldrh r3, [r3, #0] - 8004a94: 847b strh r3, [r7, #34] @ 0x22 - 8004a96: 8c7b ldrh r3, [r7, #34] @ 0x22 - 8004a98: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8004a9c: 2b00 cmp r3, #0 - 8004a9e: d01b beq.n 8004ad8 - 8004aa0: 687a ldr r2, [r7, #4] - 8004aa2: 683b ldr r3, [r7, #0] - 8004aa4: 781b ldrb r3, [r3, #0] - 8004aa6: 009b lsls r3, r3, #2 - 8004aa8: 4413 add r3, r2 - 8004aaa: 881b ldrh r3, [r3, #0] - 8004aac: b29b uxth r3, r3 - 8004aae: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004ab2: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004ab6: 843b strh r3, [r7, #32] - 8004ab8: 687a ldr r2, [r7, #4] - 8004aba: 683b ldr r3, [r7, #0] - 8004abc: 781b ldrb r3, [r3, #0] - 8004abe: 009b lsls r3, r3, #2 - 8004ac0: 441a add r2, r3 - 8004ac2: 8c3b ldrh r3, [r7, #32] - 8004ac4: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004ac8: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004acc: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8004ad0: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004ad4: b29b uxth r3, r3 - 8004ad6: 8013 strh r3, [r2, #0] - - if (ep->num == 0U) - 8004ad8: 683b ldr r3, [r7, #0] - 8004ada: 781b ldrb r3, [r3, #0] - 8004adc: 2b00 cmp r3, #0 - 8004ade: d124 bne.n 8004b2a - { - /* Configure VALID status for EP0 */ - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); - 8004ae0: 687a ldr r2, [r7, #4] - 8004ae2: 683b ldr r3, [r7, #0] - 8004ae4: 781b ldrb r3, [r3, #0] - 8004ae6: 009b lsls r3, r3, #2 - 8004ae8: 4413 add r3, r2 - 8004aea: 881b ldrh r3, [r3, #0] - 8004aec: b29b uxth r3, r3 - 8004aee: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8004af2: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004af6: 83bb strh r3, [r7, #28] - 8004af8: 8bbb ldrh r3, [r7, #28] - 8004afa: f483 5380 eor.w r3, r3, #4096 @ 0x1000 - 8004afe: 83bb strh r3, [r7, #28] - 8004b00: 8bbb ldrh r3, [r7, #28] - 8004b02: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 8004b06: 83bb strh r3, [r7, #28] - 8004b08: 687a ldr r2, [r7, #4] - 8004b0a: 683b ldr r3, [r7, #0] - 8004b0c: 781b ldrb r3, [r3, #0] - 8004b0e: 009b lsls r3, r3, #2 - 8004b10: 441a add r2, r3 - 8004b12: 8bbb ldrh r3, [r7, #28] - 8004b14: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004b18: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004b1c: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004b20: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004b24: b29b uxth r3, r3 - 8004b26: 8013 strh r3, [r2, #0] - 8004b28: e1ea b.n 8004f00 - } - else - { - /* Configure NAK status for OUT Endpoint */ - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_NAK); - 8004b2a: 687a ldr r2, [r7, #4] - 8004b2c: 683b ldr r3, [r7, #0] - 8004b2e: 781b ldrb r3, [r3, #0] - 8004b30: 009b lsls r3, r3, #2 - 8004b32: 4413 add r3, r2 - 8004b34: 881b ldrh r3, [r3, #0] - 8004b36: b29b uxth r3, r3 - 8004b38: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8004b3c: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004b40: 83fb strh r3, [r7, #30] - 8004b42: 8bfb ldrh r3, [r7, #30] - 8004b44: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 8004b48: 83fb strh r3, [r7, #30] - 8004b4a: 687a ldr r2, [r7, #4] - 8004b4c: 683b ldr r3, [r7, #0] - 8004b4e: 781b ldrb r3, [r3, #0] - 8004b50: 009b lsls r3, r3, #2 - 8004b52: 441a add r2, r3 - 8004b54: 8bfb ldrh r3, [r7, #30] - 8004b56: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004b5a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004b5e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004b62: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004b66: b29b uxth r3, r3 - 8004b68: 8013 strh r3, [r2, #0] - 8004b6a: e1c9 b.n 8004f00 - } -#if (USE_USB_DOUBLE_BUFFER == 1U) - /* Double Buffer */ - else - { - if (ep->type == EP_TYPE_BULK) - 8004b6c: 683b ldr r3, [r7, #0] - 8004b6e: 78db ldrb r3, [r3, #3] - 8004b70: 2b02 cmp r3, #2 - 8004b72: d11e bne.n 8004bb2 - { - /* Set bulk endpoint as double buffered */ - PCD_SET_BULK_EP_DBUF(USBx, ep->num); - 8004b74: 687a ldr r2, [r7, #4] - 8004b76: 683b ldr r3, [r7, #0] - 8004b78: 781b ldrb r3, [r3, #0] - 8004b7a: 009b lsls r3, r3, #2 - 8004b7c: 4413 add r3, r2 - 8004b7e: 881b ldrh r3, [r3, #0] - 8004b80: b29b uxth r3, r3 - 8004b82: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004b86: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004b8a: f8a7 3062 strh.w r3, [r7, #98] @ 0x62 - 8004b8e: 687a ldr r2, [r7, #4] - 8004b90: 683b ldr r3, [r7, #0] - 8004b92: 781b ldrb r3, [r3, #0] - 8004b94: 009b lsls r3, r3, #2 - 8004b96: 441a add r2, r3 - 8004b98: f8b7 3062 ldrh.w r3, [r7, #98] @ 0x62 - 8004b9c: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004ba0: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004ba4: f443 4301 orr.w r3, r3, #33024 @ 0x8100 - 8004ba8: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004bac: b29b uxth r3, r3 - 8004bae: 8013 strh r3, [r2, #0] - 8004bb0: e01d b.n 8004bee - } - else - { - /* Set the ISOC endpoint in double buffer mode */ - PCD_CLEAR_EP_KIND(USBx, ep->num); - 8004bb2: 687a ldr r2, [r7, #4] - 8004bb4: 683b ldr r3, [r7, #0] - 8004bb6: 781b ldrb r3, [r3, #0] - 8004bb8: 009b lsls r3, r3, #2 - 8004bba: 4413 add r3, r2 - 8004bbc: 881b ldrh r3, [r3, #0] - 8004bbe: b29b uxth r3, r3 - 8004bc0: f423 43e2 bic.w r3, r3, #28928 @ 0x7100 - 8004bc4: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004bc8: f8a7 3064 strh.w r3, [r7, #100] @ 0x64 - 8004bcc: 687a ldr r2, [r7, #4] - 8004bce: 683b ldr r3, [r7, #0] - 8004bd0: 781b ldrb r3, [r3, #0] - 8004bd2: 009b lsls r3, r3, #2 - 8004bd4: 441a add r2, r3 - 8004bd6: f8b7 3064 ldrh.w r3, [r7, #100] @ 0x64 - 8004bda: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004bde: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004be2: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004be6: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004bea: b29b uxth r3, r3 - 8004bec: 8013 strh r3, [r2, #0] - } - - /* Set buffer address for double buffered mode */ - PCD_SET_EP_DBUF_ADDR(USBx, ep->num, ep->pmaaddr0, ep->pmaaddr1); - 8004bee: 687b ldr r3, [r7, #4] - 8004bf0: 65fb str r3, [r7, #92] @ 0x5c - 8004bf2: 687b ldr r3, [r7, #4] - 8004bf4: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8004bf8: b29b uxth r3, r3 - 8004bfa: 461a mov r2, r3 - 8004bfc: 6dfb ldr r3, [r7, #92] @ 0x5c - 8004bfe: 4413 add r3, r2 - 8004c00: 65fb str r3, [r7, #92] @ 0x5c - 8004c02: 683b ldr r3, [r7, #0] - 8004c04: 781b ldrb r3, [r3, #0] - 8004c06: 011a lsls r2, r3, #4 - 8004c08: 6dfb ldr r3, [r7, #92] @ 0x5c - 8004c0a: 4413 add r3, r2 - 8004c0c: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8004c10: 65bb str r3, [r7, #88] @ 0x58 - 8004c12: 683b ldr r3, [r7, #0] - 8004c14: 891b ldrh r3, [r3, #8] - 8004c16: 085b lsrs r3, r3, #1 - 8004c18: b29b uxth r3, r3 - 8004c1a: 005b lsls r3, r3, #1 - 8004c1c: b29a uxth r2, r3 - 8004c1e: 6dbb ldr r3, [r7, #88] @ 0x58 - 8004c20: 801a strh r2, [r3, #0] - 8004c22: 687b ldr r3, [r7, #4] - 8004c24: 657b str r3, [r7, #84] @ 0x54 - 8004c26: 687b ldr r3, [r7, #4] - 8004c28: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8004c2c: b29b uxth r3, r3 - 8004c2e: 461a mov r2, r3 - 8004c30: 6d7b ldr r3, [r7, #84] @ 0x54 - 8004c32: 4413 add r3, r2 - 8004c34: 657b str r3, [r7, #84] @ 0x54 - 8004c36: 683b ldr r3, [r7, #0] - 8004c38: 781b ldrb r3, [r3, #0] - 8004c3a: 011a lsls r2, r3, #4 - 8004c3c: 6d7b ldr r3, [r7, #84] @ 0x54 - 8004c3e: 4413 add r3, r2 - 8004c40: f503 6381 add.w r3, r3, #1032 @ 0x408 - 8004c44: 653b str r3, [r7, #80] @ 0x50 - 8004c46: 683b ldr r3, [r7, #0] - 8004c48: 895b ldrh r3, [r3, #10] - 8004c4a: 085b lsrs r3, r3, #1 - 8004c4c: b29b uxth r3, r3 - 8004c4e: 005b lsls r3, r3, #1 - 8004c50: b29a uxth r2, r3 - 8004c52: 6d3b ldr r3, [r7, #80] @ 0x50 - 8004c54: 801a strh r2, [r3, #0] - - if (ep->is_in == 0U) - 8004c56: 683b ldr r3, [r7, #0] - 8004c58: 785b ldrb r3, [r3, #1] - 8004c5a: 2b00 cmp r3, #0 - 8004c5c: f040 8093 bne.w 8004d86 - { - /* Clear the data toggle bits for the endpoint IN/OUT */ - PCD_CLEAR_RX_DTOG(USBx, ep->num); - 8004c60: 687a ldr r2, [r7, #4] - 8004c62: 683b ldr r3, [r7, #0] - 8004c64: 781b ldrb r3, [r3, #0] - 8004c66: 009b lsls r3, r3, #2 - 8004c68: 4413 add r3, r2 - 8004c6a: 881b ldrh r3, [r3, #0] - 8004c6c: f8a7 3040 strh.w r3, [r7, #64] @ 0x40 - 8004c70: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 - 8004c74: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8004c78: 2b00 cmp r3, #0 - 8004c7a: d01b beq.n 8004cb4 - 8004c7c: 687a ldr r2, [r7, #4] - 8004c7e: 683b ldr r3, [r7, #0] - 8004c80: 781b ldrb r3, [r3, #0] - 8004c82: 009b lsls r3, r3, #2 - 8004c84: 4413 add r3, r2 - 8004c86: 881b ldrh r3, [r3, #0] - 8004c88: b29b uxth r3, r3 - 8004c8a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004c8e: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004c92: 87fb strh r3, [r7, #62] @ 0x3e - 8004c94: 687a ldr r2, [r7, #4] - 8004c96: 683b ldr r3, [r7, #0] - 8004c98: 781b ldrb r3, [r3, #0] - 8004c9a: 009b lsls r3, r3, #2 - 8004c9c: 441a add r2, r3 - 8004c9e: 8ffb ldrh r3, [r7, #62] @ 0x3e - 8004ca0: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004ca4: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004ca8: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8004cac: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004cb0: b29b uxth r3, r3 - 8004cb2: 8013 strh r3, [r2, #0] - PCD_CLEAR_TX_DTOG(USBx, ep->num); - 8004cb4: 687a ldr r2, [r7, #4] - 8004cb6: 683b ldr r3, [r7, #0] - 8004cb8: 781b ldrb r3, [r3, #0] - 8004cba: 009b lsls r3, r3, #2 - 8004cbc: 4413 add r3, r2 - 8004cbe: 881b ldrh r3, [r3, #0] - 8004cc0: 87bb strh r3, [r7, #60] @ 0x3c - 8004cc2: 8fbb ldrh r3, [r7, #60] @ 0x3c - 8004cc4: f003 0340 and.w r3, r3, #64 @ 0x40 - 8004cc8: 2b00 cmp r3, #0 - 8004cca: d01b beq.n 8004d04 - 8004ccc: 687a ldr r2, [r7, #4] - 8004cce: 683b ldr r3, [r7, #0] - 8004cd0: 781b ldrb r3, [r3, #0] - 8004cd2: 009b lsls r3, r3, #2 - 8004cd4: 4413 add r3, r2 - 8004cd6: 881b ldrh r3, [r3, #0] - 8004cd8: b29b uxth r3, r3 - 8004cda: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004cde: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004ce2: 877b strh r3, [r7, #58] @ 0x3a - 8004ce4: 687a ldr r2, [r7, #4] - 8004ce6: 683b ldr r3, [r7, #0] - 8004ce8: 781b ldrb r3, [r3, #0] - 8004cea: 009b lsls r3, r3, #2 - 8004cec: 441a add r2, r3 - 8004cee: 8f7b ldrh r3, [r7, #58] @ 0x3a - 8004cf0: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004cf4: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004cf8: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004cfc: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8004d00: b29b uxth r3, r3 - 8004d02: 8013 strh r3, [r2, #0] - - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); - 8004d04: 687a ldr r2, [r7, #4] - 8004d06: 683b ldr r3, [r7, #0] - 8004d08: 781b ldrb r3, [r3, #0] - 8004d0a: 009b lsls r3, r3, #2 - 8004d0c: 4413 add r3, r2 - 8004d0e: 881b ldrh r3, [r3, #0] - 8004d10: b29b uxth r3, r3 - 8004d12: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8004d16: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004d1a: 873b strh r3, [r7, #56] @ 0x38 - 8004d1c: 8f3b ldrh r3, [r7, #56] @ 0x38 - 8004d1e: f483 5380 eor.w r3, r3, #4096 @ 0x1000 - 8004d22: 873b strh r3, [r7, #56] @ 0x38 - 8004d24: 8f3b ldrh r3, [r7, #56] @ 0x38 - 8004d26: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 8004d2a: 873b strh r3, [r7, #56] @ 0x38 - 8004d2c: 687a ldr r2, [r7, #4] - 8004d2e: 683b ldr r3, [r7, #0] - 8004d30: 781b ldrb r3, [r3, #0] - 8004d32: 009b lsls r3, r3, #2 - 8004d34: 441a add r2, r3 - 8004d36: 8f3b ldrh r3, [r7, #56] @ 0x38 - 8004d38: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004d3c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004d40: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004d44: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004d48: b29b uxth r3, r3 - 8004d4a: 8013 strh r3, [r2, #0] - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); - 8004d4c: 687a ldr r2, [r7, #4] - 8004d4e: 683b ldr r3, [r7, #0] - 8004d50: 781b ldrb r3, [r3, #0] - 8004d52: 009b lsls r3, r3, #2 - 8004d54: 4413 add r3, r2 - 8004d56: 881b ldrh r3, [r3, #0] - 8004d58: b29b uxth r3, r3 - 8004d5a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004d5e: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8004d62: 86fb strh r3, [r7, #54] @ 0x36 - 8004d64: 687a ldr r2, [r7, #4] - 8004d66: 683b ldr r3, [r7, #0] - 8004d68: 781b ldrb r3, [r3, #0] - 8004d6a: 009b lsls r3, r3, #2 - 8004d6c: 441a add r2, r3 - 8004d6e: 8efb ldrh r3, [r7, #54] @ 0x36 - 8004d70: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004d74: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004d78: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004d7c: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004d80: b29b uxth r3, r3 - 8004d82: 8013 strh r3, [r2, #0] - 8004d84: e0bc b.n 8004f00 - } - else - { - /* Clear the data toggle bits for the endpoint IN/OUT */ - PCD_CLEAR_RX_DTOG(USBx, ep->num); - 8004d86: 687a ldr r2, [r7, #4] - 8004d88: 683b ldr r3, [r7, #0] - 8004d8a: 781b ldrb r3, [r3, #0] - 8004d8c: 009b lsls r3, r3, #2 - 8004d8e: 4413 add r3, r2 - 8004d90: 881b ldrh r3, [r3, #0] - 8004d92: f8a7 304e strh.w r3, [r7, #78] @ 0x4e - 8004d96: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e - 8004d9a: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8004d9e: 2b00 cmp r3, #0 - 8004da0: d01d beq.n 8004dde - 8004da2: 687a ldr r2, [r7, #4] - 8004da4: 683b ldr r3, [r7, #0] - 8004da6: 781b ldrb r3, [r3, #0] - 8004da8: 009b lsls r3, r3, #2 - 8004daa: 4413 add r3, r2 - 8004dac: 881b ldrh r3, [r3, #0] - 8004dae: b29b uxth r3, r3 - 8004db0: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004db4: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004db8: f8a7 304c strh.w r3, [r7, #76] @ 0x4c - 8004dbc: 687a ldr r2, [r7, #4] - 8004dbe: 683b ldr r3, [r7, #0] - 8004dc0: 781b ldrb r3, [r3, #0] - 8004dc2: 009b lsls r3, r3, #2 - 8004dc4: 441a add r2, r3 - 8004dc6: f8b7 304c ldrh.w r3, [r7, #76] @ 0x4c - 8004dca: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004dce: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004dd2: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8004dd6: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004dda: b29b uxth r3, r3 - 8004ddc: 8013 strh r3, [r2, #0] - PCD_CLEAR_TX_DTOG(USBx, ep->num); - 8004dde: 687a ldr r2, [r7, #4] - 8004de0: 683b ldr r3, [r7, #0] - 8004de2: 781b ldrb r3, [r3, #0] - 8004de4: 009b lsls r3, r3, #2 - 8004de6: 4413 add r3, r2 - 8004de8: 881b ldrh r3, [r3, #0] - 8004dea: f8a7 304a strh.w r3, [r7, #74] @ 0x4a - 8004dee: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 8004df2: f003 0340 and.w r3, r3, #64 @ 0x40 - 8004df6: 2b00 cmp r3, #0 - 8004df8: d01d beq.n 8004e36 - 8004dfa: 687a ldr r2, [r7, #4] - 8004dfc: 683b ldr r3, [r7, #0] - 8004dfe: 781b ldrb r3, [r3, #0] - 8004e00: 009b lsls r3, r3, #2 - 8004e02: 4413 add r3, r2 - 8004e04: 881b ldrh r3, [r3, #0] - 8004e06: b29b uxth r3, r3 - 8004e08: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004e0c: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004e10: f8a7 3048 strh.w r3, [r7, #72] @ 0x48 - 8004e14: 687a ldr r2, [r7, #4] - 8004e16: 683b ldr r3, [r7, #0] - 8004e18: 781b ldrb r3, [r3, #0] - 8004e1a: 009b lsls r3, r3, #2 - 8004e1c: 441a add r2, r3 - 8004e1e: f8b7 3048 ldrh.w r3, [r7, #72] @ 0x48 - 8004e22: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004e26: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004e2a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004e2e: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8004e32: b29b uxth r3, r3 - 8004e34: 8013 strh r3, [r2, #0] - - if (ep->type != EP_TYPE_ISOC) - 8004e36: 683b ldr r3, [r7, #0] - 8004e38: 78db ldrb r3, [r3, #3] - 8004e3a: 2b01 cmp r3, #1 - 8004e3c: d024 beq.n 8004e88 - { - /* Configure NAK status for the Endpoint */ - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); - 8004e3e: 687a ldr r2, [r7, #4] - 8004e40: 683b ldr r3, [r7, #0] - 8004e42: 781b ldrb r3, [r3, #0] - 8004e44: 009b lsls r3, r3, #2 - 8004e46: 4413 add r3, r2 - 8004e48: 881b ldrh r3, [r3, #0] - 8004e4a: b29b uxth r3, r3 - 8004e4c: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004e50: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8004e54: f8a7 3044 strh.w r3, [r7, #68] @ 0x44 - 8004e58: f8b7 3044 ldrh.w r3, [r7, #68] @ 0x44 - 8004e5c: f083 0320 eor.w r3, r3, #32 - 8004e60: f8a7 3044 strh.w r3, [r7, #68] @ 0x44 - 8004e64: 687a ldr r2, [r7, #4] - 8004e66: 683b ldr r3, [r7, #0] - 8004e68: 781b ldrb r3, [r3, #0] - 8004e6a: 009b lsls r3, r3, #2 - 8004e6c: 441a add r2, r3 - 8004e6e: f8b7 3044 ldrh.w r3, [r7, #68] @ 0x44 - 8004e72: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004e76: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004e7a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004e7e: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004e82: b29b uxth r3, r3 - 8004e84: 8013 strh r3, [r2, #0] - 8004e86: e01d b.n 8004ec4 - } - else - { - /* Configure TX Endpoint to disabled state */ - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); - 8004e88: 687a ldr r2, [r7, #4] - 8004e8a: 683b ldr r3, [r7, #0] - 8004e8c: 781b ldrb r3, [r3, #0] - 8004e8e: 009b lsls r3, r3, #2 - 8004e90: 4413 add r3, r2 - 8004e92: 881b ldrh r3, [r3, #0] - 8004e94: b29b uxth r3, r3 - 8004e96: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004e9a: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8004e9e: f8a7 3046 strh.w r3, [r7, #70] @ 0x46 - 8004ea2: 687a ldr r2, [r7, #4] - 8004ea4: 683b ldr r3, [r7, #0] - 8004ea6: 781b ldrb r3, [r3, #0] - 8004ea8: 009b lsls r3, r3, #2 - 8004eaa: 441a add r2, r3 - 8004eac: f8b7 3046 ldrh.w r3, [r7, #70] @ 0x46 - 8004eb0: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004eb4: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004eb8: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004ebc: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004ec0: b29b uxth r3, r3 - 8004ec2: 8013 strh r3, [r2, #0] - } - - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); - 8004ec4: 687a ldr r2, [r7, #4] - 8004ec6: 683b ldr r3, [r7, #0] - 8004ec8: 781b ldrb r3, [r3, #0] - 8004eca: 009b lsls r3, r3, #2 - 8004ecc: 4413 add r3, r2 - 8004ece: 881b ldrh r3, [r3, #0] - 8004ed0: b29b uxth r3, r3 - 8004ed2: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8004ed6: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004eda: f8a7 3042 strh.w r3, [r7, #66] @ 0x42 - 8004ede: 687a ldr r2, [r7, #4] - 8004ee0: 683b ldr r3, [r7, #0] - 8004ee2: 781b ldrb r3, [r3, #0] - 8004ee4: 009b lsls r3, r3, #2 - 8004ee6: 441a add r2, r3 - 8004ee8: f8b7 3042 ldrh.w r3, [r7, #66] @ 0x42 - 8004eec: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004ef0: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004ef4: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004ef8: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004efc: b29b uxth r3, r3 - 8004efe: 8013 strh r3, [r2, #0] - } - } -#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ - - return ret; - 8004f00: f897 306f ldrb.w r3, [r7, #111] @ 0x6f -} - 8004f04: 4618 mov r0, r3 - 8004f06: 3774 adds r7, #116 @ 0x74 - 8004f08: 46bd mov sp, r7 - 8004f0a: bc80 pop {r7} - 8004f0c: 4770 bx lr - 8004f0e: bf00 nop - -08004f10 : - * @param USBx Selected device - * @param ep pointer to endpoint structure - * @retval HAL status - */ -HAL_StatusTypeDef USB_DeactivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep) -{ - 8004f10: b480 push {r7} - 8004f12: b08d sub sp, #52 @ 0x34 - 8004f14: af00 add r7, sp, #0 - 8004f16: 6078 str r0, [r7, #4] - 8004f18: 6039 str r1, [r7, #0] - if (ep->doublebuffer == 0U) - 8004f1a: 683b ldr r3, [r7, #0] - 8004f1c: 7b1b ldrb r3, [r3, #12] - 8004f1e: 2b00 cmp r3, #0 - 8004f20: f040 808e bne.w 8005040 - { - if (ep->is_in != 0U) - 8004f24: 683b ldr r3, [r7, #0] - 8004f26: 785b ldrb r3, [r3, #1] - 8004f28: 2b00 cmp r3, #0 - 8004f2a: d044 beq.n 8004fb6 - { - PCD_CLEAR_TX_DTOG(USBx, ep->num); - 8004f2c: 687a ldr r2, [r7, #4] - 8004f2e: 683b ldr r3, [r7, #0] - 8004f30: 781b ldrb r3, [r3, #0] - 8004f32: 009b lsls r3, r3, #2 - 8004f34: 4413 add r3, r2 - 8004f36: 881b ldrh r3, [r3, #0] - 8004f38: 81bb strh r3, [r7, #12] - 8004f3a: 89bb ldrh r3, [r7, #12] - 8004f3c: f003 0340 and.w r3, r3, #64 @ 0x40 - 8004f40: 2b00 cmp r3, #0 - 8004f42: d01b beq.n 8004f7c - 8004f44: 687a ldr r2, [r7, #4] - 8004f46: 683b ldr r3, [r7, #0] - 8004f48: 781b ldrb r3, [r3, #0] - 8004f4a: 009b lsls r3, r3, #2 - 8004f4c: 4413 add r3, r2 - 8004f4e: 881b ldrh r3, [r3, #0] - 8004f50: b29b uxth r3, r3 - 8004f52: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004f56: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004f5a: 817b strh r3, [r7, #10] - 8004f5c: 687a ldr r2, [r7, #4] - 8004f5e: 683b ldr r3, [r7, #0] - 8004f60: 781b ldrb r3, [r3, #0] - 8004f62: 009b lsls r3, r3, #2 - 8004f64: 441a add r2, r3 - 8004f66: 897b ldrh r3, [r7, #10] - 8004f68: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004f6c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004f70: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004f74: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8004f78: b29b uxth r3, r3 - 8004f7a: 8013 strh r3, [r2, #0] - - /* Configure DISABLE status for the Endpoint */ - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); - 8004f7c: 687a ldr r2, [r7, #4] - 8004f7e: 683b ldr r3, [r7, #0] - 8004f80: 781b ldrb r3, [r3, #0] - 8004f82: 009b lsls r3, r3, #2 - 8004f84: 4413 add r3, r2 - 8004f86: 881b ldrh r3, [r3, #0] - 8004f88: b29b uxth r3, r3 - 8004f8a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004f8e: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8004f92: 813b strh r3, [r7, #8] - 8004f94: 687a ldr r2, [r7, #4] - 8004f96: 683b ldr r3, [r7, #0] - 8004f98: 781b ldrb r3, [r3, #0] - 8004f9a: 009b lsls r3, r3, #2 - 8004f9c: 441a add r2, r3 - 8004f9e: 893b ldrh r3, [r7, #8] - 8004fa0: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004fa4: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004fa8: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004fac: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004fb0: b29b uxth r3, r3 - 8004fb2: 8013 strh r3, [r2, #0] - 8004fb4: e192 b.n 80052dc - } - - else - { - PCD_CLEAR_RX_DTOG(USBx, ep->num); - 8004fb6: 687a ldr r2, [r7, #4] - 8004fb8: 683b ldr r3, [r7, #0] - 8004fba: 781b ldrb r3, [r3, #0] - 8004fbc: 009b lsls r3, r3, #2 - 8004fbe: 4413 add r3, r2 - 8004fc0: 881b ldrh r3, [r3, #0] - 8004fc2: 827b strh r3, [r7, #18] - 8004fc4: 8a7b ldrh r3, [r7, #18] - 8004fc6: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8004fca: 2b00 cmp r3, #0 - 8004fcc: d01b beq.n 8005006 - 8004fce: 687a ldr r2, [r7, #4] - 8004fd0: 683b ldr r3, [r7, #0] - 8004fd2: 781b ldrb r3, [r3, #0] - 8004fd4: 009b lsls r3, r3, #2 - 8004fd6: 4413 add r3, r2 - 8004fd8: 881b ldrh r3, [r3, #0] - 8004fda: b29b uxth r3, r3 - 8004fdc: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004fe0: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004fe4: 823b strh r3, [r7, #16] - 8004fe6: 687a ldr r2, [r7, #4] - 8004fe8: 683b ldr r3, [r7, #0] - 8004fea: 781b ldrb r3, [r3, #0] - 8004fec: 009b lsls r3, r3, #2 - 8004fee: 441a add r2, r3 - 8004ff0: 8a3b ldrh r3, [r7, #16] - 8004ff2: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004ff6: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004ffa: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8004ffe: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8005002: b29b uxth r3, r3 - 8005004: 8013 strh r3, [r2, #0] - - /* Configure DISABLE status for the Endpoint */ - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); - 8005006: 687a ldr r2, [r7, #4] - 8005008: 683b ldr r3, [r7, #0] - 800500a: 781b ldrb r3, [r3, #0] - 800500c: 009b lsls r3, r3, #2 - 800500e: 4413 add r3, r2 - 8005010: 881b ldrh r3, [r3, #0] - 8005012: b29b uxth r3, r3 - 8005014: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8005018: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800501c: 81fb strh r3, [r7, #14] - 800501e: 687a ldr r2, [r7, #4] - 8005020: 683b ldr r3, [r7, #0] - 8005022: 781b ldrb r3, [r3, #0] - 8005024: 009b lsls r3, r3, #2 - 8005026: 441a add r2, r3 - 8005028: 89fb ldrh r3, [r7, #14] - 800502a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800502e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8005032: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8005036: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800503a: b29b uxth r3, r3 - 800503c: 8013 strh r3, [r2, #0] - 800503e: e14d b.n 80052dc - } -#if (USE_USB_DOUBLE_BUFFER == 1U) - /* Double Buffer */ - else - { - if (ep->is_in == 0U) - 8005040: 683b ldr r3, [r7, #0] - 8005042: 785b ldrb r3, [r3, #1] - 8005044: 2b00 cmp r3, #0 - 8005046: f040 80a5 bne.w 8005194 - { - /* Clear the data toggle bits for the endpoint IN/OUT*/ - PCD_CLEAR_RX_DTOG(USBx, ep->num); - 800504a: 687a ldr r2, [r7, #4] - 800504c: 683b ldr r3, [r7, #0] - 800504e: 781b ldrb r3, [r3, #0] - 8005050: 009b lsls r3, r3, #2 - 8005052: 4413 add r3, r2 - 8005054: 881b ldrh r3, [r3, #0] - 8005056: 843b strh r3, [r7, #32] - 8005058: 8c3b ldrh r3, [r7, #32] - 800505a: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 800505e: 2b00 cmp r3, #0 - 8005060: d01b beq.n 800509a - 8005062: 687a ldr r2, [r7, #4] - 8005064: 683b ldr r3, [r7, #0] - 8005066: 781b ldrb r3, [r3, #0] - 8005068: 009b lsls r3, r3, #2 - 800506a: 4413 add r3, r2 - 800506c: 881b ldrh r3, [r3, #0] - 800506e: b29b uxth r3, r3 - 8005070: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8005074: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8005078: 83fb strh r3, [r7, #30] - 800507a: 687a ldr r2, [r7, #4] - 800507c: 683b ldr r3, [r7, #0] - 800507e: 781b ldrb r3, [r3, #0] - 8005080: 009b lsls r3, r3, #2 - 8005082: 441a add r2, r3 - 8005084: 8bfb ldrh r3, [r7, #30] - 8005086: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800508a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800508e: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8005092: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8005096: b29b uxth r3, r3 - 8005098: 8013 strh r3, [r2, #0] - PCD_CLEAR_TX_DTOG(USBx, ep->num); - 800509a: 687a ldr r2, [r7, #4] - 800509c: 683b ldr r3, [r7, #0] - 800509e: 781b ldrb r3, [r3, #0] - 80050a0: 009b lsls r3, r3, #2 - 80050a2: 4413 add r3, r2 - 80050a4: 881b ldrh r3, [r3, #0] - 80050a6: 83bb strh r3, [r7, #28] - 80050a8: 8bbb ldrh r3, [r7, #28] - 80050aa: f003 0340 and.w r3, r3, #64 @ 0x40 - 80050ae: 2b00 cmp r3, #0 - 80050b0: d01b beq.n 80050ea - 80050b2: 687a ldr r2, [r7, #4] - 80050b4: 683b ldr r3, [r7, #0] - 80050b6: 781b ldrb r3, [r3, #0] - 80050b8: 009b lsls r3, r3, #2 - 80050ba: 4413 add r3, r2 - 80050bc: 881b ldrh r3, [r3, #0] - 80050be: b29b uxth r3, r3 - 80050c0: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80050c4: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80050c8: 837b strh r3, [r7, #26] - 80050ca: 687a ldr r2, [r7, #4] - 80050cc: 683b ldr r3, [r7, #0] - 80050ce: 781b ldrb r3, [r3, #0] - 80050d0: 009b lsls r3, r3, #2 - 80050d2: 441a add r2, r3 - 80050d4: 8b7b ldrh r3, [r7, #26] - 80050d6: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80050da: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80050de: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 80050e2: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 80050e6: b29b uxth r3, r3 - 80050e8: 8013 strh r3, [r2, #0] - - /* Reset value of the data toggle bits for the endpoint out*/ - PCD_TX_DTOG(USBx, ep->num); - 80050ea: 687a ldr r2, [r7, #4] - 80050ec: 683b ldr r3, [r7, #0] - 80050ee: 781b ldrb r3, [r3, #0] - 80050f0: 009b lsls r3, r3, #2 - 80050f2: 4413 add r3, r2 - 80050f4: 881b ldrh r3, [r3, #0] - 80050f6: b29b uxth r3, r3 - 80050f8: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80050fc: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8005100: 833b strh r3, [r7, #24] - 8005102: 687a ldr r2, [r7, #4] - 8005104: 683b ldr r3, [r7, #0] - 8005106: 781b ldrb r3, [r3, #0] - 8005108: 009b lsls r3, r3, #2 - 800510a: 441a add r2, r3 - 800510c: 8b3b ldrh r3, [r7, #24] - 800510e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8005112: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8005116: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800511a: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 800511e: b29b uxth r3, r3 - 8005120: 8013 strh r3, [r2, #0] - - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); - 8005122: 687a ldr r2, [r7, #4] - 8005124: 683b ldr r3, [r7, #0] - 8005126: 781b ldrb r3, [r3, #0] - 8005128: 009b lsls r3, r3, #2 - 800512a: 4413 add r3, r2 - 800512c: 881b ldrh r3, [r3, #0] - 800512e: b29b uxth r3, r3 - 8005130: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8005134: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8005138: 82fb strh r3, [r7, #22] - 800513a: 687a ldr r2, [r7, #4] - 800513c: 683b ldr r3, [r7, #0] - 800513e: 781b ldrb r3, [r3, #0] - 8005140: 009b lsls r3, r3, #2 - 8005142: 441a add r2, r3 - 8005144: 8afb ldrh r3, [r7, #22] - 8005146: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800514a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800514e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8005152: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8005156: b29b uxth r3, r3 - 8005158: 8013 strh r3, [r2, #0] - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); - 800515a: 687a ldr r2, [r7, #4] - 800515c: 683b ldr r3, [r7, #0] - 800515e: 781b ldrb r3, [r3, #0] - 8005160: 009b lsls r3, r3, #2 - 8005162: 4413 add r3, r2 - 8005164: 881b ldrh r3, [r3, #0] - 8005166: b29b uxth r3, r3 - 8005168: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 800516c: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8005170: 82bb strh r3, [r7, #20] - 8005172: 687a ldr r2, [r7, #4] - 8005174: 683b ldr r3, [r7, #0] - 8005176: 781b ldrb r3, [r3, #0] - 8005178: 009b lsls r3, r3, #2 - 800517a: 441a add r2, r3 - 800517c: 8abb ldrh r3, [r7, #20] - 800517e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8005182: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8005186: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800518a: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800518e: b29b uxth r3, r3 - 8005190: 8013 strh r3, [r2, #0] - 8005192: e0a3 b.n 80052dc - } - else - { - /* Clear the data toggle bits for the endpoint IN/OUT*/ - PCD_CLEAR_RX_DTOG(USBx, ep->num); - 8005194: 687a ldr r2, [r7, #4] - 8005196: 683b ldr r3, [r7, #0] - 8005198: 781b ldrb r3, [r3, #0] - 800519a: 009b lsls r3, r3, #2 - 800519c: 4413 add r3, r2 - 800519e: 881b ldrh r3, [r3, #0] - 80051a0: 85fb strh r3, [r7, #46] @ 0x2e - 80051a2: 8dfb ldrh r3, [r7, #46] @ 0x2e - 80051a4: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 80051a8: 2b00 cmp r3, #0 - 80051aa: d01b beq.n 80051e4 - 80051ac: 687a ldr r2, [r7, #4] - 80051ae: 683b ldr r3, [r7, #0] - 80051b0: 781b ldrb r3, [r3, #0] - 80051b2: 009b lsls r3, r3, #2 - 80051b4: 4413 add r3, r2 - 80051b6: 881b ldrh r3, [r3, #0] - 80051b8: b29b uxth r3, r3 - 80051ba: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80051be: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80051c2: 85bb strh r3, [r7, #44] @ 0x2c - 80051c4: 687a ldr r2, [r7, #4] - 80051c6: 683b ldr r3, [r7, #0] - 80051c8: 781b ldrb r3, [r3, #0] - 80051ca: 009b lsls r3, r3, #2 - 80051cc: 441a add r2, r3 - 80051ce: 8dbb ldrh r3, [r7, #44] @ 0x2c - 80051d0: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80051d4: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80051d8: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 80051dc: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80051e0: b29b uxth r3, r3 - 80051e2: 8013 strh r3, [r2, #0] - PCD_CLEAR_TX_DTOG(USBx, ep->num); - 80051e4: 687a ldr r2, [r7, #4] - 80051e6: 683b ldr r3, [r7, #0] - 80051e8: 781b ldrb r3, [r3, #0] - 80051ea: 009b lsls r3, r3, #2 - 80051ec: 4413 add r3, r2 - 80051ee: 881b ldrh r3, [r3, #0] - 80051f0: 857b strh r3, [r7, #42] @ 0x2a - 80051f2: 8d7b ldrh r3, [r7, #42] @ 0x2a - 80051f4: f003 0340 and.w r3, r3, #64 @ 0x40 - 80051f8: 2b00 cmp r3, #0 - 80051fa: d01b beq.n 8005234 - 80051fc: 687a ldr r2, [r7, #4] - 80051fe: 683b ldr r3, [r7, #0] - 8005200: 781b ldrb r3, [r3, #0] - 8005202: 009b lsls r3, r3, #2 - 8005204: 4413 add r3, r2 - 8005206: 881b ldrh r3, [r3, #0] - 8005208: b29b uxth r3, r3 - 800520a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 800520e: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8005212: 853b strh r3, [r7, #40] @ 0x28 - 8005214: 687a ldr r2, [r7, #4] - 8005216: 683b ldr r3, [r7, #0] - 8005218: 781b ldrb r3, [r3, #0] - 800521a: 009b lsls r3, r3, #2 - 800521c: 441a add r2, r3 - 800521e: 8d3b ldrh r3, [r7, #40] @ 0x28 - 8005220: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8005224: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8005228: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800522c: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8005230: b29b uxth r3, r3 - 8005232: 8013 strh r3, [r2, #0] - PCD_RX_DTOG(USBx, ep->num); - 8005234: 687a ldr r2, [r7, #4] - 8005236: 683b ldr r3, [r7, #0] - 8005238: 781b ldrb r3, [r3, #0] - 800523a: 009b lsls r3, r3, #2 - 800523c: 4413 add r3, r2 - 800523e: 881b ldrh r3, [r3, #0] - 8005240: b29b uxth r3, r3 - 8005242: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8005246: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800524a: 84fb strh r3, [r7, #38] @ 0x26 - 800524c: 687a ldr r2, [r7, #4] - 800524e: 683b ldr r3, [r7, #0] - 8005250: 781b ldrb r3, [r3, #0] - 8005252: 009b lsls r3, r3, #2 - 8005254: 441a add r2, r3 - 8005256: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8005258: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800525c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8005260: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8005264: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8005268: b29b uxth r3, r3 - 800526a: 8013 strh r3, [r2, #0] - - /* Configure DISABLE status for the Endpoint*/ - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); - 800526c: 687a ldr r2, [r7, #4] - 800526e: 683b ldr r3, [r7, #0] - 8005270: 781b ldrb r3, [r3, #0] - 8005272: 009b lsls r3, r3, #2 - 8005274: 4413 add r3, r2 - 8005276: 881b ldrh r3, [r3, #0] - 8005278: b29b uxth r3, r3 - 800527a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 800527e: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8005282: 84bb strh r3, [r7, #36] @ 0x24 - 8005284: 687a ldr r2, [r7, #4] - 8005286: 683b ldr r3, [r7, #0] - 8005288: 781b ldrb r3, [r3, #0] - 800528a: 009b lsls r3, r3, #2 - 800528c: 441a add r2, r3 - 800528e: 8cbb ldrh r3, [r7, #36] @ 0x24 - 8005290: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8005294: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8005298: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800529c: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80052a0: b29b uxth r3, r3 - 80052a2: 8013 strh r3, [r2, #0] - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); - 80052a4: 687a ldr r2, [r7, #4] - 80052a6: 683b ldr r3, [r7, #0] - 80052a8: 781b ldrb r3, [r3, #0] - 80052aa: 009b lsls r3, r3, #2 - 80052ac: 4413 add r3, r2 - 80052ae: 881b ldrh r3, [r3, #0] - 80052b0: b29b uxth r3, r3 - 80052b2: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 80052b6: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80052ba: 847b strh r3, [r7, #34] @ 0x22 - 80052bc: 687a ldr r2, [r7, #4] - 80052be: 683b ldr r3, [r7, #0] - 80052c0: 781b ldrb r3, [r3, #0] - 80052c2: 009b lsls r3, r3, #2 - 80052c4: 441a add r2, r3 - 80052c6: 8c7b ldrh r3, [r7, #34] @ 0x22 - 80052c8: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80052cc: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80052d0: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 80052d4: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80052d8: b29b uxth r3, r3 - 80052da: 8013 strh r3, [r2, #0] - } - } -#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ - - return HAL_OK; - 80052dc: 2300 movs r3, #0 -} - 80052de: 4618 mov r0, r3 - 80052e0: 3734 adds r7, #52 @ 0x34 - 80052e2: 46bd mov sp, r7 - 80052e4: bc80 pop {r7} - 80052e6: 4770 bx lr - -080052e8 : - * @param USBx Selected device - * @param ep pointer to endpoint structure - * @retval HAL status - */ -HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx, USB_EPTypeDef *ep) -{ - 80052e8: b580 push {r7, lr} - 80052ea: b0c2 sub sp, #264 @ 0x108 - 80052ec: af00 add r7, sp, #0 - 80052ee: f507 7384 add.w r3, r7, #264 @ 0x108 - 80052f2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80052f6: 6018 str r0, [r3, #0] - 80052f8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80052fc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005300: 6019 str r1, [r3, #0] - uint16_t pmabuffer; - uint16_t wEPVal; -#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ - - /* IN endpoint */ - if (ep->is_in == 1U) - 8005302: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005306: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800530a: 681b ldr r3, [r3, #0] - 800530c: 785b ldrb r3, [r3, #1] - 800530e: 2b01 cmp r3, #1 - 8005310: f040 86b7 bne.w 8006082 - { - /*Multi packet transfer*/ - if (ep->xfer_len > ep->maxpacket) - 8005314: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005318: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800531c: 681b ldr r3, [r3, #0] - 800531e: 699a ldr r2, [r3, #24] - 8005320: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005324: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005328: 681b ldr r3, [r3, #0] - 800532a: 691b ldr r3, [r3, #16] - 800532c: 429a cmp r2, r3 - 800532e: d908 bls.n 8005342 - { - len = ep->maxpacket; - 8005330: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005334: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005338: 681b ldr r3, [r3, #0] - 800533a: 691b ldr r3, [r3, #16] - 800533c: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - 8005340: e007 b.n 8005352 - } - else - { - len = ep->xfer_len; - 8005342: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005346: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800534a: 681b ldr r3, [r3, #0] - 800534c: 699b ldr r3, [r3, #24] - 800534e: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - } - - /* configure and validate Tx endpoint */ - if (ep->doublebuffer == 0U) - 8005352: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005356: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800535a: 681b ldr r3, [r3, #0] - 800535c: 7b1b ldrb r3, [r3, #12] - 800535e: 2b00 cmp r3, #0 - 8005360: d13a bne.n 80053d8 - { - USB_WritePMA(USBx, ep->xfer_buff, ep->pmaadress, (uint16_t)len); - 8005362: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005366: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800536a: 681b ldr r3, [r3, #0] - 800536c: 6959 ldr r1, [r3, #20] - 800536e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005372: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005376: 681b ldr r3, [r3, #0] - 8005378: 88da ldrh r2, [r3, #6] - 800537a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800537e: b29b uxth r3, r3 - 8005380: f507 7084 add.w r0, r7, #264 @ 0x108 - 8005384: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 8005388: 6800 ldr r0, [r0, #0] - 800538a: f001 fc9c bl 8006cc6 - PCD_SET_EP_TX_CNT(USBx, ep->num, len); - 800538e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005392: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005396: 681b ldr r3, [r3, #0] - 8005398: 613b str r3, [r7, #16] - 800539a: f507 7384 add.w r3, r7, #264 @ 0x108 - 800539e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80053a2: 681b ldr r3, [r3, #0] - 80053a4: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80053a8: b29b uxth r3, r3 - 80053aa: 461a mov r2, r3 - 80053ac: 693b ldr r3, [r7, #16] - 80053ae: 4413 add r3, r2 - 80053b0: 613b str r3, [r7, #16] - 80053b2: f507 7384 add.w r3, r7, #264 @ 0x108 - 80053b6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80053ba: 681b ldr r3, [r3, #0] - 80053bc: 781b ldrb r3, [r3, #0] - 80053be: 011a lsls r2, r3, #4 - 80053c0: 693b ldr r3, [r7, #16] - 80053c2: 4413 add r3, r2 - 80053c4: f203 4304 addw r3, r3, #1028 @ 0x404 - 80053c8: 60fb str r3, [r7, #12] - 80053ca: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80053ce: b29a uxth r2, r3 - 80053d0: 68fb ldr r3, [r7, #12] - 80053d2: 801a strh r2, [r3, #0] - 80053d4: f000 be1f b.w 8006016 - } -#if (USE_USB_DOUBLE_BUFFER == 1U) - else - { - /* double buffer bulk management */ - if (ep->type == EP_TYPE_BULK) - 80053d8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80053dc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80053e0: 681b ldr r3, [r3, #0] - 80053e2: 78db ldrb r3, [r3, #3] - 80053e4: 2b02 cmp r3, #2 - 80053e6: f040 8462 bne.w 8005cae - { - if (ep->xfer_len_db > ep->maxpacket) - 80053ea: f507 7384 add.w r3, r7, #264 @ 0x108 - 80053ee: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80053f2: 681b ldr r3, [r3, #0] - 80053f4: 6a1a ldr r2, [r3, #32] - 80053f6: f507 7384 add.w r3, r7, #264 @ 0x108 - 80053fa: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80053fe: 681b ldr r3, [r3, #0] - 8005400: 691b ldr r3, [r3, #16] - 8005402: 429a cmp r2, r3 - 8005404: f240 83df bls.w 8005bc6 - { - /* enable double buffer */ - PCD_SET_BULK_EP_DBUF(USBx, ep->num); - 8005408: f507 7384 add.w r3, r7, #264 @ 0x108 - 800540c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005410: 681a ldr r2, [r3, #0] - 8005412: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005416: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800541a: 681b ldr r3, [r3, #0] - 800541c: 781b ldrb r3, [r3, #0] - 800541e: 009b lsls r3, r3, #2 - 8005420: 4413 add r3, r2 - 8005422: 881b ldrh r3, [r3, #0] - 8005424: b29b uxth r3, r3 - 8005426: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 800542a: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800542e: f8a7 3056 strh.w r3, [r7, #86] @ 0x56 - 8005432: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005436: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 800543a: 681a ldr r2, [r3, #0] - 800543c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005440: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005444: 681b ldr r3, [r3, #0] - 8005446: 781b ldrb r3, [r3, #0] - 8005448: 009b lsls r3, r3, #2 - 800544a: 441a add r2, r3 - 800544c: f8b7 3056 ldrh.w r3, [r7, #86] @ 0x56 - 8005450: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8005454: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8005458: f443 4301 orr.w r3, r3, #33024 @ 0x8100 - 800545c: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8005460: b29b uxth r3, r3 - 8005462: 8013 strh r3, [r2, #0] - - /* each Time to write in PMA xfer_len_db will */ - ep->xfer_len_db -= len; - 8005464: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005468: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800546c: 681b ldr r3, [r3, #0] - 800546e: 6a1a ldr r2, [r3, #32] - 8005470: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005474: 1ad2 subs r2, r2, r3 - 8005476: f507 7384 add.w r3, r7, #264 @ 0x108 - 800547a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800547e: 681b ldr r3, [r3, #0] - 8005480: 621a str r2, [r3, #32] - - /* Fill the two first buffer in the Buffer0 & Buffer1 */ - if ((PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_DTOG_TX) != 0U) - 8005482: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005486: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 800548a: 681a ldr r2, [r3, #0] - 800548c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005490: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005494: 681b ldr r3, [r3, #0] - 8005496: 781b ldrb r3, [r3, #0] - 8005498: 009b lsls r3, r3, #2 - 800549a: 4413 add r3, r2 - 800549c: 881b ldrh r3, [r3, #0] - 800549e: b29b uxth r3, r3 - 80054a0: f003 0340 and.w r3, r3, #64 @ 0x40 - 80054a4: 2b00 cmp r3, #0 - 80054a6: f000 81c7 beq.w 8005838 - { - /* Set the Double buffer counter for pmabuffer1 */ - PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); - 80054aa: f507 7384 add.w r3, r7, #264 @ 0x108 - 80054ae: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80054b2: 681b ldr r3, [r3, #0] - 80054b4: 633b str r3, [r7, #48] @ 0x30 - 80054b6: f507 7384 add.w r3, r7, #264 @ 0x108 - 80054ba: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80054be: 681b ldr r3, [r3, #0] - 80054c0: 785b ldrb r3, [r3, #1] - 80054c2: 2b00 cmp r3, #0 - 80054c4: d177 bne.n 80055b6 - 80054c6: f507 7384 add.w r3, r7, #264 @ 0x108 - 80054ca: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80054ce: 681b ldr r3, [r3, #0] - 80054d0: 62bb str r3, [r7, #40] @ 0x28 - 80054d2: f507 7384 add.w r3, r7, #264 @ 0x108 - 80054d6: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80054da: 681b ldr r3, [r3, #0] - 80054dc: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80054e0: b29b uxth r3, r3 - 80054e2: 461a mov r2, r3 - 80054e4: 6abb ldr r3, [r7, #40] @ 0x28 - 80054e6: 4413 add r3, r2 - 80054e8: 62bb str r3, [r7, #40] @ 0x28 - 80054ea: f507 7384 add.w r3, r7, #264 @ 0x108 - 80054ee: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80054f2: 681b ldr r3, [r3, #0] - 80054f4: 781b ldrb r3, [r3, #0] - 80054f6: 011a lsls r2, r3, #4 - 80054f8: 6abb ldr r3, [r7, #40] @ 0x28 - 80054fa: 4413 add r3, r2 - 80054fc: f203 430c addw r3, r3, #1036 @ 0x40c - 8005500: 627b str r3, [r7, #36] @ 0x24 - 8005502: 6a7b ldr r3, [r7, #36] @ 0x24 - 8005504: 881b ldrh r3, [r3, #0] - 8005506: b29b uxth r3, r3 - 8005508: f3c3 0309 ubfx r3, r3, #0, #10 - 800550c: b29a uxth r2, r3 - 800550e: 6a7b ldr r3, [r7, #36] @ 0x24 - 8005510: 801a strh r2, [r3, #0] - 8005512: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005516: 2b3e cmp r3, #62 @ 0x3e - 8005518: d921 bls.n 800555e - 800551a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800551e: 095b lsrs r3, r3, #5 - 8005520: f8c7 3100 str.w r3, [r7, #256] @ 0x100 - 8005524: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005528: f003 031f and.w r3, r3, #31 - 800552c: 2b00 cmp r3, #0 - 800552e: d104 bne.n 800553a - 8005530: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 - 8005534: 3b01 subs r3, #1 - 8005536: f8c7 3100 str.w r3, [r7, #256] @ 0x100 - 800553a: 6a7b ldr r3, [r7, #36] @ 0x24 - 800553c: 881b ldrh r3, [r3, #0] - 800553e: b29a uxth r2, r3 - 8005540: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 - 8005544: b29b uxth r3, r3 - 8005546: 029b lsls r3, r3, #10 - 8005548: b29b uxth r3, r3 - 800554a: 4313 orrs r3, r2 - 800554c: b29b uxth r3, r3 - 800554e: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005552: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005556: b29a uxth r2, r3 - 8005558: 6a7b ldr r3, [r7, #36] @ 0x24 - 800555a: 801a strh r2, [r3, #0] - 800555c: e050 b.n 8005600 - 800555e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005562: 2b00 cmp r3, #0 - 8005564: d10a bne.n 800557c - 8005566: 6a7b ldr r3, [r7, #36] @ 0x24 - 8005568: 881b ldrh r3, [r3, #0] - 800556a: b29b uxth r3, r3 - 800556c: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005570: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005574: b29a uxth r2, r3 - 8005576: 6a7b ldr r3, [r7, #36] @ 0x24 - 8005578: 801a strh r2, [r3, #0] - 800557a: e041 b.n 8005600 - 800557c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005580: 085b lsrs r3, r3, #1 - 8005582: f8c7 3100 str.w r3, [r7, #256] @ 0x100 - 8005586: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800558a: f003 0301 and.w r3, r3, #1 - 800558e: 2b00 cmp r3, #0 - 8005590: d004 beq.n 800559c - 8005592: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 - 8005596: 3301 adds r3, #1 - 8005598: f8c7 3100 str.w r3, [r7, #256] @ 0x100 - 800559c: 6a7b ldr r3, [r7, #36] @ 0x24 - 800559e: 881b ldrh r3, [r3, #0] - 80055a0: b29a uxth r2, r3 - 80055a2: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 - 80055a6: b29b uxth r3, r3 - 80055a8: 029b lsls r3, r3, #10 - 80055aa: b29b uxth r3, r3 - 80055ac: 4313 orrs r3, r2 - 80055ae: b29a uxth r2, r3 - 80055b0: 6a7b ldr r3, [r7, #36] @ 0x24 - 80055b2: 801a strh r2, [r3, #0] - 80055b4: e024 b.n 8005600 - 80055b6: f507 7384 add.w r3, r7, #264 @ 0x108 - 80055ba: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80055be: 681b ldr r3, [r3, #0] - 80055c0: 785b ldrb r3, [r3, #1] - 80055c2: 2b01 cmp r3, #1 - 80055c4: d11c bne.n 8005600 - 80055c6: f507 7384 add.w r3, r7, #264 @ 0x108 - 80055ca: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80055ce: 681b ldr r3, [r3, #0] - 80055d0: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80055d4: b29b uxth r3, r3 - 80055d6: 461a mov r2, r3 - 80055d8: 6b3b ldr r3, [r7, #48] @ 0x30 - 80055da: 4413 add r3, r2 - 80055dc: 633b str r3, [r7, #48] @ 0x30 - 80055de: f507 7384 add.w r3, r7, #264 @ 0x108 - 80055e2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80055e6: 681b ldr r3, [r3, #0] - 80055e8: 781b ldrb r3, [r3, #0] - 80055ea: 011a lsls r2, r3, #4 - 80055ec: 6b3b ldr r3, [r7, #48] @ 0x30 - 80055ee: 4413 add r3, r2 - 80055f0: f203 430c addw r3, r3, #1036 @ 0x40c - 80055f4: 62fb str r3, [r7, #44] @ 0x2c - 80055f6: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80055fa: b29a uxth r2, r3 - 80055fc: 6afb ldr r3, [r7, #44] @ 0x2c - 80055fe: 801a strh r2, [r3, #0] - pmabuffer = ep->pmaaddr1; - 8005600: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005604: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005608: 681b ldr r3, [r3, #0] - 800560a: 895b ldrh r3, [r3, #10] - 800560c: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 - - /* Write the user buffer to USB PMA */ - USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); - 8005610: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005614: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005618: 681b ldr r3, [r3, #0] - 800561a: 6959 ldr r1, [r3, #20] - 800561c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005620: b29b uxth r3, r3 - 8005622: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 - 8005626: f507 7084 add.w r0, r7, #264 @ 0x108 - 800562a: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 800562e: 6800 ldr r0, [r0, #0] - 8005630: f001 fb49 bl 8006cc6 - ep->xfer_buff += len; - 8005634: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005638: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800563c: 681b ldr r3, [r3, #0] - 800563e: 695a ldr r2, [r3, #20] - 8005640: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005644: 441a add r2, r3 - 8005646: f507 7384 add.w r3, r7, #264 @ 0x108 - 800564a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800564e: 681b ldr r3, [r3, #0] - 8005650: 615a str r2, [r3, #20] - - if (ep->xfer_len_db > ep->maxpacket) - 8005652: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005656: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800565a: 681b ldr r3, [r3, #0] - 800565c: 6a1a ldr r2, [r3, #32] - 800565e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005662: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005666: 681b ldr r3, [r3, #0] - 8005668: 691b ldr r3, [r3, #16] - 800566a: 429a cmp r2, r3 - 800566c: d90f bls.n 800568e - { - ep->xfer_len_db -= len; - 800566e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005672: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005676: 681b ldr r3, [r3, #0] - 8005678: 6a1a ldr r2, [r3, #32] - 800567a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800567e: 1ad2 subs r2, r2, r3 - 8005680: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005684: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005688: 681b ldr r3, [r3, #0] - 800568a: 621a str r2, [r3, #32] - 800568c: e00e b.n 80056ac - } - else - { - len = ep->xfer_len_db; - 800568e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005692: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005696: 681b ldr r3, [r3, #0] - 8005698: 6a1b ldr r3, [r3, #32] - 800569a: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - ep->xfer_len_db = 0U; - 800569e: f507 7384 add.w r3, r7, #264 @ 0x108 - 80056a2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80056a6: 681b ldr r3, [r3, #0] - 80056a8: 2200 movs r2, #0 - 80056aa: 621a str r2, [r3, #32] - } - - /* Set the Double buffer counter for pmabuffer0 */ - PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); - 80056ac: f507 7384 add.w r3, r7, #264 @ 0x108 - 80056b0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80056b4: 681b ldr r3, [r3, #0] - 80056b6: 785b ldrb r3, [r3, #1] - 80056b8: 2b00 cmp r3, #0 - 80056ba: d177 bne.n 80057ac - 80056bc: f507 7384 add.w r3, r7, #264 @ 0x108 - 80056c0: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80056c4: 681b ldr r3, [r3, #0] - 80056c6: 61bb str r3, [r7, #24] - 80056c8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80056cc: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80056d0: 681b ldr r3, [r3, #0] - 80056d2: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80056d6: b29b uxth r3, r3 - 80056d8: 461a mov r2, r3 - 80056da: 69bb ldr r3, [r7, #24] - 80056dc: 4413 add r3, r2 - 80056de: 61bb str r3, [r7, #24] - 80056e0: f507 7384 add.w r3, r7, #264 @ 0x108 - 80056e4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80056e8: 681b ldr r3, [r3, #0] - 80056ea: 781b ldrb r3, [r3, #0] - 80056ec: 011a lsls r2, r3, #4 - 80056ee: 69bb ldr r3, [r7, #24] - 80056f0: 4413 add r3, r2 - 80056f2: f203 4304 addw r3, r3, #1028 @ 0x404 - 80056f6: 617b str r3, [r7, #20] - 80056f8: 697b ldr r3, [r7, #20] - 80056fa: 881b ldrh r3, [r3, #0] - 80056fc: b29b uxth r3, r3 - 80056fe: f3c3 0309 ubfx r3, r3, #0, #10 - 8005702: b29a uxth r2, r3 - 8005704: 697b ldr r3, [r7, #20] - 8005706: 801a strh r2, [r3, #0] - 8005708: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800570c: 2b3e cmp r3, #62 @ 0x3e - 800570e: d921 bls.n 8005754 - 8005710: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005714: 095b lsrs r3, r3, #5 - 8005716: f8c7 30fc str.w r3, [r7, #252] @ 0xfc - 800571a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800571e: f003 031f and.w r3, r3, #31 - 8005722: 2b00 cmp r3, #0 - 8005724: d104 bne.n 8005730 - 8005726: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 800572a: 3b01 subs r3, #1 - 800572c: f8c7 30fc str.w r3, [r7, #252] @ 0xfc - 8005730: 697b ldr r3, [r7, #20] - 8005732: 881b ldrh r3, [r3, #0] - 8005734: b29a uxth r2, r3 - 8005736: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 800573a: b29b uxth r3, r3 - 800573c: 029b lsls r3, r3, #10 - 800573e: b29b uxth r3, r3 - 8005740: 4313 orrs r3, r2 - 8005742: b29b uxth r3, r3 - 8005744: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005748: ea6f 4353 mvn.w r3, r3, lsr #17 - 800574c: b29a uxth r2, r3 - 800574e: 697b ldr r3, [r7, #20] - 8005750: 801a strh r2, [r3, #0] - 8005752: e056 b.n 8005802 - 8005754: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005758: 2b00 cmp r3, #0 - 800575a: d10a bne.n 8005772 - 800575c: 697b ldr r3, [r7, #20] - 800575e: 881b ldrh r3, [r3, #0] - 8005760: b29b uxth r3, r3 - 8005762: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005766: ea6f 4353 mvn.w r3, r3, lsr #17 - 800576a: b29a uxth r2, r3 - 800576c: 697b ldr r3, [r7, #20] - 800576e: 801a strh r2, [r3, #0] - 8005770: e047 b.n 8005802 - 8005772: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005776: 085b lsrs r3, r3, #1 - 8005778: f8c7 30fc str.w r3, [r7, #252] @ 0xfc - 800577c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005780: f003 0301 and.w r3, r3, #1 - 8005784: 2b00 cmp r3, #0 - 8005786: d004 beq.n 8005792 - 8005788: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 800578c: 3301 adds r3, #1 - 800578e: f8c7 30fc str.w r3, [r7, #252] @ 0xfc - 8005792: 697b ldr r3, [r7, #20] - 8005794: 881b ldrh r3, [r3, #0] - 8005796: b29a uxth r2, r3 - 8005798: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 800579c: b29b uxth r3, r3 - 800579e: 029b lsls r3, r3, #10 - 80057a0: b29b uxth r3, r3 - 80057a2: 4313 orrs r3, r2 - 80057a4: b29a uxth r2, r3 - 80057a6: 697b ldr r3, [r7, #20] - 80057a8: 801a strh r2, [r3, #0] - 80057aa: e02a b.n 8005802 - 80057ac: f507 7384 add.w r3, r7, #264 @ 0x108 - 80057b0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80057b4: 681b ldr r3, [r3, #0] - 80057b6: 785b ldrb r3, [r3, #1] - 80057b8: 2b01 cmp r3, #1 - 80057ba: d122 bne.n 8005802 - 80057bc: f507 7384 add.w r3, r7, #264 @ 0x108 - 80057c0: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80057c4: 681b ldr r3, [r3, #0] - 80057c6: 623b str r3, [r7, #32] - 80057c8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80057cc: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80057d0: 681b ldr r3, [r3, #0] - 80057d2: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80057d6: b29b uxth r3, r3 - 80057d8: 461a mov r2, r3 - 80057da: 6a3b ldr r3, [r7, #32] - 80057dc: 4413 add r3, r2 - 80057de: 623b str r3, [r7, #32] - 80057e0: f507 7384 add.w r3, r7, #264 @ 0x108 - 80057e4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80057e8: 681b ldr r3, [r3, #0] - 80057ea: 781b ldrb r3, [r3, #0] - 80057ec: 011a lsls r2, r3, #4 - 80057ee: 6a3b ldr r3, [r7, #32] - 80057f0: 4413 add r3, r2 - 80057f2: f203 4304 addw r3, r3, #1028 @ 0x404 - 80057f6: 61fb str r3, [r7, #28] - 80057f8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80057fc: b29a uxth r2, r3 - 80057fe: 69fb ldr r3, [r7, #28] - 8005800: 801a strh r2, [r3, #0] - pmabuffer = ep->pmaaddr0; - 8005802: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005806: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800580a: 681b ldr r3, [r3, #0] - 800580c: 891b ldrh r3, [r3, #8] - 800580e: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 - - /* Write the user buffer to USB PMA */ - USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); - 8005812: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005816: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800581a: 681b ldr r3, [r3, #0] - 800581c: 6959 ldr r1, [r3, #20] - 800581e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005822: b29b uxth r3, r3 - 8005824: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 - 8005828: f507 7084 add.w r0, r7, #264 @ 0x108 - 800582c: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 8005830: 6800 ldr r0, [r0, #0] - 8005832: f001 fa48 bl 8006cc6 - 8005836: e3ee b.n 8006016 - } - else - { - /* Set the Double buffer counter for pmabuffer0 */ - PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); - 8005838: f507 7384 add.w r3, r7, #264 @ 0x108 - 800583c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005840: 681b ldr r3, [r3, #0] - 8005842: 785b ldrb r3, [r3, #1] - 8005844: 2b00 cmp r3, #0 - 8005846: d177 bne.n 8005938 - 8005848: f507 7384 add.w r3, r7, #264 @ 0x108 - 800584c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005850: 681b ldr r3, [r3, #0] - 8005852: 64bb str r3, [r7, #72] @ 0x48 - 8005854: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005858: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 800585c: 681b ldr r3, [r3, #0] - 800585e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005862: b29b uxth r3, r3 - 8005864: 461a mov r2, r3 - 8005866: 6cbb ldr r3, [r7, #72] @ 0x48 - 8005868: 4413 add r3, r2 - 800586a: 64bb str r3, [r7, #72] @ 0x48 - 800586c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005870: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005874: 681b ldr r3, [r3, #0] - 8005876: 781b ldrb r3, [r3, #0] - 8005878: 011a lsls r2, r3, #4 - 800587a: 6cbb ldr r3, [r7, #72] @ 0x48 - 800587c: 4413 add r3, r2 - 800587e: f203 4304 addw r3, r3, #1028 @ 0x404 - 8005882: 647b str r3, [r7, #68] @ 0x44 - 8005884: 6c7b ldr r3, [r7, #68] @ 0x44 - 8005886: 881b ldrh r3, [r3, #0] - 8005888: b29b uxth r3, r3 - 800588a: f3c3 0309 ubfx r3, r3, #0, #10 - 800588e: b29a uxth r2, r3 - 8005890: 6c7b ldr r3, [r7, #68] @ 0x44 - 8005892: 801a strh r2, [r3, #0] - 8005894: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005898: 2b3e cmp r3, #62 @ 0x3e - 800589a: d921 bls.n 80058e0 - 800589c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80058a0: 095b lsrs r3, r3, #5 - 80058a2: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 - 80058a6: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80058aa: f003 031f and.w r3, r3, #31 - 80058ae: 2b00 cmp r3, #0 - 80058b0: d104 bne.n 80058bc - 80058b2: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 - 80058b6: 3b01 subs r3, #1 - 80058b8: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 - 80058bc: 6c7b ldr r3, [r7, #68] @ 0x44 - 80058be: 881b ldrh r3, [r3, #0] - 80058c0: b29a uxth r2, r3 - 80058c2: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 - 80058c6: b29b uxth r3, r3 - 80058c8: 029b lsls r3, r3, #10 - 80058ca: b29b uxth r3, r3 - 80058cc: 4313 orrs r3, r2 - 80058ce: b29b uxth r3, r3 - 80058d0: ea6f 4343 mvn.w r3, r3, lsl #17 - 80058d4: ea6f 4353 mvn.w r3, r3, lsr #17 - 80058d8: b29a uxth r2, r3 - 80058da: 6c7b ldr r3, [r7, #68] @ 0x44 - 80058dc: 801a strh r2, [r3, #0] - 80058de: e056 b.n 800598e - 80058e0: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80058e4: 2b00 cmp r3, #0 - 80058e6: d10a bne.n 80058fe - 80058e8: 6c7b ldr r3, [r7, #68] @ 0x44 - 80058ea: 881b ldrh r3, [r3, #0] - 80058ec: b29b uxth r3, r3 - 80058ee: ea6f 4343 mvn.w r3, r3, lsl #17 - 80058f2: ea6f 4353 mvn.w r3, r3, lsr #17 - 80058f6: b29a uxth r2, r3 - 80058f8: 6c7b ldr r3, [r7, #68] @ 0x44 - 80058fa: 801a strh r2, [r3, #0] - 80058fc: e047 b.n 800598e - 80058fe: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005902: 085b lsrs r3, r3, #1 - 8005904: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 - 8005908: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800590c: f003 0301 and.w r3, r3, #1 - 8005910: 2b00 cmp r3, #0 - 8005912: d004 beq.n 800591e - 8005914: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 - 8005918: 3301 adds r3, #1 - 800591a: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 - 800591e: 6c7b ldr r3, [r7, #68] @ 0x44 - 8005920: 881b ldrh r3, [r3, #0] - 8005922: b29a uxth r2, r3 - 8005924: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 - 8005928: b29b uxth r3, r3 - 800592a: 029b lsls r3, r3, #10 - 800592c: b29b uxth r3, r3 - 800592e: 4313 orrs r3, r2 - 8005930: b29a uxth r2, r3 - 8005932: 6c7b ldr r3, [r7, #68] @ 0x44 - 8005934: 801a strh r2, [r3, #0] - 8005936: e02a b.n 800598e - 8005938: f507 7384 add.w r3, r7, #264 @ 0x108 - 800593c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005940: 681b ldr r3, [r3, #0] - 8005942: 785b ldrb r3, [r3, #1] - 8005944: 2b01 cmp r3, #1 - 8005946: d122 bne.n 800598e - 8005948: f507 7384 add.w r3, r7, #264 @ 0x108 - 800594c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005950: 681b ldr r3, [r3, #0] - 8005952: 653b str r3, [r7, #80] @ 0x50 - 8005954: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005958: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 800595c: 681b ldr r3, [r3, #0] - 800595e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005962: b29b uxth r3, r3 - 8005964: 461a mov r2, r3 - 8005966: 6d3b ldr r3, [r7, #80] @ 0x50 - 8005968: 4413 add r3, r2 - 800596a: 653b str r3, [r7, #80] @ 0x50 - 800596c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005970: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005974: 681b ldr r3, [r3, #0] - 8005976: 781b ldrb r3, [r3, #0] - 8005978: 011a lsls r2, r3, #4 - 800597a: 6d3b ldr r3, [r7, #80] @ 0x50 - 800597c: 4413 add r3, r2 - 800597e: f203 4304 addw r3, r3, #1028 @ 0x404 - 8005982: 64fb str r3, [r7, #76] @ 0x4c - 8005984: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005988: b29a uxth r2, r3 - 800598a: 6cfb ldr r3, [r7, #76] @ 0x4c - 800598c: 801a strh r2, [r3, #0] - pmabuffer = ep->pmaaddr0; - 800598e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005992: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005996: 681b ldr r3, [r3, #0] - 8005998: 891b ldrh r3, [r3, #8] - 800599a: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 - - /* Write the user buffer to USB PMA */ - USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); - 800599e: f507 7384 add.w r3, r7, #264 @ 0x108 - 80059a2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80059a6: 681b ldr r3, [r3, #0] - 80059a8: 6959 ldr r1, [r3, #20] - 80059aa: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80059ae: b29b uxth r3, r3 - 80059b0: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 - 80059b4: f507 7084 add.w r0, r7, #264 @ 0x108 - 80059b8: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 80059bc: 6800 ldr r0, [r0, #0] - 80059be: f001 f982 bl 8006cc6 - ep->xfer_buff += len; - 80059c2: f507 7384 add.w r3, r7, #264 @ 0x108 - 80059c6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80059ca: 681b ldr r3, [r3, #0] - 80059cc: 695a ldr r2, [r3, #20] - 80059ce: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80059d2: 441a add r2, r3 - 80059d4: f507 7384 add.w r3, r7, #264 @ 0x108 - 80059d8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80059dc: 681b ldr r3, [r3, #0] - 80059de: 615a str r2, [r3, #20] - - if (ep->xfer_len_db > ep->maxpacket) - 80059e0: f507 7384 add.w r3, r7, #264 @ 0x108 - 80059e4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80059e8: 681b ldr r3, [r3, #0] - 80059ea: 6a1a ldr r2, [r3, #32] - 80059ec: f507 7384 add.w r3, r7, #264 @ 0x108 - 80059f0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80059f4: 681b ldr r3, [r3, #0] - 80059f6: 691b ldr r3, [r3, #16] - 80059f8: 429a cmp r2, r3 - 80059fa: d90f bls.n 8005a1c - { - ep->xfer_len_db -= len; - 80059fc: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005a00: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005a04: 681b ldr r3, [r3, #0] - 8005a06: 6a1a ldr r2, [r3, #32] - 8005a08: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005a0c: 1ad2 subs r2, r2, r3 - 8005a0e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005a12: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005a16: 681b ldr r3, [r3, #0] - 8005a18: 621a str r2, [r3, #32] - 8005a1a: e00e b.n 8005a3a - } - else - { - len = ep->xfer_len_db; - 8005a1c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005a20: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005a24: 681b ldr r3, [r3, #0] - 8005a26: 6a1b ldr r3, [r3, #32] - 8005a28: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - ep->xfer_len_db = 0U; - 8005a2c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005a30: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005a34: 681b ldr r3, [r3, #0] - 8005a36: 2200 movs r2, #0 - 8005a38: 621a str r2, [r3, #32] - } - - /* Set the Double buffer counter for pmabuffer1 */ - PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); - 8005a3a: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005a3e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005a42: 681b ldr r3, [r3, #0] - 8005a44: 643b str r3, [r7, #64] @ 0x40 - 8005a46: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005a4a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005a4e: 681b ldr r3, [r3, #0] - 8005a50: 785b ldrb r3, [r3, #1] - 8005a52: 2b00 cmp r3, #0 - 8005a54: d177 bne.n 8005b46 - 8005a56: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005a5a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005a5e: 681b ldr r3, [r3, #0] - 8005a60: 63bb str r3, [r7, #56] @ 0x38 - 8005a62: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005a66: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005a6a: 681b ldr r3, [r3, #0] - 8005a6c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005a70: b29b uxth r3, r3 - 8005a72: 461a mov r2, r3 - 8005a74: 6bbb ldr r3, [r7, #56] @ 0x38 - 8005a76: 4413 add r3, r2 - 8005a78: 63bb str r3, [r7, #56] @ 0x38 - 8005a7a: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005a7e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005a82: 681b ldr r3, [r3, #0] - 8005a84: 781b ldrb r3, [r3, #0] - 8005a86: 011a lsls r2, r3, #4 - 8005a88: 6bbb ldr r3, [r7, #56] @ 0x38 - 8005a8a: 4413 add r3, r2 - 8005a8c: f203 430c addw r3, r3, #1036 @ 0x40c - 8005a90: 637b str r3, [r7, #52] @ 0x34 - 8005a92: 6b7b ldr r3, [r7, #52] @ 0x34 - 8005a94: 881b ldrh r3, [r3, #0] - 8005a96: b29b uxth r3, r3 - 8005a98: f3c3 0309 ubfx r3, r3, #0, #10 - 8005a9c: b29a uxth r2, r3 - 8005a9e: 6b7b ldr r3, [r7, #52] @ 0x34 - 8005aa0: 801a strh r2, [r3, #0] - 8005aa2: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005aa6: 2b3e cmp r3, #62 @ 0x3e - 8005aa8: d921 bls.n 8005aee - 8005aaa: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005aae: 095b lsrs r3, r3, #5 - 8005ab0: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 - 8005ab4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005ab8: f003 031f and.w r3, r3, #31 - 8005abc: 2b00 cmp r3, #0 - 8005abe: d104 bne.n 8005aca - 8005ac0: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005ac4: 3b01 subs r3, #1 - 8005ac6: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 - 8005aca: 6b7b ldr r3, [r7, #52] @ 0x34 - 8005acc: 881b ldrh r3, [r3, #0] - 8005ace: b29a uxth r2, r3 - 8005ad0: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005ad4: b29b uxth r3, r3 - 8005ad6: 029b lsls r3, r3, #10 - 8005ad8: b29b uxth r3, r3 - 8005ada: 4313 orrs r3, r2 - 8005adc: b29b uxth r3, r3 - 8005ade: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005ae2: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005ae6: b29a uxth r2, r3 - 8005ae8: 6b7b ldr r3, [r7, #52] @ 0x34 - 8005aea: 801a strh r2, [r3, #0] - 8005aec: e050 b.n 8005b90 - 8005aee: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005af2: 2b00 cmp r3, #0 - 8005af4: d10a bne.n 8005b0c - 8005af6: 6b7b ldr r3, [r7, #52] @ 0x34 - 8005af8: 881b ldrh r3, [r3, #0] - 8005afa: b29b uxth r3, r3 - 8005afc: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005b00: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005b04: b29a uxth r2, r3 - 8005b06: 6b7b ldr r3, [r7, #52] @ 0x34 - 8005b08: 801a strh r2, [r3, #0] - 8005b0a: e041 b.n 8005b90 - 8005b0c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005b10: 085b lsrs r3, r3, #1 - 8005b12: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 - 8005b16: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005b1a: f003 0301 and.w r3, r3, #1 - 8005b1e: 2b00 cmp r3, #0 - 8005b20: d004 beq.n 8005b2c - 8005b22: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005b26: 3301 adds r3, #1 - 8005b28: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 - 8005b2c: 6b7b ldr r3, [r7, #52] @ 0x34 - 8005b2e: 881b ldrh r3, [r3, #0] - 8005b30: b29a uxth r2, r3 - 8005b32: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 8005b36: b29b uxth r3, r3 - 8005b38: 029b lsls r3, r3, #10 - 8005b3a: b29b uxth r3, r3 - 8005b3c: 4313 orrs r3, r2 - 8005b3e: b29a uxth r2, r3 - 8005b40: 6b7b ldr r3, [r7, #52] @ 0x34 - 8005b42: 801a strh r2, [r3, #0] - 8005b44: e024 b.n 8005b90 - 8005b46: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005b4a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005b4e: 681b ldr r3, [r3, #0] - 8005b50: 785b ldrb r3, [r3, #1] - 8005b52: 2b01 cmp r3, #1 - 8005b54: d11c bne.n 8005b90 - 8005b56: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005b5a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005b5e: 681b ldr r3, [r3, #0] - 8005b60: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005b64: b29b uxth r3, r3 - 8005b66: 461a mov r2, r3 - 8005b68: 6c3b ldr r3, [r7, #64] @ 0x40 - 8005b6a: 4413 add r3, r2 - 8005b6c: 643b str r3, [r7, #64] @ 0x40 - 8005b6e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005b72: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005b76: 681b ldr r3, [r3, #0] - 8005b78: 781b ldrb r3, [r3, #0] - 8005b7a: 011a lsls r2, r3, #4 - 8005b7c: 6c3b ldr r3, [r7, #64] @ 0x40 - 8005b7e: 4413 add r3, r2 - 8005b80: f203 430c addw r3, r3, #1036 @ 0x40c - 8005b84: 63fb str r3, [r7, #60] @ 0x3c - 8005b86: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005b8a: b29a uxth r2, r3 - 8005b8c: 6bfb ldr r3, [r7, #60] @ 0x3c - 8005b8e: 801a strh r2, [r3, #0] - pmabuffer = ep->pmaaddr1; - 8005b90: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005b94: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005b98: 681b ldr r3, [r3, #0] - 8005b9a: 895b ldrh r3, [r3, #10] - 8005b9c: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 - - /* Write the user buffer to USB PMA */ - USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); - 8005ba0: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005ba4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005ba8: 681b ldr r3, [r3, #0] - 8005baa: 6959 ldr r1, [r3, #20] - 8005bac: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005bb0: b29b uxth r3, r3 - 8005bb2: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 - 8005bb6: f507 7084 add.w r0, r7, #264 @ 0x108 - 8005bba: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 8005bbe: 6800 ldr r0, [r0, #0] - 8005bc0: f001 f881 bl 8006cc6 - 8005bc4: e227 b.n 8006016 - } - } - /* auto Switch to single buffer mode when transfer xfer_len_db; - 8005bc6: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005bca: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005bce: 681b ldr r3, [r3, #0] - 8005bd0: 6a1b ldr r3, [r3, #32] - 8005bd2: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - - /* disable double buffer mode for Bulk endpoint */ - PCD_CLEAR_BULK_EP_DBUF(USBx, ep->num); - 8005bd6: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005bda: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005bde: 681a ldr r2, [r3, #0] - 8005be0: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005be4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005be8: 681b ldr r3, [r3, #0] - 8005bea: 781b ldrb r3, [r3, #0] - 8005bec: 009b lsls r3, r3, #2 - 8005bee: 4413 add r3, r2 - 8005bf0: 881b ldrh r3, [r3, #0] - 8005bf2: b29b uxth r3, r3 - 8005bf4: f423 43e2 bic.w r3, r3, #28928 @ 0x7100 - 8005bf8: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8005bfc: f8a7 3062 strh.w r3, [r7, #98] @ 0x62 - 8005c00: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005c04: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005c08: 681a ldr r2, [r3, #0] - 8005c0a: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005c0e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005c12: 681b ldr r3, [r3, #0] - 8005c14: 781b ldrb r3, [r3, #0] - 8005c16: 009b lsls r3, r3, #2 - 8005c18: 441a add r2, r3 - 8005c1a: f8b7 3062 ldrh.w r3, [r7, #98] @ 0x62 - 8005c1e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8005c22: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8005c26: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8005c2a: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8005c2e: b29b uxth r3, r3 - 8005c30: 8013 strh r3, [r2, #0] - - /* Set Tx count with nbre of byte to be transmitted */ - PCD_SET_EP_TX_CNT(USBx, ep->num, len); - 8005c32: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005c36: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005c3a: 681b ldr r3, [r3, #0] - 8005c3c: 65fb str r3, [r7, #92] @ 0x5c - 8005c3e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005c42: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005c46: 681b ldr r3, [r3, #0] - 8005c48: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005c4c: b29b uxth r3, r3 - 8005c4e: 461a mov r2, r3 - 8005c50: 6dfb ldr r3, [r7, #92] @ 0x5c - 8005c52: 4413 add r3, r2 - 8005c54: 65fb str r3, [r7, #92] @ 0x5c - 8005c56: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005c5a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005c5e: 681b ldr r3, [r3, #0] - 8005c60: 781b ldrb r3, [r3, #0] - 8005c62: 011a lsls r2, r3, #4 - 8005c64: 6dfb ldr r3, [r7, #92] @ 0x5c - 8005c66: 4413 add r3, r2 - 8005c68: f203 4304 addw r3, r3, #1028 @ 0x404 - 8005c6c: 65bb str r3, [r7, #88] @ 0x58 - 8005c6e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005c72: b29a uxth r2, r3 - 8005c74: 6dbb ldr r3, [r7, #88] @ 0x58 - 8005c76: 801a strh r2, [r3, #0] - pmabuffer = ep->pmaaddr0; - 8005c78: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005c7c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005c80: 681b ldr r3, [r3, #0] - 8005c82: 891b ldrh r3, [r3, #8] - 8005c84: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 - - /* Write the user buffer to USB PMA */ - USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); - 8005c88: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005c8c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005c90: 681b ldr r3, [r3, #0] - 8005c92: 6959 ldr r1, [r3, #20] - 8005c94: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005c98: b29b uxth r3, r3 - 8005c9a: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 - 8005c9e: f507 7084 add.w r0, r7, #264 @ 0x108 - 8005ca2: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 8005ca6: 6800 ldr r0, [r0, #0] - 8005ca8: f001 f80d bl 8006cc6 - 8005cac: e1b3 b.n 8006016 - } - } - else /* manage isochronous double buffer IN mode */ - { - /* each Time to write in PMA xfer_len_db will */ - ep->xfer_len_db -= len; - 8005cae: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005cb2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005cb6: 681b ldr r3, [r3, #0] - 8005cb8: 6a1a ldr r2, [r3, #32] - 8005cba: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005cbe: 1ad2 subs r2, r2, r3 - 8005cc0: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005cc4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005cc8: 681b ldr r3, [r3, #0] - 8005cca: 621a str r2, [r3, #32] - - /* Fill the data buffer */ - if ((PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_DTOG_TX) != 0U) - 8005ccc: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005cd0: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005cd4: 681a ldr r2, [r3, #0] - 8005cd6: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005cda: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005cde: 681b ldr r3, [r3, #0] - 8005ce0: 781b ldrb r3, [r3, #0] - 8005ce2: 009b lsls r3, r3, #2 - 8005ce4: 4413 add r3, r2 - 8005ce6: 881b ldrh r3, [r3, #0] - 8005ce8: b29b uxth r3, r3 - 8005cea: f003 0340 and.w r3, r3, #64 @ 0x40 - 8005cee: 2b00 cmp r3, #0 - 8005cf0: f000 80c6 beq.w 8005e80 - { - /* Set the Double buffer counter for pmabuffer1 */ - PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); - 8005cf4: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005cf8: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005cfc: 681b ldr r3, [r3, #0] - 8005cfe: 673b str r3, [r7, #112] @ 0x70 - 8005d00: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005d04: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005d08: 681b ldr r3, [r3, #0] - 8005d0a: 785b ldrb r3, [r3, #1] - 8005d0c: 2b00 cmp r3, #0 - 8005d0e: d177 bne.n 8005e00 - 8005d10: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005d14: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005d18: 681b ldr r3, [r3, #0] - 8005d1a: 66bb str r3, [r7, #104] @ 0x68 - 8005d1c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005d20: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005d24: 681b ldr r3, [r3, #0] - 8005d26: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005d2a: b29b uxth r3, r3 - 8005d2c: 461a mov r2, r3 - 8005d2e: 6ebb ldr r3, [r7, #104] @ 0x68 - 8005d30: 4413 add r3, r2 - 8005d32: 66bb str r3, [r7, #104] @ 0x68 - 8005d34: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005d38: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005d3c: 681b ldr r3, [r3, #0] - 8005d3e: 781b ldrb r3, [r3, #0] - 8005d40: 011a lsls r2, r3, #4 - 8005d42: 6ebb ldr r3, [r7, #104] @ 0x68 - 8005d44: 4413 add r3, r2 - 8005d46: f203 430c addw r3, r3, #1036 @ 0x40c - 8005d4a: 667b str r3, [r7, #100] @ 0x64 - 8005d4c: 6e7b ldr r3, [r7, #100] @ 0x64 - 8005d4e: 881b ldrh r3, [r3, #0] - 8005d50: b29b uxth r3, r3 - 8005d52: f3c3 0309 ubfx r3, r3, #0, #10 - 8005d56: b29a uxth r2, r3 - 8005d58: 6e7b ldr r3, [r7, #100] @ 0x64 - 8005d5a: 801a strh r2, [r3, #0] - 8005d5c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005d60: 2b3e cmp r3, #62 @ 0x3e - 8005d62: d921 bls.n 8005da8 - 8005d64: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005d68: 095b lsrs r3, r3, #5 - 8005d6a: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 - 8005d6e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005d72: f003 031f and.w r3, r3, #31 - 8005d76: 2b00 cmp r3, #0 - 8005d78: d104 bne.n 8005d84 - 8005d7a: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 - 8005d7e: 3b01 subs r3, #1 - 8005d80: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 - 8005d84: 6e7b ldr r3, [r7, #100] @ 0x64 - 8005d86: 881b ldrh r3, [r3, #0] - 8005d88: b29a uxth r2, r3 - 8005d8a: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 - 8005d8e: b29b uxth r3, r3 - 8005d90: 029b lsls r3, r3, #10 - 8005d92: b29b uxth r3, r3 - 8005d94: 4313 orrs r3, r2 - 8005d96: b29b uxth r3, r3 - 8005d98: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005d9c: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005da0: b29a uxth r2, r3 - 8005da2: 6e7b ldr r3, [r7, #100] @ 0x64 - 8005da4: 801a strh r2, [r3, #0] - 8005da6: e050 b.n 8005e4a - 8005da8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005dac: 2b00 cmp r3, #0 - 8005dae: d10a bne.n 8005dc6 - 8005db0: 6e7b ldr r3, [r7, #100] @ 0x64 - 8005db2: 881b ldrh r3, [r3, #0] - 8005db4: b29b uxth r3, r3 - 8005db6: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005dba: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005dbe: b29a uxth r2, r3 - 8005dc0: 6e7b ldr r3, [r7, #100] @ 0x64 - 8005dc2: 801a strh r2, [r3, #0] - 8005dc4: e041 b.n 8005e4a - 8005dc6: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005dca: 085b lsrs r3, r3, #1 - 8005dcc: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 - 8005dd0: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005dd4: f003 0301 and.w r3, r3, #1 - 8005dd8: 2b00 cmp r3, #0 - 8005dda: d004 beq.n 8005de6 - 8005ddc: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 - 8005de0: 3301 adds r3, #1 - 8005de2: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 - 8005de6: 6e7b ldr r3, [r7, #100] @ 0x64 - 8005de8: 881b ldrh r3, [r3, #0] - 8005dea: b29a uxth r2, r3 - 8005dec: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 - 8005df0: b29b uxth r3, r3 - 8005df2: 029b lsls r3, r3, #10 - 8005df4: b29b uxth r3, r3 - 8005df6: 4313 orrs r3, r2 - 8005df8: b29a uxth r2, r3 - 8005dfa: 6e7b ldr r3, [r7, #100] @ 0x64 - 8005dfc: 801a strh r2, [r3, #0] - 8005dfe: e024 b.n 8005e4a - 8005e00: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005e04: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005e08: 681b ldr r3, [r3, #0] - 8005e0a: 785b ldrb r3, [r3, #1] - 8005e0c: 2b01 cmp r3, #1 - 8005e0e: d11c bne.n 8005e4a - 8005e10: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005e14: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005e18: 681b ldr r3, [r3, #0] - 8005e1a: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005e1e: b29b uxth r3, r3 - 8005e20: 461a mov r2, r3 - 8005e22: 6f3b ldr r3, [r7, #112] @ 0x70 - 8005e24: 4413 add r3, r2 - 8005e26: 673b str r3, [r7, #112] @ 0x70 - 8005e28: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005e2c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005e30: 681b ldr r3, [r3, #0] - 8005e32: 781b ldrb r3, [r3, #0] - 8005e34: 011a lsls r2, r3, #4 - 8005e36: 6f3b ldr r3, [r7, #112] @ 0x70 - 8005e38: 4413 add r3, r2 - 8005e3a: f203 430c addw r3, r3, #1036 @ 0x40c - 8005e3e: 66fb str r3, [r7, #108] @ 0x6c - 8005e40: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005e44: b29a uxth r2, r3 - 8005e46: 6efb ldr r3, [r7, #108] @ 0x6c - 8005e48: 801a strh r2, [r3, #0] - pmabuffer = ep->pmaaddr1; - 8005e4a: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005e4e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005e52: 681b ldr r3, [r3, #0] - 8005e54: 895b ldrh r3, [r3, #10] - 8005e56: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 - - /* Write the user buffer to USB PMA */ - USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); - 8005e5a: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005e5e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005e62: 681b ldr r3, [r3, #0] - 8005e64: 6959 ldr r1, [r3, #20] - 8005e66: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005e6a: b29b uxth r3, r3 - 8005e6c: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 - 8005e70: f507 7084 add.w r0, r7, #264 @ 0x108 - 8005e74: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 8005e78: 6800 ldr r0, [r0, #0] - 8005e7a: f000 ff24 bl 8006cc6 - 8005e7e: e0ca b.n 8006016 - } - else - { - /* Set the Double buffer counter for pmabuffer0 */ - PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); - 8005e80: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005e84: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005e88: 681b ldr r3, [r3, #0] - 8005e8a: 785b ldrb r3, [r3, #1] - 8005e8c: 2b00 cmp r3, #0 - 8005e8e: d177 bne.n 8005f80 - 8005e90: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005e94: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005e98: 681b ldr r3, [r3, #0] - 8005e9a: 67fb str r3, [r7, #124] @ 0x7c - 8005e9c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005ea0: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005ea4: 681b ldr r3, [r3, #0] - 8005ea6: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005eaa: b29b uxth r3, r3 - 8005eac: 461a mov r2, r3 - 8005eae: 6ffb ldr r3, [r7, #124] @ 0x7c - 8005eb0: 4413 add r3, r2 - 8005eb2: 67fb str r3, [r7, #124] @ 0x7c - 8005eb4: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005eb8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005ebc: 681b ldr r3, [r3, #0] - 8005ebe: 781b ldrb r3, [r3, #0] - 8005ec0: 011a lsls r2, r3, #4 - 8005ec2: 6ffb ldr r3, [r7, #124] @ 0x7c - 8005ec4: 4413 add r3, r2 - 8005ec6: f203 4304 addw r3, r3, #1028 @ 0x404 - 8005eca: 67bb str r3, [r7, #120] @ 0x78 - 8005ecc: 6fbb ldr r3, [r7, #120] @ 0x78 - 8005ece: 881b ldrh r3, [r3, #0] - 8005ed0: b29b uxth r3, r3 - 8005ed2: f3c3 0309 ubfx r3, r3, #0, #10 - 8005ed6: b29a uxth r2, r3 - 8005ed8: 6fbb ldr r3, [r7, #120] @ 0x78 - 8005eda: 801a strh r2, [r3, #0] - 8005edc: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005ee0: 2b3e cmp r3, #62 @ 0x3e - 8005ee2: d921 bls.n 8005f28 - 8005ee4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005ee8: 095b lsrs r3, r3, #5 - 8005eea: f8c7 30ec str.w r3, [r7, #236] @ 0xec - 8005eee: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005ef2: f003 031f and.w r3, r3, #31 - 8005ef6: 2b00 cmp r3, #0 - 8005ef8: d104 bne.n 8005f04 - 8005efa: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec - 8005efe: 3b01 subs r3, #1 - 8005f00: f8c7 30ec str.w r3, [r7, #236] @ 0xec - 8005f04: 6fbb ldr r3, [r7, #120] @ 0x78 - 8005f06: 881b ldrh r3, [r3, #0] - 8005f08: b29a uxth r2, r3 - 8005f0a: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec - 8005f0e: b29b uxth r3, r3 - 8005f10: 029b lsls r3, r3, #10 - 8005f12: b29b uxth r3, r3 - 8005f14: 4313 orrs r3, r2 - 8005f16: b29b uxth r3, r3 - 8005f18: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005f1c: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005f20: b29a uxth r2, r3 - 8005f22: 6fbb ldr r3, [r7, #120] @ 0x78 - 8005f24: 801a strh r2, [r3, #0] - 8005f26: e05c b.n 8005fe2 - 8005f28: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005f2c: 2b00 cmp r3, #0 - 8005f2e: d10a bne.n 8005f46 - 8005f30: 6fbb ldr r3, [r7, #120] @ 0x78 - 8005f32: 881b ldrh r3, [r3, #0] - 8005f34: b29b uxth r3, r3 - 8005f36: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005f3a: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005f3e: b29a uxth r2, r3 - 8005f40: 6fbb ldr r3, [r7, #120] @ 0x78 - 8005f42: 801a strh r2, [r3, #0] - 8005f44: e04d b.n 8005fe2 - 8005f46: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005f4a: 085b lsrs r3, r3, #1 - 8005f4c: f8c7 30ec str.w r3, [r7, #236] @ 0xec - 8005f50: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005f54: f003 0301 and.w r3, r3, #1 - 8005f58: 2b00 cmp r3, #0 - 8005f5a: d004 beq.n 8005f66 - 8005f5c: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec - 8005f60: 3301 adds r3, #1 - 8005f62: f8c7 30ec str.w r3, [r7, #236] @ 0xec - 8005f66: 6fbb ldr r3, [r7, #120] @ 0x78 - 8005f68: 881b ldrh r3, [r3, #0] - 8005f6a: b29a uxth r2, r3 - 8005f6c: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec - 8005f70: b29b uxth r3, r3 - 8005f72: 029b lsls r3, r3, #10 - 8005f74: b29b uxth r3, r3 - 8005f76: 4313 orrs r3, r2 - 8005f78: b29a uxth r2, r3 - 8005f7a: 6fbb ldr r3, [r7, #120] @ 0x78 - 8005f7c: 801a strh r2, [r3, #0] - 8005f7e: e030 b.n 8005fe2 - 8005f80: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005f84: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005f88: 681b ldr r3, [r3, #0] - 8005f8a: 785b ldrb r3, [r3, #1] - 8005f8c: 2b01 cmp r3, #1 - 8005f8e: d128 bne.n 8005fe2 - 8005f90: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005f94: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005f98: 681b ldr r3, [r3, #0] - 8005f9a: f8c7 3084 str.w r3, [r7, #132] @ 0x84 - 8005f9e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005fa2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005fa6: 681b ldr r3, [r3, #0] - 8005fa8: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005fac: b29b uxth r3, r3 - 8005fae: 461a mov r2, r3 - 8005fb0: f8d7 3084 ldr.w r3, [r7, #132] @ 0x84 - 8005fb4: 4413 add r3, r2 - 8005fb6: f8c7 3084 str.w r3, [r7, #132] @ 0x84 - 8005fba: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005fbe: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005fc2: 681b ldr r3, [r3, #0] - 8005fc4: 781b ldrb r3, [r3, #0] - 8005fc6: 011a lsls r2, r3, #4 - 8005fc8: f8d7 3084 ldr.w r3, [r7, #132] @ 0x84 - 8005fcc: 4413 add r3, r2 - 8005fce: f203 4304 addw r3, r3, #1028 @ 0x404 - 8005fd2: f8c7 3080 str.w r3, [r7, #128] @ 0x80 - 8005fd6: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005fda: b29a uxth r2, r3 - 8005fdc: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 - 8005fe0: 801a strh r2, [r3, #0] - pmabuffer = ep->pmaaddr0; - 8005fe2: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005fe6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005fea: 681b ldr r3, [r3, #0] - 8005fec: 891b ldrh r3, [r3, #8] - 8005fee: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 - - /* Write the user buffer to USB PMA */ - USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); - 8005ff2: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005ff6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005ffa: 681b ldr r3, [r3, #0] - 8005ffc: 6959 ldr r1, [r3, #20] - 8005ffe: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8006002: b29b uxth r3, r3 - 8006004: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 - 8006008: f507 7084 add.w r0, r7, #264 @ 0x108 - 800600c: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 8006010: 6800 ldr r0, [r0, #0] - 8006012: f000 fe58 bl 8006cc6 - } - } - } -#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ - - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_VALID); - 8006016: f507 7384 add.w r3, r7, #264 @ 0x108 - 800601a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 800601e: 681a ldr r2, [r3, #0] - 8006020: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006024: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006028: 681b ldr r3, [r3, #0] - 800602a: 781b ldrb r3, [r3, #0] - 800602c: 009b lsls r3, r3, #2 - 800602e: 4413 add r3, r2 - 8006030: 881b ldrh r3, [r3, #0] - 8006032: b29b uxth r3, r3 - 8006034: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8006038: f023 0340 bic.w r3, r3, #64 @ 0x40 - 800603c: 817b strh r3, [r7, #10] - 800603e: 897b ldrh r3, [r7, #10] - 8006040: f083 0310 eor.w r3, r3, #16 - 8006044: 817b strh r3, [r7, #10] - 8006046: 897b ldrh r3, [r7, #10] - 8006048: f083 0320 eor.w r3, r3, #32 - 800604c: 817b strh r3, [r7, #10] - 800604e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006052: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006056: 681a ldr r2, [r3, #0] - 8006058: f507 7384 add.w r3, r7, #264 @ 0x108 - 800605c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006060: 681b ldr r3, [r3, #0] - 8006062: 781b ldrb r3, [r3, #0] - 8006064: 009b lsls r3, r3, #2 - 8006066: 441a add r2, r3 - 8006068: 897b ldrh r3, [r7, #10] - 800606a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800606e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8006072: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8006076: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800607a: b29b uxth r3, r3 - 800607c: 8013 strh r3, [r2, #0] - 800607e: f000 bcde b.w 8006a3e - } - else /* OUT endpoint */ - { - if (ep->doublebuffer == 0U) - 8006082: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006086: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800608a: 681b ldr r3, [r3, #0] - 800608c: 7b1b ldrb r3, [r3, #12] - 800608e: 2b00 cmp r3, #0 - 8006090: f040 80bb bne.w 800620a - { - /* Multi packet transfer */ - if (ep->xfer_len > ep->maxpacket) - 8006094: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006098: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800609c: 681b ldr r3, [r3, #0] - 800609e: 699a ldr r2, [r3, #24] - 80060a0: f507 7384 add.w r3, r7, #264 @ 0x108 - 80060a4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80060a8: 681b ldr r3, [r3, #0] - 80060aa: 691b ldr r3, [r3, #16] - 80060ac: 429a cmp r2, r3 - 80060ae: d917 bls.n 80060e0 - { - len = ep->maxpacket; - 80060b0: f507 7384 add.w r3, r7, #264 @ 0x108 - 80060b4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80060b8: 681b ldr r3, [r3, #0] - 80060ba: 691b ldr r3, [r3, #16] - 80060bc: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - ep->xfer_len -= len; - 80060c0: f507 7384 add.w r3, r7, #264 @ 0x108 - 80060c4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80060c8: 681b ldr r3, [r3, #0] - 80060ca: 699a ldr r2, [r3, #24] - 80060cc: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80060d0: 1ad2 subs r2, r2, r3 - 80060d2: f507 7384 add.w r3, r7, #264 @ 0x108 - 80060d6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80060da: 681b ldr r3, [r3, #0] - 80060dc: 619a str r2, [r3, #24] - 80060de: e00e b.n 80060fe - } - else - { - len = ep->xfer_len; - 80060e0: f507 7384 add.w r3, r7, #264 @ 0x108 - 80060e4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80060e8: 681b ldr r3, [r3, #0] - 80060ea: 699b ldr r3, [r3, #24] - 80060ec: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - ep->xfer_len = 0U; - 80060f0: f507 7384 add.w r3, r7, #264 @ 0x108 - 80060f4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80060f8: 681b ldr r3, [r3, #0] - 80060fa: 2200 movs r2, #0 - 80060fc: 619a str r2, [r3, #24] - } - /* configure and validate Rx endpoint */ - PCD_SET_EP_RX_CNT(USBx, ep->num, len); - 80060fe: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006102: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006106: 681b ldr r3, [r3, #0] - 8006108: f8c7 3090 str.w r3, [r7, #144] @ 0x90 - 800610c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006110: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006114: 681b ldr r3, [r3, #0] - 8006116: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800611a: b29b uxth r3, r3 - 800611c: 461a mov r2, r3 - 800611e: f8d7 3090 ldr.w r3, [r7, #144] @ 0x90 - 8006122: 4413 add r3, r2 - 8006124: f8c7 3090 str.w r3, [r7, #144] @ 0x90 - 8006128: f507 7384 add.w r3, r7, #264 @ 0x108 - 800612c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006130: 681b ldr r3, [r3, #0] - 8006132: 781b ldrb r3, [r3, #0] - 8006134: 011a lsls r2, r3, #4 - 8006136: f8d7 3090 ldr.w r3, [r7, #144] @ 0x90 - 800613a: 4413 add r3, r2 - 800613c: f203 430c addw r3, r3, #1036 @ 0x40c - 8006140: f8c7 308c str.w r3, [r7, #140] @ 0x8c - 8006144: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8006148: 881b ldrh r3, [r3, #0] - 800614a: b29b uxth r3, r3 - 800614c: f3c3 0309 ubfx r3, r3, #0, #10 - 8006150: b29a uxth r2, r3 - 8006152: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8006156: 801a strh r2, [r3, #0] - 8006158: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800615c: 2b3e cmp r3, #62 @ 0x3e - 800615e: d924 bls.n 80061aa - 8006160: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8006164: 095b lsrs r3, r3, #5 - 8006166: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 - 800616a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800616e: f003 031f and.w r3, r3, #31 - 8006172: 2b00 cmp r3, #0 - 8006174: d104 bne.n 8006180 - 8006176: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 - 800617a: 3b01 subs r3, #1 - 800617c: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 - 8006180: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8006184: 881b ldrh r3, [r3, #0] - 8006186: b29a uxth r2, r3 - 8006188: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 - 800618c: b29b uxth r3, r3 - 800618e: 029b lsls r3, r3, #10 - 8006190: b29b uxth r3, r3 - 8006192: 4313 orrs r3, r2 - 8006194: b29b uxth r3, r3 - 8006196: ea6f 4343 mvn.w r3, r3, lsl #17 - 800619a: ea6f 4353 mvn.w r3, r3, lsr #17 - 800619e: b29a uxth r2, r3 - 80061a0: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 80061a4: 801a strh r2, [r3, #0] - 80061a6: f000 bc10 b.w 80069ca - 80061aa: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80061ae: 2b00 cmp r3, #0 - 80061b0: d10c bne.n 80061cc - 80061b2: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 80061b6: 881b ldrh r3, [r3, #0] - 80061b8: b29b uxth r3, r3 - 80061ba: ea6f 4343 mvn.w r3, r3, lsl #17 - 80061be: ea6f 4353 mvn.w r3, r3, lsr #17 - 80061c2: b29a uxth r2, r3 - 80061c4: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 80061c8: 801a strh r2, [r3, #0] - 80061ca: e3fe b.n 80069ca - 80061cc: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80061d0: 085b lsrs r3, r3, #1 - 80061d2: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 - 80061d6: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80061da: f003 0301 and.w r3, r3, #1 - 80061de: 2b00 cmp r3, #0 - 80061e0: d004 beq.n 80061ec - 80061e2: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 - 80061e6: 3301 adds r3, #1 - 80061e8: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 - 80061ec: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 80061f0: 881b ldrh r3, [r3, #0] - 80061f2: b29a uxth r2, r3 - 80061f4: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 - 80061f8: b29b uxth r3, r3 - 80061fa: 029b lsls r3, r3, #10 - 80061fc: b29b uxth r3, r3 - 80061fe: 4313 orrs r3, r2 - 8006200: b29a uxth r2, r3 - 8006202: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8006206: 801a strh r2, [r3, #0] - 8006208: e3df b.n 80069ca -#if (USE_USB_DOUBLE_BUFFER == 1U) - else - { - /* First Transfer Coming From HAL_PCD_EP_Receive & From ISR */ - /* Set the Double buffer counter */ - if (ep->type == EP_TYPE_BULK) - 800620a: f507 7384 add.w r3, r7, #264 @ 0x108 - 800620e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006212: 681b ldr r3, [r3, #0] - 8006214: 78db ldrb r3, [r3, #3] - 8006216: 2b02 cmp r3, #2 - 8006218: f040 8218 bne.w 800664c - { - PCD_SET_EP_DBUF_CNT(USBx, ep->num, ep->is_in, ep->maxpacket); - 800621c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006220: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006224: 681b ldr r3, [r3, #0] - 8006226: 785b ldrb r3, [r3, #1] - 8006228: 2b00 cmp r3, #0 - 800622a: f040 809d bne.w 8006368 - 800622e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006232: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006236: 681b ldr r3, [r3, #0] - 8006238: f8c7 30ac str.w r3, [r7, #172] @ 0xac - 800623c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006240: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006244: 681b ldr r3, [r3, #0] - 8006246: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800624a: b29b uxth r3, r3 - 800624c: 461a mov r2, r3 - 800624e: f8d7 30ac ldr.w r3, [r7, #172] @ 0xac - 8006252: 4413 add r3, r2 - 8006254: f8c7 30ac str.w r3, [r7, #172] @ 0xac - 8006258: f507 7384 add.w r3, r7, #264 @ 0x108 - 800625c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006260: 681b ldr r3, [r3, #0] - 8006262: 781b ldrb r3, [r3, #0] - 8006264: 011a lsls r2, r3, #4 - 8006266: f8d7 30ac ldr.w r3, [r7, #172] @ 0xac - 800626a: 4413 add r3, r2 - 800626c: f203 4304 addw r3, r3, #1028 @ 0x404 - 8006270: f8c7 30a8 str.w r3, [r7, #168] @ 0xa8 - 8006274: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 8006278: 881b ldrh r3, [r3, #0] - 800627a: b29b uxth r3, r3 - 800627c: f3c3 0309 ubfx r3, r3, #0, #10 - 8006280: b29a uxth r2, r3 - 8006282: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 8006286: 801a strh r2, [r3, #0] - 8006288: f507 7384 add.w r3, r7, #264 @ 0x108 - 800628c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006290: 681b ldr r3, [r3, #0] - 8006292: 691b ldr r3, [r3, #16] - 8006294: 2b3e cmp r3, #62 @ 0x3e - 8006296: d92b bls.n 80062f0 - 8006298: f507 7384 add.w r3, r7, #264 @ 0x108 - 800629c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80062a0: 681b ldr r3, [r3, #0] - 80062a2: 691b ldr r3, [r3, #16] - 80062a4: 095b lsrs r3, r3, #5 - 80062a6: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 - 80062aa: f507 7384 add.w r3, r7, #264 @ 0x108 - 80062ae: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80062b2: 681b ldr r3, [r3, #0] - 80062b4: 691b ldr r3, [r3, #16] - 80062b6: f003 031f and.w r3, r3, #31 - 80062ba: 2b00 cmp r3, #0 - 80062bc: d104 bne.n 80062c8 - 80062be: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 80062c2: 3b01 subs r3, #1 - 80062c4: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 - 80062c8: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 80062cc: 881b ldrh r3, [r3, #0] - 80062ce: b29a uxth r2, r3 - 80062d0: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 80062d4: b29b uxth r3, r3 - 80062d6: 029b lsls r3, r3, #10 - 80062d8: b29b uxth r3, r3 - 80062da: 4313 orrs r3, r2 - 80062dc: b29b uxth r3, r3 - 80062de: ea6f 4343 mvn.w r3, r3, lsl #17 - 80062e2: ea6f 4353 mvn.w r3, r3, lsr #17 - 80062e6: b29a uxth r2, r3 - 80062e8: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 80062ec: 801a strh r2, [r3, #0] - 80062ee: e070 b.n 80063d2 - 80062f0: f507 7384 add.w r3, r7, #264 @ 0x108 - 80062f4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80062f8: 681b ldr r3, [r3, #0] - 80062fa: 691b ldr r3, [r3, #16] - 80062fc: 2b00 cmp r3, #0 - 80062fe: d10c bne.n 800631a - 8006300: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 8006304: 881b ldrh r3, [r3, #0] - 8006306: b29b uxth r3, r3 - 8006308: ea6f 4343 mvn.w r3, r3, lsl #17 - 800630c: ea6f 4353 mvn.w r3, r3, lsr #17 - 8006310: b29a uxth r2, r3 - 8006312: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 8006316: 801a strh r2, [r3, #0] - 8006318: e05b b.n 80063d2 - 800631a: f507 7384 add.w r3, r7, #264 @ 0x108 - 800631e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006322: 681b ldr r3, [r3, #0] - 8006324: 691b ldr r3, [r3, #16] - 8006326: 085b lsrs r3, r3, #1 - 8006328: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 - 800632c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006330: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006334: 681b ldr r3, [r3, #0] - 8006336: 691b ldr r3, [r3, #16] - 8006338: f003 0301 and.w r3, r3, #1 - 800633c: 2b00 cmp r3, #0 - 800633e: d004 beq.n 800634a - 8006340: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8006344: 3301 adds r3, #1 - 8006346: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 - 800634a: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 800634e: 881b ldrh r3, [r3, #0] - 8006350: b29a uxth r2, r3 - 8006352: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8006356: b29b uxth r3, r3 - 8006358: 029b lsls r3, r3, #10 - 800635a: b29b uxth r3, r3 - 800635c: 4313 orrs r3, r2 - 800635e: b29a uxth r2, r3 - 8006360: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 8006364: 801a strh r2, [r3, #0] - 8006366: e034 b.n 80063d2 - 8006368: f507 7384 add.w r3, r7, #264 @ 0x108 - 800636c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006370: 681b ldr r3, [r3, #0] - 8006372: 785b ldrb r3, [r3, #1] - 8006374: 2b01 cmp r3, #1 - 8006376: d12c bne.n 80063d2 - 8006378: f507 7384 add.w r3, r7, #264 @ 0x108 - 800637c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006380: 681b ldr r3, [r3, #0] - 8006382: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 - 8006386: f507 7384 add.w r3, r7, #264 @ 0x108 - 800638a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 800638e: 681b ldr r3, [r3, #0] - 8006390: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8006394: b29b uxth r3, r3 - 8006396: 461a mov r2, r3 - 8006398: f8d7 30b4 ldr.w r3, [r7, #180] @ 0xb4 - 800639c: 4413 add r3, r2 - 800639e: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 - 80063a2: f507 7384 add.w r3, r7, #264 @ 0x108 - 80063a6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80063aa: 681b ldr r3, [r3, #0] - 80063ac: 781b ldrb r3, [r3, #0] - 80063ae: 011a lsls r2, r3, #4 - 80063b0: f8d7 30b4 ldr.w r3, [r7, #180] @ 0xb4 - 80063b4: 4413 add r3, r2 - 80063b6: f203 4304 addw r3, r3, #1028 @ 0x404 - 80063ba: f8c7 30b0 str.w r3, [r7, #176] @ 0xb0 - 80063be: f507 7384 add.w r3, r7, #264 @ 0x108 - 80063c2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80063c6: 681b ldr r3, [r3, #0] - 80063c8: 691b ldr r3, [r3, #16] - 80063ca: b29a uxth r2, r3 - 80063cc: f8d7 30b0 ldr.w r3, [r7, #176] @ 0xb0 - 80063d0: 801a strh r2, [r3, #0] - 80063d2: f507 7384 add.w r3, r7, #264 @ 0x108 - 80063d6: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80063da: 681b ldr r3, [r3, #0] - 80063dc: f8c7 30a4 str.w r3, [r7, #164] @ 0xa4 - 80063e0: f507 7384 add.w r3, r7, #264 @ 0x108 - 80063e4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80063e8: 681b ldr r3, [r3, #0] - 80063ea: 785b ldrb r3, [r3, #1] - 80063ec: 2b00 cmp r3, #0 - 80063ee: f040 809d bne.w 800652c - 80063f2: f507 7384 add.w r3, r7, #264 @ 0x108 - 80063f6: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80063fa: 681b ldr r3, [r3, #0] - 80063fc: f8c7 309c str.w r3, [r7, #156] @ 0x9c - 8006400: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006404: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006408: 681b ldr r3, [r3, #0] - 800640a: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800640e: b29b uxth r3, r3 - 8006410: 461a mov r2, r3 - 8006412: f8d7 309c ldr.w r3, [r7, #156] @ 0x9c - 8006416: 4413 add r3, r2 - 8006418: f8c7 309c str.w r3, [r7, #156] @ 0x9c - 800641c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006420: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006424: 681b ldr r3, [r3, #0] - 8006426: 781b ldrb r3, [r3, #0] - 8006428: 011a lsls r2, r3, #4 - 800642a: f8d7 309c ldr.w r3, [r7, #156] @ 0x9c - 800642e: 4413 add r3, r2 - 8006430: f203 430c addw r3, r3, #1036 @ 0x40c - 8006434: f8c7 3098 str.w r3, [r7, #152] @ 0x98 - 8006438: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 800643c: 881b ldrh r3, [r3, #0] - 800643e: b29b uxth r3, r3 - 8006440: f3c3 0309 ubfx r3, r3, #0, #10 - 8006444: b29a uxth r2, r3 - 8006446: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 800644a: 801a strh r2, [r3, #0] - 800644c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006450: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006454: 681b ldr r3, [r3, #0] - 8006456: 691b ldr r3, [r3, #16] - 8006458: 2b3e cmp r3, #62 @ 0x3e - 800645a: d92b bls.n 80064b4 - 800645c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006460: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006464: 681b ldr r3, [r3, #0] - 8006466: 691b ldr r3, [r3, #16] - 8006468: 095b lsrs r3, r3, #5 - 800646a: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 - 800646e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006472: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006476: 681b ldr r3, [r3, #0] - 8006478: 691b ldr r3, [r3, #16] - 800647a: f003 031f and.w r3, r3, #31 - 800647e: 2b00 cmp r3, #0 - 8006480: d104 bne.n 800648c - 8006482: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 8006486: 3b01 subs r3, #1 - 8006488: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 - 800648c: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 8006490: 881b ldrh r3, [r3, #0] - 8006492: b29a uxth r2, r3 - 8006494: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 8006498: b29b uxth r3, r3 - 800649a: 029b lsls r3, r3, #10 - 800649c: b29b uxth r3, r3 - 800649e: 4313 orrs r3, r2 - 80064a0: b29b uxth r3, r3 - 80064a2: ea6f 4343 mvn.w r3, r3, lsl #17 - 80064a6: ea6f 4353 mvn.w r3, r3, lsr #17 - 80064aa: b29a uxth r2, r3 - 80064ac: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 80064b0: 801a strh r2, [r3, #0] - 80064b2: e069 b.n 8006588 - 80064b4: f507 7384 add.w r3, r7, #264 @ 0x108 - 80064b8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80064bc: 681b ldr r3, [r3, #0] - 80064be: 691b ldr r3, [r3, #16] - 80064c0: 2b00 cmp r3, #0 - 80064c2: d10c bne.n 80064de - 80064c4: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 80064c8: 881b ldrh r3, [r3, #0] - 80064ca: b29b uxth r3, r3 - 80064cc: ea6f 4343 mvn.w r3, r3, lsl #17 - 80064d0: ea6f 4353 mvn.w r3, r3, lsr #17 - 80064d4: b29a uxth r2, r3 - 80064d6: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 80064da: 801a strh r2, [r3, #0] - 80064dc: e054 b.n 8006588 - 80064de: f507 7384 add.w r3, r7, #264 @ 0x108 - 80064e2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80064e6: 681b ldr r3, [r3, #0] - 80064e8: 691b ldr r3, [r3, #16] - 80064ea: 085b lsrs r3, r3, #1 - 80064ec: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 - 80064f0: f507 7384 add.w r3, r7, #264 @ 0x108 - 80064f4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80064f8: 681b ldr r3, [r3, #0] - 80064fa: 691b ldr r3, [r3, #16] - 80064fc: f003 0301 and.w r3, r3, #1 - 8006500: 2b00 cmp r3, #0 - 8006502: d004 beq.n 800650e - 8006504: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 8006508: 3301 adds r3, #1 - 800650a: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 - 800650e: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 8006512: 881b ldrh r3, [r3, #0] - 8006514: b29a uxth r2, r3 - 8006516: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 800651a: b29b uxth r3, r3 - 800651c: 029b lsls r3, r3, #10 - 800651e: b29b uxth r3, r3 - 8006520: 4313 orrs r3, r2 - 8006522: b29a uxth r2, r3 - 8006524: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 8006528: 801a strh r2, [r3, #0] - 800652a: e02d b.n 8006588 - 800652c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006530: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006534: 681b ldr r3, [r3, #0] - 8006536: 785b ldrb r3, [r3, #1] - 8006538: 2b01 cmp r3, #1 - 800653a: d125 bne.n 8006588 - 800653c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006540: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006544: 681b ldr r3, [r3, #0] - 8006546: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800654a: b29b uxth r3, r3 - 800654c: 461a mov r2, r3 - 800654e: f8d7 30a4 ldr.w r3, [r7, #164] @ 0xa4 - 8006552: 4413 add r3, r2 - 8006554: f8c7 30a4 str.w r3, [r7, #164] @ 0xa4 - 8006558: f507 7384 add.w r3, r7, #264 @ 0x108 - 800655c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006560: 681b ldr r3, [r3, #0] - 8006562: 781b ldrb r3, [r3, #0] - 8006564: 011a lsls r2, r3, #4 - 8006566: f8d7 30a4 ldr.w r3, [r7, #164] @ 0xa4 - 800656a: 4413 add r3, r2 - 800656c: f203 430c addw r3, r3, #1036 @ 0x40c - 8006570: f8c7 30a0 str.w r3, [r7, #160] @ 0xa0 - 8006574: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006578: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800657c: 681b ldr r3, [r3, #0] - 800657e: 691b ldr r3, [r3, #16] - 8006580: b29a uxth r2, r3 - 8006582: f8d7 30a0 ldr.w r3, [r7, #160] @ 0xa0 - 8006586: 801a strh r2, [r3, #0] - - /* Coming from ISR */ - if (ep->xfer_count != 0U) - 8006588: f507 7384 add.w r3, r7, #264 @ 0x108 - 800658c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006590: 681b ldr r3, [r3, #0] - 8006592: 69db ldr r3, [r3, #28] - 8006594: 2b00 cmp r3, #0 - 8006596: f000 8218 beq.w 80069ca - { - /* update last value to check if there is blocking state */ - wEPVal = PCD_GET_ENDPOINT(USBx, ep->num); - 800659a: f507 7384 add.w r3, r7, #264 @ 0x108 - 800659e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80065a2: 681a ldr r2, [r3, #0] - 80065a4: f507 7384 add.w r3, r7, #264 @ 0x108 - 80065a8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80065ac: 681b ldr r3, [r3, #0] - 80065ae: 781b ldrb r3, [r3, #0] - 80065b0: 009b lsls r3, r3, #2 - 80065b2: 4413 add r3, r2 - 80065b4: 881b ldrh r3, [r3, #0] - 80065b6: f8a7 3096 strh.w r3, [r7, #150] @ 0x96 - - /*Blocking State */ - if ((((wEPVal & USB_EP_DTOG_RX) != 0U) && ((wEPVal & USB_EP_DTOG_TX) != 0U)) || - 80065ba: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 - 80065be: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 80065c2: 2b00 cmp r3, #0 - 80065c4: d005 beq.n 80065d2 - 80065c6: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 - 80065ca: f003 0340 and.w r3, r3, #64 @ 0x40 - 80065ce: 2b00 cmp r3, #0 - 80065d0: d10d bne.n 80065ee - (((wEPVal & USB_EP_DTOG_RX) == 0U) && ((wEPVal & USB_EP_DTOG_TX) == 0U))) - 80065d2: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 - 80065d6: f403 4380 and.w r3, r3, #16384 @ 0x4000 - if ((((wEPVal & USB_EP_DTOG_RX) != 0U) && ((wEPVal & USB_EP_DTOG_TX) != 0U)) || - 80065da: 2b00 cmp r3, #0 - 80065dc: f040 81f5 bne.w 80069ca - (((wEPVal & USB_EP_DTOG_RX) == 0U) && ((wEPVal & USB_EP_DTOG_TX) == 0U))) - 80065e0: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 - 80065e4: f003 0340 and.w r3, r3, #64 @ 0x40 - 80065e8: 2b00 cmp r3, #0 - 80065ea: f040 81ee bne.w 80069ca - { - PCD_FREE_USER_BUFFER(USBx, ep->num, 0U); - 80065ee: f507 7384 add.w r3, r7, #264 @ 0x108 - 80065f2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80065f6: 681a ldr r2, [r3, #0] - 80065f8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80065fc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006600: 681b ldr r3, [r3, #0] - 8006602: 781b ldrb r3, [r3, #0] - 8006604: 009b lsls r3, r3, #2 - 8006606: 4413 add r3, r2 - 8006608: 881b ldrh r3, [r3, #0] - 800660a: b29b uxth r3, r3 - 800660c: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8006610: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8006614: f8a7 3094 strh.w r3, [r7, #148] @ 0x94 - 8006618: f507 7384 add.w r3, r7, #264 @ 0x108 - 800661c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006620: 681a ldr r2, [r3, #0] - 8006622: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006626: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800662a: 681b ldr r3, [r3, #0] - 800662c: 781b ldrb r3, [r3, #0] - 800662e: 009b lsls r3, r3, #2 - 8006630: 441a add r2, r3 - 8006632: f8b7 3094 ldrh.w r3, [r7, #148] @ 0x94 - 8006636: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800663a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800663e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8006642: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8006646: b29b uxth r3, r3 - 8006648: 8013 strh r3, [r2, #0] - 800664a: e1be b.n 80069ca - } - } - } - /* iso out double */ - else if (ep->type == EP_TYPE_ISOC) - 800664c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006650: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006654: 681b ldr r3, [r3, #0] - 8006656: 78db ldrb r3, [r3, #3] - 8006658: 2b01 cmp r3, #1 - 800665a: f040 81b4 bne.w 80069c6 - { - /* Multi packet transfer */ - if (ep->xfer_len > ep->maxpacket) - 800665e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006662: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006666: 681b ldr r3, [r3, #0] - 8006668: 699a ldr r2, [r3, #24] - 800666a: f507 7384 add.w r3, r7, #264 @ 0x108 - 800666e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006672: 681b ldr r3, [r3, #0] - 8006674: 691b ldr r3, [r3, #16] - 8006676: 429a cmp r2, r3 - 8006678: d917 bls.n 80066aa - { - len = ep->maxpacket; - 800667a: f507 7384 add.w r3, r7, #264 @ 0x108 - 800667e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006682: 681b ldr r3, [r3, #0] - 8006684: 691b ldr r3, [r3, #16] - 8006686: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - ep->xfer_len -= len; - 800668a: f507 7384 add.w r3, r7, #264 @ 0x108 - 800668e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006692: 681b ldr r3, [r3, #0] - 8006694: 699a ldr r2, [r3, #24] - 8006696: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800669a: 1ad2 subs r2, r2, r3 - 800669c: f507 7384 add.w r3, r7, #264 @ 0x108 - 80066a0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80066a4: 681b ldr r3, [r3, #0] - 80066a6: 619a str r2, [r3, #24] - 80066a8: e00e b.n 80066c8 - } - else - { - len = ep->xfer_len; - 80066aa: f507 7384 add.w r3, r7, #264 @ 0x108 - 80066ae: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80066b2: 681b ldr r3, [r3, #0] - 80066b4: 699b ldr r3, [r3, #24] - 80066b6: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - ep->xfer_len = 0U; - 80066ba: f507 7384 add.w r3, r7, #264 @ 0x108 - 80066be: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80066c2: 681b ldr r3, [r3, #0] - 80066c4: 2200 movs r2, #0 - 80066c6: 619a str r2, [r3, #24] - } - PCD_SET_EP_DBUF_CNT(USBx, ep->num, ep->is_in, len); - 80066c8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80066cc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80066d0: 681b ldr r3, [r3, #0] - 80066d2: 785b ldrb r3, [r3, #1] - 80066d4: 2b00 cmp r3, #0 - 80066d6: f040 8085 bne.w 80067e4 - 80066da: f507 7384 add.w r3, r7, #264 @ 0x108 - 80066de: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80066e2: 681b ldr r3, [r3, #0] - 80066e4: f8c7 30cc str.w r3, [r7, #204] @ 0xcc - 80066e8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80066ec: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80066f0: 681b ldr r3, [r3, #0] - 80066f2: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80066f6: b29b uxth r3, r3 - 80066f8: 461a mov r2, r3 - 80066fa: f8d7 30cc ldr.w r3, [r7, #204] @ 0xcc - 80066fe: 4413 add r3, r2 - 8006700: f8c7 30cc str.w r3, [r7, #204] @ 0xcc - 8006704: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006708: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800670c: 681b ldr r3, [r3, #0] - 800670e: 781b ldrb r3, [r3, #0] - 8006710: 011a lsls r2, r3, #4 - 8006712: f8d7 30cc ldr.w r3, [r7, #204] @ 0xcc - 8006716: 4413 add r3, r2 - 8006718: f203 4304 addw r3, r3, #1028 @ 0x404 - 800671c: f8c7 30c8 str.w r3, [r7, #200] @ 0xc8 - 8006720: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 8006724: 881b ldrh r3, [r3, #0] - 8006726: b29b uxth r3, r3 - 8006728: f3c3 0309 ubfx r3, r3, #0, #10 - 800672c: b29a uxth r2, r3 - 800672e: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 8006732: 801a strh r2, [r3, #0] - 8006734: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8006738: 2b3e cmp r3, #62 @ 0x3e - 800673a: d923 bls.n 8006784 - 800673c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8006740: 095b lsrs r3, r3, #5 - 8006742: f8c7 30dc str.w r3, [r7, #220] @ 0xdc - 8006746: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800674a: f003 031f and.w r3, r3, #31 - 800674e: 2b00 cmp r3, #0 - 8006750: d104 bne.n 800675c - 8006752: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 8006756: 3b01 subs r3, #1 - 8006758: f8c7 30dc str.w r3, [r7, #220] @ 0xdc - 800675c: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 8006760: 881b ldrh r3, [r3, #0] - 8006762: b29a uxth r2, r3 - 8006764: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 8006768: b29b uxth r3, r3 - 800676a: 029b lsls r3, r3, #10 - 800676c: b29b uxth r3, r3 - 800676e: 4313 orrs r3, r2 - 8006770: b29b uxth r3, r3 - 8006772: ea6f 4343 mvn.w r3, r3, lsl #17 - 8006776: ea6f 4353 mvn.w r3, r3, lsr #17 - 800677a: b29a uxth r2, r3 - 800677c: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 8006780: 801a strh r2, [r3, #0] - 8006782: e060 b.n 8006846 - 8006784: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8006788: 2b00 cmp r3, #0 - 800678a: d10c bne.n 80067a6 - 800678c: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 8006790: 881b ldrh r3, [r3, #0] - 8006792: b29b uxth r3, r3 - 8006794: ea6f 4343 mvn.w r3, r3, lsl #17 - 8006798: ea6f 4353 mvn.w r3, r3, lsr #17 - 800679c: b29a uxth r2, r3 - 800679e: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 80067a2: 801a strh r2, [r3, #0] - 80067a4: e04f b.n 8006846 - 80067a6: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80067aa: 085b lsrs r3, r3, #1 - 80067ac: f8c7 30dc str.w r3, [r7, #220] @ 0xdc - 80067b0: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80067b4: f003 0301 and.w r3, r3, #1 - 80067b8: 2b00 cmp r3, #0 - 80067ba: d004 beq.n 80067c6 - 80067bc: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 80067c0: 3301 adds r3, #1 - 80067c2: f8c7 30dc str.w r3, [r7, #220] @ 0xdc - 80067c6: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 80067ca: 881b ldrh r3, [r3, #0] - 80067cc: b29a uxth r2, r3 - 80067ce: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 80067d2: b29b uxth r3, r3 - 80067d4: 029b lsls r3, r3, #10 - 80067d6: b29b uxth r3, r3 - 80067d8: 4313 orrs r3, r2 - 80067da: b29a uxth r2, r3 - 80067dc: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 80067e0: 801a strh r2, [r3, #0] - 80067e2: e030 b.n 8006846 - 80067e4: f507 7384 add.w r3, r7, #264 @ 0x108 - 80067e8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80067ec: 681b ldr r3, [r3, #0] - 80067ee: 785b ldrb r3, [r3, #1] - 80067f0: 2b01 cmp r3, #1 - 80067f2: d128 bne.n 8006846 - 80067f4: f507 7384 add.w r3, r7, #264 @ 0x108 - 80067f8: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80067fc: 681b ldr r3, [r3, #0] - 80067fe: f8c7 30d4 str.w r3, [r7, #212] @ 0xd4 - 8006802: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006806: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 800680a: 681b ldr r3, [r3, #0] - 800680c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8006810: b29b uxth r3, r3 - 8006812: 461a mov r2, r3 - 8006814: f8d7 30d4 ldr.w r3, [r7, #212] @ 0xd4 - 8006818: 4413 add r3, r2 - 800681a: f8c7 30d4 str.w r3, [r7, #212] @ 0xd4 - 800681e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006822: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006826: 681b ldr r3, [r3, #0] - 8006828: 781b ldrb r3, [r3, #0] - 800682a: 011a lsls r2, r3, #4 - 800682c: f8d7 30d4 ldr.w r3, [r7, #212] @ 0xd4 - 8006830: 4413 add r3, r2 - 8006832: f203 4304 addw r3, r3, #1028 @ 0x404 - 8006836: f8c7 30d0 str.w r3, [r7, #208] @ 0xd0 - 800683a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800683e: b29a uxth r2, r3 - 8006840: f8d7 30d0 ldr.w r3, [r7, #208] @ 0xd0 - 8006844: 801a strh r2, [r3, #0] - 8006846: f507 7384 add.w r3, r7, #264 @ 0x108 - 800684a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 800684e: 681b ldr r3, [r3, #0] - 8006850: f8c7 30c4 str.w r3, [r7, #196] @ 0xc4 - 8006854: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006858: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800685c: 681b ldr r3, [r3, #0] - 800685e: 785b ldrb r3, [r3, #1] - 8006860: 2b00 cmp r3, #0 - 8006862: f040 8085 bne.w 8006970 - 8006866: f507 7384 add.w r3, r7, #264 @ 0x108 - 800686a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 800686e: 681b ldr r3, [r3, #0] - 8006870: f8c7 30bc str.w r3, [r7, #188] @ 0xbc - 8006874: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006878: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 800687c: 681b ldr r3, [r3, #0] - 800687e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8006882: b29b uxth r3, r3 - 8006884: 461a mov r2, r3 - 8006886: f8d7 30bc ldr.w r3, [r7, #188] @ 0xbc - 800688a: 4413 add r3, r2 - 800688c: f8c7 30bc str.w r3, [r7, #188] @ 0xbc - 8006890: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006894: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006898: 681b ldr r3, [r3, #0] - 800689a: 781b ldrb r3, [r3, #0] - 800689c: 011a lsls r2, r3, #4 - 800689e: f8d7 30bc ldr.w r3, [r7, #188] @ 0xbc - 80068a2: 4413 add r3, r2 - 80068a4: f203 430c addw r3, r3, #1036 @ 0x40c - 80068a8: f8c7 30b8 str.w r3, [r7, #184] @ 0xb8 - 80068ac: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 80068b0: 881b ldrh r3, [r3, #0] - 80068b2: b29b uxth r3, r3 - 80068b4: f3c3 0309 ubfx r3, r3, #0, #10 - 80068b8: b29a uxth r2, r3 - 80068ba: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 80068be: 801a strh r2, [r3, #0] - 80068c0: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80068c4: 2b3e cmp r3, #62 @ 0x3e - 80068c6: d923 bls.n 8006910 - 80068c8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80068cc: 095b lsrs r3, r3, #5 - 80068ce: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 - 80068d2: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80068d6: f003 031f and.w r3, r3, #31 - 80068da: 2b00 cmp r3, #0 - 80068dc: d104 bne.n 80068e8 - 80068de: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 - 80068e2: 3b01 subs r3, #1 - 80068e4: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 - 80068e8: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 80068ec: 881b ldrh r3, [r3, #0] - 80068ee: b29a uxth r2, r3 - 80068f0: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 - 80068f4: b29b uxth r3, r3 - 80068f6: 029b lsls r3, r3, #10 - 80068f8: b29b uxth r3, r3 - 80068fa: 4313 orrs r3, r2 - 80068fc: b29b uxth r3, r3 - 80068fe: ea6f 4343 mvn.w r3, r3, lsl #17 - 8006902: ea6f 4353 mvn.w r3, r3, lsr #17 - 8006906: b29a uxth r2, r3 - 8006908: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 800690c: 801a strh r2, [r3, #0] - 800690e: e05c b.n 80069ca - 8006910: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8006914: 2b00 cmp r3, #0 - 8006916: d10c bne.n 8006932 - 8006918: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 800691c: 881b ldrh r3, [r3, #0] - 800691e: b29b uxth r3, r3 - 8006920: ea6f 4343 mvn.w r3, r3, lsl #17 - 8006924: ea6f 4353 mvn.w r3, r3, lsr #17 - 8006928: b29a uxth r2, r3 - 800692a: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 800692e: 801a strh r2, [r3, #0] - 8006930: e04b b.n 80069ca - 8006932: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8006936: 085b lsrs r3, r3, #1 - 8006938: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 - 800693c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8006940: f003 0301 and.w r3, r3, #1 - 8006944: 2b00 cmp r3, #0 - 8006946: d004 beq.n 8006952 - 8006948: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 - 800694c: 3301 adds r3, #1 - 800694e: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 - 8006952: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 8006956: 881b ldrh r3, [r3, #0] - 8006958: b29a uxth r2, r3 - 800695a: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 - 800695e: b29b uxth r3, r3 - 8006960: 029b lsls r3, r3, #10 - 8006962: b29b uxth r3, r3 - 8006964: 4313 orrs r3, r2 - 8006966: b29a uxth r2, r3 - 8006968: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 800696c: 801a strh r2, [r3, #0] - 800696e: e02c b.n 80069ca - 8006970: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006974: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006978: 681b ldr r3, [r3, #0] - 800697a: 785b ldrb r3, [r3, #1] - 800697c: 2b01 cmp r3, #1 - 800697e: d124 bne.n 80069ca - 8006980: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006984: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006988: 681b ldr r3, [r3, #0] - 800698a: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800698e: b29b uxth r3, r3 - 8006990: 461a mov r2, r3 - 8006992: f8d7 30c4 ldr.w r3, [r7, #196] @ 0xc4 - 8006996: 4413 add r3, r2 - 8006998: f8c7 30c4 str.w r3, [r7, #196] @ 0xc4 - 800699c: f507 7384 add.w r3, r7, #264 @ 0x108 - 80069a0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80069a4: 681b ldr r3, [r3, #0] - 80069a6: 781b ldrb r3, [r3, #0] - 80069a8: 011a lsls r2, r3, #4 - 80069aa: f8d7 30c4 ldr.w r3, [r7, #196] @ 0xc4 - 80069ae: 4413 add r3, r2 - 80069b0: f203 430c addw r3, r3, #1036 @ 0x40c - 80069b4: f8c7 30c0 str.w r3, [r7, #192] @ 0xc0 - 80069b8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80069bc: b29a uxth r2, r3 - 80069be: f8d7 30c0 ldr.w r3, [r7, #192] @ 0xc0 - 80069c2: 801a strh r2, [r3, #0] - 80069c4: e001 b.n 80069ca - } - else - { - return HAL_ERROR; - 80069c6: 2301 movs r3, #1 - 80069c8: e03a b.n 8006a40 - } - } -#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ - - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); - 80069ca: f507 7384 add.w r3, r7, #264 @ 0x108 - 80069ce: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80069d2: 681a ldr r2, [r3, #0] - 80069d4: f507 7384 add.w r3, r7, #264 @ 0x108 - 80069d8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80069dc: 681b ldr r3, [r3, #0] - 80069de: 781b ldrb r3, [r3, #0] - 80069e0: 009b lsls r3, r3, #2 - 80069e2: 4413 add r3, r2 - 80069e4: 881b ldrh r3, [r3, #0] - 80069e6: b29b uxth r3, r3 - 80069e8: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 80069ec: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80069f0: f8a7 308a strh.w r3, [r7, #138] @ 0x8a - 80069f4: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a - 80069f8: f483 5380 eor.w r3, r3, #4096 @ 0x1000 - 80069fc: f8a7 308a strh.w r3, [r7, #138] @ 0x8a - 8006a00: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a - 8006a04: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 8006a08: f8a7 308a strh.w r3, [r7, #138] @ 0x8a - 8006a0c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006a10: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006a14: 681a ldr r2, [r3, #0] - 8006a16: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006a1a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006a1e: 681b ldr r3, [r3, #0] - 8006a20: 781b ldrb r3, [r3, #0] - 8006a22: 009b lsls r3, r3, #2 - 8006a24: 441a add r2, r3 - 8006a26: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a - 8006a2a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8006a2e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8006a32: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8006a36: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8006a3a: b29b uxth r3, r3 - 8006a3c: 8013 strh r3, [r2, #0] - } - - return HAL_OK; - 8006a3e: 2300 movs r3, #0 -} - 8006a40: 4618 mov r0, r3 - 8006a42: f507 7784 add.w r7, r7, #264 @ 0x108 - 8006a46: 46bd mov sp, r7 - 8006a48: bd80 pop {r7, pc} - -08006a4a : - * @param USBx Selected device - * @param ep pointer to endpoint structure - * @retval HAL status - */ -HAL_StatusTypeDef USB_EPSetStall(USB_TypeDef *USBx, USB_EPTypeDef *ep) -{ - 8006a4a: b480 push {r7} - 8006a4c: b085 sub sp, #20 - 8006a4e: af00 add r7, sp, #0 - 8006a50: 6078 str r0, [r7, #4] - 8006a52: 6039 str r1, [r7, #0] - if (ep->is_in != 0U) - 8006a54: 683b ldr r3, [r7, #0] - 8006a56: 785b ldrb r3, [r3, #1] - 8006a58: 2b00 cmp r3, #0 - 8006a5a: d020 beq.n 8006a9e - { - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_STALL); - 8006a5c: 687a ldr r2, [r7, #4] - 8006a5e: 683b ldr r3, [r7, #0] - 8006a60: 781b ldrb r3, [r3, #0] - 8006a62: 009b lsls r3, r3, #2 - 8006a64: 4413 add r3, r2 - 8006a66: 881b ldrh r3, [r3, #0] - 8006a68: b29b uxth r3, r3 - 8006a6a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8006a6e: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8006a72: 81bb strh r3, [r7, #12] - 8006a74: 89bb ldrh r3, [r7, #12] - 8006a76: f083 0310 eor.w r3, r3, #16 - 8006a7a: 81bb strh r3, [r7, #12] - 8006a7c: 687a ldr r2, [r7, #4] - 8006a7e: 683b ldr r3, [r7, #0] - 8006a80: 781b ldrb r3, [r3, #0] - 8006a82: 009b lsls r3, r3, #2 - 8006a84: 441a add r2, r3 - 8006a86: 89bb ldrh r3, [r7, #12] - 8006a88: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8006a8c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8006a90: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8006a94: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8006a98: b29b uxth r3, r3 - 8006a9a: 8013 strh r3, [r2, #0] - 8006a9c: e01f b.n 8006ade - } - else - { - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_STALL); - 8006a9e: 687a ldr r2, [r7, #4] - 8006aa0: 683b ldr r3, [r7, #0] - 8006aa2: 781b ldrb r3, [r3, #0] - 8006aa4: 009b lsls r3, r3, #2 - 8006aa6: 4413 add r3, r2 - 8006aa8: 881b ldrh r3, [r3, #0] - 8006aaa: b29b uxth r3, r3 - 8006aac: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8006ab0: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8006ab4: 81fb strh r3, [r7, #14] - 8006ab6: 89fb ldrh r3, [r7, #14] - 8006ab8: f483 5380 eor.w r3, r3, #4096 @ 0x1000 - 8006abc: 81fb strh r3, [r7, #14] - 8006abe: 687a ldr r2, [r7, #4] - 8006ac0: 683b ldr r3, [r7, #0] - 8006ac2: 781b ldrb r3, [r3, #0] - 8006ac4: 009b lsls r3, r3, #2 - 8006ac6: 441a add r2, r3 - 8006ac8: 89fb ldrh r3, [r7, #14] - 8006aca: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8006ace: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8006ad2: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8006ad6: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8006ada: b29b uxth r3, r3 - 8006adc: 8013 strh r3, [r2, #0] - } - - return HAL_OK; - 8006ade: 2300 movs r3, #0 -} - 8006ae0: 4618 mov r0, r3 - 8006ae2: 3714 adds r7, #20 - 8006ae4: 46bd mov sp, r7 - 8006ae6: bc80 pop {r7} - 8006ae8: 4770 bx lr - -08006aea : - * @param USBx Selected device - * @param ep pointer to endpoint structure - * @retval HAL status - */ -HAL_StatusTypeDef USB_EPClearStall(USB_TypeDef *USBx, USB_EPTypeDef *ep) -{ - 8006aea: b480 push {r7} - 8006aec: b087 sub sp, #28 - 8006aee: af00 add r7, sp, #0 - 8006af0: 6078 str r0, [r7, #4] - 8006af2: 6039 str r1, [r7, #0] - if (ep->doublebuffer == 0U) - 8006af4: 683b ldr r3, [r7, #0] - 8006af6: 7b1b ldrb r3, [r3, #12] - 8006af8: 2b00 cmp r3, #0 - 8006afa: f040 809d bne.w 8006c38 - { - if (ep->is_in != 0U) - 8006afe: 683b ldr r3, [r7, #0] - 8006b00: 785b ldrb r3, [r3, #1] - 8006b02: 2b00 cmp r3, #0 - 8006b04: d04c beq.n 8006ba0 - { - PCD_CLEAR_TX_DTOG(USBx, ep->num); - 8006b06: 687a ldr r2, [r7, #4] - 8006b08: 683b ldr r3, [r7, #0] - 8006b0a: 781b ldrb r3, [r3, #0] - 8006b0c: 009b lsls r3, r3, #2 - 8006b0e: 4413 add r3, r2 - 8006b10: 881b ldrh r3, [r3, #0] - 8006b12: 823b strh r3, [r7, #16] - 8006b14: 8a3b ldrh r3, [r7, #16] - 8006b16: f003 0340 and.w r3, r3, #64 @ 0x40 - 8006b1a: 2b00 cmp r3, #0 - 8006b1c: d01b beq.n 8006b56 - 8006b1e: 687a ldr r2, [r7, #4] - 8006b20: 683b ldr r3, [r7, #0] - 8006b22: 781b ldrb r3, [r3, #0] - 8006b24: 009b lsls r3, r3, #2 - 8006b26: 4413 add r3, r2 - 8006b28: 881b ldrh r3, [r3, #0] - 8006b2a: b29b uxth r3, r3 - 8006b2c: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8006b30: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8006b34: 81fb strh r3, [r7, #14] - 8006b36: 687a ldr r2, [r7, #4] - 8006b38: 683b ldr r3, [r7, #0] - 8006b3a: 781b ldrb r3, [r3, #0] - 8006b3c: 009b lsls r3, r3, #2 - 8006b3e: 441a add r2, r3 - 8006b40: 89fb ldrh r3, [r7, #14] - 8006b42: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8006b46: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8006b4a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8006b4e: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8006b52: b29b uxth r3, r3 - 8006b54: 8013 strh r3, [r2, #0] - - if (ep->type != EP_TYPE_ISOC) - 8006b56: 683b ldr r3, [r7, #0] - 8006b58: 78db ldrb r3, [r3, #3] - 8006b5a: 2b01 cmp r3, #1 - 8006b5c: d06c beq.n 8006c38 - { - /* Configure NAK status for the Endpoint */ - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); - 8006b5e: 687a ldr r2, [r7, #4] - 8006b60: 683b ldr r3, [r7, #0] - 8006b62: 781b ldrb r3, [r3, #0] - 8006b64: 009b lsls r3, r3, #2 - 8006b66: 4413 add r3, r2 - 8006b68: 881b ldrh r3, [r3, #0] - 8006b6a: b29b uxth r3, r3 - 8006b6c: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8006b70: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8006b74: 81bb strh r3, [r7, #12] - 8006b76: 89bb ldrh r3, [r7, #12] - 8006b78: f083 0320 eor.w r3, r3, #32 - 8006b7c: 81bb strh r3, [r7, #12] - 8006b7e: 687a ldr r2, [r7, #4] - 8006b80: 683b ldr r3, [r7, #0] - 8006b82: 781b ldrb r3, [r3, #0] - 8006b84: 009b lsls r3, r3, #2 - 8006b86: 441a add r2, r3 - 8006b88: 89bb ldrh r3, [r7, #12] - 8006b8a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8006b8e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8006b92: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8006b96: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8006b9a: b29b uxth r3, r3 - 8006b9c: 8013 strh r3, [r2, #0] - 8006b9e: e04b b.n 8006c38 - } - } - else - { - PCD_CLEAR_RX_DTOG(USBx, ep->num); - 8006ba0: 687a ldr r2, [r7, #4] - 8006ba2: 683b ldr r3, [r7, #0] - 8006ba4: 781b ldrb r3, [r3, #0] - 8006ba6: 009b lsls r3, r3, #2 - 8006ba8: 4413 add r3, r2 - 8006baa: 881b ldrh r3, [r3, #0] - 8006bac: 82fb strh r3, [r7, #22] - 8006bae: 8afb ldrh r3, [r7, #22] - 8006bb0: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8006bb4: 2b00 cmp r3, #0 - 8006bb6: d01b beq.n 8006bf0 - 8006bb8: 687a ldr r2, [r7, #4] - 8006bba: 683b ldr r3, [r7, #0] - 8006bbc: 781b ldrb r3, [r3, #0] - 8006bbe: 009b lsls r3, r3, #2 - 8006bc0: 4413 add r3, r2 - 8006bc2: 881b ldrh r3, [r3, #0] - 8006bc4: b29b uxth r3, r3 - 8006bc6: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8006bca: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8006bce: 82bb strh r3, [r7, #20] - 8006bd0: 687a ldr r2, [r7, #4] - 8006bd2: 683b ldr r3, [r7, #0] - 8006bd4: 781b ldrb r3, [r3, #0] - 8006bd6: 009b lsls r3, r3, #2 - 8006bd8: 441a add r2, r3 - 8006bda: 8abb ldrh r3, [r7, #20] - 8006bdc: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8006be0: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8006be4: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8006be8: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8006bec: b29b uxth r3, r3 - 8006bee: 8013 strh r3, [r2, #0] - - /* Configure VALID status for the Endpoint */ - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); - 8006bf0: 687a ldr r2, [r7, #4] - 8006bf2: 683b ldr r3, [r7, #0] - 8006bf4: 781b ldrb r3, [r3, #0] - 8006bf6: 009b lsls r3, r3, #2 - 8006bf8: 4413 add r3, r2 - 8006bfa: 881b ldrh r3, [r3, #0] - 8006bfc: b29b uxth r3, r3 - 8006bfe: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8006c02: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8006c06: 827b strh r3, [r7, #18] - 8006c08: 8a7b ldrh r3, [r7, #18] - 8006c0a: f483 5380 eor.w r3, r3, #4096 @ 0x1000 - 8006c0e: 827b strh r3, [r7, #18] - 8006c10: 8a7b ldrh r3, [r7, #18] - 8006c12: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 8006c16: 827b strh r3, [r7, #18] - 8006c18: 687a ldr r2, [r7, #4] - 8006c1a: 683b ldr r3, [r7, #0] - 8006c1c: 781b ldrb r3, [r3, #0] - 8006c1e: 009b lsls r3, r3, #2 - 8006c20: 441a add r2, r3 - 8006c22: 8a7b ldrh r3, [r7, #18] - 8006c24: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8006c28: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8006c2c: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8006c30: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8006c34: b29b uxth r3, r3 - 8006c36: 8013 strh r3, [r2, #0] - } - } - - return HAL_OK; - 8006c38: 2300 movs r3, #0 -} - 8006c3a: 4618 mov r0, r3 - 8006c3c: 371c adds r7, #28 - 8006c3e: 46bd mov sp, r7 - 8006c40: bc80 pop {r7} - 8006c42: 4770 bx lr - -08006c44 : - * @param address new device address to be assigned - * This parameter can be a value from 0 to 255 - * @retval HAL status - */ -HAL_StatusTypeDef USB_SetDevAddress(USB_TypeDef *USBx, uint8_t address) -{ - 8006c44: b480 push {r7} - 8006c46: b083 sub sp, #12 - 8006c48: af00 add r7, sp, #0 - 8006c4a: 6078 str r0, [r7, #4] - 8006c4c: 460b mov r3, r1 - 8006c4e: 70fb strb r3, [r7, #3] - if (address == 0U) - 8006c50: 78fb ldrb r3, [r7, #3] - 8006c52: 2b00 cmp r3, #0 - 8006c54: d103 bne.n 8006c5e - { - /* set device address and enable function */ - USBx->DADDR = (uint16_t)USB_DADDR_EF; - 8006c56: 687b ldr r3, [r7, #4] - 8006c58: 2280 movs r2, #128 @ 0x80 - 8006c5a: f8a3 204c strh.w r2, [r3, #76] @ 0x4c - } - - return HAL_OK; - 8006c5e: 2300 movs r3, #0 -} - 8006c60: 4618 mov r0, r3 - 8006c62: 370c adds r7, #12 - 8006c64: 46bd mov sp, r7 - 8006c66: bc80 pop {r7} - 8006c68: 4770 bx lr - -08006c6a : - * @brief USB_DevConnect Connect the USB device by enabling the pull-up/pull-down - * @param USBx Selected device - * @retval HAL status - */ -HAL_StatusTypeDef USB_DevConnect(USB_TypeDef *USBx) -{ - 8006c6a: b480 push {r7} - 8006c6c: b083 sub sp, #12 - 8006c6e: af00 add r7, sp, #0 - 8006c70: 6078 str r0, [r7, #4] - /* NOTE : - This function is not required by USB Device FS peripheral, it is used - only by USB OTG FS peripheral. - - This function is added to ensure compatibility across platforms. - */ - - return HAL_OK; - 8006c72: 2300 movs r3, #0 -} - 8006c74: 4618 mov r0, r3 - 8006c76: 370c adds r7, #12 - 8006c78: 46bd mov sp, r7 - 8006c7a: bc80 pop {r7} - 8006c7c: 4770 bx lr - -08006c7e : - * @brief USB_DevDisconnect Disconnect the USB device by disabling the pull-up/pull-down - * @param USBx Selected device - * @retval HAL status - */ -HAL_StatusTypeDef USB_DevDisconnect(USB_TypeDef *USBx) -{ - 8006c7e: b480 push {r7} - 8006c80: b083 sub sp, #12 - 8006c82: af00 add r7, sp, #0 - 8006c84: 6078 str r0, [r7, #4] - /* NOTE : - This function is not required by USB Device FS peripheral, it is used - only by USB OTG FS peripheral. - - This function is added to ensure compatibility across platforms. - */ - - return HAL_OK; - 8006c86: 2300 movs r3, #0 -} - 8006c88: 4618 mov r0, r3 - 8006c8a: 370c adds r7, #12 - 8006c8c: 46bd mov sp, r7 - 8006c8e: bc80 pop {r7} - 8006c90: 4770 bx lr - -08006c92 : - * @brief USB_ReadInterrupts return the global USB interrupt status - * @param USBx Selected device - * @retval USB Global Interrupt status - */ -uint32_t USB_ReadInterrupts(USB_TypeDef const *USBx) -{ - 8006c92: b480 push {r7} - 8006c94: b085 sub sp, #20 - 8006c96: af00 add r7, sp, #0 - 8006c98: 6078 str r0, [r7, #4] - uint32_t tmpreg; - - tmpreg = USBx->ISTR; - 8006c9a: 687b ldr r3, [r7, #4] - 8006c9c: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 8006ca0: b29b uxth r3, r3 - 8006ca2: 60fb str r3, [r7, #12] - return tmpreg; - 8006ca4: 68fb ldr r3, [r7, #12] -} - 8006ca6: 4618 mov r0, r3 - 8006ca8: 3714 adds r7, #20 - 8006caa: 46bd mov sp, r7 - 8006cac: bc80 pop {r7} - 8006cae: 4770 bx lr - -08006cb0 : - * @param USBx Selected device - * @param psetup pointer to setup packet - * @retval HAL status - */ -HAL_StatusTypeDef USB_EP0_OutStart(USB_TypeDef *USBx, uint8_t *psetup) -{ - 8006cb0: b480 push {r7} - 8006cb2: b083 sub sp, #12 - 8006cb4: af00 add r7, sp, #0 - 8006cb6: 6078 str r0, [r7, #4] - 8006cb8: 6039 str r1, [r7, #0] - UNUSED(psetup); - /* NOTE : - This function is not required by USB Device FS peripheral, it is used - only by USB OTG FS peripheral. - - This function is added to ensure compatibility across platforms. - */ - return HAL_OK; - 8006cba: 2300 movs r3, #0 -} - 8006cbc: 4618 mov r0, r3 - 8006cbe: 370c adds r7, #12 - 8006cc0: 46bd mov sp, r7 - 8006cc2: bc80 pop {r7} - 8006cc4: 4770 bx lr - -08006cc6 : - * @param wPMABufAddr address into PMA. - * @param wNBytes no. of bytes to be copied. - * @retval None - */ -void USB_WritePMA(USB_TypeDef const *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) -{ - 8006cc6: b480 push {r7} - 8006cc8: b08b sub sp, #44 @ 0x2c - 8006cca: af00 add r7, sp, #0 - 8006ccc: 60f8 str r0, [r7, #12] - 8006cce: 60b9 str r1, [r7, #8] - 8006cd0: 4611 mov r1, r2 - 8006cd2: 461a mov r2, r3 - 8006cd4: 460b mov r3, r1 - 8006cd6: 80fb strh r3, [r7, #6] - 8006cd8: 4613 mov r3, r2 - 8006cda: 80bb strh r3, [r7, #4] - uint32_t n = ((uint32_t)wNBytes + 1U) >> 1; - 8006cdc: 88bb ldrh r3, [r7, #4] - 8006cde: 3301 adds r3, #1 - 8006ce0: 085b lsrs r3, r3, #1 - 8006ce2: 61bb str r3, [r7, #24] - uint32_t BaseAddr = (uint32_t)USBx; - 8006ce4: 68fb ldr r3, [r7, #12] - 8006ce6: 617b str r3, [r7, #20] - uint32_t count; - uint16_t WrVal; - __IO uint16_t *pdwVal; - uint8_t *pBuf = pbUsrBuf; - 8006ce8: 68bb ldr r3, [r7, #8] - 8006cea: 61fb str r3, [r7, #28] - - pdwVal = (__IO uint16_t *)(BaseAddr + 0x400U + ((uint32_t)wPMABufAddr * PMA_ACCESS)); - 8006cec: 88fb ldrh r3, [r7, #6] - 8006cee: 005a lsls r2, r3, #1 - 8006cf0: 697b ldr r3, [r7, #20] - 8006cf2: 4413 add r3, r2 - 8006cf4: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8006cf8: 623b str r3, [r7, #32] - - for (count = n; count != 0U; count--) - 8006cfa: 69bb ldr r3, [r7, #24] - 8006cfc: 627b str r3, [r7, #36] @ 0x24 - 8006cfe: e01f b.n 8006d40 - { - WrVal = pBuf[0]; - 8006d00: 69fb ldr r3, [r7, #28] - 8006d02: 781b ldrb r3, [r3, #0] - 8006d04: 827b strh r3, [r7, #18] - WrVal |= (uint16_t)pBuf[1] << 8; - 8006d06: 69fb ldr r3, [r7, #28] - 8006d08: 3301 adds r3, #1 - 8006d0a: 781b ldrb r3, [r3, #0] - 8006d0c: b21b sxth r3, r3 - 8006d0e: 021b lsls r3, r3, #8 - 8006d10: b21a sxth r2, r3 - 8006d12: f9b7 3012 ldrsh.w r3, [r7, #18] - 8006d16: 4313 orrs r3, r2 - 8006d18: b21b sxth r3, r3 - 8006d1a: 827b strh r3, [r7, #18] - *pdwVal = (WrVal & 0xFFFFU); - 8006d1c: 6a3b ldr r3, [r7, #32] - 8006d1e: 8a7a ldrh r2, [r7, #18] - 8006d20: 801a strh r2, [r3, #0] - pdwVal++; - 8006d22: 6a3b ldr r3, [r7, #32] - 8006d24: 3302 adds r3, #2 - 8006d26: 623b str r3, [r7, #32] - -#if PMA_ACCESS > 1U - pdwVal++; - 8006d28: 6a3b ldr r3, [r7, #32] - 8006d2a: 3302 adds r3, #2 - 8006d2c: 623b str r3, [r7, #32] -#endif /* PMA_ACCESS */ - - pBuf++; - 8006d2e: 69fb ldr r3, [r7, #28] - 8006d30: 3301 adds r3, #1 - 8006d32: 61fb str r3, [r7, #28] - pBuf++; - 8006d34: 69fb ldr r3, [r7, #28] - 8006d36: 3301 adds r3, #1 - 8006d38: 61fb str r3, [r7, #28] - for (count = n; count != 0U; count--) - 8006d3a: 6a7b ldr r3, [r7, #36] @ 0x24 - 8006d3c: 3b01 subs r3, #1 - 8006d3e: 627b str r3, [r7, #36] @ 0x24 - 8006d40: 6a7b ldr r3, [r7, #36] @ 0x24 - 8006d42: 2b00 cmp r3, #0 - 8006d44: d1dc bne.n 8006d00 - } -} - 8006d46: bf00 nop - 8006d48: bf00 nop - 8006d4a: 372c adds r7, #44 @ 0x2c - 8006d4c: 46bd mov sp, r7 - 8006d4e: bc80 pop {r7} - 8006d50: 4770 bx lr - -08006d52 : - * @param wPMABufAddr address into PMA. - * @param wNBytes no. of bytes to be copied. - * @retval None - */ -void USB_ReadPMA(USB_TypeDef const *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) -{ - 8006d52: b480 push {r7} - 8006d54: b08b sub sp, #44 @ 0x2c - 8006d56: af00 add r7, sp, #0 - 8006d58: 60f8 str r0, [r7, #12] - 8006d5a: 60b9 str r1, [r7, #8] - 8006d5c: 4611 mov r1, r2 - 8006d5e: 461a mov r2, r3 - 8006d60: 460b mov r3, r1 - 8006d62: 80fb strh r3, [r7, #6] - 8006d64: 4613 mov r3, r2 - 8006d66: 80bb strh r3, [r7, #4] - uint32_t n = (uint32_t)wNBytes >> 1; - 8006d68: 88bb ldrh r3, [r7, #4] - 8006d6a: 085b lsrs r3, r3, #1 - 8006d6c: b29b uxth r3, r3 - 8006d6e: 61bb str r3, [r7, #24] - uint32_t BaseAddr = (uint32_t)USBx; - 8006d70: 68fb ldr r3, [r7, #12] - 8006d72: 617b str r3, [r7, #20] - uint32_t count; - uint32_t RdVal; - __IO uint16_t *pdwVal; - uint8_t *pBuf = pbUsrBuf; - 8006d74: 68bb ldr r3, [r7, #8] - 8006d76: 61fb str r3, [r7, #28] - - pdwVal = (__IO uint16_t *)(BaseAddr + 0x400U + ((uint32_t)wPMABufAddr * PMA_ACCESS)); - 8006d78: 88fb ldrh r3, [r7, #6] - 8006d7a: 005a lsls r2, r3, #1 - 8006d7c: 697b ldr r3, [r7, #20] - 8006d7e: 4413 add r3, r2 - 8006d80: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8006d84: 623b str r3, [r7, #32] - - for (count = n; count != 0U; count--) - 8006d86: 69bb ldr r3, [r7, #24] - 8006d88: 627b str r3, [r7, #36] @ 0x24 - 8006d8a: e01b b.n 8006dc4 - { - RdVal = *(__IO uint16_t *)pdwVal; - 8006d8c: 6a3b ldr r3, [r7, #32] - 8006d8e: 881b ldrh r3, [r3, #0] - 8006d90: b29b uxth r3, r3 - 8006d92: 613b str r3, [r7, #16] - pdwVal++; - 8006d94: 6a3b ldr r3, [r7, #32] - 8006d96: 3302 adds r3, #2 - 8006d98: 623b str r3, [r7, #32] - *pBuf = (uint8_t)((RdVal >> 0) & 0xFFU); - 8006d9a: 693b ldr r3, [r7, #16] - 8006d9c: b2da uxtb r2, r3 - 8006d9e: 69fb ldr r3, [r7, #28] - 8006da0: 701a strb r2, [r3, #0] - pBuf++; - 8006da2: 69fb ldr r3, [r7, #28] - 8006da4: 3301 adds r3, #1 - 8006da6: 61fb str r3, [r7, #28] - *pBuf = (uint8_t)((RdVal >> 8) & 0xFFU); - 8006da8: 693b ldr r3, [r7, #16] - 8006daa: 0a1b lsrs r3, r3, #8 - 8006dac: b2da uxtb r2, r3 - 8006dae: 69fb ldr r3, [r7, #28] - 8006db0: 701a strb r2, [r3, #0] - pBuf++; - 8006db2: 69fb ldr r3, [r7, #28] - 8006db4: 3301 adds r3, #1 - 8006db6: 61fb str r3, [r7, #28] - -#if PMA_ACCESS > 1U - pdwVal++; - 8006db8: 6a3b ldr r3, [r7, #32] - 8006dba: 3302 adds r3, #2 - 8006dbc: 623b str r3, [r7, #32] - for (count = n; count != 0U; count--) - 8006dbe: 6a7b ldr r3, [r7, #36] @ 0x24 - 8006dc0: 3b01 subs r3, #1 - 8006dc2: 627b str r3, [r7, #36] @ 0x24 - 8006dc4: 6a7b ldr r3, [r7, #36] @ 0x24 - 8006dc6: 2b00 cmp r3, #0 - 8006dc8: d1e0 bne.n 8006d8c -#endif /* PMA_ACCESS */ - } - - if ((wNBytes % 2U) != 0U) - 8006dca: 88bb ldrh r3, [r7, #4] - 8006dcc: f003 0301 and.w r3, r3, #1 - 8006dd0: b29b uxth r3, r3 - 8006dd2: 2b00 cmp r3, #0 - 8006dd4: d007 beq.n 8006de6 - { - RdVal = *pdwVal; - 8006dd6: 6a3b ldr r3, [r7, #32] - 8006dd8: 881b ldrh r3, [r3, #0] - 8006dda: b29b uxth r3, r3 - 8006ddc: 613b str r3, [r7, #16] - *pBuf = (uint8_t)((RdVal >> 0) & 0xFFU); - 8006dde: 693b ldr r3, [r7, #16] - 8006de0: b2da uxtb r2, r3 - 8006de2: 69fb ldr r3, [r7, #28] - 8006de4: 701a strb r2, [r3, #0] - } -} - 8006de6: bf00 nop - 8006de8: 372c adds r7, #44 @ 0x2c - 8006dea: 46bd mov sp, r7 - 8006dec: bc80 pop {r7} - 8006dee: 4770 bx lr - -08006df0 : - * @param pdev: device instance - * @param cfgidx: Configuration index - * @retval status - */ -static uint8_t USBD_CDC_Init(USBD_HandleTypeDef *pdev, uint8_t cfgidx) -{ - 8006df0: b580 push {r7, lr} - 8006df2: b084 sub sp, #16 - 8006df4: af00 add r7, sp, #0 - 8006df6: 6078 str r0, [r7, #4] - 8006df8: 460b mov r3, r1 - 8006dfa: 70fb strb r3, [r7, #3] - uint8_t ret = 0U; - 8006dfc: 2300 movs r3, #0 - 8006dfe: 73fb strb r3, [r7, #15] - USBD_CDC_HandleTypeDef *hcdc; - - if (pdev->dev_speed == USBD_SPEED_HIGH) - 8006e00: 687b ldr r3, [r7, #4] - 8006e02: 7c1b ldrb r3, [r3, #16] - 8006e04: 2b00 cmp r3, #0 - 8006e06: d115 bne.n 8006e34 - { - /* Open EP IN */ - USBD_LL_OpenEP(pdev, CDC_IN_EP, USBD_EP_TYPE_BULK, - 8006e08: f44f 7300 mov.w r3, #512 @ 0x200 - 8006e0c: 2202 movs r2, #2 - 8006e0e: 2181 movs r1, #129 @ 0x81 - 8006e10: 6878 ldr r0, [r7, #4] - 8006e12: f001 ff00 bl 8008c16 - CDC_DATA_HS_IN_PACKET_SIZE); - - pdev->ep_in[CDC_IN_EP & 0xFU].is_used = 1U; - 8006e16: 687b ldr r3, [r7, #4] - 8006e18: 2201 movs r2, #1 - 8006e1a: 62da str r2, [r3, #44] @ 0x2c - - /* Open EP OUT */ - USBD_LL_OpenEP(pdev, CDC_OUT_EP, USBD_EP_TYPE_BULK, - 8006e1c: f44f 7300 mov.w r3, #512 @ 0x200 - 8006e20: 2202 movs r2, #2 - 8006e22: 2101 movs r1, #1 - 8006e24: 6878 ldr r0, [r7, #4] - 8006e26: f001 fef6 bl 8008c16 - CDC_DATA_HS_OUT_PACKET_SIZE); - - pdev->ep_out[CDC_OUT_EP & 0xFU].is_used = 1U; - 8006e2a: 687b ldr r3, [r7, #4] - 8006e2c: 2201 movs r2, #1 - 8006e2e: f8c3 216c str.w r2, [r3, #364] @ 0x16c - 8006e32: e012 b.n 8006e5a - - } - else - { - /* Open EP IN */ - USBD_LL_OpenEP(pdev, CDC_IN_EP, USBD_EP_TYPE_BULK, - 8006e34: 2340 movs r3, #64 @ 0x40 - 8006e36: 2202 movs r2, #2 - 8006e38: 2181 movs r1, #129 @ 0x81 - 8006e3a: 6878 ldr r0, [r7, #4] - 8006e3c: f001 feeb bl 8008c16 - CDC_DATA_FS_IN_PACKET_SIZE); - - pdev->ep_in[CDC_IN_EP & 0xFU].is_used = 1U; - 8006e40: 687b ldr r3, [r7, #4] - 8006e42: 2201 movs r2, #1 - 8006e44: 62da str r2, [r3, #44] @ 0x2c - - /* Open EP OUT */ - USBD_LL_OpenEP(pdev, CDC_OUT_EP, USBD_EP_TYPE_BULK, - 8006e46: 2340 movs r3, #64 @ 0x40 - 8006e48: 2202 movs r2, #2 - 8006e4a: 2101 movs r1, #1 - 8006e4c: 6878 ldr r0, [r7, #4] - 8006e4e: f001 fee2 bl 8008c16 - CDC_DATA_FS_OUT_PACKET_SIZE); - - pdev->ep_out[CDC_OUT_EP & 0xFU].is_used = 1U; - 8006e52: 687b ldr r3, [r7, #4] - 8006e54: 2201 movs r2, #1 - 8006e56: f8c3 216c str.w r2, [r3, #364] @ 0x16c - } - /* Open Command IN EP */ - USBD_LL_OpenEP(pdev, CDC_CMD_EP, USBD_EP_TYPE_INTR, CDC_CMD_PACKET_SIZE); - 8006e5a: 2308 movs r3, #8 - 8006e5c: 2203 movs r2, #3 - 8006e5e: 2182 movs r1, #130 @ 0x82 - 8006e60: 6878 ldr r0, [r7, #4] - 8006e62: f001 fed8 bl 8008c16 - pdev->ep_in[CDC_CMD_EP & 0xFU].is_used = 1U; - 8006e66: 687b ldr r3, [r7, #4] - 8006e68: 2201 movs r2, #1 - 8006e6a: 641a str r2, [r3, #64] @ 0x40 - - pdev->pClassData = USBD_malloc(sizeof(USBD_CDC_HandleTypeDef)); - 8006e6c: f44f 7007 mov.w r0, #540 @ 0x21c - 8006e70: f001 fff8 bl 8008e64 - 8006e74: 4602 mov r2, r0 - 8006e76: 687b ldr r3, [r7, #4] - 8006e78: f8c3 22b8 str.w r2, [r3, #696] @ 0x2b8 - - if (pdev->pClassData == NULL) - 8006e7c: 687b ldr r3, [r7, #4] - 8006e7e: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8006e82: 2b00 cmp r3, #0 - 8006e84: d102 bne.n 8006e8c - { - ret = 1U; - 8006e86: 2301 movs r3, #1 - 8006e88: 73fb strb r3, [r7, #15] - 8006e8a: e026 b.n 8006eda - } - else - { - hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 8006e8c: 687b ldr r3, [r7, #4] - 8006e8e: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8006e92: 60bb str r3, [r7, #8] - - /* Init physical Interface components */ - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Init(); - 8006e94: 687b ldr r3, [r7, #4] - 8006e96: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc - 8006e9a: 681b ldr r3, [r3, #0] - 8006e9c: 4798 blx r3 - - /* Init Xfer states */ - hcdc->TxState = 0U; - 8006e9e: 68bb ldr r3, [r7, #8] - 8006ea0: 2200 movs r2, #0 - 8006ea2: f8c3 2214 str.w r2, [r3, #532] @ 0x214 - hcdc->RxState = 0U; - 8006ea6: 68bb ldr r3, [r7, #8] - 8006ea8: 2200 movs r2, #0 - 8006eaa: f8c3 2218 str.w r2, [r3, #536] @ 0x218 - - if (pdev->dev_speed == USBD_SPEED_HIGH) - 8006eae: 687b ldr r3, [r7, #4] - 8006eb0: 7c1b ldrb r3, [r3, #16] - 8006eb2: 2b00 cmp r3, #0 - 8006eb4: d109 bne.n 8006eca - { - /* Prepare Out endpoint to receive next packet */ - USBD_LL_PrepareReceive(pdev, CDC_OUT_EP, hcdc->RxBuffer, - 8006eb6: 68bb ldr r3, [r7, #8] - 8006eb8: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 - 8006ebc: f44f 7300 mov.w r3, #512 @ 0x200 - 8006ec0: 2101 movs r1, #1 - 8006ec2: 6878 ldr r0, [r7, #4] - 8006ec4: f001 ff97 bl 8008df6 - 8006ec8: e007 b.n 8006eda - CDC_DATA_HS_OUT_PACKET_SIZE); - } - else - { - /* Prepare Out endpoint to receive next packet */ - USBD_LL_PrepareReceive(pdev, CDC_OUT_EP, hcdc->RxBuffer, - 8006eca: 68bb ldr r3, [r7, #8] - 8006ecc: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 - 8006ed0: 2340 movs r3, #64 @ 0x40 - 8006ed2: 2101 movs r1, #1 - 8006ed4: 6878 ldr r0, [r7, #4] - 8006ed6: f001 ff8e bl 8008df6 - CDC_DATA_FS_OUT_PACKET_SIZE); - } - } - return ret; - 8006eda: 7bfb ldrb r3, [r7, #15] -} - 8006edc: 4618 mov r0, r3 - 8006ede: 3710 adds r7, #16 - 8006ee0: 46bd mov sp, r7 - 8006ee2: bd80 pop {r7, pc} - -08006ee4 : - * @param pdev: device instance - * @param cfgidx: Configuration index - * @retval status - */ -static uint8_t USBD_CDC_DeInit(USBD_HandleTypeDef *pdev, uint8_t cfgidx) -{ - 8006ee4: b580 push {r7, lr} - 8006ee6: b084 sub sp, #16 - 8006ee8: af00 add r7, sp, #0 - 8006eea: 6078 str r0, [r7, #4] - 8006eec: 460b mov r3, r1 - 8006eee: 70fb strb r3, [r7, #3] - uint8_t ret = 0U; - 8006ef0: 2300 movs r3, #0 - 8006ef2: 73fb strb r3, [r7, #15] - - /* Close EP IN */ - USBD_LL_CloseEP(pdev, CDC_IN_EP); - 8006ef4: 2181 movs r1, #129 @ 0x81 - 8006ef6: 6878 ldr r0, [r7, #4] - 8006ef8: f001 feb3 bl 8008c62 - pdev->ep_in[CDC_IN_EP & 0xFU].is_used = 0U; - 8006efc: 687b ldr r3, [r7, #4] - 8006efe: 2200 movs r2, #0 - 8006f00: 62da str r2, [r3, #44] @ 0x2c - - /* Close EP OUT */ - USBD_LL_CloseEP(pdev, CDC_OUT_EP); - 8006f02: 2101 movs r1, #1 - 8006f04: 6878 ldr r0, [r7, #4] - 8006f06: f001 feac bl 8008c62 - pdev->ep_out[CDC_OUT_EP & 0xFU].is_used = 0U; - 8006f0a: 687b ldr r3, [r7, #4] - 8006f0c: 2200 movs r2, #0 - 8006f0e: f8c3 216c str.w r2, [r3, #364] @ 0x16c - - /* Close Command IN EP */ - USBD_LL_CloseEP(pdev, CDC_CMD_EP); - 8006f12: 2182 movs r1, #130 @ 0x82 - 8006f14: 6878 ldr r0, [r7, #4] - 8006f16: f001 fea4 bl 8008c62 - pdev->ep_in[CDC_CMD_EP & 0xFU].is_used = 0U; - 8006f1a: 687b ldr r3, [r7, #4] - 8006f1c: 2200 movs r2, #0 - 8006f1e: 641a str r2, [r3, #64] @ 0x40 - - /* DeInit physical Interface components */ - if (pdev->pClassData != NULL) - 8006f20: 687b ldr r3, [r7, #4] - 8006f22: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8006f26: 2b00 cmp r3, #0 - 8006f28: d00e beq.n 8006f48 - { - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->DeInit(); - 8006f2a: 687b ldr r3, [r7, #4] - 8006f2c: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc - 8006f30: 685b ldr r3, [r3, #4] - 8006f32: 4798 blx r3 - USBD_free(pdev->pClassData); - 8006f34: 687b ldr r3, [r7, #4] - 8006f36: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8006f3a: 4618 mov r0, r3 - 8006f3c: f001 ff9e bl 8008e7c - pdev->pClassData = NULL; - 8006f40: 687b ldr r3, [r7, #4] - 8006f42: 2200 movs r2, #0 - 8006f44: f8c3 22b8 str.w r2, [r3, #696] @ 0x2b8 - } - - return ret; - 8006f48: 7bfb ldrb r3, [r7, #15] -} - 8006f4a: 4618 mov r0, r3 - 8006f4c: 3710 adds r7, #16 - 8006f4e: 46bd mov sp, r7 - 8006f50: bd80 pop {r7, pc} - -08006f52 : - * @param req: usb requests - * @retval status - */ -static uint8_t USBD_CDC_Setup(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 8006f52: b580 push {r7, lr} - 8006f54: b086 sub sp, #24 - 8006f56: af00 add r7, sp, #0 - 8006f58: 6078 str r0, [r7, #4] - 8006f5a: 6039 str r1, [r7, #0] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 8006f5c: 687b ldr r3, [r7, #4] - 8006f5e: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8006f62: 613b str r3, [r7, #16] - uint8_t ifalt = 0U; - 8006f64: 2300 movs r3, #0 - 8006f66: 73fb strb r3, [r7, #15] - uint16_t status_info = 0U; - 8006f68: 2300 movs r3, #0 - 8006f6a: 81bb strh r3, [r7, #12] - uint8_t ret = USBD_OK; - 8006f6c: 2300 movs r3, #0 - 8006f6e: 75fb strb r3, [r7, #23] - - switch (req->bmRequest & USB_REQ_TYPE_MASK) - 8006f70: 683b ldr r3, [r7, #0] - 8006f72: 781b ldrb r3, [r3, #0] - 8006f74: f003 0360 and.w r3, r3, #96 @ 0x60 - 8006f78: 2b00 cmp r3, #0 - 8006f7a: d039 beq.n 8006ff0 - 8006f7c: 2b20 cmp r3, #32 - 8006f7e: d17f bne.n 8007080 - { - case USB_REQ_TYPE_CLASS : - if (req->wLength) - 8006f80: 683b ldr r3, [r7, #0] - 8006f82: 88db ldrh r3, [r3, #6] - 8006f84: 2b00 cmp r3, #0 - 8006f86: d029 beq.n 8006fdc - { - if (req->bmRequest & 0x80U) - 8006f88: 683b ldr r3, [r7, #0] - 8006f8a: 781b ldrb r3, [r3, #0] - 8006f8c: b25b sxtb r3, r3 - 8006f8e: 2b00 cmp r3, #0 - 8006f90: da11 bge.n 8006fb6 - { - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, - 8006f92: 687b ldr r3, [r7, #4] - 8006f94: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc - 8006f98: 689b ldr r3, [r3, #8] - 8006f9a: 683a ldr r2, [r7, #0] - 8006f9c: 7850 ldrb r0, [r2, #1] - (uint8_t *)(void *)hcdc->data, - 8006f9e: 6939 ldr r1, [r7, #16] - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, - 8006fa0: 683a ldr r2, [r7, #0] - 8006fa2: 88d2 ldrh r2, [r2, #6] - 8006fa4: 4798 blx r3 - req->wLength); - - USBD_CtlSendData(pdev, (uint8_t *)(void *)hcdc->data, req->wLength); - 8006fa6: 6939 ldr r1, [r7, #16] - 8006fa8: 683b ldr r3, [r7, #0] - 8006faa: 88db ldrh r3, [r3, #6] - 8006fac: 461a mov r2, r3 - 8006fae: 6878 ldr r0, [r7, #4] - 8006fb0: f001 fa06 bl 80083c0 - else - { - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, - (uint8_t *)(void *)req, 0U); - } - break; - 8006fb4: e06b b.n 800708e - hcdc->CmdOpCode = req->bRequest; - 8006fb6: 683b ldr r3, [r7, #0] - 8006fb8: 785a ldrb r2, [r3, #1] - 8006fba: 693b ldr r3, [r7, #16] - 8006fbc: f883 2200 strb.w r2, [r3, #512] @ 0x200 - hcdc->CmdLength = (uint8_t)req->wLength; - 8006fc0: 683b ldr r3, [r7, #0] - 8006fc2: 88db ldrh r3, [r3, #6] - 8006fc4: b2da uxtb r2, r3 - 8006fc6: 693b ldr r3, [r7, #16] - 8006fc8: f883 2201 strb.w r2, [r3, #513] @ 0x201 - USBD_CtlPrepareRx(pdev, (uint8_t *)(void *)hcdc->data, req->wLength); - 8006fcc: 6939 ldr r1, [r7, #16] - 8006fce: 683b ldr r3, [r7, #0] - 8006fd0: 88db ldrh r3, [r3, #6] - 8006fd2: 461a mov r2, r3 - 8006fd4: 6878 ldr r0, [r7, #4] - 8006fd6: f001 fa21 bl 800841c - break; - 8006fda: e058 b.n 800708e - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, - 8006fdc: 687b ldr r3, [r7, #4] - 8006fde: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc - 8006fe2: 689b ldr r3, [r3, #8] - 8006fe4: 683a ldr r2, [r7, #0] - 8006fe6: 7850 ldrb r0, [r2, #1] - 8006fe8: 2200 movs r2, #0 - 8006fea: 6839 ldr r1, [r7, #0] - 8006fec: 4798 blx r3 - break; - 8006fee: e04e b.n 800708e - - case USB_REQ_TYPE_STANDARD: - switch (req->bRequest) - 8006ff0: 683b ldr r3, [r7, #0] - 8006ff2: 785b ldrb r3, [r3, #1] - 8006ff4: 2b0b cmp r3, #11 - 8006ff6: d02e beq.n 8007056 - 8006ff8: 2b0b cmp r3, #11 - 8006ffa: dc38 bgt.n 800706e - 8006ffc: 2b00 cmp r3, #0 - 8006ffe: d002 beq.n 8007006 - 8007000: 2b0a cmp r3, #10 - 8007002: d014 beq.n 800702e - 8007004: e033 b.n 800706e - { - case USB_REQ_GET_STATUS: - if (pdev->dev_state == USBD_STATE_CONFIGURED) - 8007006: 687b ldr r3, [r7, #4] - 8007008: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 800700c: 2b03 cmp r3, #3 - 800700e: d107 bne.n 8007020 - { - USBD_CtlSendData(pdev, (uint8_t *)(void *)&status_info, 2U); - 8007010: f107 030c add.w r3, r7, #12 - 8007014: 2202 movs r2, #2 - 8007016: 4619 mov r1, r3 - 8007018: 6878 ldr r0, [r7, #4] - 800701a: f001 f9d1 bl 80083c0 - else - { - USBD_CtlError(pdev, req); - ret = USBD_FAIL; - } - break; - 800701e: e02e b.n 800707e - USBD_CtlError(pdev, req); - 8007020: 6839 ldr r1, [r7, #0] - 8007022: 6878 ldr r0, [r7, #4] - 8007024: f001 f962 bl 80082ec - ret = USBD_FAIL; - 8007028: 2302 movs r3, #2 - 800702a: 75fb strb r3, [r7, #23] - break; - 800702c: e027 b.n 800707e - - case USB_REQ_GET_INTERFACE: - if (pdev->dev_state == USBD_STATE_CONFIGURED) - 800702e: 687b ldr r3, [r7, #4] - 8007030: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8007034: 2b03 cmp r3, #3 - 8007036: d107 bne.n 8007048 - { - USBD_CtlSendData(pdev, &ifalt, 1U); - 8007038: f107 030f add.w r3, r7, #15 - 800703c: 2201 movs r2, #1 - 800703e: 4619 mov r1, r3 - 8007040: 6878 ldr r0, [r7, #4] - 8007042: f001 f9bd bl 80083c0 - else - { - USBD_CtlError(pdev, req); - ret = USBD_FAIL; - } - break; - 8007046: e01a b.n 800707e - USBD_CtlError(pdev, req); - 8007048: 6839 ldr r1, [r7, #0] - 800704a: 6878 ldr r0, [r7, #4] - 800704c: f001 f94e bl 80082ec - ret = USBD_FAIL; - 8007050: 2302 movs r3, #2 - 8007052: 75fb strb r3, [r7, #23] - break; - 8007054: e013 b.n 800707e - - case USB_REQ_SET_INTERFACE: - if (pdev->dev_state != USBD_STATE_CONFIGURED) - 8007056: 687b ldr r3, [r7, #4] - 8007058: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 800705c: 2b03 cmp r3, #3 - 800705e: d00d beq.n 800707c - { - USBD_CtlError(pdev, req); - 8007060: 6839 ldr r1, [r7, #0] - 8007062: 6878 ldr r0, [r7, #4] - 8007064: f001 f942 bl 80082ec - ret = USBD_FAIL; - 8007068: 2302 movs r3, #2 - 800706a: 75fb strb r3, [r7, #23] - } - break; - 800706c: e006 b.n 800707c - - default: - USBD_CtlError(pdev, req); - 800706e: 6839 ldr r1, [r7, #0] - 8007070: 6878 ldr r0, [r7, #4] - 8007072: f001 f93b bl 80082ec - ret = USBD_FAIL; - 8007076: 2302 movs r3, #2 - 8007078: 75fb strb r3, [r7, #23] - break; - 800707a: e000 b.n 800707e - break; - 800707c: bf00 nop - } - break; - 800707e: e006 b.n 800708e - - default: - USBD_CtlError(pdev, req); - 8007080: 6839 ldr r1, [r7, #0] - 8007082: 6878 ldr r0, [r7, #4] - 8007084: f001 f932 bl 80082ec - ret = USBD_FAIL; - 8007088: 2302 movs r3, #2 - 800708a: 75fb strb r3, [r7, #23] - break; - 800708c: bf00 nop - } - - return ret; - 800708e: 7dfb ldrb r3, [r7, #23] -} - 8007090: 4618 mov r0, r3 - 8007092: 3718 adds r7, #24 - 8007094: 46bd mov sp, r7 - 8007096: bd80 pop {r7, pc} - -08007098 : - * @param pdev: device instance - * @param epnum: endpoint number - * @retval status - */ -static uint8_t USBD_CDC_DataIn(USBD_HandleTypeDef *pdev, uint8_t epnum) -{ - 8007098: b580 push {r7, lr} - 800709a: b084 sub sp, #16 - 800709c: af00 add r7, sp, #0 - 800709e: 6078 str r0, [r7, #4] - 80070a0: 460b mov r3, r1 - 80070a2: 70fb strb r3, [r7, #3] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *)pdev->pClassData; - 80070a4: 687b ldr r3, [r7, #4] - 80070a6: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 80070aa: 60fb str r3, [r7, #12] - PCD_HandleTypeDef *hpcd = pdev->pData; - 80070ac: 687b ldr r3, [r7, #4] - 80070ae: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 80070b2: 60bb str r3, [r7, #8] - - if (pdev->pClassData != NULL) - 80070b4: 687b ldr r3, [r7, #4] - 80070b6: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 80070ba: 2b00 cmp r3, #0 - 80070bc: d03a beq.n 8007134 - { - if ((pdev->ep_in[epnum].total_length > 0U) && ((pdev->ep_in[epnum].total_length % hpcd->IN_ep[epnum].maxpacket) == 0U)) - 80070be: 78fa ldrb r2, [r7, #3] - 80070c0: 6879 ldr r1, [r7, #4] - 80070c2: 4613 mov r3, r2 - 80070c4: 009b lsls r3, r3, #2 - 80070c6: 4413 add r3, r2 - 80070c8: 009b lsls r3, r3, #2 - 80070ca: 440b add r3, r1 - 80070cc: 331c adds r3, #28 - 80070ce: 681b ldr r3, [r3, #0] - 80070d0: 2b00 cmp r3, #0 - 80070d2: d029 beq.n 8007128 - 80070d4: 78fa ldrb r2, [r7, #3] - 80070d6: 6879 ldr r1, [r7, #4] - 80070d8: 4613 mov r3, r2 - 80070da: 009b lsls r3, r3, #2 - 80070dc: 4413 add r3, r2 - 80070de: 009b lsls r3, r3, #2 - 80070e0: 440b add r3, r1 - 80070e2: 331c adds r3, #28 - 80070e4: 681a ldr r2, [r3, #0] - 80070e6: 78f9 ldrb r1, [r7, #3] - 80070e8: 68b8 ldr r0, [r7, #8] - 80070ea: 460b mov r3, r1 - 80070ec: 009b lsls r3, r3, #2 - 80070ee: 440b add r3, r1 - 80070f0: 00db lsls r3, r3, #3 - 80070f2: 4403 add r3, r0 - 80070f4: 3320 adds r3, #32 - 80070f6: 681b ldr r3, [r3, #0] - 80070f8: fbb2 f1f3 udiv r1, r2, r3 - 80070fc: fb01 f303 mul.w r3, r1, r3 - 8007100: 1ad3 subs r3, r2, r3 - 8007102: 2b00 cmp r3, #0 - 8007104: d110 bne.n 8007128 - { - /* Update the packet total length */ - pdev->ep_in[epnum].total_length = 0U; - 8007106: 78fa ldrb r2, [r7, #3] - 8007108: 6879 ldr r1, [r7, #4] - 800710a: 4613 mov r3, r2 - 800710c: 009b lsls r3, r3, #2 - 800710e: 4413 add r3, r2 - 8007110: 009b lsls r3, r3, #2 - 8007112: 440b add r3, r1 - 8007114: 331c adds r3, #28 - 8007116: 2200 movs r2, #0 - 8007118: 601a str r2, [r3, #0] - - /* Send ZLP */ - USBD_LL_Transmit(pdev, epnum, NULL, 0U); - 800711a: 78f9 ldrb r1, [r7, #3] - 800711c: 2300 movs r3, #0 - 800711e: 2200 movs r2, #0 - 8007120: 6878 ldr r0, [r7, #4] - 8007122: f001 fe45 bl 8008db0 - 8007126: e003 b.n 8007130 - } - else - { - hcdc->TxState = 0U; - 8007128: 68fb ldr r3, [r7, #12] - 800712a: 2200 movs r2, #0 - 800712c: f8c3 2214 str.w r2, [r3, #532] @ 0x214 - } - return USBD_OK; - 8007130: 2300 movs r3, #0 - 8007132: e000 b.n 8007136 - } - else - { - return USBD_FAIL; - 8007134: 2302 movs r3, #2 - } -} - 8007136: 4618 mov r0, r3 - 8007138: 3710 adds r7, #16 - 800713a: 46bd mov sp, r7 - 800713c: bd80 pop {r7, pc} - -0800713e : - * @param pdev: device instance - * @param epnum: endpoint number - * @retval status - */ -static uint8_t USBD_CDC_DataOut(USBD_HandleTypeDef *pdev, uint8_t epnum) -{ - 800713e: b580 push {r7, lr} - 8007140: b084 sub sp, #16 - 8007142: af00 add r7, sp, #0 - 8007144: 6078 str r0, [r7, #4] - 8007146: 460b mov r3, r1 - 8007148: 70fb strb r3, [r7, #3] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 800714a: 687b ldr r3, [r7, #4] - 800714c: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8007150: 60fb str r3, [r7, #12] - - /* Get the received data length */ - hcdc->RxLength = USBD_LL_GetRxDataSize(pdev, epnum); - 8007152: 78fb ldrb r3, [r7, #3] - 8007154: 4619 mov r1, r3 - 8007156: 6878 ldr r0, [r7, #4] - 8007158: f001 fe70 bl 8008e3c - 800715c: 4602 mov r2, r0 - 800715e: 68fb ldr r3, [r7, #12] - 8007160: f8c3 220c str.w r2, [r3, #524] @ 0x20c - - /* USB data will be immediately processed, this allow next USB traffic being - NAKed till the end of the application Xfer */ - if (pdev->pClassData != NULL) - 8007164: 687b ldr r3, [r7, #4] - 8007166: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 800716a: 2b00 cmp r3, #0 - 800716c: d00d beq.n 800718a - { - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Receive(hcdc->RxBuffer, &hcdc->RxLength); - 800716e: 687b ldr r3, [r7, #4] - 8007170: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc - 8007174: 68db ldr r3, [r3, #12] - 8007176: 68fa ldr r2, [r7, #12] - 8007178: f8d2 0204 ldr.w r0, [r2, #516] @ 0x204 - 800717c: 68fa ldr r2, [r7, #12] - 800717e: f502 7203 add.w r2, r2, #524 @ 0x20c - 8007182: 4611 mov r1, r2 - 8007184: 4798 blx r3 - - return USBD_OK; - 8007186: 2300 movs r3, #0 - 8007188: e000 b.n 800718c - } - else - { - return USBD_FAIL; - 800718a: 2302 movs r3, #2 - } -} - 800718c: 4618 mov r0, r3 - 800718e: 3710 adds r7, #16 - 8007190: 46bd mov sp, r7 - 8007192: bd80 pop {r7, pc} - -08007194 : - * Handle EP0 Rx Ready event - * @param pdev: device instance - * @retval status - */ -static uint8_t USBD_CDC_EP0_RxReady(USBD_HandleTypeDef *pdev) -{ - 8007194: b580 push {r7, lr} - 8007196: b084 sub sp, #16 - 8007198: af00 add r7, sp, #0 - 800719a: 6078 str r0, [r7, #4] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 800719c: 687b ldr r3, [r7, #4] - 800719e: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 80071a2: 60fb str r3, [r7, #12] - - if ((pdev->pUserData != NULL) && (hcdc->CmdOpCode != 0xFFU)) - 80071a4: 687b ldr r3, [r7, #4] - 80071a6: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc - 80071aa: 2b00 cmp r3, #0 - 80071ac: d014 beq.n 80071d8 - 80071ae: 68fb ldr r3, [r7, #12] - 80071b0: f893 3200 ldrb.w r3, [r3, #512] @ 0x200 - 80071b4: 2bff cmp r3, #255 @ 0xff - 80071b6: d00f beq.n 80071d8 - { - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(hcdc->CmdOpCode, - 80071b8: 687b ldr r3, [r7, #4] - 80071ba: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc - 80071be: 689b ldr r3, [r3, #8] - 80071c0: 68fa ldr r2, [r7, #12] - 80071c2: f892 0200 ldrb.w r0, [r2, #512] @ 0x200 - (uint8_t *)(void *)hcdc->data, - 80071c6: 68f9 ldr r1, [r7, #12] - (uint16_t)hcdc->CmdLength); - 80071c8: 68fa ldr r2, [r7, #12] - 80071ca: f892 2201 ldrb.w r2, [r2, #513] @ 0x201 - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(hcdc->CmdOpCode, - 80071ce: 4798 blx r3 - hcdc->CmdOpCode = 0xFFU; - 80071d0: 68fb ldr r3, [r7, #12] - 80071d2: 22ff movs r2, #255 @ 0xff - 80071d4: f883 2200 strb.w r2, [r3, #512] @ 0x200 - - } - return USBD_OK; - 80071d8: 2300 movs r3, #0 -} - 80071da: 4618 mov r0, r3 - 80071dc: 3710 adds r7, #16 - 80071de: 46bd mov sp, r7 - 80071e0: bd80 pop {r7, pc} - ... - -080071e4 : - * @param speed : current device speed - * @param length : pointer data length - * @retval pointer to descriptor buffer - */ -static uint8_t *USBD_CDC_GetFSCfgDesc(uint16_t *length) -{ - 80071e4: b480 push {r7} - 80071e6: b083 sub sp, #12 - 80071e8: af00 add r7, sp, #0 - 80071ea: 6078 str r0, [r7, #4] - *length = sizeof(USBD_CDC_CfgFSDesc); - 80071ec: 687b ldr r3, [r7, #4] - 80071ee: 2243 movs r2, #67 @ 0x43 - 80071f0: 801a strh r2, [r3, #0] - return USBD_CDC_CfgFSDesc; - 80071f2: 4b03 ldr r3, [pc, #12] @ (8007200 ) -} - 80071f4: 4618 mov r0, r3 - 80071f6: 370c adds r7, #12 - 80071f8: 46bd mov sp, r7 - 80071fa: bc80 pop {r7} - 80071fc: 4770 bx lr - 80071fe: bf00 nop - 8007200: 20000094 .word 0x20000094 - -08007204 : - * @param speed : current device speed - * @param length : pointer data length - * @retval pointer to descriptor buffer - */ -static uint8_t *USBD_CDC_GetHSCfgDesc(uint16_t *length) -{ - 8007204: b480 push {r7} - 8007206: b083 sub sp, #12 - 8007208: af00 add r7, sp, #0 - 800720a: 6078 str r0, [r7, #4] - *length = sizeof(USBD_CDC_CfgHSDesc); - 800720c: 687b ldr r3, [r7, #4] - 800720e: 2243 movs r2, #67 @ 0x43 - 8007210: 801a strh r2, [r3, #0] - return USBD_CDC_CfgHSDesc; - 8007212: 4b03 ldr r3, [pc, #12] @ (8007220 ) -} - 8007214: 4618 mov r0, r3 - 8007216: 370c adds r7, #12 - 8007218: 46bd mov sp, r7 - 800721a: bc80 pop {r7} - 800721c: 4770 bx lr - 800721e: bf00 nop - 8007220: 20000050 .word 0x20000050 - -08007224 : - * @param speed : current device speed - * @param length : pointer data length - * @retval pointer to descriptor buffer - */ -static uint8_t *USBD_CDC_GetOtherSpeedCfgDesc(uint16_t *length) -{ - 8007224: b480 push {r7} - 8007226: b083 sub sp, #12 - 8007228: af00 add r7, sp, #0 - 800722a: 6078 str r0, [r7, #4] - *length = sizeof(USBD_CDC_OtherSpeedCfgDesc); - 800722c: 687b ldr r3, [r7, #4] - 800722e: 2243 movs r2, #67 @ 0x43 - 8007230: 801a strh r2, [r3, #0] - return USBD_CDC_OtherSpeedCfgDesc; - 8007232: 4b03 ldr r3, [pc, #12] @ (8007240 ) -} - 8007234: 4618 mov r0, r3 - 8007236: 370c adds r7, #12 - 8007238: 46bd mov sp, r7 - 800723a: bc80 pop {r7} - 800723c: 4770 bx lr - 800723e: bf00 nop - 8007240: 200000d8 .word 0x200000d8 - -08007244 : -* return Device Qualifier descriptor -* @param length : pointer data length -* @retval pointer to descriptor buffer -*/ -uint8_t *USBD_CDC_GetDeviceQualifierDescriptor(uint16_t *length) -{ - 8007244: b480 push {r7} - 8007246: b083 sub sp, #12 - 8007248: af00 add r7, sp, #0 - 800724a: 6078 str r0, [r7, #4] - *length = sizeof(USBD_CDC_DeviceQualifierDesc); - 800724c: 687b ldr r3, [r7, #4] - 800724e: 220a movs r2, #10 - 8007250: 801a strh r2, [r3, #0] - return USBD_CDC_DeviceQualifierDesc; - 8007252: 4b03 ldr r3, [pc, #12] @ (8007260 ) -} - 8007254: 4618 mov r0, r3 - 8007256: 370c adds r7, #12 - 8007258: 46bd mov sp, r7 - 800725a: bc80 pop {r7} - 800725c: 4770 bx lr - 800725e: bf00 nop - 8007260: 2000000c .word 0x2000000c - -08007264 : - * @param fops: CD Interface callback - * @retval status - */ -uint8_t USBD_CDC_RegisterInterface(USBD_HandleTypeDef *pdev, - USBD_CDC_ItfTypeDef *fops) -{ - 8007264: b480 push {r7} - 8007266: b085 sub sp, #20 - 8007268: af00 add r7, sp, #0 - 800726a: 6078 str r0, [r7, #4] - 800726c: 6039 str r1, [r7, #0] - uint8_t ret = USBD_FAIL; - 800726e: 2302 movs r3, #2 - 8007270: 73fb strb r3, [r7, #15] - - if (fops != NULL) - 8007272: 683b ldr r3, [r7, #0] - 8007274: 2b00 cmp r3, #0 - 8007276: d005 beq.n 8007284 - { - pdev->pUserData = fops; - 8007278: 687b ldr r3, [r7, #4] - 800727a: 683a ldr r2, [r7, #0] - 800727c: f8c3 22bc str.w r2, [r3, #700] @ 0x2bc - ret = USBD_OK; - 8007280: 2300 movs r3, #0 - 8007282: 73fb strb r3, [r7, #15] - } - - return ret; - 8007284: 7bfb ldrb r3, [r7, #15] -} - 8007286: 4618 mov r0, r3 - 8007288: 3714 adds r7, #20 - 800728a: 46bd mov sp, r7 - 800728c: bc80 pop {r7} - 800728e: 4770 bx lr - -08007290 : - * @retval status - */ -uint8_t USBD_CDC_SetTxBuffer(USBD_HandleTypeDef *pdev, - uint8_t *pbuff, - uint16_t length) -{ - 8007290: b480 push {r7} - 8007292: b087 sub sp, #28 - 8007294: af00 add r7, sp, #0 - 8007296: 60f8 str r0, [r7, #12] - 8007298: 60b9 str r1, [r7, #8] - 800729a: 4613 mov r3, r2 - 800729c: 80fb strh r3, [r7, #6] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 800729e: 68fb ldr r3, [r7, #12] - 80072a0: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 80072a4: 617b str r3, [r7, #20] - - hcdc->TxBuffer = pbuff; - 80072a6: 697b ldr r3, [r7, #20] - 80072a8: 68ba ldr r2, [r7, #8] - 80072aa: f8c3 2208 str.w r2, [r3, #520] @ 0x208 - hcdc->TxLength = length; - 80072ae: 88fa ldrh r2, [r7, #6] - 80072b0: 697b ldr r3, [r7, #20] - 80072b2: f8c3 2210 str.w r2, [r3, #528] @ 0x210 - - return USBD_OK; - 80072b6: 2300 movs r3, #0 -} - 80072b8: 4618 mov r0, r3 - 80072ba: 371c adds r7, #28 - 80072bc: 46bd mov sp, r7 - 80072be: bc80 pop {r7} - 80072c0: 4770 bx lr - -080072c2 : - * @param pbuff: Rx Buffer - * @retval status - */ -uint8_t USBD_CDC_SetRxBuffer(USBD_HandleTypeDef *pdev, - uint8_t *pbuff) -{ - 80072c2: b480 push {r7} - 80072c4: b085 sub sp, #20 - 80072c6: af00 add r7, sp, #0 - 80072c8: 6078 str r0, [r7, #4] - 80072ca: 6039 str r1, [r7, #0] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 80072cc: 687b ldr r3, [r7, #4] - 80072ce: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 80072d2: 60fb str r3, [r7, #12] - - hcdc->RxBuffer = pbuff; - 80072d4: 68fb ldr r3, [r7, #12] - 80072d6: 683a ldr r2, [r7, #0] - 80072d8: f8c3 2204 str.w r2, [r3, #516] @ 0x204 - - return USBD_OK; - 80072dc: 2300 movs r3, #0 -} - 80072de: 4618 mov r0, r3 - 80072e0: 3714 adds r7, #20 - 80072e2: 46bd mov sp, r7 - 80072e4: bc80 pop {r7} - 80072e6: 4770 bx lr - -080072e8 : - * Transmit packet on IN endpoint - * @param pdev: device instance - * @retval status - */ -uint8_t USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev) -{ - 80072e8: b580 push {r7, lr} - 80072ea: b084 sub sp, #16 - 80072ec: af00 add r7, sp, #0 - 80072ee: 6078 str r0, [r7, #4] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 80072f0: 687b ldr r3, [r7, #4] - 80072f2: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 80072f6: 60fb str r3, [r7, #12] - - if (pdev->pClassData != NULL) - 80072f8: 687b ldr r3, [r7, #4] - 80072fa: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 80072fe: 2b00 cmp r3, #0 - 8007300: d01c beq.n 800733c - { - if (hcdc->TxState == 0U) - 8007302: 68fb ldr r3, [r7, #12] - 8007304: f8d3 3214 ldr.w r3, [r3, #532] @ 0x214 - 8007308: 2b00 cmp r3, #0 - 800730a: d115 bne.n 8007338 - { - /* Tx Transfer in progress */ - hcdc->TxState = 1U; - 800730c: 68fb ldr r3, [r7, #12] - 800730e: 2201 movs r2, #1 - 8007310: f8c3 2214 str.w r2, [r3, #532] @ 0x214 - - /* Update the packet total length */ - pdev->ep_in[CDC_IN_EP & 0xFU].total_length = hcdc->TxLength; - 8007314: 68fb ldr r3, [r7, #12] - 8007316: f8d3 2210 ldr.w r2, [r3, #528] @ 0x210 - 800731a: 687b ldr r3, [r7, #4] - 800731c: 631a str r2, [r3, #48] @ 0x30 - - /* Transmit next packet */ - USBD_LL_Transmit(pdev, CDC_IN_EP, hcdc->TxBuffer, - 800731e: 68fb ldr r3, [r7, #12] - 8007320: f8d3 2208 ldr.w r2, [r3, #520] @ 0x208 - (uint16_t)hcdc->TxLength); - 8007324: 68fb ldr r3, [r7, #12] - 8007326: f8d3 3210 ldr.w r3, [r3, #528] @ 0x210 - USBD_LL_Transmit(pdev, CDC_IN_EP, hcdc->TxBuffer, - 800732a: b29b uxth r3, r3 - 800732c: 2181 movs r1, #129 @ 0x81 - 800732e: 6878 ldr r0, [r7, #4] - 8007330: f001 fd3e bl 8008db0 - - return USBD_OK; - 8007334: 2300 movs r3, #0 - 8007336: e002 b.n 800733e - } - else - { - return USBD_BUSY; - 8007338: 2301 movs r3, #1 - 800733a: e000 b.n 800733e - } - } - else - { - return USBD_FAIL; - 800733c: 2302 movs r3, #2 - } -} - 800733e: 4618 mov r0, r3 - 8007340: 3710 adds r7, #16 - 8007342: 46bd mov sp, r7 - 8007344: bd80 pop {r7, pc} - -08007346 : - * prepare OUT Endpoint for reception - * @param pdev: device instance - * @retval status - */ -uint8_t USBD_CDC_ReceivePacket(USBD_HandleTypeDef *pdev) -{ - 8007346: b580 push {r7, lr} - 8007348: b084 sub sp, #16 - 800734a: af00 add r7, sp, #0 - 800734c: 6078 str r0, [r7, #4] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 800734e: 687b ldr r3, [r7, #4] - 8007350: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8007354: 60fb str r3, [r7, #12] - - /* Suspend or Resume USB Out process */ - if (pdev->pClassData != NULL) - 8007356: 687b ldr r3, [r7, #4] - 8007358: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 800735c: 2b00 cmp r3, #0 - 800735e: d017 beq.n 8007390 - { - if (pdev->dev_speed == USBD_SPEED_HIGH) - 8007360: 687b ldr r3, [r7, #4] - 8007362: 7c1b ldrb r3, [r3, #16] - 8007364: 2b00 cmp r3, #0 - 8007366: d109 bne.n 800737c - { - /* Prepare Out endpoint to receive next packet */ - USBD_LL_PrepareReceive(pdev, - 8007368: 68fb ldr r3, [r7, #12] - 800736a: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 - 800736e: f44f 7300 mov.w r3, #512 @ 0x200 - 8007372: 2101 movs r1, #1 - 8007374: 6878 ldr r0, [r7, #4] - 8007376: f001 fd3e bl 8008df6 - 800737a: e007 b.n 800738c - CDC_DATA_HS_OUT_PACKET_SIZE); - } - else - { - /* Prepare Out endpoint to receive next packet */ - USBD_LL_PrepareReceive(pdev, - 800737c: 68fb ldr r3, [r7, #12] - 800737e: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 - 8007382: 2340 movs r3, #64 @ 0x40 - 8007384: 2101 movs r1, #1 - 8007386: 6878 ldr r0, [r7, #4] - 8007388: f001 fd35 bl 8008df6 - CDC_OUT_EP, - hcdc->RxBuffer, - CDC_DATA_FS_OUT_PACKET_SIZE); - } - return USBD_OK; - 800738c: 2300 movs r3, #0 - 800738e: e000 b.n 8007392 - } - else - { - return USBD_FAIL; - 8007390: 2302 movs r3, #2 - } -} - 8007392: 4618 mov r0, r3 - 8007394: 3710 adds r7, #16 - 8007396: 46bd mov sp, r7 - 8007398: bd80 pop {r7, pc} - -0800739a : -* @param id: Low level core index -* @retval None -*/ -USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, - USBD_DescriptorsTypeDef *pdesc, uint8_t id) -{ - 800739a: b580 push {r7, lr} - 800739c: b084 sub sp, #16 - 800739e: af00 add r7, sp, #0 - 80073a0: 60f8 str r0, [r7, #12] - 80073a2: 60b9 str r1, [r7, #8] - 80073a4: 4613 mov r3, r2 - 80073a6: 71fb strb r3, [r7, #7] - /* Check whether the USB Host handle is valid */ - if (pdev == NULL) - 80073a8: 68fb ldr r3, [r7, #12] - 80073aa: 2b00 cmp r3, #0 - 80073ac: d101 bne.n 80073b2 - { -#if (USBD_DEBUG_LEVEL > 1U) - USBD_ErrLog("Invalid Device handle"); -#endif - return USBD_FAIL; - 80073ae: 2302 movs r3, #2 - 80073b0: e01a b.n 80073e8 - } - - /* Unlink previous class*/ - if (pdev->pClass != NULL) - 80073b2: 68fb ldr r3, [r7, #12] - 80073b4: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 80073b8: 2b00 cmp r3, #0 - 80073ba: d003 beq.n 80073c4 - { - pdev->pClass = NULL; - 80073bc: 68fb ldr r3, [r7, #12] - 80073be: 2200 movs r2, #0 - 80073c0: f8c3 22b4 str.w r2, [r3, #692] @ 0x2b4 - } - - /* Assign USBD Descriptors */ - if (pdesc != NULL) - 80073c4: 68bb ldr r3, [r7, #8] - 80073c6: 2b00 cmp r3, #0 - 80073c8: d003 beq.n 80073d2 - { - pdev->pDesc = pdesc; - 80073ca: 68fb ldr r3, [r7, #12] - 80073cc: 68ba ldr r2, [r7, #8] - 80073ce: f8c3 22b0 str.w r2, [r3, #688] @ 0x2b0 - } - - /* Set Device initial State */ - pdev->dev_state = USBD_STATE_DEFAULT; - 80073d2: 68fb ldr r3, [r7, #12] - 80073d4: 2201 movs r2, #1 - 80073d6: f883 229c strb.w r2, [r3, #668] @ 0x29c - pdev->id = id; - 80073da: 68fb ldr r3, [r7, #12] - 80073dc: 79fa ldrb r2, [r7, #7] - 80073de: 701a strb r2, [r3, #0] - /* Initialize low level driver */ - USBD_LL_Init(pdev); - 80073e0: 68f8 ldr r0, [r7, #12] - 80073e2: f001 fba3 bl 8008b2c - - return USBD_OK; - 80073e6: 2300 movs r3, #0 -} - 80073e8: 4618 mov r0, r3 - 80073ea: 3710 adds r7, #16 - 80073ec: 46bd mov sp, r7 - 80073ee: bd80 pop {r7, pc} - -080073f0 : - * @param pDevice : Device Handle - * @param pclass: Class handle - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass) -{ - 80073f0: b480 push {r7} - 80073f2: b085 sub sp, #20 - 80073f4: af00 add r7, sp, #0 - 80073f6: 6078 str r0, [r7, #4] - 80073f8: 6039 str r1, [r7, #0] - USBD_StatusTypeDef status = USBD_OK; - 80073fa: 2300 movs r3, #0 - 80073fc: 73fb strb r3, [r7, #15] - if (pclass != NULL) - 80073fe: 683b ldr r3, [r7, #0] - 8007400: 2b00 cmp r3, #0 - 8007402: d006 beq.n 8007412 - { - /* link the class to the USB Device handle */ - pdev->pClass = pclass; - 8007404: 687b ldr r3, [r7, #4] - 8007406: 683a ldr r2, [r7, #0] - 8007408: f8c3 22b4 str.w r2, [r3, #692] @ 0x2b4 - status = USBD_OK; - 800740c: 2300 movs r3, #0 - 800740e: 73fb strb r3, [r7, #15] - 8007410: e001 b.n 8007416 - else - { -#if (USBD_DEBUG_LEVEL > 1U) - USBD_ErrLog("Invalid Class handle"); -#endif - status = USBD_FAIL; - 8007412: 2302 movs r3, #2 - 8007414: 73fb strb r3, [r7, #15] - } - - return status; - 8007416: 7bfb ldrb r3, [r7, #15] -} - 8007418: 4618 mov r0, r3 - 800741a: 3714 adds r7, #20 - 800741c: 46bd mov sp, r7 - 800741e: bc80 pop {r7} - 8007420: 4770 bx lr - -08007422 : - * Start the USB Device Core. - * @param pdev: Device Handle - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev) -{ - 8007422: b580 push {r7, lr} - 8007424: b082 sub sp, #8 - 8007426: af00 add r7, sp, #0 - 8007428: 6078 str r0, [r7, #4] - /* Start the low level driver */ - USBD_LL_Start(pdev); - 800742a: 6878 ldr r0, [r7, #4] - 800742c: f001 fbd8 bl 8008be0 - - return USBD_OK; - 8007430: 2300 movs r3, #0 -} - 8007432: 4618 mov r0, r3 - 8007434: 3708 adds r7, #8 - 8007436: 46bd mov sp, r7 - 8007438: bd80 pop {r7, pc} - -0800743a : -* Launch test mode process -* @param pdev: device instance -* @retval status -*/ -USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev) -{ - 800743a: b480 push {r7} - 800743c: b083 sub sp, #12 - 800743e: af00 add r7, sp, #0 - 8007440: 6078 str r0, [r7, #4] - /* Prevent unused argument compilation warning */ - UNUSED(pdev); - - return USBD_OK; - 8007442: 2300 movs r3, #0 -} - 8007444: 4618 mov r0, r3 - 8007446: 370c adds r7, #12 - 8007448: 46bd mov sp, r7 - 800744a: bc80 pop {r7} - 800744c: 4770 bx lr - -0800744e : -* @param cfgidx: configuration index -* @retval status -*/ - -USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) -{ - 800744e: b580 push {r7, lr} - 8007450: b084 sub sp, #16 - 8007452: af00 add r7, sp, #0 - 8007454: 6078 str r0, [r7, #4] - 8007456: 460b mov r3, r1 - 8007458: 70fb strb r3, [r7, #3] - USBD_StatusTypeDef ret = USBD_FAIL; - 800745a: 2302 movs r3, #2 - 800745c: 73fb strb r3, [r7, #15] - - if (pdev->pClass != NULL) - 800745e: 687b ldr r3, [r7, #4] - 8007460: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007464: 2b00 cmp r3, #0 - 8007466: d00c beq.n 8007482 - { - /* Set configuration and Start the Class*/ - if (pdev->pClass->Init(pdev, cfgidx) == 0U) - 8007468: 687b ldr r3, [r7, #4] - 800746a: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 800746e: 681b ldr r3, [r3, #0] - 8007470: 78fa ldrb r2, [r7, #3] - 8007472: 4611 mov r1, r2 - 8007474: 6878 ldr r0, [r7, #4] - 8007476: 4798 blx r3 - 8007478: 4603 mov r3, r0 - 800747a: 2b00 cmp r3, #0 - 800747c: d101 bne.n 8007482 - { - ret = USBD_OK; - 800747e: 2300 movs r3, #0 - 8007480: 73fb strb r3, [r7, #15] - } - } - - return ret; - 8007482: 7bfb ldrb r3, [r7, #15] -} - 8007484: 4618 mov r0, r3 - 8007486: 3710 adds r7, #16 - 8007488: 46bd mov sp, r7 - 800748a: bd80 pop {r7, pc} - -0800748c : -* @param pdev: device instance -* @param cfgidx: configuration index -* @retval status: USBD_StatusTypeDef -*/ -USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) -{ - 800748c: b580 push {r7, lr} - 800748e: b082 sub sp, #8 - 8007490: af00 add r7, sp, #0 - 8007492: 6078 str r0, [r7, #4] - 8007494: 460b mov r3, r1 - 8007496: 70fb strb r3, [r7, #3] - /* Clear configuration and De-initialize the Class process*/ - pdev->pClass->DeInit(pdev, cfgidx); - 8007498: 687b ldr r3, [r7, #4] - 800749a: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 800749e: 685b ldr r3, [r3, #4] - 80074a0: 78fa ldrb r2, [r7, #3] - 80074a2: 4611 mov r1, r2 - 80074a4: 6878 ldr r0, [r7, #4] - 80074a6: 4798 blx r3 - - return USBD_OK; - 80074a8: 2300 movs r3, #0 -} - 80074aa: 4618 mov r0, r3 - 80074ac: 3708 adds r7, #8 - 80074ae: 46bd mov sp, r7 - 80074b0: bd80 pop {r7, pc} - -080074b2 : -* Handle the setup stage -* @param pdev: device instance -* @retval status -*/ -USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup) -{ - 80074b2: b580 push {r7, lr} - 80074b4: b082 sub sp, #8 - 80074b6: af00 add r7, sp, #0 - 80074b8: 6078 str r0, [r7, #4] - 80074ba: 6039 str r1, [r7, #0] - USBD_ParseSetupRequest(&pdev->request, psetup); - 80074bc: 687b ldr r3, [r7, #4] - 80074be: f503 732a add.w r3, r3, #680 @ 0x2a8 - 80074c2: 6839 ldr r1, [r7, #0] - 80074c4: 4618 mov r0, r3 - 80074c6: f000 fed8 bl 800827a - - pdev->ep0_state = USBD_EP0_SETUP; - 80074ca: 687b ldr r3, [r7, #4] - 80074cc: 2201 movs r2, #1 - 80074ce: f8c3 2294 str.w r2, [r3, #660] @ 0x294 - - pdev->ep0_data_len = pdev->request.wLength; - 80074d2: 687b ldr r3, [r7, #4] - 80074d4: f8b3 32ae ldrh.w r3, [r3, #686] @ 0x2ae - 80074d8: 461a mov r2, r3 - 80074da: 687b ldr r3, [r7, #4] - 80074dc: f8c3 2298 str.w r2, [r3, #664] @ 0x298 - - switch (pdev->request.bmRequest & 0x1FU) - 80074e0: 687b ldr r3, [r7, #4] - 80074e2: f893 32a8 ldrb.w r3, [r3, #680] @ 0x2a8 - 80074e6: f003 031f and.w r3, r3, #31 - 80074ea: 2b02 cmp r3, #2 - 80074ec: d016 beq.n 800751c - 80074ee: 2b02 cmp r3, #2 - 80074f0: d81c bhi.n 800752c - 80074f2: 2b00 cmp r3, #0 - 80074f4: d002 beq.n 80074fc - 80074f6: 2b01 cmp r3, #1 - 80074f8: d008 beq.n 800750c - 80074fa: e017 b.n 800752c - { - case USB_REQ_RECIPIENT_DEVICE: - USBD_StdDevReq(pdev, &pdev->request); - 80074fc: 687b ldr r3, [r7, #4] - 80074fe: f503 732a add.w r3, r3, #680 @ 0x2a8 - 8007502: 4619 mov r1, r3 - 8007504: 6878 ldr r0, [r7, #4] - 8007506: f000 f9cb bl 80078a0 - break; - 800750a: e01a b.n 8007542 - - case USB_REQ_RECIPIENT_INTERFACE: - USBD_StdItfReq(pdev, &pdev->request); - 800750c: 687b ldr r3, [r7, #4] - 800750e: f503 732a add.w r3, r3, #680 @ 0x2a8 - 8007512: 4619 mov r1, r3 - 8007514: 6878 ldr r0, [r7, #4] - 8007516: f000 fa2d bl 8007974 - break; - 800751a: e012 b.n 8007542 - - case USB_REQ_RECIPIENT_ENDPOINT: - USBD_StdEPReq(pdev, &pdev->request); - 800751c: 687b ldr r3, [r7, #4] - 800751e: f503 732a add.w r3, r3, #680 @ 0x2a8 - 8007522: 4619 mov r1, r3 - 8007524: 6878 ldr r0, [r7, #4] - 8007526: f000 fa6d bl 8007a04 - break; - 800752a: e00a b.n 8007542 - - default: - USBD_LL_StallEP(pdev, (pdev->request.bmRequest & 0x80U)); - 800752c: 687b ldr r3, [r7, #4] - 800752e: f893 32a8 ldrb.w r3, [r3, #680] @ 0x2a8 - 8007532: f023 037f bic.w r3, r3, #127 @ 0x7f - 8007536: b2db uxtb r3, r3 - 8007538: 4619 mov r1, r3 - 800753a: 6878 ldr r0, [r7, #4] - 800753c: f001 fbb0 bl 8008ca0 - break; - 8007540: bf00 nop - } - - return USBD_OK; - 8007542: 2300 movs r3, #0 -} - 8007544: 4618 mov r0, r3 - 8007546: 3708 adds r7, #8 - 8007548: 46bd mov sp, r7 - 800754a: bd80 pop {r7, pc} - -0800754c : -* @param epnum: endpoint index -* @retval status -*/ -USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, - uint8_t epnum, uint8_t *pdata) -{ - 800754c: b580 push {r7, lr} - 800754e: b086 sub sp, #24 - 8007550: af00 add r7, sp, #0 - 8007552: 60f8 str r0, [r7, #12] - 8007554: 460b mov r3, r1 - 8007556: 607a str r2, [r7, #4] - 8007558: 72fb strb r3, [r7, #11] - USBD_EndpointTypeDef *pep; - - if (epnum == 0U) - 800755a: 7afb ldrb r3, [r7, #11] - 800755c: 2b00 cmp r3, #0 - 800755e: d14b bne.n 80075f8 - { - pep = &pdev->ep_out[0]; - 8007560: 68fb ldr r3, [r7, #12] - 8007562: f503 73aa add.w r3, r3, #340 @ 0x154 - 8007566: 617b str r3, [r7, #20] - - if (pdev->ep0_state == USBD_EP0_DATA_OUT) - 8007568: 68fb ldr r3, [r7, #12] - 800756a: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 - 800756e: 2b03 cmp r3, #3 - 8007570: d134 bne.n 80075dc - { - if (pep->rem_length > pep->maxpacket) - 8007572: 697b ldr r3, [r7, #20] - 8007574: 68da ldr r2, [r3, #12] - 8007576: 697b ldr r3, [r7, #20] - 8007578: 691b ldr r3, [r3, #16] - 800757a: 429a cmp r2, r3 - 800757c: d919 bls.n 80075b2 - { - pep->rem_length -= pep->maxpacket; - 800757e: 697b ldr r3, [r7, #20] - 8007580: 68da ldr r2, [r3, #12] - 8007582: 697b ldr r3, [r7, #20] - 8007584: 691b ldr r3, [r3, #16] - 8007586: 1ad2 subs r2, r2, r3 - 8007588: 697b ldr r3, [r7, #20] - 800758a: 60da str r2, [r3, #12] - - USBD_CtlContinueRx(pdev, pdata, - (uint16_t)MIN(pep->rem_length, pep->maxpacket)); - 800758c: 697b ldr r3, [r7, #20] - 800758e: 68da ldr r2, [r3, #12] - 8007590: 697b ldr r3, [r7, #20] - 8007592: 691b ldr r3, [r3, #16] - USBD_CtlContinueRx(pdev, pdata, - 8007594: 429a cmp r2, r3 - 8007596: d203 bcs.n 80075a0 - (uint16_t)MIN(pep->rem_length, pep->maxpacket)); - 8007598: 697b ldr r3, [r7, #20] - 800759a: 68db ldr r3, [r3, #12] - USBD_CtlContinueRx(pdev, pdata, - 800759c: b29b uxth r3, r3 - 800759e: e002 b.n 80075a6 - (uint16_t)MIN(pep->rem_length, pep->maxpacket)); - 80075a0: 697b ldr r3, [r7, #20] - 80075a2: 691b ldr r3, [r3, #16] - USBD_CtlContinueRx(pdev, pdata, - 80075a4: b29b uxth r3, r3 - 80075a6: 461a mov r2, r3 - 80075a8: 6879 ldr r1, [r7, #4] - 80075aa: 68f8 ldr r0, [r7, #12] - 80075ac: f000 ff54 bl 8008458 - 80075b0: e038 b.n 8007624 - } - else - { - if ((pdev->pClass->EP0_RxReady != NULL) && - 80075b2: 68fb ldr r3, [r7, #12] - 80075b4: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 80075b8: 691b ldr r3, [r3, #16] - 80075ba: 2b00 cmp r3, #0 - 80075bc: d00a beq.n 80075d4 - (pdev->dev_state == USBD_STATE_CONFIGURED)) - 80075be: 68fb ldr r3, [r7, #12] - 80075c0: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - if ((pdev->pClass->EP0_RxReady != NULL) && - 80075c4: 2b03 cmp r3, #3 - 80075c6: d105 bne.n 80075d4 - { - pdev->pClass->EP0_RxReady(pdev); - 80075c8: 68fb ldr r3, [r7, #12] - 80075ca: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 80075ce: 691b ldr r3, [r3, #16] - 80075d0: 68f8 ldr r0, [r7, #12] - 80075d2: 4798 blx r3 - } - USBD_CtlSendStatus(pdev); - 80075d4: 68f8 ldr r0, [r7, #12] - 80075d6: f000 ff51 bl 800847c - 80075da: e023 b.n 8007624 - } - } - else - { - if (pdev->ep0_state == USBD_EP0_STATUS_OUT) - 80075dc: 68fb ldr r3, [r7, #12] - 80075de: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 - 80075e2: 2b05 cmp r3, #5 - 80075e4: d11e bne.n 8007624 - { - /* - * STATUS PHASE completed, update ep0_state to idle - */ - pdev->ep0_state = USBD_EP0_IDLE; - 80075e6: 68fb ldr r3, [r7, #12] - 80075e8: 2200 movs r2, #0 - 80075ea: f8c3 2294 str.w r2, [r3, #660] @ 0x294 - USBD_LL_StallEP(pdev, 0U); - 80075ee: 2100 movs r1, #0 - 80075f0: 68f8 ldr r0, [r7, #12] - 80075f2: f001 fb55 bl 8008ca0 - 80075f6: e015 b.n 8007624 - } - } - } - else if ((pdev->pClass->DataOut != NULL) && - 80075f8: 68fb ldr r3, [r7, #12] - 80075fa: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 80075fe: 699b ldr r3, [r3, #24] - 8007600: 2b00 cmp r3, #0 - 8007602: d00d beq.n 8007620 - (pdev->dev_state == USBD_STATE_CONFIGURED)) - 8007604: 68fb ldr r3, [r7, #12] - 8007606: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - else if ((pdev->pClass->DataOut != NULL) && - 800760a: 2b03 cmp r3, #3 - 800760c: d108 bne.n 8007620 - { - pdev->pClass->DataOut(pdev, epnum); - 800760e: 68fb ldr r3, [r7, #12] - 8007610: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007614: 699b ldr r3, [r3, #24] - 8007616: 7afa ldrb r2, [r7, #11] - 8007618: 4611 mov r1, r2 - 800761a: 68f8 ldr r0, [r7, #12] - 800761c: 4798 blx r3 - 800761e: e001 b.n 8007624 - } - else - { - /* should never be in this condition */ - return USBD_FAIL; - 8007620: 2302 movs r3, #2 - 8007622: e000 b.n 8007626 - } - - return USBD_OK; - 8007624: 2300 movs r3, #0 -} - 8007626: 4618 mov r0, r3 - 8007628: 3718 adds r7, #24 - 800762a: 46bd mov sp, r7 - 800762c: bd80 pop {r7, pc} - -0800762e : -* @param epnum: endpoint index -* @retval status -*/ -USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, - uint8_t epnum, uint8_t *pdata) -{ - 800762e: b580 push {r7, lr} - 8007630: b086 sub sp, #24 - 8007632: af00 add r7, sp, #0 - 8007634: 60f8 str r0, [r7, #12] - 8007636: 460b mov r3, r1 - 8007638: 607a str r2, [r7, #4] - 800763a: 72fb strb r3, [r7, #11] - USBD_EndpointTypeDef *pep; - - if (epnum == 0U) - 800763c: 7afb ldrb r3, [r7, #11] - 800763e: 2b00 cmp r3, #0 - 8007640: d17f bne.n 8007742 - { - pep = &pdev->ep_in[0]; - 8007642: 68fb ldr r3, [r7, #12] - 8007644: 3314 adds r3, #20 - 8007646: 617b str r3, [r7, #20] - - if (pdev->ep0_state == USBD_EP0_DATA_IN) - 8007648: 68fb ldr r3, [r7, #12] - 800764a: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 - 800764e: 2b02 cmp r3, #2 - 8007650: d15c bne.n 800770c - { - if (pep->rem_length > pep->maxpacket) - 8007652: 697b ldr r3, [r7, #20] - 8007654: 68da ldr r2, [r3, #12] - 8007656: 697b ldr r3, [r7, #20] - 8007658: 691b ldr r3, [r3, #16] - 800765a: 429a cmp r2, r3 - 800765c: d915 bls.n 800768a - { - pep->rem_length -= pep->maxpacket; - 800765e: 697b ldr r3, [r7, #20] - 8007660: 68da ldr r2, [r3, #12] - 8007662: 697b ldr r3, [r7, #20] - 8007664: 691b ldr r3, [r3, #16] - 8007666: 1ad2 subs r2, r2, r3 - 8007668: 697b ldr r3, [r7, #20] - 800766a: 60da str r2, [r3, #12] - - USBD_CtlContinueSendData(pdev, pdata, (uint16_t)pep->rem_length); - 800766c: 697b ldr r3, [r7, #20] - 800766e: 68db ldr r3, [r3, #12] - 8007670: b29b uxth r3, r3 - 8007672: 461a mov r2, r3 - 8007674: 6879 ldr r1, [r7, #4] - 8007676: 68f8 ldr r0, [r7, #12] - 8007678: f000 febe bl 80083f8 - - /* Prepare endpoint for premature end of transfer */ - USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); - 800767c: 2300 movs r3, #0 - 800767e: 2200 movs r2, #0 - 8007680: 2100 movs r1, #0 - 8007682: 68f8 ldr r0, [r7, #12] - 8007684: f001 fbb7 bl 8008df6 - 8007688: e04e b.n 8007728 - } - else - { - /* last packet is MPS multiple, so send ZLP packet */ - if ((pep->total_length % pep->maxpacket == 0U) && - 800768a: 697b ldr r3, [r7, #20] - 800768c: 689b ldr r3, [r3, #8] - 800768e: 697a ldr r2, [r7, #20] - 8007690: 6912 ldr r2, [r2, #16] - 8007692: fbb3 f1f2 udiv r1, r3, r2 - 8007696: fb01 f202 mul.w r2, r1, r2 - 800769a: 1a9b subs r3, r3, r2 - 800769c: 2b00 cmp r3, #0 - 800769e: d11c bne.n 80076da - (pep->total_length >= pep->maxpacket) && - 80076a0: 697b ldr r3, [r7, #20] - 80076a2: 689a ldr r2, [r3, #8] - 80076a4: 697b ldr r3, [r7, #20] - 80076a6: 691b ldr r3, [r3, #16] - if ((pep->total_length % pep->maxpacket == 0U) && - 80076a8: 429a cmp r2, r3 - 80076aa: d316 bcc.n 80076da - (pep->total_length < pdev->ep0_data_len)) - 80076ac: 697b ldr r3, [r7, #20] - 80076ae: 689a ldr r2, [r3, #8] - 80076b0: 68fb ldr r3, [r7, #12] - 80076b2: f8d3 3298 ldr.w r3, [r3, #664] @ 0x298 - (pep->total_length >= pep->maxpacket) && - 80076b6: 429a cmp r2, r3 - 80076b8: d20f bcs.n 80076da - { - USBD_CtlContinueSendData(pdev, NULL, 0U); - 80076ba: 2200 movs r2, #0 - 80076bc: 2100 movs r1, #0 - 80076be: 68f8 ldr r0, [r7, #12] - 80076c0: f000 fe9a bl 80083f8 - pdev->ep0_data_len = 0U; - 80076c4: 68fb ldr r3, [r7, #12] - 80076c6: 2200 movs r2, #0 - 80076c8: f8c3 2298 str.w r2, [r3, #664] @ 0x298 - - /* Prepare endpoint for premature end of transfer */ - USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); - 80076cc: 2300 movs r3, #0 - 80076ce: 2200 movs r2, #0 - 80076d0: 2100 movs r1, #0 - 80076d2: 68f8 ldr r0, [r7, #12] - 80076d4: f001 fb8f bl 8008df6 - 80076d8: e026 b.n 8007728 - } - else - { - if ((pdev->pClass->EP0_TxSent != NULL) && - 80076da: 68fb ldr r3, [r7, #12] - 80076dc: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 80076e0: 68db ldr r3, [r3, #12] - 80076e2: 2b00 cmp r3, #0 - 80076e4: d00a beq.n 80076fc - (pdev->dev_state == USBD_STATE_CONFIGURED)) - 80076e6: 68fb ldr r3, [r7, #12] - 80076e8: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - if ((pdev->pClass->EP0_TxSent != NULL) && - 80076ec: 2b03 cmp r3, #3 - 80076ee: d105 bne.n 80076fc - { - pdev->pClass->EP0_TxSent(pdev); - 80076f0: 68fb ldr r3, [r7, #12] - 80076f2: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 80076f6: 68db ldr r3, [r3, #12] - 80076f8: 68f8 ldr r0, [r7, #12] - 80076fa: 4798 blx r3 - } - USBD_LL_StallEP(pdev, 0x80U); - 80076fc: 2180 movs r1, #128 @ 0x80 - 80076fe: 68f8 ldr r0, [r7, #12] - 8007700: f001 face bl 8008ca0 - USBD_CtlReceiveStatus(pdev); - 8007704: 68f8 ldr r0, [r7, #12] - 8007706: f000 fecc bl 80084a2 - 800770a: e00d b.n 8007728 - } - } - } - else - { - if ((pdev->ep0_state == USBD_EP0_STATUS_IN) || - 800770c: 68fb ldr r3, [r7, #12] - 800770e: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 - 8007712: 2b04 cmp r3, #4 - 8007714: d004 beq.n 8007720 - (pdev->ep0_state == USBD_EP0_IDLE)) - 8007716: 68fb ldr r3, [r7, #12] - 8007718: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 - if ((pdev->ep0_state == USBD_EP0_STATUS_IN) || - 800771c: 2b00 cmp r3, #0 - 800771e: d103 bne.n 8007728 - { - USBD_LL_StallEP(pdev, 0x80U); - 8007720: 2180 movs r1, #128 @ 0x80 - 8007722: 68f8 ldr r0, [r7, #12] - 8007724: f001 fabc bl 8008ca0 - } - } - - if (pdev->dev_test_mode == 1U) - 8007728: 68fb ldr r3, [r7, #12] - 800772a: f893 32a0 ldrb.w r3, [r3, #672] @ 0x2a0 - 800772e: 2b01 cmp r3, #1 - 8007730: d11d bne.n 800776e - { - USBD_RunTestMode(pdev); - 8007732: 68f8 ldr r0, [r7, #12] - 8007734: f7ff fe81 bl 800743a - pdev->dev_test_mode = 0U; - 8007738: 68fb ldr r3, [r7, #12] - 800773a: 2200 movs r2, #0 - 800773c: f883 22a0 strb.w r2, [r3, #672] @ 0x2a0 - 8007740: e015 b.n 800776e - } - } - else if ((pdev->pClass->DataIn != NULL) && - 8007742: 68fb ldr r3, [r7, #12] - 8007744: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007748: 695b ldr r3, [r3, #20] - 800774a: 2b00 cmp r3, #0 - 800774c: d00d beq.n 800776a - (pdev->dev_state == USBD_STATE_CONFIGURED)) - 800774e: 68fb ldr r3, [r7, #12] - 8007750: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - else if ((pdev->pClass->DataIn != NULL) && - 8007754: 2b03 cmp r3, #3 - 8007756: d108 bne.n 800776a - { - pdev->pClass->DataIn(pdev, epnum); - 8007758: 68fb ldr r3, [r7, #12] - 800775a: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 800775e: 695b ldr r3, [r3, #20] - 8007760: 7afa ldrb r2, [r7, #11] - 8007762: 4611 mov r1, r2 - 8007764: 68f8 ldr r0, [r7, #12] - 8007766: 4798 blx r3 - 8007768: e001 b.n 800776e - } - else - { - /* should never be in this condition */ - return USBD_FAIL; - 800776a: 2302 movs r3, #2 - 800776c: e000 b.n 8007770 - } - - return USBD_OK; - 800776e: 2300 movs r3, #0 -} - 8007770: 4618 mov r0, r3 - 8007772: 3718 adds r7, #24 - 8007774: 46bd mov sp, r7 - 8007776: bd80 pop {r7, pc} - -08007778 : -* @param pdev: device instance -* @retval status -*/ - -USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev) -{ - 8007778: b580 push {r7, lr} - 800777a: b082 sub sp, #8 - 800777c: af00 add r7, sp, #0 - 800777e: 6078 str r0, [r7, #4] - /* Open EP0 OUT */ - USBD_LL_OpenEP(pdev, 0x00U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); - 8007780: 2340 movs r3, #64 @ 0x40 - 8007782: 2200 movs r2, #0 - 8007784: 2100 movs r1, #0 - 8007786: 6878 ldr r0, [r7, #4] - 8007788: f001 fa45 bl 8008c16 - pdev->ep_out[0x00U & 0xFU].is_used = 1U; - 800778c: 687b ldr r3, [r7, #4] - 800778e: 2201 movs r2, #1 - 8007790: f8c3 2158 str.w r2, [r3, #344] @ 0x158 - - pdev->ep_out[0].maxpacket = USB_MAX_EP0_SIZE; - 8007794: 687b ldr r3, [r7, #4] - 8007796: 2240 movs r2, #64 @ 0x40 - 8007798: f8c3 2164 str.w r2, [r3, #356] @ 0x164 - - /* Open EP0 IN */ - USBD_LL_OpenEP(pdev, 0x80U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); - 800779c: 2340 movs r3, #64 @ 0x40 - 800779e: 2200 movs r2, #0 - 80077a0: 2180 movs r1, #128 @ 0x80 - 80077a2: 6878 ldr r0, [r7, #4] - 80077a4: f001 fa37 bl 8008c16 - pdev->ep_in[0x80U & 0xFU].is_used = 1U; - 80077a8: 687b ldr r3, [r7, #4] - 80077aa: 2201 movs r2, #1 - 80077ac: 619a str r2, [r3, #24] - - pdev->ep_in[0].maxpacket = USB_MAX_EP0_SIZE; - 80077ae: 687b ldr r3, [r7, #4] - 80077b0: 2240 movs r2, #64 @ 0x40 - 80077b2: 625a str r2, [r3, #36] @ 0x24 - - /* Upon Reset call user call back */ - pdev->dev_state = USBD_STATE_DEFAULT; - 80077b4: 687b ldr r3, [r7, #4] - 80077b6: 2201 movs r2, #1 - 80077b8: f883 229c strb.w r2, [r3, #668] @ 0x29c - pdev->ep0_state = USBD_EP0_IDLE; - 80077bc: 687b ldr r3, [r7, #4] - 80077be: 2200 movs r2, #0 - 80077c0: f8c3 2294 str.w r2, [r3, #660] @ 0x294 - pdev->dev_config = 0U; - 80077c4: 687b ldr r3, [r7, #4] - 80077c6: 2200 movs r2, #0 - 80077c8: 605a str r2, [r3, #4] - pdev->dev_remote_wakeup = 0U; - 80077ca: 687b ldr r3, [r7, #4] - 80077cc: 2200 movs r2, #0 - 80077ce: f8c3 22a4 str.w r2, [r3, #676] @ 0x2a4 - - if (pdev->pClassData) - 80077d2: 687b ldr r3, [r7, #4] - 80077d4: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 80077d8: 2b00 cmp r3, #0 - 80077da: d009 beq.n 80077f0 - { - pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config); - 80077dc: 687b ldr r3, [r7, #4] - 80077de: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 80077e2: 685b ldr r3, [r3, #4] - 80077e4: 687a ldr r2, [r7, #4] - 80077e6: 6852 ldr r2, [r2, #4] - 80077e8: b2d2 uxtb r2, r2 - 80077ea: 4611 mov r1, r2 - 80077ec: 6878 ldr r0, [r7, #4] - 80077ee: 4798 blx r3 - } - - return USBD_OK; - 80077f0: 2300 movs r3, #0 -} - 80077f2: 4618 mov r0, r3 - 80077f4: 3708 adds r7, #8 - 80077f6: 46bd mov sp, r7 - 80077f8: bd80 pop {r7, pc} - -080077fa : -* @param pdev: device instance -* @retval status -*/ -USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, - USBD_SpeedTypeDef speed) -{ - 80077fa: b480 push {r7} - 80077fc: b083 sub sp, #12 - 80077fe: af00 add r7, sp, #0 - 8007800: 6078 str r0, [r7, #4] - 8007802: 460b mov r3, r1 - 8007804: 70fb strb r3, [r7, #3] - pdev->dev_speed = speed; - 8007806: 687b ldr r3, [r7, #4] - 8007808: 78fa ldrb r2, [r7, #3] - 800780a: 741a strb r2, [r3, #16] - - return USBD_OK; - 800780c: 2300 movs r3, #0 -} - 800780e: 4618 mov r0, r3 - 8007810: 370c adds r7, #12 - 8007812: 46bd mov sp, r7 - 8007814: bc80 pop {r7} - 8007816: 4770 bx lr - -08007818 : -* @param pdev: device instance -* @retval status -*/ - -USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev) -{ - 8007818: b480 push {r7} - 800781a: b083 sub sp, #12 - 800781c: af00 add r7, sp, #0 - 800781e: 6078 str r0, [r7, #4] - pdev->dev_old_state = pdev->dev_state; - 8007820: 687b ldr r3, [r7, #4] - 8007822: f893 229c ldrb.w r2, [r3, #668] @ 0x29c - 8007826: 687b ldr r3, [r7, #4] - 8007828: f883 229d strb.w r2, [r3, #669] @ 0x29d - pdev->dev_state = USBD_STATE_SUSPENDED; - 800782c: 687b ldr r3, [r7, #4] - 800782e: 2204 movs r2, #4 - 8007830: f883 229c strb.w r2, [r3, #668] @ 0x29c - - return USBD_OK; - 8007834: 2300 movs r3, #0 -} - 8007836: 4618 mov r0, r3 - 8007838: 370c adds r7, #12 - 800783a: 46bd mov sp, r7 - 800783c: bc80 pop {r7} - 800783e: 4770 bx lr - -08007840 : -* @param pdev: device instance -* @retval status -*/ - -USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev) -{ - 8007840: b480 push {r7} - 8007842: b083 sub sp, #12 - 8007844: af00 add r7, sp, #0 - 8007846: 6078 str r0, [r7, #4] - if (pdev->dev_state == USBD_STATE_SUSPENDED) - 8007848: 687b ldr r3, [r7, #4] - 800784a: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 800784e: 2b04 cmp r3, #4 - 8007850: d105 bne.n 800785e - { - pdev->dev_state = pdev->dev_old_state; - 8007852: 687b ldr r3, [r7, #4] - 8007854: f893 229d ldrb.w r2, [r3, #669] @ 0x29d - 8007858: 687b ldr r3, [r7, #4] - 800785a: f883 229c strb.w r2, [r3, #668] @ 0x29c - } - - return USBD_OK; - 800785e: 2300 movs r3, #0 -} - 8007860: 4618 mov r0, r3 - 8007862: 370c adds r7, #12 - 8007864: 46bd mov sp, r7 - 8007866: bc80 pop {r7} - 8007868: 4770 bx lr - -0800786a : -* @param pdev: device instance -* @retval status -*/ - -USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev) -{ - 800786a: b580 push {r7, lr} - 800786c: b082 sub sp, #8 - 800786e: af00 add r7, sp, #0 - 8007870: 6078 str r0, [r7, #4] - if (pdev->dev_state == USBD_STATE_CONFIGURED) - 8007872: 687b ldr r3, [r7, #4] - 8007874: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8007878: 2b03 cmp r3, #3 - 800787a: d10b bne.n 8007894 - { - if (pdev->pClass->SOF != NULL) - 800787c: 687b ldr r3, [r7, #4] - 800787e: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007882: 69db ldr r3, [r3, #28] - 8007884: 2b00 cmp r3, #0 - 8007886: d005 beq.n 8007894 - { - pdev->pClass->SOF(pdev); - 8007888: 687b ldr r3, [r7, #4] - 800788a: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 800788e: 69db ldr r3, [r3, #28] - 8007890: 6878 ldr r0, [r7, #4] - 8007892: 4798 blx r3 - } - } - - return USBD_OK; - 8007894: 2300 movs r3, #0 -} - 8007896: 4618 mov r0, r3 - 8007898: 3708 adds r7, #8 - 800789a: 46bd mov sp, r7 - 800789c: bd80 pop {r7, pc} - ... - -080078a0 : -* @param req: usb request -* @retval status -*/ -USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 80078a0: b580 push {r7, lr} - 80078a2: b084 sub sp, #16 - 80078a4: af00 add r7, sp, #0 - 80078a6: 6078 str r0, [r7, #4] - 80078a8: 6039 str r1, [r7, #0] - USBD_StatusTypeDef ret = USBD_OK; - 80078aa: 2300 movs r3, #0 - 80078ac: 73fb strb r3, [r7, #15] - - switch (req->bmRequest & USB_REQ_TYPE_MASK) - 80078ae: 683b ldr r3, [r7, #0] - 80078b0: 781b ldrb r3, [r3, #0] - 80078b2: f003 0360 and.w r3, r3, #96 @ 0x60 - 80078b6: 2b40 cmp r3, #64 @ 0x40 - 80078b8: d005 beq.n 80078c6 - 80078ba: 2b40 cmp r3, #64 @ 0x40 - 80078bc: d84f bhi.n 800795e - 80078be: 2b00 cmp r3, #0 - 80078c0: d009 beq.n 80078d6 - 80078c2: 2b20 cmp r3, #32 - 80078c4: d14b bne.n 800795e - { - case USB_REQ_TYPE_CLASS: - case USB_REQ_TYPE_VENDOR: - pdev->pClass->Setup(pdev, req); - 80078c6: 687b ldr r3, [r7, #4] - 80078c8: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 80078cc: 689b ldr r3, [r3, #8] - 80078ce: 6839 ldr r1, [r7, #0] - 80078d0: 6878 ldr r0, [r7, #4] - 80078d2: 4798 blx r3 - break; - 80078d4: e048 b.n 8007968 - - case USB_REQ_TYPE_STANDARD: - switch (req->bRequest) - 80078d6: 683b ldr r3, [r7, #0] - 80078d8: 785b ldrb r3, [r3, #1] - 80078da: 2b09 cmp r3, #9 - 80078dc: d839 bhi.n 8007952 - 80078de: a201 add r2, pc, #4 @ (adr r2, 80078e4 ) - 80078e0: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80078e4: 08007935 .word 0x08007935 - 80078e8: 08007949 .word 0x08007949 - 80078ec: 08007953 .word 0x08007953 - 80078f0: 0800793f .word 0x0800793f - 80078f4: 08007953 .word 0x08007953 - 80078f8: 08007917 .word 0x08007917 - 80078fc: 0800790d .word 0x0800790d - 8007900: 08007953 .word 0x08007953 - 8007904: 0800792b .word 0x0800792b - 8007908: 08007921 .word 0x08007921 - { - case USB_REQ_GET_DESCRIPTOR: - USBD_GetDescriptor(pdev, req); - 800790c: 6839 ldr r1, [r7, #0] - 800790e: 6878 ldr r0, [r7, #4] - 8007910: f000 f9dc bl 8007ccc - break; - 8007914: e022 b.n 800795c - - case USB_REQ_SET_ADDRESS: - USBD_SetAddress(pdev, req); - 8007916: 6839 ldr r1, [r7, #0] - 8007918: 6878 ldr r0, [r7, #4] - 800791a: f000 fb3f bl 8007f9c - break; - 800791e: e01d b.n 800795c - - case USB_REQ_SET_CONFIGURATION: - USBD_SetConfig(pdev, req); - 8007920: 6839 ldr r1, [r7, #0] - 8007922: 6878 ldr r0, [r7, #4] - 8007924: f000 fb7e bl 8008024 - break; - 8007928: e018 b.n 800795c - - case USB_REQ_GET_CONFIGURATION: - USBD_GetConfig(pdev, req); - 800792a: 6839 ldr r1, [r7, #0] - 800792c: 6878 ldr r0, [r7, #4] - 800792e: f000 fc07 bl 8008140 - break; - 8007932: e013 b.n 800795c - - case USB_REQ_GET_STATUS: - USBD_GetStatus(pdev, req); - 8007934: 6839 ldr r1, [r7, #0] - 8007936: 6878 ldr r0, [r7, #4] - 8007938: f000 fc37 bl 80081aa - break; - 800793c: e00e b.n 800795c - - case USB_REQ_SET_FEATURE: - USBD_SetFeature(pdev, req); - 800793e: 6839 ldr r1, [r7, #0] - 8007940: 6878 ldr r0, [r7, #4] - 8007942: f000 fc65 bl 8008210 - break; - 8007946: e009 b.n 800795c - - case USB_REQ_CLEAR_FEATURE: - USBD_ClrFeature(pdev, req); - 8007948: 6839 ldr r1, [r7, #0] - 800794a: 6878 ldr r0, [r7, #4] - 800794c: f000 fc74 bl 8008238 - break; - 8007950: e004 b.n 800795c - - default: - USBD_CtlError(pdev, req); - 8007952: 6839 ldr r1, [r7, #0] - 8007954: 6878 ldr r0, [r7, #4] - 8007956: f000 fcc9 bl 80082ec - break; - 800795a: bf00 nop - } - break; - 800795c: e004 b.n 8007968 - - default: - USBD_CtlError(pdev, req); - 800795e: 6839 ldr r1, [r7, #0] - 8007960: 6878 ldr r0, [r7, #4] - 8007962: f000 fcc3 bl 80082ec - break; - 8007966: bf00 nop - } - - return ret; - 8007968: 7bfb ldrb r3, [r7, #15] -} - 800796a: 4618 mov r0, r3 - 800796c: 3710 adds r7, #16 - 800796e: 46bd mov sp, r7 - 8007970: bd80 pop {r7, pc} - 8007972: bf00 nop - -08007974 : -* @param req: usb request -* @retval status -*/ -USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 8007974: b580 push {r7, lr} - 8007976: b084 sub sp, #16 - 8007978: af00 add r7, sp, #0 - 800797a: 6078 str r0, [r7, #4] - 800797c: 6039 str r1, [r7, #0] - USBD_StatusTypeDef ret = USBD_OK; - 800797e: 2300 movs r3, #0 - 8007980: 73fb strb r3, [r7, #15] - - switch (req->bmRequest & USB_REQ_TYPE_MASK) - 8007982: 683b ldr r3, [r7, #0] - 8007984: 781b ldrb r3, [r3, #0] - 8007986: f003 0360 and.w r3, r3, #96 @ 0x60 - 800798a: 2b40 cmp r3, #64 @ 0x40 - 800798c: d005 beq.n 800799a - 800798e: 2b40 cmp r3, #64 @ 0x40 - 8007990: d82e bhi.n 80079f0 - 8007992: 2b00 cmp r3, #0 - 8007994: d001 beq.n 800799a - 8007996: 2b20 cmp r3, #32 - 8007998: d12a bne.n 80079f0 - { - case USB_REQ_TYPE_CLASS: - case USB_REQ_TYPE_VENDOR: - case USB_REQ_TYPE_STANDARD: - switch (pdev->dev_state) - 800799a: 687b ldr r3, [r7, #4] - 800799c: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 80079a0: 3b01 subs r3, #1 - 80079a2: 2b02 cmp r3, #2 - 80079a4: d81d bhi.n 80079e2 - { - case USBD_STATE_DEFAULT: - case USBD_STATE_ADDRESSED: - case USBD_STATE_CONFIGURED: - - if (LOBYTE(req->wIndex) <= USBD_MAX_NUM_INTERFACES) - 80079a6: 683b ldr r3, [r7, #0] - 80079a8: 889b ldrh r3, [r3, #4] - 80079aa: b2db uxtb r3, r3 - 80079ac: 2b01 cmp r3, #1 - 80079ae: d813 bhi.n 80079d8 - { - ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req); - 80079b0: 687b ldr r3, [r7, #4] - 80079b2: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 80079b6: 689b ldr r3, [r3, #8] - 80079b8: 6839 ldr r1, [r7, #0] - 80079ba: 6878 ldr r0, [r7, #4] - 80079bc: 4798 blx r3 - 80079be: 4603 mov r3, r0 - 80079c0: 73fb strb r3, [r7, #15] - - if ((req->wLength == 0U) && (ret == USBD_OK)) - 80079c2: 683b ldr r3, [r7, #0] - 80079c4: 88db ldrh r3, [r3, #6] - 80079c6: 2b00 cmp r3, #0 - 80079c8: d110 bne.n 80079ec - 80079ca: 7bfb ldrb r3, [r7, #15] - 80079cc: 2b00 cmp r3, #0 - 80079ce: d10d bne.n 80079ec - { - USBD_CtlSendStatus(pdev); - 80079d0: 6878 ldr r0, [r7, #4] - 80079d2: f000 fd53 bl 800847c - } - else - { - USBD_CtlError(pdev, req); - } - break; - 80079d6: e009 b.n 80079ec - USBD_CtlError(pdev, req); - 80079d8: 6839 ldr r1, [r7, #0] - 80079da: 6878 ldr r0, [r7, #4] - 80079dc: f000 fc86 bl 80082ec - break; - 80079e0: e004 b.n 80079ec - - default: - USBD_CtlError(pdev, req); - 80079e2: 6839 ldr r1, [r7, #0] - 80079e4: 6878 ldr r0, [r7, #4] - 80079e6: f000 fc81 bl 80082ec - break; - 80079ea: e000 b.n 80079ee - break; - 80079ec: bf00 nop - } - break; - 80079ee: e004 b.n 80079fa - - default: - USBD_CtlError(pdev, req); - 80079f0: 6839 ldr r1, [r7, #0] - 80079f2: 6878 ldr r0, [r7, #4] - 80079f4: f000 fc7a bl 80082ec - break; - 80079f8: bf00 nop - } - - return USBD_OK; - 80079fa: 2300 movs r3, #0 -} - 80079fc: 4618 mov r0, r3 - 80079fe: 3710 adds r7, #16 - 8007a00: 46bd mov sp, r7 - 8007a02: bd80 pop {r7, pc} - -08007a04 : -* @param req: usb request -* @retval status -*/ -USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 8007a04: b580 push {r7, lr} - 8007a06: b084 sub sp, #16 - 8007a08: af00 add r7, sp, #0 - 8007a0a: 6078 str r0, [r7, #4] - 8007a0c: 6039 str r1, [r7, #0] - USBD_EndpointTypeDef *pep; - uint8_t ep_addr; - USBD_StatusTypeDef ret = USBD_OK; - 8007a0e: 2300 movs r3, #0 - 8007a10: 73fb strb r3, [r7, #15] - ep_addr = LOBYTE(req->wIndex); - 8007a12: 683b ldr r3, [r7, #0] - 8007a14: 889b ldrh r3, [r3, #4] - 8007a16: 73bb strb r3, [r7, #14] - - switch (req->bmRequest & USB_REQ_TYPE_MASK) - 8007a18: 683b ldr r3, [r7, #0] - 8007a1a: 781b ldrb r3, [r3, #0] - 8007a1c: f003 0360 and.w r3, r3, #96 @ 0x60 - 8007a20: 2b40 cmp r3, #64 @ 0x40 - 8007a22: d007 beq.n 8007a34 - 8007a24: 2b40 cmp r3, #64 @ 0x40 - 8007a26: f200 8146 bhi.w 8007cb6 - 8007a2a: 2b00 cmp r3, #0 - 8007a2c: d00a beq.n 8007a44 - 8007a2e: 2b20 cmp r3, #32 - 8007a30: f040 8141 bne.w 8007cb6 - { - case USB_REQ_TYPE_CLASS: - case USB_REQ_TYPE_VENDOR: - pdev->pClass->Setup(pdev, req); - 8007a34: 687b ldr r3, [r7, #4] - 8007a36: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007a3a: 689b ldr r3, [r3, #8] - 8007a3c: 6839 ldr r1, [r7, #0] - 8007a3e: 6878 ldr r0, [r7, #4] - 8007a40: 4798 blx r3 - break; - 8007a42: e13d b.n 8007cc0 - - case USB_REQ_TYPE_STANDARD: - /* Check if it is a class request */ - if ((req->bmRequest & 0x60U) == 0x20U) - 8007a44: 683b ldr r3, [r7, #0] - 8007a46: 781b ldrb r3, [r3, #0] - 8007a48: f003 0360 and.w r3, r3, #96 @ 0x60 - 8007a4c: 2b20 cmp r3, #32 - 8007a4e: d10a bne.n 8007a66 - { - ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req); - 8007a50: 687b ldr r3, [r7, #4] - 8007a52: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007a56: 689b ldr r3, [r3, #8] - 8007a58: 6839 ldr r1, [r7, #0] - 8007a5a: 6878 ldr r0, [r7, #4] - 8007a5c: 4798 blx r3 - 8007a5e: 4603 mov r3, r0 - 8007a60: 73fb strb r3, [r7, #15] - - return ret; - 8007a62: 7bfb ldrb r3, [r7, #15] - 8007a64: e12d b.n 8007cc2 - } - - switch (req->bRequest) - 8007a66: 683b ldr r3, [r7, #0] - 8007a68: 785b ldrb r3, [r3, #1] - 8007a6a: 2b03 cmp r3, #3 - 8007a6c: d007 beq.n 8007a7e - 8007a6e: 2b03 cmp r3, #3 - 8007a70: f300 811b bgt.w 8007caa - 8007a74: 2b00 cmp r3, #0 - 8007a76: d072 beq.n 8007b5e - 8007a78: 2b01 cmp r3, #1 - 8007a7a: d03a beq.n 8007af2 - 8007a7c: e115 b.n 8007caa - { - case USB_REQ_SET_FEATURE: - switch (pdev->dev_state) - 8007a7e: 687b ldr r3, [r7, #4] - 8007a80: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8007a84: 2b02 cmp r3, #2 - 8007a86: d002 beq.n 8007a8e - 8007a88: 2b03 cmp r3, #3 - 8007a8a: d015 beq.n 8007ab8 - 8007a8c: e02b b.n 8007ae6 - { - case USBD_STATE_ADDRESSED: - if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) - 8007a8e: 7bbb ldrb r3, [r7, #14] - 8007a90: 2b00 cmp r3, #0 - 8007a92: d00c beq.n 8007aae - 8007a94: 7bbb ldrb r3, [r7, #14] - 8007a96: 2b80 cmp r3, #128 @ 0x80 - 8007a98: d009 beq.n 8007aae - { - USBD_LL_StallEP(pdev, ep_addr); - 8007a9a: 7bbb ldrb r3, [r7, #14] - 8007a9c: 4619 mov r1, r3 - 8007a9e: 6878 ldr r0, [r7, #4] - 8007aa0: f001 f8fe bl 8008ca0 - USBD_LL_StallEP(pdev, 0x80U); - 8007aa4: 2180 movs r1, #128 @ 0x80 - 8007aa6: 6878 ldr r0, [r7, #4] - 8007aa8: f001 f8fa bl 8008ca0 - } - else - { - USBD_CtlError(pdev, req); - } - break; - 8007aac: e020 b.n 8007af0 - USBD_CtlError(pdev, req); - 8007aae: 6839 ldr r1, [r7, #0] - 8007ab0: 6878 ldr r0, [r7, #4] - 8007ab2: f000 fc1b bl 80082ec - break; - 8007ab6: e01b b.n 8007af0 - - case USBD_STATE_CONFIGURED: - if (req->wValue == USB_FEATURE_EP_HALT) - 8007ab8: 683b ldr r3, [r7, #0] - 8007aba: 885b ldrh r3, [r3, #2] - 8007abc: 2b00 cmp r3, #0 - 8007abe: d10e bne.n 8007ade - { - if ((ep_addr != 0x00U) && - 8007ac0: 7bbb ldrb r3, [r7, #14] - 8007ac2: 2b00 cmp r3, #0 - 8007ac4: d00b beq.n 8007ade - 8007ac6: 7bbb ldrb r3, [r7, #14] - 8007ac8: 2b80 cmp r3, #128 @ 0x80 - 8007aca: d008 beq.n 8007ade - (ep_addr != 0x80U) && (req->wLength == 0x00U)) - 8007acc: 683b ldr r3, [r7, #0] - 8007ace: 88db ldrh r3, [r3, #6] - 8007ad0: 2b00 cmp r3, #0 - 8007ad2: d104 bne.n 8007ade - { - USBD_LL_StallEP(pdev, ep_addr); - 8007ad4: 7bbb ldrb r3, [r7, #14] - 8007ad6: 4619 mov r1, r3 - 8007ad8: 6878 ldr r0, [r7, #4] - 8007ada: f001 f8e1 bl 8008ca0 - } - } - USBD_CtlSendStatus(pdev); - 8007ade: 6878 ldr r0, [r7, #4] - 8007ae0: f000 fccc bl 800847c - - break; - 8007ae4: e004 b.n 8007af0 - - default: - USBD_CtlError(pdev, req); - 8007ae6: 6839 ldr r1, [r7, #0] - 8007ae8: 6878 ldr r0, [r7, #4] - 8007aea: f000 fbff bl 80082ec - break; - 8007aee: bf00 nop - } - break; - 8007af0: e0e0 b.n 8007cb4 - - case USB_REQ_CLEAR_FEATURE: - - switch (pdev->dev_state) - 8007af2: 687b ldr r3, [r7, #4] - 8007af4: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8007af8: 2b02 cmp r3, #2 - 8007afa: d002 beq.n 8007b02 - 8007afc: 2b03 cmp r3, #3 - 8007afe: d015 beq.n 8007b2c - 8007b00: e026 b.n 8007b50 - { - case USBD_STATE_ADDRESSED: - if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) - 8007b02: 7bbb ldrb r3, [r7, #14] - 8007b04: 2b00 cmp r3, #0 - 8007b06: d00c beq.n 8007b22 - 8007b08: 7bbb ldrb r3, [r7, #14] - 8007b0a: 2b80 cmp r3, #128 @ 0x80 - 8007b0c: d009 beq.n 8007b22 - { - USBD_LL_StallEP(pdev, ep_addr); - 8007b0e: 7bbb ldrb r3, [r7, #14] - 8007b10: 4619 mov r1, r3 - 8007b12: 6878 ldr r0, [r7, #4] - 8007b14: f001 f8c4 bl 8008ca0 - USBD_LL_StallEP(pdev, 0x80U); - 8007b18: 2180 movs r1, #128 @ 0x80 - 8007b1a: 6878 ldr r0, [r7, #4] - 8007b1c: f001 f8c0 bl 8008ca0 - } - else - { - USBD_CtlError(pdev, req); - } - break; - 8007b20: e01c b.n 8007b5c - USBD_CtlError(pdev, req); - 8007b22: 6839 ldr r1, [r7, #0] - 8007b24: 6878 ldr r0, [r7, #4] - 8007b26: f000 fbe1 bl 80082ec - break; - 8007b2a: e017 b.n 8007b5c - - case USBD_STATE_CONFIGURED: - if (req->wValue == USB_FEATURE_EP_HALT) - 8007b2c: 683b ldr r3, [r7, #0] - 8007b2e: 885b ldrh r3, [r3, #2] - 8007b30: 2b00 cmp r3, #0 - 8007b32: d112 bne.n 8007b5a - { - if ((ep_addr & 0x7FU) != 0x00U) - 8007b34: 7bbb ldrb r3, [r7, #14] - 8007b36: f003 037f and.w r3, r3, #127 @ 0x7f - 8007b3a: 2b00 cmp r3, #0 - 8007b3c: d004 beq.n 8007b48 - { - USBD_LL_ClearStallEP(pdev, ep_addr); - 8007b3e: 7bbb ldrb r3, [r7, #14] - 8007b40: 4619 mov r1, r3 - 8007b42: 6878 ldr r0, [r7, #4] - 8007b44: f001 f8cb bl 8008cde - } - USBD_CtlSendStatus(pdev); - 8007b48: 6878 ldr r0, [r7, #4] - 8007b4a: f000 fc97 bl 800847c - } - break; - 8007b4e: e004 b.n 8007b5a - - default: - USBD_CtlError(pdev, req); - 8007b50: 6839 ldr r1, [r7, #0] - 8007b52: 6878 ldr r0, [r7, #4] - 8007b54: f000 fbca bl 80082ec - break; - 8007b58: e000 b.n 8007b5c - break; - 8007b5a: bf00 nop - } - break; - 8007b5c: e0aa b.n 8007cb4 - - case USB_REQ_GET_STATUS: - switch (pdev->dev_state) - 8007b5e: 687b ldr r3, [r7, #4] - 8007b60: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8007b64: 2b02 cmp r3, #2 - 8007b66: d002 beq.n 8007b6e - 8007b68: 2b03 cmp r3, #3 - 8007b6a: d032 beq.n 8007bd2 - 8007b6c: e097 b.n 8007c9e - { - case USBD_STATE_ADDRESSED: - if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) - 8007b6e: 7bbb ldrb r3, [r7, #14] - 8007b70: 2b00 cmp r3, #0 - 8007b72: d007 beq.n 8007b84 - 8007b74: 7bbb ldrb r3, [r7, #14] - 8007b76: 2b80 cmp r3, #128 @ 0x80 - 8007b78: d004 beq.n 8007b84 - { - USBD_CtlError(pdev, req); - 8007b7a: 6839 ldr r1, [r7, #0] - 8007b7c: 6878 ldr r0, [r7, #4] - 8007b7e: f000 fbb5 bl 80082ec - break; - 8007b82: e091 b.n 8007ca8 - } - pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ - 8007b84: f997 300e ldrsb.w r3, [r7, #14] - 8007b88: 2b00 cmp r3, #0 - 8007b8a: da0b bge.n 8007ba4 - 8007b8c: 7bbb ldrb r3, [r7, #14] - 8007b8e: f003 027f and.w r2, r3, #127 @ 0x7f - 8007b92: 4613 mov r3, r2 - 8007b94: 009b lsls r3, r3, #2 - 8007b96: 4413 add r3, r2 - 8007b98: 009b lsls r3, r3, #2 - 8007b9a: 3310 adds r3, #16 - 8007b9c: 687a ldr r2, [r7, #4] - 8007b9e: 4413 add r3, r2 - 8007ba0: 3304 adds r3, #4 - 8007ba2: e00b b.n 8007bbc - &pdev->ep_out[ep_addr & 0x7FU]; - 8007ba4: 7bbb ldrb r3, [r7, #14] - 8007ba6: f003 027f and.w r2, r3, #127 @ 0x7f - pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ - 8007baa: 4613 mov r3, r2 - 8007bac: 009b lsls r3, r3, #2 - 8007bae: 4413 add r3, r2 - 8007bb0: 009b lsls r3, r3, #2 - 8007bb2: f503 73a8 add.w r3, r3, #336 @ 0x150 - 8007bb6: 687a ldr r2, [r7, #4] - 8007bb8: 4413 add r3, r2 - 8007bba: 3304 adds r3, #4 - 8007bbc: 60bb str r3, [r7, #8] - - pep->status = 0x0000U; - 8007bbe: 68bb ldr r3, [r7, #8] - 8007bc0: 2200 movs r2, #0 - 8007bc2: 601a str r2, [r3, #0] - - USBD_CtlSendData(pdev, (uint8_t *)(void *)&pep->status, 2U); - 8007bc4: 68bb ldr r3, [r7, #8] - 8007bc6: 2202 movs r2, #2 - 8007bc8: 4619 mov r1, r3 - 8007bca: 6878 ldr r0, [r7, #4] - 8007bcc: f000 fbf8 bl 80083c0 - break; - 8007bd0: e06a b.n 8007ca8 - - case USBD_STATE_CONFIGURED: - if ((ep_addr & 0x80U) == 0x80U) - 8007bd2: f997 300e ldrsb.w r3, [r7, #14] - 8007bd6: 2b00 cmp r3, #0 - 8007bd8: da11 bge.n 8007bfe - { - if (pdev->ep_in[ep_addr & 0xFU].is_used == 0U) - 8007bda: 7bbb ldrb r3, [r7, #14] - 8007bdc: f003 020f and.w r2, r3, #15 - 8007be0: 6879 ldr r1, [r7, #4] - 8007be2: 4613 mov r3, r2 - 8007be4: 009b lsls r3, r3, #2 - 8007be6: 4413 add r3, r2 - 8007be8: 009b lsls r3, r3, #2 - 8007bea: 440b add r3, r1 - 8007bec: 3318 adds r3, #24 - 8007bee: 681b ldr r3, [r3, #0] - 8007bf0: 2b00 cmp r3, #0 - 8007bf2: d117 bne.n 8007c24 - { - USBD_CtlError(pdev, req); - 8007bf4: 6839 ldr r1, [r7, #0] - 8007bf6: 6878 ldr r0, [r7, #4] - 8007bf8: f000 fb78 bl 80082ec - break; - 8007bfc: e054 b.n 8007ca8 - } - } - else - { - if (pdev->ep_out[ep_addr & 0xFU].is_used == 0U) - 8007bfe: 7bbb ldrb r3, [r7, #14] - 8007c00: f003 020f and.w r2, r3, #15 - 8007c04: 6879 ldr r1, [r7, #4] - 8007c06: 4613 mov r3, r2 - 8007c08: 009b lsls r3, r3, #2 - 8007c0a: 4413 add r3, r2 - 8007c0c: 009b lsls r3, r3, #2 - 8007c0e: 440b add r3, r1 - 8007c10: f503 73ac add.w r3, r3, #344 @ 0x158 - 8007c14: 681b ldr r3, [r3, #0] - 8007c16: 2b00 cmp r3, #0 - 8007c18: d104 bne.n 8007c24 - { - USBD_CtlError(pdev, req); - 8007c1a: 6839 ldr r1, [r7, #0] - 8007c1c: 6878 ldr r0, [r7, #4] - 8007c1e: f000 fb65 bl 80082ec - break; - 8007c22: e041 b.n 8007ca8 - } - } - - pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ - 8007c24: f997 300e ldrsb.w r3, [r7, #14] - 8007c28: 2b00 cmp r3, #0 - 8007c2a: da0b bge.n 8007c44 - 8007c2c: 7bbb ldrb r3, [r7, #14] - 8007c2e: f003 027f and.w r2, r3, #127 @ 0x7f - 8007c32: 4613 mov r3, r2 - 8007c34: 009b lsls r3, r3, #2 - 8007c36: 4413 add r3, r2 - 8007c38: 009b lsls r3, r3, #2 - 8007c3a: 3310 adds r3, #16 - 8007c3c: 687a ldr r2, [r7, #4] - 8007c3e: 4413 add r3, r2 - 8007c40: 3304 adds r3, #4 - 8007c42: e00b b.n 8007c5c - &pdev->ep_out[ep_addr & 0x7FU]; - 8007c44: 7bbb ldrb r3, [r7, #14] - 8007c46: f003 027f and.w r2, r3, #127 @ 0x7f - pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ - 8007c4a: 4613 mov r3, r2 - 8007c4c: 009b lsls r3, r3, #2 - 8007c4e: 4413 add r3, r2 - 8007c50: 009b lsls r3, r3, #2 - 8007c52: f503 73a8 add.w r3, r3, #336 @ 0x150 - 8007c56: 687a ldr r2, [r7, #4] - 8007c58: 4413 add r3, r2 - 8007c5a: 3304 adds r3, #4 - 8007c5c: 60bb str r3, [r7, #8] - - if ((ep_addr == 0x00U) || (ep_addr == 0x80U)) - 8007c5e: 7bbb ldrb r3, [r7, #14] - 8007c60: 2b00 cmp r3, #0 - 8007c62: d002 beq.n 8007c6a - 8007c64: 7bbb ldrb r3, [r7, #14] - 8007c66: 2b80 cmp r3, #128 @ 0x80 - 8007c68: d103 bne.n 8007c72 - { - pep->status = 0x0000U; - 8007c6a: 68bb ldr r3, [r7, #8] - 8007c6c: 2200 movs r2, #0 - 8007c6e: 601a str r2, [r3, #0] - 8007c70: e00e b.n 8007c90 - } - else if (USBD_LL_IsStallEP(pdev, ep_addr)) - 8007c72: 7bbb ldrb r3, [r7, #14] - 8007c74: 4619 mov r1, r3 - 8007c76: 6878 ldr r0, [r7, #4] - 8007c78: f001 f850 bl 8008d1c - 8007c7c: 4603 mov r3, r0 - 8007c7e: 2b00 cmp r3, #0 - 8007c80: d003 beq.n 8007c8a - { - pep->status = 0x0001U; - 8007c82: 68bb ldr r3, [r7, #8] - 8007c84: 2201 movs r2, #1 - 8007c86: 601a str r2, [r3, #0] - 8007c88: e002 b.n 8007c90 - } - else - { - pep->status = 0x0000U; - 8007c8a: 68bb ldr r3, [r7, #8] - 8007c8c: 2200 movs r2, #0 - 8007c8e: 601a str r2, [r3, #0] - } - - USBD_CtlSendData(pdev, (uint8_t *)(void *)&pep->status, 2U); - 8007c90: 68bb ldr r3, [r7, #8] - 8007c92: 2202 movs r2, #2 - 8007c94: 4619 mov r1, r3 - 8007c96: 6878 ldr r0, [r7, #4] - 8007c98: f000 fb92 bl 80083c0 - break; - 8007c9c: e004 b.n 8007ca8 - - default: - USBD_CtlError(pdev, req); - 8007c9e: 6839 ldr r1, [r7, #0] - 8007ca0: 6878 ldr r0, [r7, #4] - 8007ca2: f000 fb23 bl 80082ec - break; - 8007ca6: bf00 nop - } - break; - 8007ca8: e004 b.n 8007cb4 - - default: - USBD_CtlError(pdev, req); - 8007caa: 6839 ldr r1, [r7, #0] - 8007cac: 6878 ldr r0, [r7, #4] - 8007cae: f000 fb1d bl 80082ec - break; - 8007cb2: bf00 nop - } - break; - 8007cb4: e004 b.n 8007cc0 - - default: - USBD_CtlError(pdev, req); - 8007cb6: 6839 ldr r1, [r7, #0] - 8007cb8: 6878 ldr r0, [r7, #4] - 8007cba: f000 fb17 bl 80082ec - break; - 8007cbe: bf00 nop - } - - return ret; - 8007cc0: 7bfb ldrb r3, [r7, #15] -} - 8007cc2: 4618 mov r0, r3 - 8007cc4: 3710 adds r7, #16 - 8007cc6: 46bd mov sp, r7 - 8007cc8: bd80 pop {r7, pc} - ... - -08007ccc : -* @param req: usb request -* @retval status -*/ -static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 8007ccc: b580 push {r7, lr} - 8007cce: b084 sub sp, #16 - 8007cd0: af00 add r7, sp, #0 - 8007cd2: 6078 str r0, [r7, #4] - 8007cd4: 6039 str r1, [r7, #0] - uint16_t len = 0U; - 8007cd6: 2300 movs r3, #0 - 8007cd8: 813b strh r3, [r7, #8] - uint8_t *pbuf = NULL; - 8007cda: 2300 movs r3, #0 - 8007cdc: 60fb str r3, [r7, #12] - uint8_t err = 0U; - 8007cde: 2300 movs r3, #0 - 8007ce0: 72fb strb r3, [r7, #11] - - switch (req->wValue >> 8) - 8007ce2: 683b ldr r3, [r7, #0] - 8007ce4: 885b ldrh r3, [r3, #2] - 8007ce6: 0a1b lsrs r3, r3, #8 - 8007ce8: b29b uxth r3, r3 - 8007cea: 3b01 subs r3, #1 - 8007cec: 2b06 cmp r3, #6 - 8007cee: f200 8128 bhi.w 8007f42 - 8007cf2: a201 add r2, pc, #4 @ (adr r2, 8007cf8 ) - 8007cf4: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8007cf8: 08007d15 .word 0x08007d15 - 8007cfc: 08007d2d .word 0x08007d2d - 8007d00: 08007d6d .word 0x08007d6d - 8007d04: 08007f43 .word 0x08007f43 - 8007d08: 08007f43 .word 0x08007f43 - 8007d0c: 08007ee3 .word 0x08007ee3 - 8007d10: 08007f0f .word 0x08007f0f - err++; - } - break; -#endif - case USB_DESC_TYPE_DEVICE: - pbuf = pdev->pDesc->GetDeviceDescriptor(pdev->dev_speed, &len); - 8007d14: 687b ldr r3, [r7, #4] - 8007d16: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007d1a: 681b ldr r3, [r3, #0] - 8007d1c: 687a ldr r2, [r7, #4] - 8007d1e: 7c12 ldrb r2, [r2, #16] - 8007d20: f107 0108 add.w r1, r7, #8 - 8007d24: 4610 mov r0, r2 - 8007d26: 4798 blx r3 - 8007d28: 60f8 str r0, [r7, #12] - break; - 8007d2a: e112 b.n 8007f52 - - case USB_DESC_TYPE_CONFIGURATION: - if (pdev->dev_speed == USBD_SPEED_HIGH) - 8007d2c: 687b ldr r3, [r7, #4] - 8007d2e: 7c1b ldrb r3, [r3, #16] - 8007d30: 2b00 cmp r3, #0 - 8007d32: d10d bne.n 8007d50 - { - pbuf = pdev->pClass->GetHSConfigDescriptor(&len); - 8007d34: 687b ldr r3, [r7, #4] - 8007d36: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007d3a: 6a9b ldr r3, [r3, #40] @ 0x28 - 8007d3c: f107 0208 add.w r2, r7, #8 - 8007d40: 4610 mov r0, r2 - 8007d42: 4798 blx r3 - 8007d44: 60f8 str r0, [r7, #12] - pbuf[1] = USB_DESC_TYPE_CONFIGURATION; - 8007d46: 68fb ldr r3, [r7, #12] - 8007d48: 3301 adds r3, #1 - 8007d4a: 2202 movs r2, #2 - 8007d4c: 701a strb r2, [r3, #0] - else - { - pbuf = pdev->pClass->GetFSConfigDescriptor(&len); - pbuf[1] = USB_DESC_TYPE_CONFIGURATION; - } - break; - 8007d4e: e100 b.n 8007f52 - pbuf = pdev->pClass->GetFSConfigDescriptor(&len); - 8007d50: 687b ldr r3, [r7, #4] - 8007d52: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007d56: 6adb ldr r3, [r3, #44] @ 0x2c - 8007d58: f107 0208 add.w r2, r7, #8 - 8007d5c: 4610 mov r0, r2 - 8007d5e: 4798 blx r3 - 8007d60: 60f8 str r0, [r7, #12] - pbuf[1] = USB_DESC_TYPE_CONFIGURATION; - 8007d62: 68fb ldr r3, [r7, #12] - 8007d64: 3301 adds r3, #1 - 8007d66: 2202 movs r2, #2 - 8007d68: 701a strb r2, [r3, #0] - break; - 8007d6a: e0f2 b.n 8007f52 - - case USB_DESC_TYPE_STRING: - switch ((uint8_t)(req->wValue)) - 8007d6c: 683b ldr r3, [r7, #0] - 8007d6e: 885b ldrh r3, [r3, #2] - 8007d70: b2db uxtb r3, r3 - 8007d72: 2b05 cmp r3, #5 - 8007d74: f200 80ac bhi.w 8007ed0 - 8007d78: a201 add r2, pc, #4 @ (adr r2, 8007d80 ) - 8007d7a: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8007d7e: bf00 nop - 8007d80: 08007d99 .word 0x08007d99 - 8007d84: 08007dcd .word 0x08007dcd - 8007d88: 08007e01 .word 0x08007e01 - 8007d8c: 08007e35 .word 0x08007e35 - 8007d90: 08007e69 .word 0x08007e69 - 8007d94: 08007e9d .word 0x08007e9d - { - case USBD_IDX_LANGID_STR: - if (pdev->pDesc->GetLangIDStrDescriptor != NULL) - 8007d98: 687b ldr r3, [r7, #4] - 8007d9a: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007d9e: 685b ldr r3, [r3, #4] - 8007da0: 2b00 cmp r3, #0 - 8007da2: d00b beq.n 8007dbc - { - pbuf = pdev->pDesc->GetLangIDStrDescriptor(pdev->dev_speed, &len); - 8007da4: 687b ldr r3, [r7, #4] - 8007da6: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007daa: 685b ldr r3, [r3, #4] - 8007dac: 687a ldr r2, [r7, #4] - 8007dae: 7c12 ldrb r2, [r2, #16] - 8007db0: f107 0108 add.w r1, r7, #8 - 8007db4: 4610 mov r0, r2 - 8007db6: 4798 blx r3 - 8007db8: 60f8 str r0, [r7, #12] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 8007dba: e091 b.n 8007ee0 - USBD_CtlError(pdev, req); - 8007dbc: 6839 ldr r1, [r7, #0] - 8007dbe: 6878 ldr r0, [r7, #4] - 8007dc0: f000 fa94 bl 80082ec - err++; - 8007dc4: 7afb ldrb r3, [r7, #11] - 8007dc6: 3301 adds r3, #1 - 8007dc8: 72fb strb r3, [r7, #11] - break; - 8007dca: e089 b.n 8007ee0 - - case USBD_IDX_MFC_STR: - if (pdev->pDesc->GetManufacturerStrDescriptor != NULL) - 8007dcc: 687b ldr r3, [r7, #4] - 8007dce: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007dd2: 689b ldr r3, [r3, #8] - 8007dd4: 2b00 cmp r3, #0 - 8007dd6: d00b beq.n 8007df0 - { - pbuf = pdev->pDesc->GetManufacturerStrDescriptor(pdev->dev_speed, &len); - 8007dd8: 687b ldr r3, [r7, #4] - 8007dda: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007dde: 689b ldr r3, [r3, #8] - 8007de0: 687a ldr r2, [r7, #4] - 8007de2: 7c12 ldrb r2, [r2, #16] - 8007de4: f107 0108 add.w r1, r7, #8 - 8007de8: 4610 mov r0, r2 - 8007dea: 4798 blx r3 - 8007dec: 60f8 str r0, [r7, #12] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 8007dee: e077 b.n 8007ee0 - USBD_CtlError(pdev, req); - 8007df0: 6839 ldr r1, [r7, #0] - 8007df2: 6878 ldr r0, [r7, #4] - 8007df4: f000 fa7a bl 80082ec - err++; - 8007df8: 7afb ldrb r3, [r7, #11] - 8007dfa: 3301 adds r3, #1 - 8007dfc: 72fb strb r3, [r7, #11] - break; - 8007dfe: e06f b.n 8007ee0 - - case USBD_IDX_PRODUCT_STR: - if (pdev->pDesc->GetProductStrDescriptor != NULL) - 8007e00: 687b ldr r3, [r7, #4] - 8007e02: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007e06: 68db ldr r3, [r3, #12] - 8007e08: 2b00 cmp r3, #0 - 8007e0a: d00b beq.n 8007e24 - { - pbuf = pdev->pDesc->GetProductStrDescriptor(pdev->dev_speed, &len); - 8007e0c: 687b ldr r3, [r7, #4] - 8007e0e: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007e12: 68db ldr r3, [r3, #12] - 8007e14: 687a ldr r2, [r7, #4] - 8007e16: 7c12 ldrb r2, [r2, #16] - 8007e18: f107 0108 add.w r1, r7, #8 - 8007e1c: 4610 mov r0, r2 - 8007e1e: 4798 blx r3 - 8007e20: 60f8 str r0, [r7, #12] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 8007e22: e05d b.n 8007ee0 - USBD_CtlError(pdev, req); - 8007e24: 6839 ldr r1, [r7, #0] - 8007e26: 6878 ldr r0, [r7, #4] - 8007e28: f000 fa60 bl 80082ec - err++; - 8007e2c: 7afb ldrb r3, [r7, #11] - 8007e2e: 3301 adds r3, #1 - 8007e30: 72fb strb r3, [r7, #11] - break; - 8007e32: e055 b.n 8007ee0 - - case USBD_IDX_SERIAL_STR: - if (pdev->pDesc->GetSerialStrDescriptor != NULL) - 8007e34: 687b ldr r3, [r7, #4] - 8007e36: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007e3a: 691b ldr r3, [r3, #16] - 8007e3c: 2b00 cmp r3, #0 - 8007e3e: d00b beq.n 8007e58 - { - pbuf = pdev->pDesc->GetSerialStrDescriptor(pdev->dev_speed, &len); - 8007e40: 687b ldr r3, [r7, #4] - 8007e42: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007e46: 691b ldr r3, [r3, #16] - 8007e48: 687a ldr r2, [r7, #4] - 8007e4a: 7c12 ldrb r2, [r2, #16] - 8007e4c: f107 0108 add.w r1, r7, #8 - 8007e50: 4610 mov r0, r2 - 8007e52: 4798 blx r3 - 8007e54: 60f8 str r0, [r7, #12] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 8007e56: e043 b.n 8007ee0 - USBD_CtlError(pdev, req); - 8007e58: 6839 ldr r1, [r7, #0] - 8007e5a: 6878 ldr r0, [r7, #4] - 8007e5c: f000 fa46 bl 80082ec - err++; - 8007e60: 7afb ldrb r3, [r7, #11] - 8007e62: 3301 adds r3, #1 - 8007e64: 72fb strb r3, [r7, #11] - break; - 8007e66: e03b b.n 8007ee0 - - case USBD_IDX_CONFIG_STR: - if (pdev->pDesc->GetConfigurationStrDescriptor != NULL) - 8007e68: 687b ldr r3, [r7, #4] - 8007e6a: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007e6e: 695b ldr r3, [r3, #20] - 8007e70: 2b00 cmp r3, #0 - 8007e72: d00b beq.n 8007e8c - { - pbuf = pdev->pDesc->GetConfigurationStrDescriptor(pdev->dev_speed, &len); - 8007e74: 687b ldr r3, [r7, #4] - 8007e76: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007e7a: 695b ldr r3, [r3, #20] - 8007e7c: 687a ldr r2, [r7, #4] - 8007e7e: 7c12 ldrb r2, [r2, #16] - 8007e80: f107 0108 add.w r1, r7, #8 - 8007e84: 4610 mov r0, r2 - 8007e86: 4798 blx r3 - 8007e88: 60f8 str r0, [r7, #12] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 8007e8a: e029 b.n 8007ee0 - USBD_CtlError(pdev, req); - 8007e8c: 6839 ldr r1, [r7, #0] - 8007e8e: 6878 ldr r0, [r7, #4] - 8007e90: f000 fa2c bl 80082ec - err++; - 8007e94: 7afb ldrb r3, [r7, #11] - 8007e96: 3301 adds r3, #1 - 8007e98: 72fb strb r3, [r7, #11] - break; - 8007e9a: e021 b.n 8007ee0 - - case USBD_IDX_INTERFACE_STR: - if (pdev->pDesc->GetInterfaceStrDescriptor != NULL) - 8007e9c: 687b ldr r3, [r7, #4] - 8007e9e: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007ea2: 699b ldr r3, [r3, #24] - 8007ea4: 2b00 cmp r3, #0 - 8007ea6: d00b beq.n 8007ec0 - { - pbuf = pdev->pDesc->GetInterfaceStrDescriptor(pdev->dev_speed, &len); - 8007ea8: 687b ldr r3, [r7, #4] - 8007eaa: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007eae: 699b ldr r3, [r3, #24] - 8007eb0: 687a ldr r2, [r7, #4] - 8007eb2: 7c12 ldrb r2, [r2, #16] - 8007eb4: f107 0108 add.w r1, r7, #8 - 8007eb8: 4610 mov r0, r2 - 8007eba: 4798 blx r3 - 8007ebc: 60f8 str r0, [r7, #12] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 8007ebe: e00f b.n 8007ee0 - USBD_CtlError(pdev, req); - 8007ec0: 6839 ldr r1, [r7, #0] - 8007ec2: 6878 ldr r0, [r7, #4] - 8007ec4: f000 fa12 bl 80082ec - err++; - 8007ec8: 7afb ldrb r3, [r7, #11] - 8007eca: 3301 adds r3, #1 - 8007ecc: 72fb strb r3, [r7, #11] - break; - 8007ece: e007 b.n 8007ee0 - USBD_CtlError(pdev, req); - err++; - } - break; -#else - USBD_CtlError(pdev, req); - 8007ed0: 6839 ldr r1, [r7, #0] - 8007ed2: 6878 ldr r0, [r7, #4] - 8007ed4: f000 fa0a bl 80082ec - err++; - 8007ed8: 7afb ldrb r3, [r7, #11] - 8007eda: 3301 adds r3, #1 - 8007edc: 72fb strb r3, [r7, #11] -#endif - } - break; - 8007ede: e038 b.n 8007f52 - 8007ee0: e037 b.n 8007f52 - - case USB_DESC_TYPE_DEVICE_QUALIFIER: - if (pdev->dev_speed == USBD_SPEED_HIGH) - 8007ee2: 687b ldr r3, [r7, #4] - 8007ee4: 7c1b ldrb r3, [r3, #16] - 8007ee6: 2b00 cmp r3, #0 - 8007ee8: d109 bne.n 8007efe - { - pbuf = pdev->pClass->GetDeviceQualifierDescriptor(&len); - 8007eea: 687b ldr r3, [r7, #4] - 8007eec: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007ef0: 6b5b ldr r3, [r3, #52] @ 0x34 - 8007ef2: f107 0208 add.w r2, r7, #8 - 8007ef6: 4610 mov r0, r2 - 8007ef8: 4798 blx r3 - 8007efa: 60f8 str r0, [r7, #12] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 8007efc: e029 b.n 8007f52 - USBD_CtlError(pdev, req); - 8007efe: 6839 ldr r1, [r7, #0] - 8007f00: 6878 ldr r0, [r7, #4] - 8007f02: f000 f9f3 bl 80082ec - err++; - 8007f06: 7afb ldrb r3, [r7, #11] - 8007f08: 3301 adds r3, #1 - 8007f0a: 72fb strb r3, [r7, #11] - break; - 8007f0c: e021 b.n 8007f52 - - case USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION: - if (pdev->dev_speed == USBD_SPEED_HIGH) - 8007f0e: 687b ldr r3, [r7, #4] - 8007f10: 7c1b ldrb r3, [r3, #16] - 8007f12: 2b00 cmp r3, #0 - 8007f14: d10d bne.n 8007f32 - { - pbuf = pdev->pClass->GetOtherSpeedConfigDescriptor(&len); - 8007f16: 687b ldr r3, [r7, #4] - 8007f18: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007f1c: 6b1b ldr r3, [r3, #48] @ 0x30 - 8007f1e: f107 0208 add.w r2, r7, #8 - 8007f22: 4610 mov r0, r2 - 8007f24: 4798 blx r3 - 8007f26: 60f8 str r0, [r7, #12] - pbuf[1] = USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION; - 8007f28: 68fb ldr r3, [r7, #12] - 8007f2a: 3301 adds r3, #1 - 8007f2c: 2207 movs r2, #7 - 8007f2e: 701a strb r2, [r3, #0] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 8007f30: e00f b.n 8007f52 - USBD_CtlError(pdev, req); - 8007f32: 6839 ldr r1, [r7, #0] - 8007f34: 6878 ldr r0, [r7, #4] - 8007f36: f000 f9d9 bl 80082ec - err++; - 8007f3a: 7afb ldrb r3, [r7, #11] - 8007f3c: 3301 adds r3, #1 - 8007f3e: 72fb strb r3, [r7, #11] - break; - 8007f40: e007 b.n 8007f52 - - default: - USBD_CtlError(pdev, req); - 8007f42: 6839 ldr r1, [r7, #0] - 8007f44: 6878 ldr r0, [r7, #4] - 8007f46: f000 f9d1 bl 80082ec - err++; - 8007f4a: 7afb ldrb r3, [r7, #11] - 8007f4c: 3301 adds r3, #1 - 8007f4e: 72fb strb r3, [r7, #11] - break; - 8007f50: bf00 nop - } - - if (err != 0U) - 8007f52: 7afb ldrb r3, [r7, #11] - 8007f54: 2b00 cmp r3, #0 - 8007f56: d11c bne.n 8007f92 - { - return; - } - else - { - if ((len != 0U) && (req->wLength != 0U)) - 8007f58: 893b ldrh r3, [r7, #8] - 8007f5a: 2b00 cmp r3, #0 - 8007f5c: d011 beq.n 8007f82 - 8007f5e: 683b ldr r3, [r7, #0] - 8007f60: 88db ldrh r3, [r3, #6] - 8007f62: 2b00 cmp r3, #0 - 8007f64: d00d beq.n 8007f82 - { - len = MIN(len, req->wLength); - 8007f66: 683b ldr r3, [r7, #0] - 8007f68: 88da ldrh r2, [r3, #6] - 8007f6a: 893b ldrh r3, [r7, #8] - 8007f6c: 4293 cmp r3, r2 - 8007f6e: bf28 it cs - 8007f70: 4613 movcs r3, r2 - 8007f72: b29b uxth r3, r3 - 8007f74: 813b strh r3, [r7, #8] - (void)USBD_CtlSendData(pdev, pbuf, len); - 8007f76: 893b ldrh r3, [r7, #8] - 8007f78: 461a mov r2, r3 - 8007f7a: 68f9 ldr r1, [r7, #12] - 8007f7c: 6878 ldr r0, [r7, #4] - 8007f7e: f000 fa1f bl 80083c0 - } - - if (req->wLength == 0U) - 8007f82: 683b ldr r3, [r7, #0] - 8007f84: 88db ldrh r3, [r3, #6] - 8007f86: 2b00 cmp r3, #0 - 8007f88: d104 bne.n 8007f94 - { - (void)USBD_CtlSendStatus(pdev); - 8007f8a: 6878 ldr r0, [r7, #4] - 8007f8c: f000 fa76 bl 800847c - 8007f90: e000 b.n 8007f94 - return; - 8007f92: bf00 nop - } - } -} - 8007f94: 3710 adds r7, #16 - 8007f96: 46bd mov sp, r7 - 8007f98: bd80 pop {r7, pc} - 8007f9a: bf00 nop - -08007f9c : -* @param req: usb request -* @retval status -*/ -static void USBD_SetAddress(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 8007f9c: b580 push {r7, lr} - 8007f9e: b084 sub sp, #16 - 8007fa0: af00 add r7, sp, #0 - 8007fa2: 6078 str r0, [r7, #4] - 8007fa4: 6039 str r1, [r7, #0] - uint8_t dev_addr; - - if ((req->wIndex == 0U) && (req->wLength == 0U) && (req->wValue < 128U)) - 8007fa6: 683b ldr r3, [r7, #0] - 8007fa8: 889b ldrh r3, [r3, #4] - 8007faa: 2b00 cmp r3, #0 - 8007fac: d130 bne.n 8008010 - 8007fae: 683b ldr r3, [r7, #0] - 8007fb0: 88db ldrh r3, [r3, #6] - 8007fb2: 2b00 cmp r3, #0 - 8007fb4: d12c bne.n 8008010 - 8007fb6: 683b ldr r3, [r7, #0] - 8007fb8: 885b ldrh r3, [r3, #2] - 8007fba: 2b7f cmp r3, #127 @ 0x7f - 8007fbc: d828 bhi.n 8008010 - { - dev_addr = (uint8_t)(req->wValue) & 0x7FU; - 8007fbe: 683b ldr r3, [r7, #0] - 8007fc0: 885b ldrh r3, [r3, #2] - 8007fc2: b2db uxtb r3, r3 - 8007fc4: f003 037f and.w r3, r3, #127 @ 0x7f - 8007fc8: 73fb strb r3, [r7, #15] - - if (pdev->dev_state == USBD_STATE_CONFIGURED) - 8007fca: 687b ldr r3, [r7, #4] - 8007fcc: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8007fd0: 2b03 cmp r3, #3 - 8007fd2: d104 bne.n 8007fde - { - USBD_CtlError(pdev, req); - 8007fd4: 6839 ldr r1, [r7, #0] - 8007fd6: 6878 ldr r0, [r7, #4] - 8007fd8: f000 f988 bl 80082ec - if (pdev->dev_state == USBD_STATE_CONFIGURED) - 8007fdc: e01d b.n 800801a - } - else - { - pdev->dev_address = dev_addr; - 8007fde: 687b ldr r3, [r7, #4] - 8007fe0: 7bfa ldrb r2, [r7, #15] - 8007fe2: f883 229e strb.w r2, [r3, #670] @ 0x29e - USBD_LL_SetUSBAddress(pdev, dev_addr); - 8007fe6: 7bfb ldrb r3, [r7, #15] - 8007fe8: 4619 mov r1, r3 - 8007fea: 6878 ldr r0, [r7, #4] - 8007fec: f000 fec1 bl 8008d72 - USBD_CtlSendStatus(pdev); - 8007ff0: 6878 ldr r0, [r7, #4] - 8007ff2: f000 fa43 bl 800847c - - if (dev_addr != 0U) - 8007ff6: 7bfb ldrb r3, [r7, #15] - 8007ff8: 2b00 cmp r3, #0 - 8007ffa: d004 beq.n 8008006 - { - pdev->dev_state = USBD_STATE_ADDRESSED; - 8007ffc: 687b ldr r3, [r7, #4] - 8007ffe: 2202 movs r2, #2 - 8008000: f883 229c strb.w r2, [r3, #668] @ 0x29c - if (pdev->dev_state == USBD_STATE_CONFIGURED) - 8008004: e009 b.n 800801a - } - else - { - pdev->dev_state = USBD_STATE_DEFAULT; - 8008006: 687b ldr r3, [r7, #4] - 8008008: 2201 movs r2, #1 - 800800a: f883 229c strb.w r2, [r3, #668] @ 0x29c - if (pdev->dev_state == USBD_STATE_CONFIGURED) - 800800e: e004 b.n 800801a - } - } - } - else - { - USBD_CtlError(pdev, req); - 8008010: 6839 ldr r1, [r7, #0] - 8008012: 6878 ldr r0, [r7, #4] - 8008014: f000 f96a bl 80082ec - } -} - 8008018: bf00 nop - 800801a: bf00 nop - 800801c: 3710 adds r7, #16 - 800801e: 46bd mov sp, r7 - 8008020: bd80 pop {r7, pc} - ... - -08008024 : -* @param pdev: device instance -* @param req: usb request -* @retval status -*/ -static void USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) -{ - 8008024: b580 push {r7, lr} - 8008026: b082 sub sp, #8 - 8008028: af00 add r7, sp, #0 - 800802a: 6078 str r0, [r7, #4] - 800802c: 6039 str r1, [r7, #0] - static uint8_t cfgidx; - - cfgidx = (uint8_t)(req->wValue); - 800802e: 683b ldr r3, [r7, #0] - 8008030: 885b ldrh r3, [r3, #2] - 8008032: b2da uxtb r2, r3 - 8008034: 4b41 ldr r3, [pc, #260] @ (800813c ) - 8008036: 701a strb r2, [r3, #0] - - if (cfgidx > USBD_MAX_NUM_CONFIGURATION) - 8008038: 4b40 ldr r3, [pc, #256] @ (800813c ) - 800803a: 781b ldrb r3, [r3, #0] - 800803c: 2b01 cmp r3, #1 - 800803e: d904 bls.n 800804a - { - USBD_CtlError(pdev, req); - 8008040: 6839 ldr r1, [r7, #0] - 8008042: 6878 ldr r0, [r7, #4] - 8008044: f000 f952 bl 80082ec - 8008048: e075 b.n 8008136 - } - else - { - switch (pdev->dev_state) - 800804a: 687b ldr r3, [r7, #4] - 800804c: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8008050: 2b02 cmp r3, #2 - 8008052: d002 beq.n 800805a - 8008054: 2b03 cmp r3, #3 - 8008056: d023 beq.n 80080a0 - 8008058: e062 b.n 8008120 - { - case USBD_STATE_ADDRESSED: - if (cfgidx) - 800805a: 4b38 ldr r3, [pc, #224] @ (800813c ) - 800805c: 781b ldrb r3, [r3, #0] - 800805e: 2b00 cmp r3, #0 - 8008060: d01a beq.n 8008098 - { - pdev->dev_config = cfgidx; - 8008062: 4b36 ldr r3, [pc, #216] @ (800813c ) - 8008064: 781b ldrb r3, [r3, #0] - 8008066: 461a mov r2, r3 - 8008068: 687b ldr r3, [r7, #4] - 800806a: 605a str r2, [r3, #4] - pdev->dev_state = USBD_STATE_CONFIGURED; - 800806c: 687b ldr r3, [r7, #4] - 800806e: 2203 movs r2, #3 - 8008070: f883 229c strb.w r2, [r3, #668] @ 0x29c - if (USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL) - 8008074: 4b31 ldr r3, [pc, #196] @ (800813c ) - 8008076: 781b ldrb r3, [r3, #0] - 8008078: 4619 mov r1, r3 - 800807a: 6878 ldr r0, [r7, #4] - 800807c: f7ff f9e7 bl 800744e - 8008080: 4603 mov r3, r0 - 8008082: 2b02 cmp r3, #2 - 8008084: d104 bne.n 8008090 - { - USBD_CtlError(pdev, req); - 8008086: 6839 ldr r1, [r7, #0] - 8008088: 6878 ldr r0, [r7, #4] - 800808a: f000 f92f bl 80082ec - return; - 800808e: e052 b.n 8008136 - } - USBD_CtlSendStatus(pdev); - 8008090: 6878 ldr r0, [r7, #4] - 8008092: f000 f9f3 bl 800847c - } - else - { - USBD_CtlSendStatus(pdev); - } - break; - 8008096: e04e b.n 8008136 - USBD_CtlSendStatus(pdev); - 8008098: 6878 ldr r0, [r7, #4] - 800809a: f000 f9ef bl 800847c - break; - 800809e: e04a b.n 8008136 - - case USBD_STATE_CONFIGURED: - if (cfgidx == 0U) - 80080a0: 4b26 ldr r3, [pc, #152] @ (800813c ) - 80080a2: 781b ldrb r3, [r3, #0] - 80080a4: 2b00 cmp r3, #0 - 80080a6: d112 bne.n 80080ce - { - pdev->dev_state = USBD_STATE_ADDRESSED; - 80080a8: 687b ldr r3, [r7, #4] - 80080aa: 2202 movs r2, #2 - 80080ac: f883 229c strb.w r2, [r3, #668] @ 0x29c - pdev->dev_config = cfgidx; - 80080b0: 4b22 ldr r3, [pc, #136] @ (800813c ) - 80080b2: 781b ldrb r3, [r3, #0] - 80080b4: 461a mov r2, r3 - 80080b6: 687b ldr r3, [r7, #4] - 80080b8: 605a str r2, [r3, #4] - USBD_ClrClassConfig(pdev, cfgidx); - 80080ba: 4b20 ldr r3, [pc, #128] @ (800813c ) - 80080bc: 781b ldrb r3, [r3, #0] - 80080be: 4619 mov r1, r3 - 80080c0: 6878 ldr r0, [r7, #4] - 80080c2: f7ff f9e3 bl 800748c - USBD_CtlSendStatus(pdev); - 80080c6: 6878 ldr r0, [r7, #4] - 80080c8: f000 f9d8 bl 800847c - } - else - { - USBD_CtlSendStatus(pdev); - } - break; - 80080cc: e033 b.n 8008136 - else if (cfgidx != pdev->dev_config) - 80080ce: 4b1b ldr r3, [pc, #108] @ (800813c ) - 80080d0: 781b ldrb r3, [r3, #0] - 80080d2: 461a mov r2, r3 - 80080d4: 687b ldr r3, [r7, #4] - 80080d6: 685b ldr r3, [r3, #4] - 80080d8: 429a cmp r2, r3 - 80080da: d01d beq.n 8008118 - USBD_ClrClassConfig(pdev, (uint8_t)pdev->dev_config); - 80080dc: 687b ldr r3, [r7, #4] - 80080de: 685b ldr r3, [r3, #4] - 80080e0: b2db uxtb r3, r3 - 80080e2: 4619 mov r1, r3 - 80080e4: 6878 ldr r0, [r7, #4] - 80080e6: f7ff f9d1 bl 800748c - pdev->dev_config = cfgidx; - 80080ea: 4b14 ldr r3, [pc, #80] @ (800813c ) - 80080ec: 781b ldrb r3, [r3, #0] - 80080ee: 461a mov r2, r3 - 80080f0: 687b ldr r3, [r7, #4] - 80080f2: 605a str r2, [r3, #4] - if (USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL) - 80080f4: 4b11 ldr r3, [pc, #68] @ (800813c ) - 80080f6: 781b ldrb r3, [r3, #0] - 80080f8: 4619 mov r1, r3 - 80080fa: 6878 ldr r0, [r7, #4] - 80080fc: f7ff f9a7 bl 800744e - 8008100: 4603 mov r3, r0 - 8008102: 2b02 cmp r3, #2 - 8008104: d104 bne.n 8008110 - USBD_CtlError(pdev, req); - 8008106: 6839 ldr r1, [r7, #0] - 8008108: 6878 ldr r0, [r7, #4] - 800810a: f000 f8ef bl 80082ec - return; - 800810e: e012 b.n 8008136 - USBD_CtlSendStatus(pdev); - 8008110: 6878 ldr r0, [r7, #4] - 8008112: f000 f9b3 bl 800847c - break; - 8008116: e00e b.n 8008136 - USBD_CtlSendStatus(pdev); - 8008118: 6878 ldr r0, [r7, #4] - 800811a: f000 f9af bl 800847c - break; - 800811e: e00a b.n 8008136 - - default: - USBD_CtlError(pdev, req); - 8008120: 6839 ldr r1, [r7, #0] - 8008122: 6878 ldr r0, [r7, #4] - 8008124: f000 f8e2 bl 80082ec - USBD_ClrClassConfig(pdev, cfgidx); - 8008128: 4b04 ldr r3, [pc, #16] @ (800813c ) - 800812a: 781b ldrb r3, [r3, #0] - 800812c: 4619 mov r1, r3 - 800812e: 6878 ldr r0, [r7, #4] - 8008130: f7ff f9ac bl 800748c - break; - 8008134: bf00 nop - } - } -} - 8008136: 3708 adds r7, #8 - 8008138: 46bd mov sp, r7 - 800813a: bd80 pop {r7, pc} - 800813c: 20000344 .word 0x20000344 - -08008140 : -* @param pdev: device instance -* @param req: usb request -* @retval status -*/ -static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) -{ - 8008140: b580 push {r7, lr} - 8008142: b082 sub sp, #8 - 8008144: af00 add r7, sp, #0 - 8008146: 6078 str r0, [r7, #4] - 8008148: 6039 str r1, [r7, #0] - if (req->wLength != 1U) - 800814a: 683b ldr r3, [r7, #0] - 800814c: 88db ldrh r3, [r3, #6] - 800814e: 2b01 cmp r3, #1 - 8008150: d004 beq.n 800815c - { - USBD_CtlError(pdev, req); - 8008152: 6839 ldr r1, [r7, #0] - 8008154: 6878 ldr r0, [r7, #4] - 8008156: f000 f8c9 bl 80082ec - default: - USBD_CtlError(pdev, req); - break; - } - } -} - 800815a: e022 b.n 80081a2 - switch (pdev->dev_state) - 800815c: 687b ldr r3, [r7, #4] - 800815e: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8008162: 2b02 cmp r3, #2 - 8008164: dc02 bgt.n 800816c - 8008166: 2b00 cmp r3, #0 - 8008168: dc03 bgt.n 8008172 - 800816a: e015 b.n 8008198 - 800816c: 2b03 cmp r3, #3 - 800816e: d00b beq.n 8008188 - 8008170: e012 b.n 8008198 - pdev->dev_default_config = 0U; - 8008172: 687b ldr r3, [r7, #4] - 8008174: 2200 movs r2, #0 - 8008176: 609a str r2, [r3, #8] - USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_default_config, 1U); - 8008178: 687b ldr r3, [r7, #4] - 800817a: 3308 adds r3, #8 - 800817c: 2201 movs r2, #1 - 800817e: 4619 mov r1, r3 - 8008180: 6878 ldr r0, [r7, #4] - 8008182: f000 f91d bl 80083c0 - break; - 8008186: e00c b.n 80081a2 - USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_config, 1U); - 8008188: 687b ldr r3, [r7, #4] - 800818a: 3304 adds r3, #4 - 800818c: 2201 movs r2, #1 - 800818e: 4619 mov r1, r3 - 8008190: 6878 ldr r0, [r7, #4] - 8008192: f000 f915 bl 80083c0 - break; - 8008196: e004 b.n 80081a2 - USBD_CtlError(pdev, req); - 8008198: 6839 ldr r1, [r7, #0] - 800819a: 6878 ldr r0, [r7, #4] - 800819c: f000 f8a6 bl 80082ec - break; - 80081a0: bf00 nop -} - 80081a2: bf00 nop - 80081a4: 3708 adds r7, #8 - 80081a6: 46bd mov sp, r7 - 80081a8: bd80 pop {r7, pc} - -080081aa : -* @param pdev: device instance -* @param req: usb request -* @retval status -*/ -static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) -{ - 80081aa: b580 push {r7, lr} - 80081ac: b082 sub sp, #8 - 80081ae: af00 add r7, sp, #0 - 80081b0: 6078 str r0, [r7, #4] - 80081b2: 6039 str r1, [r7, #0] - switch (pdev->dev_state) - 80081b4: 687b ldr r3, [r7, #4] - 80081b6: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 80081ba: 3b01 subs r3, #1 - 80081bc: 2b02 cmp r3, #2 - 80081be: d81e bhi.n 80081fe - { - case USBD_STATE_DEFAULT: - case USBD_STATE_ADDRESSED: - case USBD_STATE_CONFIGURED: - if (req->wLength != 0x2U) - 80081c0: 683b ldr r3, [r7, #0] - 80081c2: 88db ldrh r3, [r3, #6] - 80081c4: 2b02 cmp r3, #2 - 80081c6: d004 beq.n 80081d2 - { - USBD_CtlError(pdev, req); - 80081c8: 6839 ldr r1, [r7, #0] - 80081ca: 6878 ldr r0, [r7, #4] - 80081cc: f000 f88e bl 80082ec - break; - 80081d0: e01a b.n 8008208 - } - -#if (USBD_SELF_POWERED == 1U) - pdev->dev_config_status = USB_CONFIG_SELF_POWERED; - 80081d2: 687b ldr r3, [r7, #4] - 80081d4: 2201 movs r2, #1 - 80081d6: 60da str r2, [r3, #12] -#else - pdev->dev_config_status = 0U; -#endif - - if (pdev->dev_remote_wakeup) - 80081d8: 687b ldr r3, [r7, #4] - 80081da: f8d3 32a4 ldr.w r3, [r3, #676] @ 0x2a4 - 80081de: 2b00 cmp r3, #0 - 80081e0: d005 beq.n 80081ee - { - pdev->dev_config_status |= USB_CONFIG_REMOTE_WAKEUP; - 80081e2: 687b ldr r3, [r7, #4] - 80081e4: 68db ldr r3, [r3, #12] - 80081e6: f043 0202 orr.w r2, r3, #2 - 80081ea: 687b ldr r3, [r7, #4] - 80081ec: 60da str r2, [r3, #12] - } - - USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_config_status, 2U); - 80081ee: 687b ldr r3, [r7, #4] - 80081f0: 330c adds r3, #12 - 80081f2: 2202 movs r2, #2 - 80081f4: 4619 mov r1, r3 - 80081f6: 6878 ldr r0, [r7, #4] - 80081f8: f000 f8e2 bl 80083c0 - break; - 80081fc: e004 b.n 8008208 - - default: - USBD_CtlError(pdev, req); - 80081fe: 6839 ldr r1, [r7, #0] - 8008200: 6878 ldr r0, [r7, #4] - 8008202: f000 f873 bl 80082ec - break; - 8008206: bf00 nop - } -} - 8008208: bf00 nop - 800820a: 3708 adds r7, #8 - 800820c: 46bd mov sp, r7 - 800820e: bd80 pop {r7, pc} - -08008210 : -* @param req: usb request -* @retval status -*/ -static void USBD_SetFeature(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 8008210: b580 push {r7, lr} - 8008212: b082 sub sp, #8 - 8008214: af00 add r7, sp, #0 - 8008216: 6078 str r0, [r7, #4] - 8008218: 6039 str r1, [r7, #0] - if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) - 800821a: 683b ldr r3, [r7, #0] - 800821c: 885b ldrh r3, [r3, #2] - 800821e: 2b01 cmp r3, #1 - 8008220: d106 bne.n 8008230 - { - pdev->dev_remote_wakeup = 1U; - 8008222: 687b ldr r3, [r7, #4] - 8008224: 2201 movs r2, #1 - 8008226: f8c3 22a4 str.w r2, [r3, #676] @ 0x2a4 - USBD_CtlSendStatus(pdev); - 800822a: 6878 ldr r0, [r7, #4] - 800822c: f000 f926 bl 800847c - } -} - 8008230: bf00 nop - 8008232: 3708 adds r7, #8 - 8008234: 46bd mov sp, r7 - 8008236: bd80 pop {r7, pc} - -08008238 : -* @param req: usb request -* @retval status -*/ -static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 8008238: b580 push {r7, lr} - 800823a: b082 sub sp, #8 - 800823c: af00 add r7, sp, #0 - 800823e: 6078 str r0, [r7, #4] - 8008240: 6039 str r1, [r7, #0] - switch (pdev->dev_state) - 8008242: 687b ldr r3, [r7, #4] - 8008244: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8008248: 3b01 subs r3, #1 - 800824a: 2b02 cmp r3, #2 - 800824c: d80b bhi.n 8008266 - { - case USBD_STATE_DEFAULT: - case USBD_STATE_ADDRESSED: - case USBD_STATE_CONFIGURED: - if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) - 800824e: 683b ldr r3, [r7, #0] - 8008250: 885b ldrh r3, [r3, #2] - 8008252: 2b01 cmp r3, #1 - 8008254: d10c bne.n 8008270 - { - pdev->dev_remote_wakeup = 0U; - 8008256: 687b ldr r3, [r7, #4] - 8008258: 2200 movs r2, #0 - 800825a: f8c3 22a4 str.w r2, [r3, #676] @ 0x2a4 - USBD_CtlSendStatus(pdev); - 800825e: 6878 ldr r0, [r7, #4] - 8008260: f000 f90c bl 800847c - } - break; - 8008264: e004 b.n 8008270 - - default: - USBD_CtlError(pdev, req); - 8008266: 6839 ldr r1, [r7, #0] - 8008268: 6878 ldr r0, [r7, #4] - 800826a: f000 f83f bl 80082ec - break; - 800826e: e000 b.n 8008272 - break; - 8008270: bf00 nop - } -} - 8008272: bf00 nop - 8008274: 3708 adds r7, #8 - 8008276: 46bd mov sp, r7 - 8008278: bd80 pop {r7, pc} - -0800827a : -* @param req: usb request -* @retval None -*/ - -void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata) -{ - 800827a: b480 push {r7} - 800827c: b083 sub sp, #12 - 800827e: af00 add r7, sp, #0 - 8008280: 6078 str r0, [r7, #4] - 8008282: 6039 str r1, [r7, #0] - req->bmRequest = *(uint8_t *)(pdata); - 8008284: 683b ldr r3, [r7, #0] - 8008286: 781a ldrb r2, [r3, #0] - 8008288: 687b ldr r3, [r7, #4] - 800828a: 701a strb r2, [r3, #0] - req->bRequest = *(uint8_t *)(pdata + 1U); - 800828c: 683b ldr r3, [r7, #0] - 800828e: 785a ldrb r2, [r3, #1] - 8008290: 687b ldr r3, [r7, #4] - 8008292: 705a strb r2, [r3, #1] - req->wValue = SWAPBYTE(pdata + 2U); - 8008294: 683b ldr r3, [r7, #0] - 8008296: 3302 adds r3, #2 - 8008298: 781b ldrb r3, [r3, #0] - 800829a: 461a mov r2, r3 - 800829c: 683b ldr r3, [r7, #0] - 800829e: 3303 adds r3, #3 - 80082a0: 781b ldrb r3, [r3, #0] - 80082a2: 021b lsls r3, r3, #8 - 80082a4: b29b uxth r3, r3 - 80082a6: 4413 add r3, r2 - 80082a8: b29a uxth r2, r3 - 80082aa: 687b ldr r3, [r7, #4] - 80082ac: 805a strh r2, [r3, #2] - req->wIndex = SWAPBYTE(pdata + 4U); - 80082ae: 683b ldr r3, [r7, #0] - 80082b0: 3304 adds r3, #4 - 80082b2: 781b ldrb r3, [r3, #0] - 80082b4: 461a mov r2, r3 - 80082b6: 683b ldr r3, [r7, #0] - 80082b8: 3305 adds r3, #5 - 80082ba: 781b ldrb r3, [r3, #0] - 80082bc: 021b lsls r3, r3, #8 - 80082be: b29b uxth r3, r3 - 80082c0: 4413 add r3, r2 - 80082c2: b29a uxth r2, r3 - 80082c4: 687b ldr r3, [r7, #4] - 80082c6: 809a strh r2, [r3, #4] - req->wLength = SWAPBYTE(pdata + 6U); - 80082c8: 683b ldr r3, [r7, #0] - 80082ca: 3306 adds r3, #6 - 80082cc: 781b ldrb r3, [r3, #0] - 80082ce: 461a mov r2, r3 - 80082d0: 683b ldr r3, [r7, #0] - 80082d2: 3307 adds r3, #7 - 80082d4: 781b ldrb r3, [r3, #0] - 80082d6: 021b lsls r3, r3, #8 - 80082d8: b29b uxth r3, r3 - 80082da: 4413 add r3, r2 - 80082dc: b29a uxth r2, r3 - 80082de: 687b ldr r3, [r7, #4] - 80082e0: 80da strh r2, [r3, #6] - -} - 80082e2: bf00 nop - 80082e4: 370c adds r7, #12 - 80082e6: 46bd mov sp, r7 - 80082e8: bc80 pop {r7} - 80082ea: 4770 bx lr - -080082ec : -* @retval None -*/ - -void USBD_CtlError(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 80082ec: b580 push {r7, lr} - 80082ee: b082 sub sp, #8 - 80082f0: af00 add r7, sp, #0 - 80082f2: 6078 str r0, [r7, #4] - 80082f4: 6039 str r1, [r7, #0] - USBD_LL_StallEP(pdev, 0x80U); - 80082f6: 2180 movs r1, #128 @ 0x80 - 80082f8: 6878 ldr r0, [r7, #4] - 80082fa: f000 fcd1 bl 8008ca0 - USBD_LL_StallEP(pdev, 0U); - 80082fe: 2100 movs r1, #0 - 8008300: 6878 ldr r0, [r7, #4] - 8008302: f000 fccd bl 8008ca0 -} - 8008306: bf00 nop - 8008308: 3708 adds r7, #8 - 800830a: 46bd mov sp, r7 - 800830c: bd80 pop {r7, pc} - -0800830e : - * @param unicode : Formatted string buffer (unicode) - * @param len : descriptor length - * @retval None - */ -void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len) -{ - 800830e: b580 push {r7, lr} - 8008310: b086 sub sp, #24 - 8008312: af00 add r7, sp, #0 - 8008314: 60f8 str r0, [r7, #12] - 8008316: 60b9 str r1, [r7, #8] - 8008318: 607a str r2, [r7, #4] - uint8_t idx = 0U; - 800831a: 2300 movs r3, #0 - 800831c: 75fb strb r3, [r7, #23] - - if (desc != NULL) - 800831e: 68fb ldr r3, [r7, #12] - 8008320: 2b00 cmp r3, #0 - 8008322: d032 beq.n 800838a - { - *len = (uint16_t)USBD_GetLen(desc) * 2U + 2U; - 8008324: 68f8 ldr r0, [r7, #12] - 8008326: f000 f834 bl 8008392 - 800832a: 4603 mov r3, r0 - 800832c: 3301 adds r3, #1 - 800832e: b29b uxth r3, r3 - 8008330: 005b lsls r3, r3, #1 - 8008332: b29a uxth r2, r3 - 8008334: 687b ldr r3, [r7, #4] - 8008336: 801a strh r2, [r3, #0] - unicode[idx++] = *(uint8_t *)(void *)len; - 8008338: 7dfb ldrb r3, [r7, #23] - 800833a: 1c5a adds r2, r3, #1 - 800833c: 75fa strb r2, [r7, #23] - 800833e: 461a mov r2, r3 - 8008340: 68bb ldr r3, [r7, #8] - 8008342: 4413 add r3, r2 - 8008344: 687a ldr r2, [r7, #4] - 8008346: 7812 ldrb r2, [r2, #0] - 8008348: 701a strb r2, [r3, #0] - unicode[idx++] = USB_DESC_TYPE_STRING; - 800834a: 7dfb ldrb r3, [r7, #23] - 800834c: 1c5a adds r2, r3, #1 - 800834e: 75fa strb r2, [r7, #23] - 8008350: 461a mov r2, r3 - 8008352: 68bb ldr r3, [r7, #8] - 8008354: 4413 add r3, r2 - 8008356: 2203 movs r2, #3 - 8008358: 701a strb r2, [r3, #0] - - while (*desc != '\0') - 800835a: e012 b.n 8008382 - { - unicode[idx++] = *desc++; - 800835c: 68fb ldr r3, [r7, #12] - 800835e: 1c5a adds r2, r3, #1 - 8008360: 60fa str r2, [r7, #12] - 8008362: 7dfa ldrb r2, [r7, #23] - 8008364: 1c51 adds r1, r2, #1 - 8008366: 75f9 strb r1, [r7, #23] - 8008368: 4611 mov r1, r2 - 800836a: 68ba ldr r2, [r7, #8] - 800836c: 440a add r2, r1 - 800836e: 781b ldrb r3, [r3, #0] - 8008370: 7013 strb r3, [r2, #0] - unicode[idx++] = 0U; - 8008372: 7dfb ldrb r3, [r7, #23] - 8008374: 1c5a adds r2, r3, #1 - 8008376: 75fa strb r2, [r7, #23] - 8008378: 461a mov r2, r3 - 800837a: 68bb ldr r3, [r7, #8] - 800837c: 4413 add r3, r2 - 800837e: 2200 movs r2, #0 - 8008380: 701a strb r2, [r3, #0] - while (*desc != '\0') - 8008382: 68fb ldr r3, [r7, #12] - 8008384: 781b ldrb r3, [r3, #0] - 8008386: 2b00 cmp r3, #0 - 8008388: d1e8 bne.n 800835c - } - } -} - 800838a: bf00 nop - 800838c: 3718 adds r7, #24 - 800838e: 46bd mov sp, r7 - 8008390: bd80 pop {r7, pc} - -08008392 : - * return the string length - * @param buf : pointer to the ascii string buffer - * @retval string length - */ -static uint8_t USBD_GetLen(uint8_t *buf) -{ - 8008392: b480 push {r7} - 8008394: b085 sub sp, #20 - 8008396: af00 add r7, sp, #0 - 8008398: 6078 str r0, [r7, #4] - uint8_t len = 0U; - 800839a: 2300 movs r3, #0 - 800839c: 73fb strb r3, [r7, #15] - - while (*buf != '\0') - 800839e: e005 b.n 80083ac - { - len++; - 80083a0: 7bfb ldrb r3, [r7, #15] - 80083a2: 3301 adds r3, #1 - 80083a4: 73fb strb r3, [r7, #15] - buf++; - 80083a6: 687b ldr r3, [r7, #4] - 80083a8: 3301 adds r3, #1 - 80083aa: 607b str r3, [r7, #4] - while (*buf != '\0') - 80083ac: 687b ldr r3, [r7, #4] - 80083ae: 781b ldrb r3, [r3, #0] - 80083b0: 2b00 cmp r3, #0 - 80083b2: d1f5 bne.n 80083a0 - } - - return len; - 80083b4: 7bfb ldrb r3, [r7, #15] -} - 80083b6: 4618 mov r0, r3 - 80083b8: 3714 adds r7, #20 - 80083ba: 46bd mov sp, r7 - 80083bc: bc80 pop {r7} - 80083be: 4770 bx lr - -080083c0 : -* @param len: length of data to be sent -* @retval status -*/ -USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev, - uint8_t *pbuf, uint16_t len) -{ - 80083c0: b580 push {r7, lr} - 80083c2: b084 sub sp, #16 - 80083c4: af00 add r7, sp, #0 - 80083c6: 60f8 str r0, [r7, #12] - 80083c8: 60b9 str r1, [r7, #8] - 80083ca: 4613 mov r3, r2 - 80083cc: 80fb strh r3, [r7, #6] - /* Set EP0 State */ - pdev->ep0_state = USBD_EP0_DATA_IN; - 80083ce: 68fb ldr r3, [r7, #12] - 80083d0: 2202 movs r2, #2 - 80083d2: f8c3 2294 str.w r2, [r3, #660] @ 0x294 - pdev->ep_in[0].total_length = len; - 80083d6: 88fa ldrh r2, [r7, #6] - 80083d8: 68fb ldr r3, [r7, #12] - 80083da: 61da str r2, [r3, #28] - pdev->ep_in[0].rem_length = len; - 80083dc: 88fa ldrh r2, [r7, #6] - 80083de: 68fb ldr r3, [r7, #12] - 80083e0: 621a str r2, [r3, #32] - - /* Start the transfer */ - USBD_LL_Transmit(pdev, 0x00U, pbuf, len); - 80083e2: 88fb ldrh r3, [r7, #6] - 80083e4: 68ba ldr r2, [r7, #8] - 80083e6: 2100 movs r1, #0 - 80083e8: 68f8 ldr r0, [r7, #12] - 80083ea: f000 fce1 bl 8008db0 - - return USBD_OK; - 80083ee: 2300 movs r3, #0 -} - 80083f0: 4618 mov r0, r3 - 80083f2: 3710 adds r7, #16 - 80083f4: 46bd mov sp, r7 - 80083f6: bd80 pop {r7, pc} - -080083f8 : -* @param len: length of data to be sent -* @retval status -*/ -USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev, - uint8_t *pbuf, uint16_t len) -{ - 80083f8: b580 push {r7, lr} - 80083fa: b084 sub sp, #16 - 80083fc: af00 add r7, sp, #0 - 80083fe: 60f8 str r0, [r7, #12] - 8008400: 60b9 str r1, [r7, #8] - 8008402: 4613 mov r3, r2 - 8008404: 80fb strh r3, [r7, #6] - /* Start the next transfer */ - USBD_LL_Transmit(pdev, 0x00U, pbuf, len); - 8008406: 88fb ldrh r3, [r7, #6] - 8008408: 68ba ldr r2, [r7, #8] - 800840a: 2100 movs r1, #0 - 800840c: 68f8 ldr r0, [r7, #12] - 800840e: f000 fccf bl 8008db0 - - return USBD_OK; - 8008412: 2300 movs r3, #0 -} - 8008414: 4618 mov r0, r3 - 8008416: 3710 adds r7, #16 - 8008418: 46bd mov sp, r7 - 800841a: bd80 pop {r7, pc} - -0800841c : -* @param len: length of data to be received -* @retval status -*/ -USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev, - uint8_t *pbuf, uint16_t len) -{ - 800841c: b580 push {r7, lr} - 800841e: b084 sub sp, #16 - 8008420: af00 add r7, sp, #0 - 8008422: 60f8 str r0, [r7, #12] - 8008424: 60b9 str r1, [r7, #8] - 8008426: 4613 mov r3, r2 - 8008428: 80fb strh r3, [r7, #6] - /* Set EP0 State */ - pdev->ep0_state = USBD_EP0_DATA_OUT; - 800842a: 68fb ldr r3, [r7, #12] - 800842c: 2203 movs r2, #3 - 800842e: f8c3 2294 str.w r2, [r3, #660] @ 0x294 - pdev->ep_out[0].total_length = len; - 8008432: 88fa ldrh r2, [r7, #6] - 8008434: 68fb ldr r3, [r7, #12] - 8008436: f8c3 215c str.w r2, [r3, #348] @ 0x15c - pdev->ep_out[0].rem_length = len; - 800843a: 88fa ldrh r2, [r7, #6] - 800843c: 68fb ldr r3, [r7, #12] - 800843e: f8c3 2160 str.w r2, [r3, #352] @ 0x160 - - /* Start the transfer */ - USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); - 8008442: 88fb ldrh r3, [r7, #6] - 8008444: 68ba ldr r2, [r7, #8] - 8008446: 2100 movs r1, #0 - 8008448: 68f8 ldr r0, [r7, #12] - 800844a: f000 fcd4 bl 8008df6 - - return USBD_OK; - 800844e: 2300 movs r3, #0 -} - 8008450: 4618 mov r0, r3 - 8008452: 3710 adds r7, #16 - 8008454: 46bd mov sp, r7 - 8008456: bd80 pop {r7, pc} - -08008458 : -* @param len: length of data to be received -* @retval status -*/ -USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev, - uint8_t *pbuf, uint16_t len) -{ - 8008458: b580 push {r7, lr} - 800845a: b084 sub sp, #16 - 800845c: af00 add r7, sp, #0 - 800845e: 60f8 str r0, [r7, #12] - 8008460: 60b9 str r1, [r7, #8] - 8008462: 4613 mov r3, r2 - 8008464: 80fb strh r3, [r7, #6] - USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); - 8008466: 88fb ldrh r3, [r7, #6] - 8008468: 68ba ldr r2, [r7, #8] - 800846a: 2100 movs r1, #0 - 800846c: 68f8 ldr r0, [r7, #12] - 800846e: f000 fcc2 bl 8008df6 - - return USBD_OK; - 8008472: 2300 movs r3, #0 -} - 8008474: 4618 mov r0, r3 - 8008476: 3710 adds r7, #16 - 8008478: 46bd mov sp, r7 - 800847a: bd80 pop {r7, pc} - -0800847c : -* send zero lzngth packet on the ctl pipe -* @param pdev: device instance -* @retval status -*/ -USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev) -{ - 800847c: b580 push {r7, lr} - 800847e: b082 sub sp, #8 - 8008480: af00 add r7, sp, #0 - 8008482: 6078 str r0, [r7, #4] - /* Set EP0 State */ - pdev->ep0_state = USBD_EP0_STATUS_IN; - 8008484: 687b ldr r3, [r7, #4] - 8008486: 2204 movs r2, #4 - 8008488: f8c3 2294 str.w r2, [r3, #660] @ 0x294 - - /* Start the transfer */ - USBD_LL_Transmit(pdev, 0x00U, NULL, 0U); - 800848c: 2300 movs r3, #0 - 800848e: 2200 movs r2, #0 - 8008490: 2100 movs r1, #0 - 8008492: 6878 ldr r0, [r7, #4] - 8008494: f000 fc8c bl 8008db0 - - return USBD_OK; - 8008498: 2300 movs r3, #0 -} - 800849a: 4618 mov r0, r3 - 800849c: 3708 adds r7, #8 - 800849e: 46bd mov sp, r7 - 80084a0: bd80 pop {r7, pc} - -080084a2 : -* receive zero lzngth packet on the ctl pipe -* @param pdev: device instance -* @retval status -*/ -USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev) -{ - 80084a2: b580 push {r7, lr} - 80084a4: b082 sub sp, #8 - 80084a6: af00 add r7, sp, #0 - 80084a8: 6078 str r0, [r7, #4] - /* Set EP0 State */ - pdev->ep0_state = USBD_EP0_STATUS_OUT; - 80084aa: 687b ldr r3, [r7, #4] - 80084ac: 2205 movs r2, #5 - 80084ae: f8c3 2294 str.w r2, [r3, #660] @ 0x294 - - /* Start the transfer */ - USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); - 80084b2: 2300 movs r3, #0 - 80084b4: 2200 movs r2, #0 - 80084b6: 2100 movs r1, #0 - 80084b8: 6878 ldr r0, [r7, #4] - 80084ba: f000 fc9c bl 8008df6 - - return USBD_OK; - 80084be: 2300 movs r3, #0 -} - 80084c0: 4618 mov r0, r3 - 80084c2: 3708 adds r7, #8 - 80084c4: 46bd mov sp, r7 - 80084c6: bd80 pop {r7, pc} - -080084c8 : -/** - * Init USB device Library, add supported class and start the library - * @retval None - */ -void MX_USB_DEVICE_Init(void) -{ - 80084c8: b580 push {r7, lr} - 80084ca: af00 add r7, sp, #0 - /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ - - /* USER CODE END USB_DEVICE_Init_PreTreatment */ - - /* Init Device Library, add supported class and start the library. */ - if (USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK) - 80084cc: 2200 movs r2, #0 - 80084ce: 4912 ldr r1, [pc, #72] @ (8008518 ) - 80084d0: 4812 ldr r0, [pc, #72] @ (800851c ) - 80084d2: f7fe ff62 bl 800739a - 80084d6: 4603 mov r3, r0 - 80084d8: 2b00 cmp r3, #0 - 80084da: d001 beq.n 80084e0 - { - Error_Handler(); - 80084dc: f7f8 fa40 bl 8000960 - } - if (USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC) != USBD_OK) - 80084e0: 490f ldr r1, [pc, #60] @ (8008520 ) - 80084e2: 480e ldr r0, [pc, #56] @ (800851c ) - 80084e4: f7fe ff84 bl 80073f0 - 80084e8: 4603 mov r3, r0 - 80084ea: 2b00 cmp r3, #0 - 80084ec: d001 beq.n 80084f2 - { - Error_Handler(); - 80084ee: f7f8 fa37 bl 8000960 - } - if (USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS) != USBD_OK) - 80084f2: 490c ldr r1, [pc, #48] @ (8008524 ) - 80084f4: 4809 ldr r0, [pc, #36] @ (800851c ) - 80084f6: f7fe feb5 bl 8007264 - 80084fa: 4603 mov r3, r0 - 80084fc: 2b00 cmp r3, #0 - 80084fe: d001 beq.n 8008504 - { - Error_Handler(); - 8008500: f7f8 fa2e bl 8000960 - } - if (USBD_Start(&hUsbDeviceFS) != USBD_OK) - 8008504: 4805 ldr r0, [pc, #20] @ (800851c ) - 8008506: f7fe ff8c bl 8007422 - 800850a: 4603 mov r3, r0 - 800850c: 2b00 cmp r3, #0 - 800850e: d001 beq.n 8008514 - { - Error_Handler(); - 8008510: f7f8 fa26 bl 8000960 - } - - /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */ - - /* USER CODE END USB_DEVICE_Init_PostTreatment */ -} - 8008514: bf00 nop - 8008516: bd80 pop {r7, pc} - 8008518: 2000012c .word 0x2000012c - 800851c: 20000348 .word 0x20000348 - 8008520: 20000018 .word 0x20000018 - 8008524: 2000011c .word 0x2000011c - -08008528 : -/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ -#define RX_FIFO_SZ 256 -static uint8_t rx_fifo[RX_FIFO_SZ]; -static volatile uint16_t rx_head = 0, rx_tail = 0; - -static void fifo_push(const uint8_t* data, uint32_t len) { - 8008528: b480 push {r7} - 800852a: b085 sub sp, #20 - 800852c: af00 add r7, sp, #0 - 800852e: 6078 str r0, [r7, #4] - 8008530: 6039 str r1, [r7, #0] - while (len--) { - 8008532: e01e b.n 8008572 - uint16_t next = (rx_head + 1u) & (RX_FIFO_SZ - 1u); - 8008534: 4b14 ldr r3, [pc, #80] @ (8008588 ) - 8008536: 881b ldrh r3, [r3, #0] - 8008538: b29b uxth r3, r3 - 800853a: 3301 adds r3, #1 - 800853c: b29b uxth r3, r3 - 800853e: b2db uxtb r3, r3 - 8008540: 81fb strh r3, [r7, #14] - if (next == (rx_tail & (RX_FIFO_SZ - 1u))) { - 8008542: 89fa ldrh r2, [r7, #14] - 8008544: 4b11 ldr r3, [pc, #68] @ (800858c ) - 8008546: 881b ldrh r3, [r3, #0] - 8008548: b29b uxth r3, r3 - 800854a: b2db uxtb r3, r3 - 800854c: 429a cmp r2, r3 - 800854e: d103 bne.n 8008558 - /* overflow — drop byte (or set a flag) */ - data++; - 8008550: 687b ldr r3, [r7, #4] - 8008552: 3301 adds r3, #1 - 8008554: 607b str r3, [r7, #4] - continue; - 8008556: e00c b.n 8008572 - } - rx_fifo[rx_head & (RX_FIFO_SZ - 1u)] = *data++; - 8008558: 687b ldr r3, [r7, #4] - 800855a: 1c5a adds r2, r3, #1 - 800855c: 607a str r2, [r7, #4] - 800855e: 4a0a ldr r2, [pc, #40] @ (8008588 ) - 8008560: 8812 ldrh r2, [r2, #0] - 8008562: b292 uxth r2, r2 - 8008564: b2d2 uxtb r2, r2 - 8008566: 7819 ldrb r1, [r3, #0] - 8008568: 4b09 ldr r3, [pc, #36] @ (8008590 ) - 800856a: 5499 strb r1, [r3, r2] - rx_head = next; - 800856c: 4a06 ldr r2, [pc, #24] @ (8008588 ) - 800856e: 89fb ldrh r3, [r7, #14] - 8008570: 8013 strh r3, [r2, #0] - while (len--) { - 8008572: 683b ldr r3, [r7, #0] - 8008574: 1e5a subs r2, r3, #1 - 8008576: 603a str r2, [r7, #0] - 8008578: 2b00 cmp r3, #0 - 800857a: d1db bne.n 8008534 - } -} - 800857c: bf00 nop - 800857e: bf00 nop - 8008580: 3714 adds r7, #20 - 8008582: 46bd mov sp, r7 - 8008584: bc80 pop {r7} - 8008586: 4770 bx lr - 8008588: 20000f0c .word 0x20000f0c - 800858c: 20000f0e .word 0x20000f0e - 8008590: 20000e0c .word 0x20000e0c - -08008594 : - -uint32_t CDC_Available(void) { - 8008594: b480 push {r7} - 8008596: af00 add r7, sp, #0 - return (uint16_t)((rx_head - rx_tail) & (RX_FIFO_SZ - 1u)); - 8008598: 4b06 ldr r3, [pc, #24] @ (80085b4 ) - 800859a: 881b ldrh r3, [r3, #0] - 800859c: b29a uxth r2, r3 - 800859e: 4b06 ldr r3, [pc, #24] @ (80085b8 ) - 80085a0: 881b ldrh r3, [r3, #0] - 80085a2: b29b uxth r3, r3 - 80085a4: 1ad3 subs r3, r2, r3 - 80085a6: b29b uxth r3, r3 - 80085a8: b2db uxtb r3, r3 -} - 80085aa: 4618 mov r0, r3 - 80085ac: 46bd mov sp, r7 - 80085ae: bc80 pop {r7} - 80085b0: 4770 bx lr - 80085b2: bf00 nop - 80085b4: 20000f0c .word 0x20000f0c - 80085b8: 20000f0e .word 0x20000f0e - -080085bc : - -int CDC_ReadByte(void) { - 80085bc: b480 push {r7} - 80085be: b083 sub sp, #12 - 80085c0: af00 add r7, sp, #0 - if (rx_tail == rx_head) return -1; - 80085c2: 4b10 ldr r3, [pc, #64] @ (8008604 ) - 80085c4: 881b ldrh r3, [r3, #0] - 80085c6: b29a uxth r2, r3 - 80085c8: 4b0f ldr r3, [pc, #60] @ (8008608 ) - 80085ca: 881b ldrh r3, [r3, #0] - 80085cc: b29b uxth r3, r3 - 80085ce: 429a cmp r2, r3 - 80085d0: d102 bne.n 80085d8 - 80085d2: f04f 33ff mov.w r3, #4294967295 - 80085d6: e010 b.n 80085fa - int b = rx_fifo[rx_tail & (RX_FIFO_SZ - 1u)]; - 80085d8: 4b0a ldr r3, [pc, #40] @ (8008604 ) - 80085da: 881b ldrh r3, [r3, #0] - 80085dc: b29b uxth r3, r3 - 80085de: b2db uxtb r3, r3 - 80085e0: 4a0a ldr r2, [pc, #40] @ (800860c ) - 80085e2: 5cd3 ldrb r3, [r2, r3] - 80085e4: 607b str r3, [r7, #4] - rx_tail = (rx_tail + 1u) & (RX_FIFO_SZ - 1u); - 80085e6: 4b07 ldr r3, [pc, #28] @ (8008604 ) - 80085e8: 881b ldrh r3, [r3, #0] - 80085ea: b29b uxth r3, r3 - 80085ec: 3301 adds r3, #1 - 80085ee: b29b uxth r3, r3 - 80085f0: b2db uxtb r3, r3 - 80085f2: b29a uxth r2, r3 - 80085f4: 4b03 ldr r3, [pc, #12] @ (8008604 ) - 80085f6: 801a strh r2, [r3, #0] - return b; - 80085f8: 687b ldr r3, [r7, #4] -} - 80085fa: 4618 mov r0, r3 - 80085fc: 370c adds r7, #12 - 80085fe: 46bd mov sp, r7 - 8008600: bc80 pop {r7} - 8008602: 4770 bx lr - 8008604: 20000f0e .word 0x20000f0e - 8008608: 20000f0c .word 0x20000f0c - 800860c: 20000e0c .word 0x20000e0c - -08008610 : -/** - * @brief Initializes the CDC media low layer over the FS USB IP - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Init_FS(void) -{ - 8008610: b580 push {r7, lr} - 8008612: af00 add r7, sp, #0 - /* USER CODE BEGIN 3 */ - /* Set Application Buffers */ - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); - 8008614: 2200 movs r2, #0 - 8008616: 4905 ldr r1, [pc, #20] @ (800862c ) - 8008618: 4805 ldr r0, [pc, #20] @ (8008630 ) - 800861a: f7fe fe39 bl 8007290 - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); - 800861e: 4905 ldr r1, [pc, #20] @ (8008634 ) - 8008620: 4803 ldr r0, [pc, #12] @ (8008630 ) - 8008622: f7fe fe4e bl 80072c2 - return (USBD_OK); - 8008626: 2300 movs r3, #0 - /* USER CODE END 3 */ -} - 8008628: 4618 mov r0, r3 - 800862a: bd80 pop {r7, pc} - 800862c: 20000a0c .word 0x20000a0c - 8008630: 20000348 .word 0x20000348 - 8008634: 2000060c .word 0x2000060c - -08008638 : -/** - * @brief DeInitializes the CDC media low layer - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_DeInit_FS(void) -{ - 8008638: b480 push {r7} - 800863a: af00 add r7, sp, #0 - /* USER CODE BEGIN 4 */ - return (USBD_OK); - 800863c: 2300 movs r3, #0 - /* USER CODE END 4 */ -} - 800863e: 4618 mov r0, r3 - 8008640: 46bd mov sp, r7 - 8008642: bc80 pop {r7} - 8008644: 4770 bx lr - ... - -08008648 : - * @param pbuf: Buffer containing command data (request parameters) - * @param length: Number of data to be sent (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) -{ - 8008648: b480 push {r7} - 800864a: b083 sub sp, #12 - 800864c: af00 add r7, sp, #0 - 800864e: 4603 mov r3, r0 - 8008650: 6039 str r1, [r7, #0] - 8008652: 71fb strb r3, [r7, #7] - 8008654: 4613 mov r3, r2 - 8008656: 80bb strh r3, [r7, #4] - /* USER CODE BEGIN 5 */ - switch(cmd) - 8008658: 79fb ldrb r3, [r7, #7] - 800865a: 2b23 cmp r3, #35 @ 0x23 - 800865c: d84a bhi.n 80086f4 - 800865e: a201 add r2, pc, #4 @ (adr r2, 8008664 ) - 8008660: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8008664: 080086f5 .word 0x080086f5 - 8008668: 080086f5 .word 0x080086f5 - 800866c: 080086f5 .word 0x080086f5 - 8008670: 080086f5 .word 0x080086f5 - 8008674: 080086f5 .word 0x080086f5 - 8008678: 080086f5 .word 0x080086f5 - 800867c: 080086f5 .word 0x080086f5 - 8008680: 080086f5 .word 0x080086f5 - 8008684: 080086f5 .word 0x080086f5 - 8008688: 080086f5 .word 0x080086f5 - 800868c: 080086f5 .word 0x080086f5 - 8008690: 080086f5 .word 0x080086f5 - 8008694: 080086f5 .word 0x080086f5 - 8008698: 080086f5 .word 0x080086f5 - 800869c: 080086f5 .word 0x080086f5 - 80086a0: 080086f5 .word 0x080086f5 - 80086a4: 080086f5 .word 0x080086f5 - 80086a8: 080086f5 .word 0x080086f5 - 80086ac: 080086f5 .word 0x080086f5 - 80086b0: 080086f5 .word 0x080086f5 - 80086b4: 080086f5 .word 0x080086f5 - 80086b8: 080086f5 .word 0x080086f5 - 80086bc: 080086f5 .word 0x080086f5 - 80086c0: 080086f5 .word 0x080086f5 - 80086c4: 080086f5 .word 0x080086f5 - 80086c8: 080086f5 .word 0x080086f5 - 80086cc: 080086f5 .word 0x080086f5 - 80086d0: 080086f5 .word 0x080086f5 - 80086d4: 080086f5 .word 0x080086f5 - 80086d8: 080086f5 .word 0x080086f5 - 80086dc: 080086f5 .word 0x080086f5 - 80086e0: 080086f5 .word 0x080086f5 - 80086e4: 080086f5 .word 0x080086f5 - 80086e8: 080086f5 .word 0x080086f5 - 80086ec: 080086f5 .word 0x080086f5 - 80086f0: 080086f5 .word 0x080086f5 - case CDC_SEND_BREAK: - - break; - - default: - break; - 80086f4: bf00 nop - } - - return (USBD_OK); - 80086f6: 2300 movs r3, #0 - /* USER CODE END 5 */ -} - 80086f8: 4618 mov r0, r3 - 80086fa: 370c adds r7, #12 - 80086fc: 46bd mov sp, r7 - 80086fe: bc80 pop {r7} - 8008700: 4770 bx lr - 8008702: bf00 nop - -08008704 : - * @param Buf: Buffer of data to be received - * @param Len: Number of data received (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) -{ - 8008704: b580 push {r7, lr} - 8008706: b082 sub sp, #8 - 8008708: af00 add r7, sp, #0 - 800870a: 6078 str r0, [r7, #4] - 800870c: 6039 str r1, [r7, #0] - /* USER CODE BEGIN 6 */ - if (*Len) fifo_push(Buf, *Len); - 800870e: 683b ldr r3, [r7, #0] - 8008710: 681b ldr r3, [r3, #0] - 8008712: 2b00 cmp r3, #0 - 8008714: d005 beq.n 8008722 - 8008716: 683b ldr r3, [r7, #0] - 8008718: 681b ldr r3, [r3, #0] - 800871a: 4619 mov r1, r3 - 800871c: 6878 ldr r0, [r7, #4] - 800871e: f7ff ff03 bl 8008528 - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); - 8008722: 6879 ldr r1, [r7, #4] - 8008724: 4805 ldr r0, [pc, #20] @ (800873c ) - 8008726: f7fe fdcc bl 80072c2 - USBD_CDC_ReceivePacket(&hUsbDeviceFS); - 800872a: 4804 ldr r0, [pc, #16] @ (800873c ) - 800872c: f7fe fe0b bl 8007346 - return (USBD_OK); - 8008730: 2300 movs r3, #0 - /* USER CODE END 6 */ -} - 8008732: 4618 mov r0, r3 - 8008734: 3708 adds r7, #8 - 8008736: 46bd mov sp, r7 - 8008738: bd80 pop {r7, pc} - 800873a: bf00 nop - 800873c: 20000348 .word 0x20000348 - -08008740 : - * @param Buf: Buffer of data to be sent - * @param Len: Number of data to be sent (in bytes) - * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY - */ -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) -{ - 8008740: b580 push {r7, lr} - 8008742: b084 sub sp, #16 - 8008744: af00 add r7, sp, #0 - 8008746: 6078 str r0, [r7, #4] - 8008748: 460b mov r3, r1 - 800874a: 807b strh r3, [r7, #2] - uint8_t result = USBD_OK; - 800874c: 2300 movs r3, #0 - 800874e: 73fb strb r3, [r7, #15] - /* USER CODE BEGIN 7 */ - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; - 8008750: 4b0d ldr r3, [pc, #52] @ (8008788 ) - 8008752: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8008756: 60bb str r3, [r7, #8] - if (hcdc->TxState != 0){ - 8008758: 68bb ldr r3, [r7, #8] - 800875a: f8d3 3214 ldr.w r3, [r3, #532] @ 0x214 - 800875e: 2b00 cmp r3, #0 - 8008760: d001 beq.n 8008766 - return USBD_BUSY; - 8008762: 2301 movs r3, #1 - 8008764: e00b b.n 800877e - } - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); - 8008766: 887b ldrh r3, [r7, #2] - 8008768: 461a mov r2, r3 - 800876a: 6879 ldr r1, [r7, #4] - 800876c: 4806 ldr r0, [pc, #24] @ (8008788 ) - 800876e: f7fe fd8f bl 8007290 - result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); - 8008772: 4805 ldr r0, [pc, #20] @ (8008788 ) - 8008774: f7fe fdb8 bl 80072e8 - 8008778: 4603 mov r3, r0 - 800877a: 73fb strb r3, [r7, #15] - /* USER CODE END 7 */ - return result; - 800877c: 7bfb ldrb r3, [r7, #15] -} - 800877e: 4618 mov r0, r3 - 8008780: 3710 adds r7, #16 - 8008782: 46bd mov sp, r7 - 8008784: bd80 pop {r7, pc} - 8008786: bf00 nop - 8008788: 20000348 .word 0x20000348 - -0800878c : - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - 800878c: b480 push {r7} - 800878e: b083 sub sp, #12 - 8008790: af00 add r7, sp, #0 - 8008792: 4603 mov r3, r0 - 8008794: 6039 str r1, [r7, #0] - 8008796: 71fb strb r3, [r7, #7] - UNUSED(speed); - *length = sizeof(USBD_FS_DeviceDesc); - 8008798: 683b ldr r3, [r7, #0] - 800879a: 2212 movs r2, #18 - 800879c: 801a strh r2, [r3, #0] - return USBD_FS_DeviceDesc; - 800879e: 4b03 ldr r3, [pc, #12] @ (80087ac ) -} - 80087a0: 4618 mov r0, r3 - 80087a2: 370c adds r7, #12 - 80087a4: 46bd mov sp, r7 - 80087a6: bc80 pop {r7} - 80087a8: 4770 bx lr - 80087aa: bf00 nop - 80087ac: 20000148 .word 0x20000148 - -080087b0 : - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - 80087b0: b480 push {r7} - 80087b2: b083 sub sp, #12 - 80087b4: af00 add r7, sp, #0 - 80087b6: 4603 mov r3, r0 - 80087b8: 6039 str r1, [r7, #0] - 80087ba: 71fb strb r3, [r7, #7] - UNUSED(speed); - *length = sizeof(USBD_LangIDDesc); - 80087bc: 683b ldr r3, [r7, #0] - 80087be: 2204 movs r2, #4 - 80087c0: 801a strh r2, [r3, #0] - return USBD_LangIDDesc; - 80087c2: 4b03 ldr r3, [pc, #12] @ (80087d0 ) -} - 80087c4: 4618 mov r0, r3 - 80087c6: 370c adds r7, #12 - 80087c8: 46bd mov sp, r7 - 80087ca: bc80 pop {r7} - 80087cc: 4770 bx lr - 80087ce: bf00 nop - 80087d0: 2000015c .word 0x2000015c - -080087d4 : - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - 80087d4: b580 push {r7, lr} - 80087d6: b082 sub sp, #8 - 80087d8: af00 add r7, sp, #0 - 80087da: 4603 mov r3, r0 - 80087dc: 6039 str r1, [r7, #0] - 80087de: 71fb strb r3, [r7, #7] - if(speed == 0) - 80087e0: 79fb ldrb r3, [r7, #7] - 80087e2: 2b00 cmp r3, #0 - 80087e4: d105 bne.n 80087f2 - { - USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); - 80087e6: 683a ldr r2, [r7, #0] - 80087e8: 4907 ldr r1, [pc, #28] @ (8008808 ) - 80087ea: 4808 ldr r0, [pc, #32] @ (800880c ) - 80087ec: f7ff fd8f bl 800830e - 80087f0: e004 b.n 80087fc - } - else - { - USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); - 80087f2: 683a ldr r2, [r7, #0] - 80087f4: 4904 ldr r1, [pc, #16] @ (8008808 ) - 80087f6: 4805 ldr r0, [pc, #20] @ (800880c ) - 80087f8: f7ff fd89 bl 800830e - } - return USBD_StrDesc; - 80087fc: 4b02 ldr r3, [pc, #8] @ (8008808 ) -} - 80087fe: 4618 mov r0, r3 - 8008800: 3708 adds r7, #8 - 8008802: 46bd mov sp, r7 - 8008804: bd80 pop {r7, pc} - 8008806: bf00 nop - 8008808: 20000f10 .word 0x20000f10 - 800880c: 08009884 .word 0x08009884 - -08008810 : - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - 8008810: b580 push {r7, lr} - 8008812: b082 sub sp, #8 - 8008814: af00 add r7, sp, #0 - 8008816: 4603 mov r3, r0 - 8008818: 6039 str r1, [r7, #0] - 800881a: 71fb strb r3, [r7, #7] - UNUSED(speed); - USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length); - 800881c: 683a ldr r2, [r7, #0] - 800881e: 4904 ldr r1, [pc, #16] @ (8008830 ) - 8008820: 4804 ldr r0, [pc, #16] @ (8008834 ) - 8008822: f7ff fd74 bl 800830e - return USBD_StrDesc; - 8008826: 4b02 ldr r3, [pc, #8] @ (8008830 ) -} - 8008828: 4618 mov r0, r3 - 800882a: 3708 adds r7, #8 - 800882c: 46bd mov sp, r7 - 800882e: bd80 pop {r7, pc} - 8008830: 20000f10 .word 0x20000f10 - 8008834: 0800989c .word 0x0800989c - -08008838 : - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - 8008838: b580 push {r7, lr} - 800883a: b082 sub sp, #8 - 800883c: af00 add r7, sp, #0 - 800883e: 4603 mov r3, r0 - 8008840: 6039 str r1, [r7, #0] - 8008842: 71fb strb r3, [r7, #7] - UNUSED(speed); - *length = USB_SIZ_STRING_SERIAL; - 8008844: 683b ldr r3, [r7, #0] - 8008846: 221a movs r2, #26 - 8008848: 801a strh r2, [r3, #0] - - /* Update the serial number string descriptor with the data from the unique - * ID */ - Get_SerialNum(); - 800884a: f000 f843 bl 80088d4 - /* USER CODE BEGIN USBD_FS_SerialStrDescriptor */ - - /* USER CODE END USBD_FS_SerialStrDescriptor */ - return (uint8_t *) USBD_StringSerial; - 800884e: 4b02 ldr r3, [pc, #8] @ (8008858 ) -} - 8008850: 4618 mov r0, r3 - 8008852: 3708 adds r7, #8 - 8008854: 46bd mov sp, r7 - 8008856: bd80 pop {r7, pc} - 8008858: 20000160 .word 0x20000160 - -0800885c : - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - 800885c: b580 push {r7, lr} - 800885e: b082 sub sp, #8 - 8008860: af00 add r7, sp, #0 - 8008862: 4603 mov r3, r0 - 8008864: 6039 str r1, [r7, #0] - 8008866: 71fb strb r3, [r7, #7] - if(speed == USBD_SPEED_HIGH) - 8008868: 79fb ldrb r3, [r7, #7] - 800886a: 2b00 cmp r3, #0 - 800886c: d105 bne.n 800887a - { - USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); - 800886e: 683a ldr r2, [r7, #0] - 8008870: 4907 ldr r1, [pc, #28] @ (8008890 ) - 8008872: 4808 ldr r0, [pc, #32] @ (8008894 ) - 8008874: f7ff fd4b bl 800830e - 8008878: e004 b.n 8008884 - } - else - { - USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); - 800887a: 683a ldr r2, [r7, #0] - 800887c: 4904 ldr r1, [pc, #16] @ (8008890 ) - 800887e: 4805 ldr r0, [pc, #20] @ (8008894 ) - 8008880: f7ff fd45 bl 800830e - } - return USBD_StrDesc; - 8008884: 4b02 ldr r3, [pc, #8] @ (8008890 ) -} - 8008886: 4618 mov r0, r3 - 8008888: 3708 adds r7, #8 - 800888a: 46bd mov sp, r7 - 800888c: bd80 pop {r7, pc} - 800888e: bf00 nop - 8008890: 20000f10 .word 0x20000f10 - 8008894: 080098b0 .word 0x080098b0 - -08008898 : - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - 8008898: b580 push {r7, lr} - 800889a: b082 sub sp, #8 - 800889c: af00 add r7, sp, #0 - 800889e: 4603 mov r3, r0 - 80088a0: 6039 str r1, [r7, #0] - 80088a2: 71fb strb r3, [r7, #7] - if(speed == 0) - 80088a4: 79fb ldrb r3, [r7, #7] - 80088a6: 2b00 cmp r3, #0 - 80088a8: d105 bne.n 80088b6 - { - USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); - 80088aa: 683a ldr r2, [r7, #0] - 80088ac: 4907 ldr r1, [pc, #28] @ (80088cc ) - 80088ae: 4808 ldr r0, [pc, #32] @ (80088d0 ) - 80088b0: f7ff fd2d bl 800830e - 80088b4: e004 b.n 80088c0 - } - else - { - USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); - 80088b6: 683a ldr r2, [r7, #0] - 80088b8: 4904 ldr r1, [pc, #16] @ (80088cc ) - 80088ba: 4805 ldr r0, [pc, #20] @ (80088d0 ) - 80088bc: f7ff fd27 bl 800830e - } - return USBD_StrDesc; - 80088c0: 4b02 ldr r3, [pc, #8] @ (80088cc ) -} - 80088c2: 4618 mov r0, r3 - 80088c4: 3708 adds r7, #8 - 80088c6: 46bd mov sp, r7 - 80088c8: bd80 pop {r7, pc} - 80088ca: bf00 nop - 80088cc: 20000f10 .word 0x20000f10 - 80088d0: 080098bc .word 0x080098bc - -080088d4 : - * @brief Create the serial number string descriptor - * @param None - * @retval None - */ -static void Get_SerialNum(void) -{ - 80088d4: b580 push {r7, lr} - 80088d6: b084 sub sp, #16 - 80088d8: af00 add r7, sp, #0 - uint32_t deviceserial0; - uint32_t deviceserial1; - uint32_t deviceserial2; - - deviceserial0 = *(uint32_t *) DEVICE_ID1; - 80088da: 4b0f ldr r3, [pc, #60] @ (8008918 ) - 80088dc: 681b ldr r3, [r3, #0] - 80088de: 60fb str r3, [r7, #12] - deviceserial1 = *(uint32_t *) DEVICE_ID2; - 80088e0: 4b0e ldr r3, [pc, #56] @ (800891c ) - 80088e2: 681b ldr r3, [r3, #0] - 80088e4: 60bb str r3, [r7, #8] - deviceserial2 = *(uint32_t *) DEVICE_ID3; - 80088e6: 4b0e ldr r3, [pc, #56] @ (8008920 ) - 80088e8: 681b ldr r3, [r3, #0] - 80088ea: 607b str r3, [r7, #4] - - deviceserial0 += deviceserial2; - 80088ec: 68fa ldr r2, [r7, #12] - 80088ee: 687b ldr r3, [r7, #4] - 80088f0: 4413 add r3, r2 - 80088f2: 60fb str r3, [r7, #12] - - if (deviceserial0 != 0) - 80088f4: 68fb ldr r3, [r7, #12] - 80088f6: 2b00 cmp r3, #0 - 80088f8: d009 beq.n 800890e - { - IntToUnicode(deviceserial0, &USBD_StringSerial[2], 8); - 80088fa: 2208 movs r2, #8 - 80088fc: 4909 ldr r1, [pc, #36] @ (8008924 ) - 80088fe: 68f8 ldr r0, [r7, #12] - 8008900: f000 f814 bl 800892c - IntToUnicode(deviceserial1, &USBD_StringSerial[18], 4); - 8008904: 2204 movs r2, #4 - 8008906: 4908 ldr r1, [pc, #32] @ (8008928 ) - 8008908: 68b8 ldr r0, [r7, #8] - 800890a: f000 f80f bl 800892c - } -} - 800890e: bf00 nop - 8008910: 3710 adds r7, #16 - 8008912: 46bd mov sp, r7 - 8008914: bd80 pop {r7, pc} - 8008916: bf00 nop - 8008918: 1ffff7e8 .word 0x1ffff7e8 - 800891c: 1ffff7ec .word 0x1ffff7ec - 8008920: 1ffff7f0 .word 0x1ffff7f0 - 8008924: 20000162 .word 0x20000162 - 8008928: 20000172 .word 0x20000172 - -0800892c : - * @param pbuf: pointer to the buffer - * @param len: buffer length - * @retval None - */ -static void IntToUnicode(uint32_t value, uint8_t * pbuf, uint8_t len) -{ - 800892c: b480 push {r7} - 800892e: b087 sub sp, #28 - 8008930: af00 add r7, sp, #0 - 8008932: 60f8 str r0, [r7, #12] - 8008934: 60b9 str r1, [r7, #8] - 8008936: 4613 mov r3, r2 - 8008938: 71fb strb r3, [r7, #7] - uint8_t idx = 0; - 800893a: 2300 movs r3, #0 - 800893c: 75fb strb r3, [r7, #23] - - for (idx = 0; idx < len; idx++) - 800893e: 2300 movs r3, #0 - 8008940: 75fb strb r3, [r7, #23] - 8008942: e027 b.n 8008994 - { - if (((value >> 28)) < 0xA) - 8008944: 68fb ldr r3, [r7, #12] - 8008946: 0f1b lsrs r3, r3, #28 - 8008948: 2b09 cmp r3, #9 - 800894a: d80b bhi.n 8008964 - { - pbuf[2 * idx] = (value >> 28) + '0'; - 800894c: 68fb ldr r3, [r7, #12] - 800894e: 0f1b lsrs r3, r3, #28 - 8008950: b2da uxtb r2, r3 - 8008952: 7dfb ldrb r3, [r7, #23] - 8008954: 005b lsls r3, r3, #1 - 8008956: 4619 mov r1, r3 - 8008958: 68bb ldr r3, [r7, #8] - 800895a: 440b add r3, r1 - 800895c: 3230 adds r2, #48 @ 0x30 - 800895e: b2d2 uxtb r2, r2 - 8008960: 701a strb r2, [r3, #0] - 8008962: e00a b.n 800897a - } - else - { - pbuf[2 * idx] = (value >> 28) + 'A' - 10; - 8008964: 68fb ldr r3, [r7, #12] - 8008966: 0f1b lsrs r3, r3, #28 - 8008968: b2da uxtb r2, r3 - 800896a: 7dfb ldrb r3, [r7, #23] - 800896c: 005b lsls r3, r3, #1 - 800896e: 4619 mov r1, r3 - 8008970: 68bb ldr r3, [r7, #8] - 8008972: 440b add r3, r1 - 8008974: 3237 adds r2, #55 @ 0x37 - 8008976: b2d2 uxtb r2, r2 - 8008978: 701a strb r2, [r3, #0] - } - - value = value << 4; - 800897a: 68fb ldr r3, [r7, #12] - 800897c: 011b lsls r3, r3, #4 - 800897e: 60fb str r3, [r7, #12] - - pbuf[2 * idx + 1] = 0; - 8008980: 7dfb ldrb r3, [r7, #23] - 8008982: 005b lsls r3, r3, #1 - 8008984: 3301 adds r3, #1 - 8008986: 68ba ldr r2, [r7, #8] - 8008988: 4413 add r3, r2 - 800898a: 2200 movs r2, #0 - 800898c: 701a strb r2, [r3, #0] - for (idx = 0; idx < len; idx++) - 800898e: 7dfb ldrb r3, [r7, #23] - 8008990: 3301 adds r3, #1 - 8008992: 75fb strb r3, [r7, #23] - 8008994: 7dfa ldrb r2, [r7, #23] - 8008996: 79fb ldrb r3, [r7, #7] - 8008998: 429a cmp r2, r3 - 800899a: d3d3 bcc.n 8008944 - } -} - 800899c: bf00 nop - 800899e: bf00 nop - 80089a0: 371c adds r7, #28 - 80089a2: 46bd mov sp, r7 - 80089a4: bc80 pop {r7} - 80089a6: 4770 bx lr - -080089a8 : - LL Driver Callbacks (PCD -> USB Device Library) -*******************************************************************************/ -/* MSP Init */ - -void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle) -{ - 80089a8: b580 push {r7, lr} - 80089aa: b084 sub sp, #16 - 80089ac: af00 add r7, sp, #0 - 80089ae: 6078 str r0, [r7, #4] - if(pcdHandle->Instance==USB) - 80089b0: 687b ldr r3, [r7, #4] - 80089b2: 681b ldr r3, [r3, #0] - 80089b4: 4a0d ldr r2, [pc, #52] @ (80089ec ) - 80089b6: 4293 cmp r3, r2 - 80089b8: d113 bne.n 80089e2 - { - /* USER CODE BEGIN USB_MspInit 0 */ - - /* USER CODE END USB_MspInit 0 */ - /* Peripheral clock enable */ - __HAL_RCC_USB_CLK_ENABLE(); - 80089ba: 4b0d ldr r3, [pc, #52] @ (80089f0 ) - 80089bc: 69db ldr r3, [r3, #28] - 80089be: 4a0c ldr r2, [pc, #48] @ (80089f0 ) - 80089c0: f443 0300 orr.w r3, r3, #8388608 @ 0x800000 - 80089c4: 61d3 str r3, [r2, #28] - 80089c6: 4b0a ldr r3, [pc, #40] @ (80089f0 ) - 80089c8: 69db ldr r3, [r3, #28] - 80089ca: f403 0300 and.w r3, r3, #8388608 @ 0x800000 - 80089ce: 60fb str r3, [r7, #12] - 80089d0: 68fb ldr r3, [r7, #12] - - /* Peripheral interrupt init */ - HAL_NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 0, 0); - 80089d2: 2200 movs r2, #0 - 80089d4: 2100 movs r1, #0 - 80089d6: 2014 movs r0, #20 - 80089d8: f7f8 fd1f bl 800141a - HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn); - 80089dc: 2014 movs r0, #20 - 80089de: f7f8 fd38 bl 8001452 - /* USER CODE BEGIN USB_MspInit 1 */ - - /* USER CODE END USB_MspInit 1 */ - } -} - 80089e2: bf00 nop - 80089e4: 3710 adds r7, #16 - 80089e6: 46bd mov sp, r7 - 80089e8: bd80 pop {r7, pc} - 80089ea: bf00 nop - 80089ec: 40005c00 .word 0x40005c00 - 80089f0: 40021000 .word 0x40021000 - -080089f4 : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 80089f4: b580 push {r7, lr} - 80089f6: b082 sub sp, #8 - 80089f8: af00 add r7, sp, #0 - 80089fa: 6078 str r0, [r7, #4] - USBD_LL_SetupStage((USBD_HandleTypeDef*)hpcd->pData, (uint8_t *)hpcd->Setup); - 80089fc: 687b ldr r3, [r7, #4] - 80089fe: f8d3 22d4 ldr.w r2, [r3, #724] @ 0x2d4 - 8008a02: 687b ldr r3, [r7, #4] - 8008a04: f503 7326 add.w r3, r3, #664 @ 0x298 - 8008a08: 4619 mov r1, r3 - 8008a0a: 4610 mov r0, r2 - 8008a0c: f7fe fd51 bl 80074b2 -} - 8008a10: bf00 nop - 8008a12: 3708 adds r7, #8 - 8008a14: 46bd mov sp, r7 - 8008a16: bd80 pop {r7, pc} - -08008a18 : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#else -void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 8008a18: b580 push {r7, lr} - 8008a1a: b082 sub sp, #8 - 8008a1c: af00 add r7, sp, #0 - 8008a1e: 6078 str r0, [r7, #4] - 8008a20: 460b mov r3, r1 - 8008a22: 70fb strb r3, [r7, #3] - USBD_LL_DataOutStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->OUT_ep[epnum].xfer_buff); - 8008a24: 687b ldr r3, [r7, #4] - 8008a26: f8d3 02d4 ldr.w r0, [r3, #724] @ 0x2d4 - 8008a2a: 78fa ldrb r2, [r7, #3] - 8008a2c: 6879 ldr r1, [r7, #4] - 8008a2e: 4613 mov r3, r2 - 8008a30: 009b lsls r3, r3, #2 - 8008a32: 4413 add r3, r2 - 8008a34: 00db lsls r3, r3, #3 - 8008a36: 440b add r3, r1 - 8008a38: f503 73b2 add.w r3, r3, #356 @ 0x164 - 8008a3c: 681a ldr r2, [r3, #0] - 8008a3e: 78fb ldrb r3, [r7, #3] - 8008a40: 4619 mov r1, r3 - 8008a42: f7fe fd83 bl 800754c -} - 8008a46: bf00 nop - 8008a48: 3708 adds r7, #8 - 8008a4a: 46bd mov sp, r7 - 8008a4c: bd80 pop {r7, pc} - -08008a4e : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#else -void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 8008a4e: b580 push {r7, lr} - 8008a50: b082 sub sp, #8 - 8008a52: af00 add r7, sp, #0 - 8008a54: 6078 str r0, [r7, #4] - 8008a56: 460b mov r3, r1 - 8008a58: 70fb strb r3, [r7, #3] - USBD_LL_DataInStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->IN_ep[epnum].xfer_buff); - 8008a5a: 687b ldr r3, [r7, #4] - 8008a5c: f8d3 02d4 ldr.w r0, [r3, #724] @ 0x2d4 - 8008a60: 78fa ldrb r2, [r7, #3] - 8008a62: 6879 ldr r1, [r7, #4] - 8008a64: 4613 mov r3, r2 - 8008a66: 009b lsls r3, r3, #2 - 8008a68: 4413 add r3, r2 - 8008a6a: 00db lsls r3, r3, #3 - 8008a6c: 440b add r3, r1 - 8008a6e: 3324 adds r3, #36 @ 0x24 - 8008a70: 681a ldr r2, [r3, #0] - 8008a72: 78fb ldrb r3, [r7, #3] - 8008a74: 4619 mov r1, r3 - 8008a76: f7fe fdda bl 800762e -} - 8008a7a: bf00 nop - 8008a7c: 3708 adds r7, #8 - 8008a7e: 46bd mov sp, r7 - 8008a80: bd80 pop {r7, pc} - -08008a82 : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_SOFCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 8008a82: b580 push {r7, lr} - 8008a84: b082 sub sp, #8 - 8008a86: af00 add r7, sp, #0 - 8008a88: 6078 str r0, [r7, #4] - USBD_LL_SOF((USBD_HandleTypeDef*)hpcd->pData); - 8008a8a: 687b ldr r3, [r7, #4] - 8008a8c: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 - 8008a90: 4618 mov r0, r3 - 8008a92: f7fe feea bl 800786a -} - 8008a96: bf00 nop - 8008a98: 3708 adds r7, #8 - 8008a9a: 46bd mov sp, r7 - 8008a9c: bd80 pop {r7, pc} - -08008a9e : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_ResetCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 8008a9e: b580 push {r7, lr} - 8008aa0: b084 sub sp, #16 - 8008aa2: af00 add r7, sp, #0 - 8008aa4: 6078 str r0, [r7, #4] - USBD_SpeedTypeDef speed = USBD_SPEED_FULL; - 8008aa6: 2301 movs r3, #1 - 8008aa8: 73fb strb r3, [r7, #15] - - if ( hpcd->Init.speed != PCD_SPEED_FULL) - 8008aaa: 687b ldr r3, [r7, #4] - 8008aac: 799b ldrb r3, [r3, #6] - 8008aae: 2b02 cmp r3, #2 - 8008ab0: d001 beq.n 8008ab6 - { - Error_Handler(); - 8008ab2: f7f7 ff55 bl 8000960 - } - /* Set Speed. */ - USBD_LL_SetSpeed((USBD_HandleTypeDef*)hpcd->pData, speed); - 8008ab6: 687b ldr r3, [r7, #4] - 8008ab8: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 - 8008abc: 7bfa ldrb r2, [r7, #15] - 8008abe: 4611 mov r1, r2 - 8008ac0: 4618 mov r0, r3 - 8008ac2: f7fe fe9a bl 80077fa - - /* Reset Device. */ - USBD_LL_Reset((USBD_HandleTypeDef*)hpcd->pData); - 8008ac6: 687b ldr r3, [r7, #4] - 8008ac8: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 - 8008acc: 4618 mov r0, r3 - 8008ace: f7fe fe53 bl 8007778 -} - 8008ad2: bf00 nop - 8008ad4: 3710 adds r7, #16 - 8008ad6: 46bd mov sp, r7 - 8008ad8: bd80 pop {r7, pc} - ... - -08008adc : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 8008adc: b580 push {r7, lr} - 8008ade: b082 sub sp, #8 - 8008ae0: af00 add r7, sp, #0 - 8008ae2: 6078 str r0, [r7, #4] - /* Inform USB library that core enters in suspend Mode. */ - USBD_LL_Suspend((USBD_HandleTypeDef*)hpcd->pData); - 8008ae4: 687b ldr r3, [r7, #4] - 8008ae6: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 - 8008aea: 4618 mov r0, r3 - 8008aec: f7fe fe94 bl 8007818 - /* Enter in STOP mode. */ - /* USER CODE BEGIN 2 */ - if (hpcd->Init.low_power_enable) - 8008af0: 687b ldr r3, [r7, #4] - 8008af2: 7a9b ldrb r3, [r3, #10] - 8008af4: 2b00 cmp r3, #0 - 8008af6: d005 beq.n 8008b04 - { - /* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register. */ - SCB->SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk)); - 8008af8: 4b04 ldr r3, [pc, #16] @ (8008b0c ) - 8008afa: 691b ldr r3, [r3, #16] - 8008afc: 4a03 ldr r2, [pc, #12] @ (8008b0c ) - 8008afe: f043 0306 orr.w r3, r3, #6 - 8008b02: 6113 str r3, [r2, #16] - } - /* USER CODE END 2 */ -} - 8008b04: bf00 nop - 8008b06: 3708 adds r7, #8 - 8008b08: 46bd mov sp, r7 - 8008b0a: bd80 pop {r7, pc} - 8008b0c: e000ed00 .word 0xe000ed00 - -08008b10 : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 8008b10: b580 push {r7, lr} - 8008b12: b082 sub sp, #8 - 8008b14: af00 add r7, sp, #0 - 8008b16: 6078 str r0, [r7, #4] - /* USER CODE BEGIN 3 */ - - /* USER CODE END 3 */ - USBD_LL_Resume((USBD_HandleTypeDef*)hpcd->pData); - 8008b18: 687b ldr r3, [r7, #4] - 8008b1a: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 - 8008b1e: 4618 mov r0, r3 - 8008b20: f7fe fe8e bl 8007840 -} - 8008b24: bf00 nop - 8008b26: 3708 adds r7, #8 - 8008b28: 46bd mov sp, r7 - 8008b2a: bd80 pop {r7, pc} - -08008b2c : - * @brief Initializes the low level portion of the device driver. - * @param pdev: Device handle - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev) -{ - 8008b2c: b580 push {r7, lr} - 8008b2e: b082 sub sp, #8 - 8008b30: af00 add r7, sp, #0 - 8008b32: 6078 str r0, [r7, #4] - /* Init USB Ip. */ - /* Link the driver to the stack. */ - hpcd_USB_FS.pData = pdev; - 8008b34: 4a28 ldr r2, [pc, #160] @ (8008bd8 ) - 8008b36: 687b ldr r3, [r7, #4] - 8008b38: f8c2 32d4 str.w r3, [r2, #724] @ 0x2d4 - pdev->pData = &hpcd_USB_FS; - 8008b3c: 687b ldr r3, [r7, #4] - 8008b3e: 4a26 ldr r2, [pc, #152] @ (8008bd8 ) - 8008b40: f8c3 22c0 str.w r2, [r3, #704] @ 0x2c0 - - hpcd_USB_FS.Instance = USB; - 8008b44: 4b24 ldr r3, [pc, #144] @ (8008bd8 ) - 8008b46: 4a25 ldr r2, [pc, #148] @ (8008bdc ) - 8008b48: 601a str r2, [r3, #0] - hpcd_USB_FS.Init.dev_endpoints = 8; - 8008b4a: 4b23 ldr r3, [pc, #140] @ (8008bd8 ) - 8008b4c: 2208 movs r2, #8 - 8008b4e: 711a strb r2, [r3, #4] - hpcd_USB_FS.Init.speed = PCD_SPEED_FULL; - 8008b50: 4b21 ldr r3, [pc, #132] @ (8008bd8 ) - 8008b52: 2202 movs r2, #2 - 8008b54: 719a strb r2, [r3, #6] - hpcd_USB_FS.Init.low_power_enable = DISABLE; - 8008b56: 4b20 ldr r3, [pc, #128] @ (8008bd8 ) - 8008b58: 2200 movs r2, #0 - 8008b5a: 729a strb r2, [r3, #10] - hpcd_USB_FS.Init.lpm_enable = DISABLE; - 8008b5c: 4b1e ldr r3, [pc, #120] @ (8008bd8 ) - 8008b5e: 2200 movs r2, #0 - 8008b60: 72da strb r2, [r3, #11] - hpcd_USB_FS.Init.battery_charging_enable = DISABLE; - 8008b62: 4b1d ldr r3, [pc, #116] @ (8008bd8 ) - 8008b64: 2200 movs r2, #0 - 8008b66: 731a strb r2, [r3, #12] - if (HAL_PCD_Init(&hpcd_USB_FS) != HAL_OK) - 8008b68: 481b ldr r0, [pc, #108] @ (8008bd8 ) - 8008b6a: f7f8 fe48 bl 80017fe - 8008b6e: 4603 mov r3, r0 - 8008b70: 2b00 cmp r3, #0 - 8008b72: d001 beq.n 8008b78 - { - Error_Handler( ); - 8008b74: f7f7 fef4 bl 8000960 - HAL_PCD_RegisterDataInStageCallback(&hpcd_USB_FS, PCD_DataInStageCallback); - HAL_PCD_RegisterIsoOutIncpltCallback(&hpcd_USB_FS, PCD_ISOOUTIncompleteCallback); - HAL_PCD_RegisterIsoInIncpltCallback(&hpcd_USB_FS, PCD_ISOINIncompleteCallback); -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - /* USER CODE BEGIN EndPoint_Configuration */ - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x00 , PCD_SNG_BUF, 0x18); - 8008b78: 687b ldr r3, [r7, #4] - 8008b7a: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 8008b7e: 2318 movs r3, #24 - 8008b80: 2200 movs r2, #0 - 8008b82: 2100 movs r1, #0 - 8008b84: f7fa fb59 bl 800323a - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x80 , PCD_SNG_BUF, 0x58); - 8008b88: 687b ldr r3, [r7, #4] - 8008b8a: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 8008b8e: 2358 movs r3, #88 @ 0x58 - 8008b90: 2200 movs r2, #0 - 8008b92: 2180 movs r1, #128 @ 0x80 - 8008b94: f7fa fb51 bl 800323a - /* USER CODE END EndPoint_Configuration */ - /* USER CODE BEGIN EndPoint_Configuration_CDC */ - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x81 , PCD_SNG_BUF, 0xC0); - 8008b98: 687b ldr r3, [r7, #4] - 8008b9a: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 8008b9e: 23c0 movs r3, #192 @ 0xc0 - 8008ba0: 2200 movs r2, #0 - 8008ba2: 2181 movs r1, #129 @ 0x81 - 8008ba4: f7fa fb49 bl 800323a - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x01 , PCD_SNG_BUF, 0x110); - 8008ba8: 687b ldr r3, [r7, #4] - 8008baa: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 8008bae: f44f 7388 mov.w r3, #272 @ 0x110 - 8008bb2: 2200 movs r2, #0 - 8008bb4: 2101 movs r1, #1 - 8008bb6: f7fa fb40 bl 800323a - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x82 , PCD_SNG_BUF, 0x100); - 8008bba: 687b ldr r3, [r7, #4] - 8008bbc: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 8008bc0: f44f 7380 mov.w r3, #256 @ 0x100 - 8008bc4: 2200 movs r2, #0 - 8008bc6: 2182 movs r1, #130 @ 0x82 - 8008bc8: f7fa fb37 bl 800323a - /* USER CODE END EndPoint_Configuration_CDC */ - return USBD_OK; - 8008bcc: 2300 movs r3, #0 -} - 8008bce: 4618 mov r0, r3 - 8008bd0: 3708 adds r7, #8 - 8008bd2: 46bd mov sp, r7 - 8008bd4: bd80 pop {r7, pc} - 8008bd6: bf00 nop - 8008bd8: 20001110 .word 0x20001110 - 8008bdc: 40005c00 .word 0x40005c00 - -08008be0 : - * @brief Starts the low level portion of the device driver. - * @param pdev: Device handle - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev) -{ - 8008be0: b580 push {r7, lr} - 8008be2: b084 sub sp, #16 - 8008be4: af00 add r7, sp, #0 - 8008be6: 6078 str r0, [r7, #4] - HAL_StatusTypeDef hal_status = HAL_OK; - 8008be8: 2300 movs r3, #0 - 8008bea: 73fb strb r3, [r7, #15] - USBD_StatusTypeDef usb_status = USBD_OK; - 8008bec: 2300 movs r3, #0 - 8008bee: 73bb strb r3, [r7, #14] - - hal_status = HAL_PCD_Start(pdev->pData); - 8008bf0: 687b ldr r3, [r7, #4] - 8008bf2: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 8008bf6: 4618 mov r0, r3 - 8008bf8: f7f8 fef7 bl 80019ea - 8008bfc: 4603 mov r3, r0 - 8008bfe: 73fb strb r3, [r7, #15] - - usb_status = USBD_Get_USB_Status(hal_status); - 8008c00: 7bfb ldrb r3, [r7, #15] - 8008c02: 4618 mov r0, r3 - 8008c04: f000 f94e bl 8008ea4 - 8008c08: 4603 mov r3, r0 - 8008c0a: 73bb strb r3, [r7, #14] - - return usb_status; - 8008c0c: 7bbb ldrb r3, [r7, #14] -} - 8008c0e: 4618 mov r0, r3 - 8008c10: 3710 adds r7, #16 - 8008c12: 46bd mov sp, r7 - 8008c14: bd80 pop {r7, pc} - -08008c16 : - * @param ep_type: Endpoint type - * @param ep_mps: Endpoint max packet size - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps) -{ - 8008c16: b580 push {r7, lr} - 8008c18: b084 sub sp, #16 - 8008c1a: af00 add r7, sp, #0 - 8008c1c: 6078 str r0, [r7, #4] - 8008c1e: 4608 mov r0, r1 - 8008c20: 4611 mov r1, r2 - 8008c22: 461a mov r2, r3 - 8008c24: 4603 mov r3, r0 - 8008c26: 70fb strb r3, [r7, #3] - 8008c28: 460b mov r3, r1 - 8008c2a: 70bb strb r3, [r7, #2] - 8008c2c: 4613 mov r3, r2 - 8008c2e: 803b strh r3, [r7, #0] - HAL_StatusTypeDef hal_status = HAL_OK; - 8008c30: 2300 movs r3, #0 - 8008c32: 73fb strb r3, [r7, #15] - USBD_StatusTypeDef usb_status = USBD_OK; - 8008c34: 2300 movs r3, #0 - 8008c36: 73bb strb r3, [r7, #14] - - hal_status = HAL_PCD_EP_Open(pdev->pData, ep_addr, ep_mps, ep_type); - 8008c38: 687b ldr r3, [r7, #4] - 8008c3a: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 8008c3e: 78bb ldrb r3, [r7, #2] - 8008c40: 883a ldrh r2, [r7, #0] - 8008c42: 78f9 ldrb r1, [r7, #3] - 8008c44: f7f9 f84b bl 8001cde - 8008c48: 4603 mov r3, r0 - 8008c4a: 73fb strb r3, [r7, #15] - - usb_status = USBD_Get_USB_Status(hal_status); - 8008c4c: 7bfb ldrb r3, [r7, #15] - 8008c4e: 4618 mov r0, r3 - 8008c50: f000 f928 bl 8008ea4 - 8008c54: 4603 mov r3, r0 - 8008c56: 73bb strb r3, [r7, #14] - - return usb_status; - 8008c58: 7bbb ldrb r3, [r7, #14] -} - 8008c5a: 4618 mov r0, r3 - 8008c5c: 3710 adds r7, #16 - 8008c5e: 46bd mov sp, r7 - 8008c60: bd80 pop {r7, pc} - -08008c62 : - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - 8008c62: b580 push {r7, lr} - 8008c64: b084 sub sp, #16 - 8008c66: af00 add r7, sp, #0 - 8008c68: 6078 str r0, [r7, #4] - 8008c6a: 460b mov r3, r1 - 8008c6c: 70fb strb r3, [r7, #3] - HAL_StatusTypeDef hal_status = HAL_OK; - 8008c6e: 2300 movs r3, #0 - 8008c70: 73fb strb r3, [r7, #15] - USBD_StatusTypeDef usb_status = USBD_OK; - 8008c72: 2300 movs r3, #0 - 8008c74: 73bb strb r3, [r7, #14] - - hal_status = HAL_PCD_EP_Close(pdev->pData, ep_addr); - 8008c76: 687b ldr r3, [r7, #4] - 8008c78: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 8008c7c: 78fa ldrb r2, [r7, #3] - 8008c7e: 4611 mov r1, r2 - 8008c80: 4618 mov r0, r3 - 8008c82: f7f9 f889 bl 8001d98 - 8008c86: 4603 mov r3, r0 - 8008c88: 73fb strb r3, [r7, #15] - - usb_status = USBD_Get_USB_Status(hal_status); - 8008c8a: 7bfb ldrb r3, [r7, #15] - 8008c8c: 4618 mov r0, r3 - 8008c8e: f000 f909 bl 8008ea4 - 8008c92: 4603 mov r3, r0 - 8008c94: 73bb strb r3, [r7, #14] - - return usb_status; - 8008c96: 7bbb ldrb r3, [r7, #14] -} - 8008c98: 4618 mov r0, r3 - 8008c9a: 3710 adds r7, #16 - 8008c9c: 46bd mov sp, r7 - 8008c9e: bd80 pop {r7, pc} - -08008ca0 : - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - 8008ca0: b580 push {r7, lr} - 8008ca2: b084 sub sp, #16 - 8008ca4: af00 add r7, sp, #0 - 8008ca6: 6078 str r0, [r7, #4] - 8008ca8: 460b mov r3, r1 - 8008caa: 70fb strb r3, [r7, #3] - HAL_StatusTypeDef hal_status = HAL_OK; - 8008cac: 2300 movs r3, #0 - 8008cae: 73fb strb r3, [r7, #15] - USBD_StatusTypeDef usb_status = USBD_OK; - 8008cb0: 2300 movs r3, #0 - 8008cb2: 73bb strb r3, [r7, #14] - - hal_status = HAL_PCD_EP_SetStall(pdev->pData, ep_addr); - 8008cb4: 687b ldr r3, [r7, #4] - 8008cb6: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 8008cba: 78fa ldrb r2, [r7, #3] - 8008cbc: 4611 mov r1, r2 - 8008cbe: 4618 mov r0, r3 - 8008cc0: f7f9 f931 bl 8001f26 - 8008cc4: 4603 mov r3, r0 - 8008cc6: 73fb strb r3, [r7, #15] - - usb_status = USBD_Get_USB_Status(hal_status); - 8008cc8: 7bfb ldrb r3, [r7, #15] - 8008cca: 4618 mov r0, r3 - 8008ccc: f000 f8ea bl 8008ea4 - 8008cd0: 4603 mov r3, r0 - 8008cd2: 73bb strb r3, [r7, #14] - - return usb_status; - 8008cd4: 7bbb ldrb r3, [r7, #14] -} - 8008cd6: 4618 mov r0, r3 - 8008cd8: 3710 adds r7, #16 - 8008cda: 46bd mov sp, r7 - 8008cdc: bd80 pop {r7, pc} - -08008cde : - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - 8008cde: b580 push {r7, lr} - 8008ce0: b084 sub sp, #16 - 8008ce2: af00 add r7, sp, #0 - 8008ce4: 6078 str r0, [r7, #4] - 8008ce6: 460b mov r3, r1 - 8008ce8: 70fb strb r3, [r7, #3] - HAL_StatusTypeDef hal_status = HAL_OK; - 8008cea: 2300 movs r3, #0 - 8008cec: 73fb strb r3, [r7, #15] - USBD_StatusTypeDef usb_status = USBD_OK; - 8008cee: 2300 movs r3, #0 - 8008cf0: 73bb strb r3, [r7, #14] - - hal_status = HAL_PCD_EP_ClrStall(pdev->pData, ep_addr); - 8008cf2: 687b ldr r3, [r7, #4] - 8008cf4: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 8008cf8: 78fa ldrb r2, [r7, #3] - 8008cfa: 4611 mov r1, r2 - 8008cfc: 4618 mov r0, r3 - 8008cfe: f7f9 f972 bl 8001fe6 - 8008d02: 4603 mov r3, r0 - 8008d04: 73fb strb r3, [r7, #15] - - usb_status = USBD_Get_USB_Status(hal_status); - 8008d06: 7bfb ldrb r3, [r7, #15] - 8008d08: 4618 mov r0, r3 - 8008d0a: f000 f8cb bl 8008ea4 - 8008d0e: 4603 mov r3, r0 - 8008d10: 73bb strb r3, [r7, #14] - - return usb_status; - 8008d12: 7bbb ldrb r3, [r7, #14] -} - 8008d14: 4618 mov r0, r3 - 8008d16: 3710 adds r7, #16 - 8008d18: 46bd mov sp, r7 - 8008d1a: bd80 pop {r7, pc} - -08008d1c : - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval Stall (1: Yes, 0: No) - */ -uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - 8008d1c: b480 push {r7} - 8008d1e: b085 sub sp, #20 - 8008d20: af00 add r7, sp, #0 - 8008d22: 6078 str r0, [r7, #4] - 8008d24: 460b mov r3, r1 - 8008d26: 70fb strb r3, [r7, #3] - PCD_HandleTypeDef *hpcd = (PCD_HandleTypeDef*) pdev->pData; - 8008d28: 687b ldr r3, [r7, #4] - 8008d2a: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 8008d2e: 60fb str r3, [r7, #12] - - if((ep_addr & 0x80) == 0x80) - 8008d30: f997 3003 ldrsb.w r3, [r7, #3] - 8008d34: 2b00 cmp r3, #0 - 8008d36: da0b bge.n 8008d50 - { - return hpcd->IN_ep[ep_addr & 0x7F].is_stall; - 8008d38: 78fb ldrb r3, [r7, #3] - 8008d3a: f003 027f and.w r2, r3, #127 @ 0x7f - 8008d3e: 68f9 ldr r1, [r7, #12] - 8008d40: 4613 mov r3, r2 - 8008d42: 009b lsls r3, r3, #2 - 8008d44: 4413 add r3, r2 - 8008d46: 00db lsls r3, r3, #3 - 8008d48: 440b add r3, r1 - 8008d4a: 3312 adds r3, #18 - 8008d4c: 781b ldrb r3, [r3, #0] - 8008d4e: e00b b.n 8008d68 - } - else - { - return hpcd->OUT_ep[ep_addr & 0x7F].is_stall; - 8008d50: 78fb ldrb r3, [r7, #3] - 8008d52: f003 027f and.w r2, r3, #127 @ 0x7f - 8008d56: 68f9 ldr r1, [r7, #12] - 8008d58: 4613 mov r3, r2 - 8008d5a: 009b lsls r3, r3, #2 - 8008d5c: 4413 add r3, r2 - 8008d5e: 00db lsls r3, r3, #3 - 8008d60: 440b add r3, r1 - 8008d62: f503 73a9 add.w r3, r3, #338 @ 0x152 - 8008d66: 781b ldrb r3, [r3, #0] - } -} - 8008d68: 4618 mov r0, r3 - 8008d6a: 3714 adds r7, #20 - 8008d6c: 46bd mov sp, r7 - 8008d6e: bc80 pop {r7} - 8008d70: 4770 bx lr - -08008d72 : - * @param pdev: Device handle - * @param dev_addr: Device address - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr) -{ - 8008d72: b580 push {r7, lr} - 8008d74: b084 sub sp, #16 - 8008d76: af00 add r7, sp, #0 - 8008d78: 6078 str r0, [r7, #4] - 8008d7a: 460b mov r3, r1 - 8008d7c: 70fb strb r3, [r7, #3] - HAL_StatusTypeDef hal_status = HAL_OK; - 8008d7e: 2300 movs r3, #0 - 8008d80: 73fb strb r3, [r7, #15] - USBD_StatusTypeDef usb_status = USBD_OK; - 8008d82: 2300 movs r3, #0 - 8008d84: 73bb strb r3, [r7, #14] - - hal_status = HAL_PCD_SetAddress(pdev->pData, dev_addr); - 8008d86: 687b ldr r3, [r7, #4] - 8008d88: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 8008d8c: 78fa ldrb r2, [r7, #3] - 8008d8e: 4611 mov r1, r2 - 8008d90: 4618 mov r0, r3 - 8008d92: f7f8 ff80 bl 8001c96 - 8008d96: 4603 mov r3, r0 - 8008d98: 73fb strb r3, [r7, #15] - - usb_status = USBD_Get_USB_Status(hal_status); - 8008d9a: 7bfb ldrb r3, [r7, #15] - 8008d9c: 4618 mov r0, r3 - 8008d9e: f000 f881 bl 8008ea4 - 8008da2: 4603 mov r3, r0 - 8008da4: 73bb strb r3, [r7, #14] - - return usb_status; - 8008da6: 7bbb ldrb r3, [r7, #14] -} - 8008da8: 4618 mov r0, r3 - 8008daa: 3710 adds r7, #16 - 8008dac: 46bd mov sp, r7 - 8008dae: bd80 pop {r7, pc} - -08008db0 : - * @param pbuf: Pointer to data to be sent - * @param size: Data size - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) -{ - 8008db0: b580 push {r7, lr} - 8008db2: b086 sub sp, #24 - 8008db4: af00 add r7, sp, #0 - 8008db6: 60f8 str r0, [r7, #12] - 8008db8: 607a str r2, [r7, #4] - 8008dba: 461a mov r2, r3 - 8008dbc: 460b mov r3, r1 - 8008dbe: 72fb strb r3, [r7, #11] - 8008dc0: 4613 mov r3, r2 - 8008dc2: 813b strh r3, [r7, #8] - HAL_StatusTypeDef hal_status = HAL_OK; - 8008dc4: 2300 movs r3, #0 - 8008dc6: 75fb strb r3, [r7, #23] - USBD_StatusTypeDef usb_status = USBD_OK; - 8008dc8: 2300 movs r3, #0 - 8008dca: 75bb strb r3, [r7, #22] - - hal_status = HAL_PCD_EP_Transmit(pdev->pData, ep_addr, pbuf, size); - 8008dcc: 68fb ldr r3, [r7, #12] - 8008dce: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 8008dd2: 893b ldrh r3, [r7, #8] - 8008dd4: 7af9 ldrb r1, [r7, #11] - 8008dd6: 687a ldr r2, [r7, #4] - 8008dd8: f7f9 f86e bl 8001eb8 - 8008ddc: 4603 mov r3, r0 - 8008dde: 75fb strb r3, [r7, #23] - - usb_status = USBD_Get_USB_Status(hal_status); - 8008de0: 7dfb ldrb r3, [r7, #23] - 8008de2: 4618 mov r0, r3 - 8008de4: f000 f85e bl 8008ea4 - 8008de8: 4603 mov r3, r0 - 8008dea: 75bb strb r3, [r7, #22] - - return usb_status; - 8008dec: 7dbb ldrb r3, [r7, #22] -} - 8008dee: 4618 mov r0, r3 - 8008df0: 3718 adds r7, #24 - 8008df2: 46bd mov sp, r7 - 8008df4: bd80 pop {r7, pc} - -08008df6 : - * @param pbuf: Pointer to data to be received - * @param size: Data size - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) -{ - 8008df6: b580 push {r7, lr} - 8008df8: b086 sub sp, #24 - 8008dfa: af00 add r7, sp, #0 - 8008dfc: 60f8 str r0, [r7, #12] - 8008dfe: 607a str r2, [r7, #4] - 8008e00: 461a mov r2, r3 - 8008e02: 460b mov r3, r1 - 8008e04: 72fb strb r3, [r7, #11] - 8008e06: 4613 mov r3, r2 - 8008e08: 813b strh r3, [r7, #8] - HAL_StatusTypeDef hal_status = HAL_OK; - 8008e0a: 2300 movs r3, #0 - 8008e0c: 75fb strb r3, [r7, #23] - USBD_StatusTypeDef usb_status = USBD_OK; - 8008e0e: 2300 movs r3, #0 - 8008e10: 75bb strb r3, [r7, #22] - - hal_status = HAL_PCD_EP_Receive(pdev->pData, ep_addr, pbuf, size); - 8008e12: 68fb ldr r3, [r7, #12] - 8008e14: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 8008e18: 893b ldrh r3, [r7, #8] - 8008e1a: 7af9 ldrb r1, [r7, #11] - 8008e1c: 687a ldr r2, [r7, #4] - 8008e1e: f7f9 f803 bl 8001e28 - 8008e22: 4603 mov r3, r0 - 8008e24: 75fb strb r3, [r7, #23] - - usb_status = USBD_Get_USB_Status(hal_status); - 8008e26: 7dfb ldrb r3, [r7, #23] - 8008e28: 4618 mov r0, r3 - 8008e2a: f000 f83b bl 8008ea4 - 8008e2e: 4603 mov r3, r0 - 8008e30: 75bb strb r3, [r7, #22] - - return usb_status; - 8008e32: 7dbb ldrb r3, [r7, #22] -} - 8008e34: 4618 mov r0, r3 - 8008e36: 3718 adds r7, #24 - 8008e38: 46bd mov sp, r7 - 8008e3a: bd80 pop {r7, pc} - -08008e3c : - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval Received Data Size - */ -uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - 8008e3c: b580 push {r7, lr} - 8008e3e: b082 sub sp, #8 - 8008e40: af00 add r7, sp, #0 - 8008e42: 6078 str r0, [r7, #4] - 8008e44: 460b mov r3, r1 - 8008e46: 70fb strb r3, [r7, #3] - return HAL_PCD_EP_GetRxCount((PCD_HandleTypeDef*) pdev->pData, ep_addr); - 8008e48: 687b ldr r3, [r7, #4] - 8008e4a: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 8008e4e: 78fa ldrb r2, [r7, #3] - 8008e50: 4611 mov r1, r2 - 8008e52: 4618 mov r0, r3 - 8008e54: f7f9 f819 bl 8001e8a - 8008e58: 4603 mov r3, r0 -} - 8008e5a: 4618 mov r0, r3 - 8008e5c: 3708 adds r7, #8 - 8008e5e: 46bd mov sp, r7 - 8008e60: bd80 pop {r7, pc} - ... - -08008e64 : - * @brief Static single allocation. - * @param size: Size of allocated memory - * @retval None - */ -void *USBD_static_malloc(uint32_t size) -{ - 8008e64: b480 push {r7} - 8008e66: b083 sub sp, #12 - 8008e68: af00 add r7, sp, #0 - 8008e6a: 6078 str r0, [r7, #4] - static uint32_t mem[(sizeof(USBD_CDC_HandleTypeDef)/4)+1];/* On 32-bit boundary */ - return mem; - 8008e6c: 4b02 ldr r3, [pc, #8] @ (8008e78 ) -} - 8008e6e: 4618 mov r0, r3 - 8008e70: 370c adds r7, #12 - 8008e72: 46bd mov sp, r7 - 8008e74: bc80 pop {r7} - 8008e76: 4770 bx lr - 8008e78: 200013e8 .word 0x200013e8 - -08008e7c : - * @brief Dummy memory free - * @param p: Pointer to allocated memory address - * @retval None - */ -void USBD_static_free(void *p) -{ - 8008e7c: b480 push {r7} - 8008e7e: b083 sub sp, #12 - 8008e80: af00 add r7, sp, #0 - 8008e82: 6078 str r0, [r7, #4] - -} - 8008e84: bf00 nop - 8008e86: 370c adds r7, #12 - 8008e88: 46bd mov sp, r7 - 8008e8a: bc80 pop {r7} - 8008e8c: 4770 bx lr - -08008e8e : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) -#else -void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 8008e8e: b480 push {r7} - 8008e90: b083 sub sp, #12 - 8008e92: af00 add r7, sp, #0 - 8008e94: 6078 str r0, [r7, #4] - 8008e96: 460b mov r3, r1 - 8008e98: 70fb strb r3, [r7, #3] - { - /* Configure High connection state. */ - - } - /* USER CODE END 6 */ -} - 8008e9a: bf00 nop - 8008e9c: 370c adds r7, #12 - 8008e9e: 46bd mov sp, r7 - 8008ea0: bc80 pop {r7} - 8008ea2: 4770 bx lr - -08008ea4 : - * @brief Returns the USB status depending on the HAL status: - * @param hal_status: HAL status - * @retval USB status - */ -USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status) -{ - 8008ea4: b480 push {r7} - 8008ea6: b085 sub sp, #20 - 8008ea8: af00 add r7, sp, #0 - 8008eaa: 4603 mov r3, r0 - 8008eac: 71fb strb r3, [r7, #7] - USBD_StatusTypeDef usb_status = USBD_OK; - 8008eae: 2300 movs r3, #0 - 8008eb0: 73fb strb r3, [r7, #15] - - switch (hal_status) - 8008eb2: 79fb ldrb r3, [r7, #7] - 8008eb4: 2b03 cmp r3, #3 - 8008eb6: d817 bhi.n 8008ee8 - 8008eb8: a201 add r2, pc, #4 @ (adr r2, 8008ec0 ) - 8008eba: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8008ebe: bf00 nop - 8008ec0: 08008ed1 .word 0x08008ed1 - 8008ec4: 08008ed7 .word 0x08008ed7 - 8008ec8: 08008edd .word 0x08008edd - 8008ecc: 08008ee3 .word 0x08008ee3 - { - case HAL_OK : - usb_status = USBD_OK; - 8008ed0: 2300 movs r3, #0 - 8008ed2: 73fb strb r3, [r7, #15] - break; - 8008ed4: e00b b.n 8008eee - case HAL_ERROR : - usb_status = USBD_FAIL; - 8008ed6: 2302 movs r3, #2 - 8008ed8: 73fb strb r3, [r7, #15] - break; - 8008eda: e008 b.n 8008eee - case HAL_BUSY : - usb_status = USBD_BUSY; - 8008edc: 2301 movs r3, #1 - 8008ede: 73fb strb r3, [r7, #15] - break; - 8008ee0: e005 b.n 8008eee - case HAL_TIMEOUT : - usb_status = USBD_FAIL; - 8008ee2: 2302 movs r3, #2 - 8008ee4: 73fb strb r3, [r7, #15] - break; - 8008ee6: e002 b.n 8008eee - default : - usb_status = USBD_FAIL; - 8008ee8: 2302 movs r3, #2 - 8008eea: 73fb strb r3, [r7, #15] - break; - 8008eec: bf00 nop - } - return usb_status; - 8008eee: 7bfb ldrb r3, [r7, #15] -} - 8008ef0: 4618 mov r0, r3 - 8008ef2: 3714 adds r7, #20 - 8008ef4: 46bd mov sp, r7 - 8008ef6: bc80 pop {r7} - 8008ef8: 4770 bx lr - 8008efa: bf00 nop - -08008efc : - 8008efc: b40e push {r1, r2, r3} - 8008efe: f06f 4100 mvn.w r1, #2147483648 @ 0x80000000 - 8008f02: b510 push {r4, lr} - 8008f04: 2400 movs r4, #0 - 8008f06: b09d sub sp, #116 @ 0x74 - 8008f08: ab1f add r3, sp, #124 @ 0x7c - 8008f0a: 9002 str r0, [sp, #8] - 8008f0c: 9006 str r0, [sp, #24] - 8008f0e: 9107 str r1, [sp, #28] - 8008f10: 9104 str r1, [sp, #16] - 8008f12: 4809 ldr r0, [pc, #36] @ (8008f38 ) - 8008f14: 4909 ldr r1, [pc, #36] @ (8008f3c ) - 8008f16: f853 2b04 ldr.w r2, [r3], #4 - 8008f1a: 9105 str r1, [sp, #20] - 8008f1c: 6800 ldr r0, [r0, #0] - 8008f1e: a902 add r1, sp, #8 - 8008f20: 9301 str r3, [sp, #4] - 8008f22: 941b str r4, [sp, #108] @ 0x6c - 8008f24: f000 f992 bl 800924c <_svfiprintf_r> - 8008f28: 9b02 ldr r3, [sp, #8] - 8008f2a: 701c strb r4, [r3, #0] - 8008f2c: b01d add sp, #116 @ 0x74 - 8008f2e: e8bd 4010 ldmia.w sp!, {r4, lr} - 8008f32: b003 add sp, #12 - 8008f34: 4770 bx lr - 8008f36: bf00 nop - 8008f38: 2000017c .word 0x2000017c - 8008f3c: ffff0208 .word 0xffff0208 - -08008f40 : - 8008f40: 4603 mov r3, r0 - 8008f42: 4402 add r2, r0 - 8008f44: 4293 cmp r3, r2 - 8008f46: d100 bne.n 8008f4a - 8008f48: 4770 bx lr - 8008f4a: f803 1b01 strb.w r1, [r3], #1 - 8008f4e: e7f9 b.n 8008f44 - -08008f50 <__errno>: - 8008f50: 4b01 ldr r3, [pc, #4] @ (8008f58 <__errno+0x8>) - 8008f52: 6818 ldr r0, [r3, #0] - 8008f54: 4770 bx lr - 8008f56: bf00 nop - 8008f58: 2000017c .word 0x2000017c - -08008f5c <__libc_init_array>: - 8008f5c: b570 push {r4, r5, r6, lr} - 8008f5e: 2600 movs r6, #0 - 8008f60: 4d0c ldr r5, [pc, #48] @ (8008f94 <__libc_init_array+0x38>) - 8008f62: 4c0d ldr r4, [pc, #52] @ (8008f98 <__libc_init_array+0x3c>) - 8008f64: 1b64 subs r4, r4, r5 - 8008f66: 10a4 asrs r4, r4, #2 - 8008f68: 42a6 cmp r6, r4 - 8008f6a: d109 bne.n 8008f80 <__libc_init_array+0x24> - 8008f6c: f000 fc76 bl 800985c <_init> - 8008f70: 2600 movs r6, #0 - 8008f72: 4d0a ldr r5, [pc, #40] @ (8008f9c <__libc_init_array+0x40>) - 8008f74: 4c0a ldr r4, [pc, #40] @ (8008fa0 <__libc_init_array+0x44>) - 8008f76: 1b64 subs r4, r4, r5 - 8008f78: 10a4 asrs r4, r4, #2 - 8008f7a: 42a6 cmp r6, r4 - 8008f7c: d105 bne.n 8008f8a <__libc_init_array+0x2e> - 8008f7e: bd70 pop {r4, r5, r6, pc} - 8008f80: f855 3b04 ldr.w r3, [r5], #4 - 8008f84: 4798 blx r3 - 8008f86: 3601 adds r6, #1 - 8008f88: e7ee b.n 8008f68 <__libc_init_array+0xc> - 8008f8a: f855 3b04 ldr.w r3, [r5], #4 - 8008f8e: 4798 blx r3 - 8008f90: 3601 adds r6, #1 - 8008f92: e7f2 b.n 8008f7a <__libc_init_array+0x1e> - 8008f94: 08009924 .word 0x08009924 - 8008f98: 08009924 .word 0x08009924 - 8008f9c: 08009924 .word 0x08009924 - 8008fa0: 08009928 .word 0x08009928 - -08008fa4 <__retarget_lock_acquire_recursive>: - 8008fa4: 4770 bx lr - -08008fa6 <__retarget_lock_release_recursive>: - 8008fa6: 4770 bx lr - -08008fa8 <_free_r>: - 8008fa8: b538 push {r3, r4, r5, lr} - 8008faa: 4605 mov r5, r0 - 8008fac: 2900 cmp r1, #0 - 8008fae: d040 beq.n 8009032 <_free_r+0x8a> - 8008fb0: f851 3c04 ldr.w r3, [r1, #-4] - 8008fb4: 1f0c subs r4, r1, #4 - 8008fb6: 2b00 cmp r3, #0 - 8008fb8: bfb8 it lt - 8008fba: 18e4 addlt r4, r4, r3 - 8008fbc: f000 f8de bl 800917c <__malloc_lock> - 8008fc0: 4a1c ldr r2, [pc, #112] @ (8009034 <_free_r+0x8c>) - 8008fc2: 6813 ldr r3, [r2, #0] - 8008fc4: b933 cbnz r3, 8008fd4 <_free_r+0x2c> - 8008fc6: 6063 str r3, [r4, #4] - 8008fc8: 6014 str r4, [r2, #0] - 8008fca: 4628 mov r0, r5 - 8008fcc: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 8008fd0: f000 b8da b.w 8009188 <__malloc_unlock> - 8008fd4: 42a3 cmp r3, r4 - 8008fd6: d908 bls.n 8008fea <_free_r+0x42> - 8008fd8: 6820 ldr r0, [r4, #0] - 8008fda: 1821 adds r1, r4, r0 - 8008fdc: 428b cmp r3, r1 - 8008fde: bf01 itttt eq - 8008fe0: 6819 ldreq r1, [r3, #0] - 8008fe2: 685b ldreq r3, [r3, #4] - 8008fe4: 1809 addeq r1, r1, r0 - 8008fe6: 6021 streq r1, [r4, #0] - 8008fe8: e7ed b.n 8008fc6 <_free_r+0x1e> - 8008fea: 461a mov r2, r3 - 8008fec: 685b ldr r3, [r3, #4] - 8008fee: b10b cbz r3, 8008ff4 <_free_r+0x4c> - 8008ff0: 42a3 cmp r3, r4 - 8008ff2: d9fa bls.n 8008fea <_free_r+0x42> - 8008ff4: 6811 ldr r1, [r2, #0] - 8008ff6: 1850 adds r0, r2, r1 - 8008ff8: 42a0 cmp r0, r4 - 8008ffa: d10b bne.n 8009014 <_free_r+0x6c> - 8008ffc: 6820 ldr r0, [r4, #0] - 8008ffe: 4401 add r1, r0 - 8009000: 1850 adds r0, r2, r1 - 8009002: 4283 cmp r3, r0 - 8009004: 6011 str r1, [r2, #0] - 8009006: d1e0 bne.n 8008fca <_free_r+0x22> - 8009008: 6818 ldr r0, [r3, #0] - 800900a: 685b ldr r3, [r3, #4] - 800900c: 4408 add r0, r1 - 800900e: 6010 str r0, [r2, #0] - 8009010: 6053 str r3, [r2, #4] - 8009012: e7da b.n 8008fca <_free_r+0x22> - 8009014: d902 bls.n 800901c <_free_r+0x74> - 8009016: 230c movs r3, #12 - 8009018: 602b str r3, [r5, #0] - 800901a: e7d6 b.n 8008fca <_free_r+0x22> - 800901c: 6820 ldr r0, [r4, #0] - 800901e: 1821 adds r1, r4, r0 - 8009020: 428b cmp r3, r1 - 8009022: bf01 itttt eq - 8009024: 6819 ldreq r1, [r3, #0] - 8009026: 685b ldreq r3, [r3, #4] - 8009028: 1809 addeq r1, r1, r0 - 800902a: 6021 streq r1, [r4, #0] - 800902c: 6063 str r3, [r4, #4] - 800902e: 6054 str r4, [r2, #4] - 8009030: e7cb b.n 8008fca <_free_r+0x22> - 8009032: bd38 pop {r3, r4, r5, pc} - 8009034: 2000174c .word 0x2000174c - -08009038 : - 8009038: b570 push {r4, r5, r6, lr} - 800903a: 4e0f ldr r6, [pc, #60] @ (8009078 ) - 800903c: 460c mov r4, r1 - 800903e: 6831 ldr r1, [r6, #0] - 8009040: 4605 mov r5, r0 - 8009042: b911 cbnz r1, 800904a - 8009044: f000 fba8 bl 8009798 <_sbrk_r> - 8009048: 6030 str r0, [r6, #0] - 800904a: 4621 mov r1, r4 - 800904c: 4628 mov r0, r5 - 800904e: f000 fba3 bl 8009798 <_sbrk_r> - 8009052: 1c43 adds r3, r0, #1 - 8009054: d103 bne.n 800905e - 8009056: f04f 34ff mov.w r4, #4294967295 - 800905a: 4620 mov r0, r4 - 800905c: bd70 pop {r4, r5, r6, pc} - 800905e: 1cc4 adds r4, r0, #3 - 8009060: f024 0403 bic.w r4, r4, #3 - 8009064: 42a0 cmp r0, r4 - 8009066: d0f8 beq.n 800905a - 8009068: 1a21 subs r1, r4, r0 - 800906a: 4628 mov r0, r5 - 800906c: f000 fb94 bl 8009798 <_sbrk_r> - 8009070: 3001 adds r0, #1 - 8009072: d1f2 bne.n 800905a - 8009074: e7ef b.n 8009056 - 8009076: bf00 nop - 8009078: 20001748 .word 0x20001748 - -0800907c <_malloc_r>: - 800907c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 8009080: 1ccd adds r5, r1, #3 - 8009082: f025 0503 bic.w r5, r5, #3 - 8009086: 3508 adds r5, #8 - 8009088: 2d0c cmp r5, #12 - 800908a: bf38 it cc - 800908c: 250c movcc r5, #12 - 800908e: 2d00 cmp r5, #0 - 8009090: 4606 mov r6, r0 - 8009092: db01 blt.n 8009098 <_malloc_r+0x1c> - 8009094: 42a9 cmp r1, r5 - 8009096: d904 bls.n 80090a2 <_malloc_r+0x26> - 8009098: 230c movs r3, #12 - 800909a: 6033 str r3, [r6, #0] - 800909c: 2000 movs r0, #0 - 800909e: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 80090a2: f8df 80d4 ldr.w r8, [pc, #212] @ 8009178 <_malloc_r+0xfc> - 80090a6: f000 f869 bl 800917c <__malloc_lock> - 80090aa: f8d8 3000 ldr.w r3, [r8] - 80090ae: 461c mov r4, r3 - 80090b0: bb44 cbnz r4, 8009104 <_malloc_r+0x88> - 80090b2: 4629 mov r1, r5 - 80090b4: 4630 mov r0, r6 - 80090b6: f7ff ffbf bl 8009038 - 80090ba: 1c43 adds r3, r0, #1 - 80090bc: 4604 mov r4, r0 - 80090be: d158 bne.n 8009172 <_malloc_r+0xf6> - 80090c0: f8d8 4000 ldr.w r4, [r8] - 80090c4: 4627 mov r7, r4 - 80090c6: 2f00 cmp r7, #0 - 80090c8: d143 bne.n 8009152 <_malloc_r+0xd6> - 80090ca: 2c00 cmp r4, #0 - 80090cc: d04b beq.n 8009166 <_malloc_r+0xea> - 80090ce: 6823 ldr r3, [r4, #0] - 80090d0: 4639 mov r1, r7 - 80090d2: 4630 mov r0, r6 - 80090d4: eb04 0903 add.w r9, r4, r3 - 80090d8: f000 fb5e bl 8009798 <_sbrk_r> - 80090dc: 4581 cmp r9, r0 - 80090de: d142 bne.n 8009166 <_malloc_r+0xea> - 80090e0: 6821 ldr r1, [r4, #0] - 80090e2: 4630 mov r0, r6 - 80090e4: 1a6d subs r5, r5, r1 - 80090e6: 4629 mov r1, r5 - 80090e8: f7ff ffa6 bl 8009038 - 80090ec: 3001 adds r0, #1 - 80090ee: d03a beq.n 8009166 <_malloc_r+0xea> - 80090f0: 6823 ldr r3, [r4, #0] - 80090f2: 442b add r3, r5 - 80090f4: 6023 str r3, [r4, #0] - 80090f6: f8d8 3000 ldr.w r3, [r8] - 80090fa: 685a ldr r2, [r3, #4] - 80090fc: bb62 cbnz r2, 8009158 <_malloc_r+0xdc> - 80090fe: f8c8 7000 str.w r7, [r8] - 8009102: e00f b.n 8009124 <_malloc_r+0xa8> - 8009104: 6822 ldr r2, [r4, #0] - 8009106: 1b52 subs r2, r2, r5 - 8009108: d420 bmi.n 800914c <_malloc_r+0xd0> - 800910a: 2a0b cmp r2, #11 - 800910c: d917 bls.n 800913e <_malloc_r+0xc2> - 800910e: 1961 adds r1, r4, r5 - 8009110: 42a3 cmp r3, r4 - 8009112: 6025 str r5, [r4, #0] - 8009114: bf18 it ne - 8009116: 6059 strne r1, [r3, #4] - 8009118: 6863 ldr r3, [r4, #4] - 800911a: bf08 it eq - 800911c: f8c8 1000 streq.w r1, [r8] - 8009120: 5162 str r2, [r4, r5] - 8009122: 604b str r3, [r1, #4] - 8009124: 4630 mov r0, r6 - 8009126: f000 f82f bl 8009188 <__malloc_unlock> - 800912a: f104 000b add.w r0, r4, #11 - 800912e: 1d23 adds r3, r4, #4 - 8009130: f020 0007 bic.w r0, r0, #7 - 8009134: 1ac2 subs r2, r0, r3 - 8009136: bf1c itt ne - 8009138: 1a1b subne r3, r3, r0 - 800913a: 50a3 strne r3, [r4, r2] - 800913c: e7af b.n 800909e <_malloc_r+0x22> - 800913e: 6862 ldr r2, [r4, #4] - 8009140: 42a3 cmp r3, r4 - 8009142: bf0c ite eq - 8009144: f8c8 2000 streq.w r2, [r8] - 8009148: 605a strne r2, [r3, #4] - 800914a: e7eb b.n 8009124 <_malloc_r+0xa8> - 800914c: 4623 mov r3, r4 - 800914e: 6864 ldr r4, [r4, #4] - 8009150: e7ae b.n 80090b0 <_malloc_r+0x34> - 8009152: 463c mov r4, r7 - 8009154: 687f ldr r7, [r7, #4] - 8009156: e7b6 b.n 80090c6 <_malloc_r+0x4a> - 8009158: 461a mov r2, r3 - 800915a: 685b ldr r3, [r3, #4] - 800915c: 42a3 cmp r3, r4 - 800915e: d1fb bne.n 8009158 <_malloc_r+0xdc> - 8009160: 2300 movs r3, #0 - 8009162: 6053 str r3, [r2, #4] - 8009164: e7de b.n 8009124 <_malloc_r+0xa8> - 8009166: 230c movs r3, #12 - 8009168: 4630 mov r0, r6 - 800916a: 6033 str r3, [r6, #0] - 800916c: f000 f80c bl 8009188 <__malloc_unlock> - 8009170: e794 b.n 800909c <_malloc_r+0x20> - 8009172: 6005 str r5, [r0, #0] - 8009174: e7d6 b.n 8009124 <_malloc_r+0xa8> - 8009176: bf00 nop - 8009178: 2000174c .word 0x2000174c - -0800917c <__malloc_lock>: - 800917c: 4801 ldr r0, [pc, #4] @ (8009184 <__malloc_lock+0x8>) - 800917e: f7ff bf11 b.w 8008fa4 <__retarget_lock_acquire_recursive> - 8009182: bf00 nop - 8009184: 20001744 .word 0x20001744 - -08009188 <__malloc_unlock>: - 8009188: 4801 ldr r0, [pc, #4] @ (8009190 <__malloc_unlock+0x8>) - 800918a: f7ff bf0c b.w 8008fa6 <__retarget_lock_release_recursive> - 800918e: bf00 nop - 8009190: 20001744 .word 0x20001744 - -08009194 <__ssputs_r>: - 8009194: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 8009198: 461f mov r7, r3 - 800919a: 688e ldr r6, [r1, #8] - 800919c: 4682 mov sl, r0 - 800919e: 42be cmp r6, r7 - 80091a0: 460c mov r4, r1 - 80091a2: 4690 mov r8, r2 - 80091a4: 680b ldr r3, [r1, #0] - 80091a6: d82d bhi.n 8009204 <__ssputs_r+0x70> - 80091a8: f9b1 200c ldrsh.w r2, [r1, #12] - 80091ac: f412 6f90 tst.w r2, #1152 @ 0x480 - 80091b0: d026 beq.n 8009200 <__ssputs_r+0x6c> - 80091b2: 6965 ldr r5, [r4, #20] - 80091b4: 6909 ldr r1, [r1, #16] - 80091b6: eb05 0545 add.w r5, r5, r5, lsl #1 - 80091ba: eba3 0901 sub.w r9, r3, r1 - 80091be: eb05 75d5 add.w r5, r5, r5, lsr #31 - 80091c2: 1c7b adds r3, r7, #1 - 80091c4: 444b add r3, r9 - 80091c6: 106d asrs r5, r5, #1 - 80091c8: 429d cmp r5, r3 - 80091ca: bf38 it cc - 80091cc: 461d movcc r5, r3 - 80091ce: 0553 lsls r3, r2, #21 - 80091d0: d527 bpl.n 8009222 <__ssputs_r+0x8e> - 80091d2: 4629 mov r1, r5 - 80091d4: f7ff ff52 bl 800907c <_malloc_r> - 80091d8: 4606 mov r6, r0 - 80091da: b360 cbz r0, 8009236 <__ssputs_r+0xa2> - 80091dc: 464a mov r2, r9 - 80091de: 6921 ldr r1, [r4, #16] - 80091e0: f000 faf8 bl 80097d4 - 80091e4: 89a3 ldrh r3, [r4, #12] - 80091e6: f423 6390 bic.w r3, r3, #1152 @ 0x480 - 80091ea: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80091ee: 81a3 strh r3, [r4, #12] - 80091f0: 6126 str r6, [r4, #16] - 80091f2: 444e add r6, r9 - 80091f4: 6026 str r6, [r4, #0] - 80091f6: 463e mov r6, r7 - 80091f8: 6165 str r5, [r4, #20] - 80091fa: eba5 0509 sub.w r5, r5, r9 - 80091fe: 60a5 str r5, [r4, #8] - 8009200: 42be cmp r6, r7 - 8009202: d900 bls.n 8009206 <__ssputs_r+0x72> - 8009204: 463e mov r6, r7 - 8009206: 4632 mov r2, r6 - 8009208: 4641 mov r1, r8 - 800920a: 6820 ldr r0, [r4, #0] - 800920c: f000 faaa bl 8009764 - 8009210: 2000 movs r0, #0 - 8009212: 68a3 ldr r3, [r4, #8] - 8009214: 1b9b subs r3, r3, r6 - 8009216: 60a3 str r3, [r4, #8] - 8009218: 6823 ldr r3, [r4, #0] - 800921a: 4433 add r3, r6 - 800921c: 6023 str r3, [r4, #0] - 800921e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 8009222: 462a mov r2, r5 - 8009224: f000 fae4 bl 80097f0 <_realloc_r> - 8009228: 4606 mov r6, r0 - 800922a: 2800 cmp r0, #0 - 800922c: d1e0 bne.n 80091f0 <__ssputs_r+0x5c> - 800922e: 4650 mov r0, sl - 8009230: 6921 ldr r1, [r4, #16] - 8009232: f7ff feb9 bl 8008fa8 <_free_r> - 8009236: 230c movs r3, #12 - 8009238: f8ca 3000 str.w r3, [sl] - 800923c: 89a3 ldrh r3, [r4, #12] - 800923e: f04f 30ff mov.w r0, #4294967295 - 8009242: f043 0340 orr.w r3, r3, #64 @ 0x40 - 8009246: 81a3 strh r3, [r4, #12] - 8009248: e7e9 b.n 800921e <__ssputs_r+0x8a> - ... - -0800924c <_svfiprintf_r>: - 800924c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8009250: 4698 mov r8, r3 - 8009252: 898b ldrh r3, [r1, #12] - 8009254: 4607 mov r7, r0 - 8009256: 061b lsls r3, r3, #24 - 8009258: 460d mov r5, r1 - 800925a: 4614 mov r4, r2 - 800925c: b09d sub sp, #116 @ 0x74 - 800925e: d510 bpl.n 8009282 <_svfiprintf_r+0x36> - 8009260: 690b ldr r3, [r1, #16] - 8009262: b973 cbnz r3, 8009282 <_svfiprintf_r+0x36> - 8009264: 2140 movs r1, #64 @ 0x40 - 8009266: f7ff ff09 bl 800907c <_malloc_r> - 800926a: 6028 str r0, [r5, #0] - 800926c: 6128 str r0, [r5, #16] - 800926e: b930 cbnz r0, 800927e <_svfiprintf_r+0x32> - 8009270: 230c movs r3, #12 - 8009272: 603b str r3, [r7, #0] - 8009274: f04f 30ff mov.w r0, #4294967295 - 8009278: b01d add sp, #116 @ 0x74 - 800927a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 800927e: 2340 movs r3, #64 @ 0x40 - 8009280: 616b str r3, [r5, #20] - 8009282: 2300 movs r3, #0 - 8009284: 9309 str r3, [sp, #36] @ 0x24 - 8009286: 2320 movs r3, #32 - 8009288: f88d 3029 strb.w r3, [sp, #41] @ 0x29 - 800928c: 2330 movs r3, #48 @ 0x30 - 800928e: f04f 0901 mov.w r9, #1 - 8009292: f8cd 800c str.w r8, [sp, #12] - 8009296: f8df 8198 ldr.w r8, [pc, #408] @ 8009430 <_svfiprintf_r+0x1e4> - 800929a: f88d 302a strb.w r3, [sp, #42] @ 0x2a - 800929e: 4623 mov r3, r4 - 80092a0: 469a mov sl, r3 - 80092a2: f813 2b01 ldrb.w r2, [r3], #1 - 80092a6: b10a cbz r2, 80092ac <_svfiprintf_r+0x60> - 80092a8: 2a25 cmp r2, #37 @ 0x25 - 80092aa: d1f9 bne.n 80092a0 <_svfiprintf_r+0x54> - 80092ac: ebba 0b04 subs.w fp, sl, r4 - 80092b0: d00b beq.n 80092ca <_svfiprintf_r+0x7e> - 80092b2: 465b mov r3, fp - 80092b4: 4622 mov r2, r4 - 80092b6: 4629 mov r1, r5 - 80092b8: 4638 mov r0, r7 - 80092ba: f7ff ff6b bl 8009194 <__ssputs_r> - 80092be: 3001 adds r0, #1 - 80092c0: f000 80a7 beq.w 8009412 <_svfiprintf_r+0x1c6> - 80092c4: 9a09 ldr r2, [sp, #36] @ 0x24 - 80092c6: 445a add r2, fp - 80092c8: 9209 str r2, [sp, #36] @ 0x24 - 80092ca: f89a 3000 ldrb.w r3, [sl] - 80092ce: 2b00 cmp r3, #0 - 80092d0: f000 809f beq.w 8009412 <_svfiprintf_r+0x1c6> - 80092d4: 2300 movs r3, #0 - 80092d6: f04f 32ff mov.w r2, #4294967295 - 80092da: e9cd 2305 strd r2, r3, [sp, #20] - 80092de: f10a 0a01 add.w sl, sl, #1 - 80092e2: 9304 str r3, [sp, #16] - 80092e4: 9307 str r3, [sp, #28] - 80092e6: f88d 3053 strb.w r3, [sp, #83] @ 0x53 - 80092ea: 931a str r3, [sp, #104] @ 0x68 - 80092ec: 4654 mov r4, sl - 80092ee: 2205 movs r2, #5 - 80092f0: f814 1b01 ldrb.w r1, [r4], #1 - 80092f4: 484e ldr r0, [pc, #312] @ (8009430 <_svfiprintf_r+0x1e4>) - 80092f6: f000 fa5f bl 80097b8 - 80092fa: 9a04 ldr r2, [sp, #16] - 80092fc: b9d8 cbnz r0, 8009336 <_svfiprintf_r+0xea> - 80092fe: 06d0 lsls r0, r2, #27 - 8009300: bf44 itt mi - 8009302: 2320 movmi r3, #32 - 8009304: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 - 8009308: 0711 lsls r1, r2, #28 - 800930a: bf44 itt mi - 800930c: 232b movmi r3, #43 @ 0x2b - 800930e: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 - 8009312: f89a 3000 ldrb.w r3, [sl] - 8009316: 2b2a cmp r3, #42 @ 0x2a - 8009318: d015 beq.n 8009346 <_svfiprintf_r+0xfa> - 800931a: 4654 mov r4, sl - 800931c: 2000 movs r0, #0 - 800931e: f04f 0c0a mov.w ip, #10 - 8009322: 9a07 ldr r2, [sp, #28] - 8009324: 4621 mov r1, r4 - 8009326: f811 3b01 ldrb.w r3, [r1], #1 - 800932a: 3b30 subs r3, #48 @ 0x30 - 800932c: 2b09 cmp r3, #9 - 800932e: d94b bls.n 80093c8 <_svfiprintf_r+0x17c> - 8009330: b1b0 cbz r0, 8009360 <_svfiprintf_r+0x114> - 8009332: 9207 str r2, [sp, #28] - 8009334: e014 b.n 8009360 <_svfiprintf_r+0x114> - 8009336: eba0 0308 sub.w r3, r0, r8 - 800933a: fa09 f303 lsl.w r3, r9, r3 - 800933e: 4313 orrs r3, r2 - 8009340: 46a2 mov sl, r4 - 8009342: 9304 str r3, [sp, #16] - 8009344: e7d2 b.n 80092ec <_svfiprintf_r+0xa0> - 8009346: 9b03 ldr r3, [sp, #12] - 8009348: 1d19 adds r1, r3, #4 - 800934a: 681b ldr r3, [r3, #0] - 800934c: 9103 str r1, [sp, #12] - 800934e: 2b00 cmp r3, #0 - 8009350: bfbb ittet lt - 8009352: 425b neglt r3, r3 - 8009354: f042 0202 orrlt.w r2, r2, #2 - 8009358: 9307 strge r3, [sp, #28] - 800935a: 9307 strlt r3, [sp, #28] - 800935c: bfb8 it lt - 800935e: 9204 strlt r2, [sp, #16] - 8009360: 7823 ldrb r3, [r4, #0] - 8009362: 2b2e cmp r3, #46 @ 0x2e - 8009364: d10a bne.n 800937c <_svfiprintf_r+0x130> - 8009366: 7863 ldrb r3, [r4, #1] - 8009368: 2b2a cmp r3, #42 @ 0x2a - 800936a: d132 bne.n 80093d2 <_svfiprintf_r+0x186> - 800936c: 9b03 ldr r3, [sp, #12] - 800936e: 3402 adds r4, #2 - 8009370: 1d1a adds r2, r3, #4 - 8009372: 681b ldr r3, [r3, #0] - 8009374: 9203 str r2, [sp, #12] - 8009376: ea43 73e3 orr.w r3, r3, r3, asr #31 - 800937a: 9305 str r3, [sp, #20] - 800937c: f8df a0b4 ldr.w sl, [pc, #180] @ 8009434 <_svfiprintf_r+0x1e8> - 8009380: 2203 movs r2, #3 - 8009382: 4650 mov r0, sl - 8009384: 7821 ldrb r1, [r4, #0] - 8009386: f000 fa17 bl 80097b8 - 800938a: b138 cbz r0, 800939c <_svfiprintf_r+0x150> - 800938c: 2240 movs r2, #64 @ 0x40 - 800938e: 9b04 ldr r3, [sp, #16] - 8009390: eba0 000a sub.w r0, r0, sl - 8009394: 4082 lsls r2, r0 - 8009396: 4313 orrs r3, r2 - 8009398: 3401 adds r4, #1 - 800939a: 9304 str r3, [sp, #16] - 800939c: f814 1b01 ldrb.w r1, [r4], #1 - 80093a0: 2206 movs r2, #6 - 80093a2: 4825 ldr r0, [pc, #148] @ (8009438 <_svfiprintf_r+0x1ec>) - 80093a4: f88d 1028 strb.w r1, [sp, #40] @ 0x28 - 80093a8: f000 fa06 bl 80097b8 - 80093ac: 2800 cmp r0, #0 - 80093ae: d036 beq.n 800941e <_svfiprintf_r+0x1d2> - 80093b0: 4b22 ldr r3, [pc, #136] @ (800943c <_svfiprintf_r+0x1f0>) - 80093b2: bb1b cbnz r3, 80093fc <_svfiprintf_r+0x1b0> - 80093b4: 9b03 ldr r3, [sp, #12] - 80093b6: 3307 adds r3, #7 - 80093b8: f023 0307 bic.w r3, r3, #7 - 80093bc: 3308 adds r3, #8 - 80093be: 9303 str r3, [sp, #12] - 80093c0: 9b09 ldr r3, [sp, #36] @ 0x24 - 80093c2: 4433 add r3, r6 - 80093c4: 9309 str r3, [sp, #36] @ 0x24 - 80093c6: e76a b.n 800929e <_svfiprintf_r+0x52> - 80093c8: 460c mov r4, r1 - 80093ca: 2001 movs r0, #1 - 80093cc: fb0c 3202 mla r2, ip, r2, r3 - 80093d0: e7a8 b.n 8009324 <_svfiprintf_r+0xd8> - 80093d2: 2300 movs r3, #0 - 80093d4: f04f 0c0a mov.w ip, #10 - 80093d8: 4619 mov r1, r3 - 80093da: 3401 adds r4, #1 - 80093dc: 9305 str r3, [sp, #20] - 80093de: 4620 mov r0, r4 - 80093e0: f810 2b01 ldrb.w r2, [r0], #1 - 80093e4: 3a30 subs r2, #48 @ 0x30 - 80093e6: 2a09 cmp r2, #9 - 80093e8: d903 bls.n 80093f2 <_svfiprintf_r+0x1a6> - 80093ea: 2b00 cmp r3, #0 - 80093ec: d0c6 beq.n 800937c <_svfiprintf_r+0x130> - 80093ee: 9105 str r1, [sp, #20] - 80093f0: e7c4 b.n 800937c <_svfiprintf_r+0x130> - 80093f2: 4604 mov r4, r0 - 80093f4: 2301 movs r3, #1 - 80093f6: fb0c 2101 mla r1, ip, r1, r2 - 80093fa: e7f0 b.n 80093de <_svfiprintf_r+0x192> - 80093fc: ab03 add r3, sp, #12 - 80093fe: 9300 str r3, [sp, #0] - 8009400: 462a mov r2, r5 - 8009402: 4638 mov r0, r7 - 8009404: 4b0e ldr r3, [pc, #56] @ (8009440 <_svfiprintf_r+0x1f4>) - 8009406: a904 add r1, sp, #16 - 8009408: f3af 8000 nop.w - 800940c: 1c42 adds r2, r0, #1 - 800940e: 4606 mov r6, r0 - 8009410: d1d6 bne.n 80093c0 <_svfiprintf_r+0x174> - 8009412: 89ab ldrh r3, [r5, #12] - 8009414: 065b lsls r3, r3, #25 - 8009416: f53f af2d bmi.w 8009274 <_svfiprintf_r+0x28> - 800941a: 9809 ldr r0, [sp, #36] @ 0x24 - 800941c: e72c b.n 8009278 <_svfiprintf_r+0x2c> - 800941e: ab03 add r3, sp, #12 - 8009420: 9300 str r3, [sp, #0] - 8009422: 462a mov r2, r5 - 8009424: 4638 mov r0, r7 - 8009426: 4b06 ldr r3, [pc, #24] @ (8009440 <_svfiprintf_r+0x1f4>) - 8009428: a904 add r1, sp, #16 - 800942a: f000 f87d bl 8009528 <_printf_i> - 800942e: e7ed b.n 800940c <_svfiprintf_r+0x1c0> - 8009430: 080098ee .word 0x080098ee - 8009434: 080098f4 .word 0x080098f4 - 8009438: 080098f8 .word 0x080098f8 - 800943c: 00000000 .word 0x00000000 - 8009440: 08009195 .word 0x08009195 - -08009444 <_printf_common>: - 8009444: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 8009448: 4616 mov r6, r2 - 800944a: 4698 mov r8, r3 - 800944c: 688a ldr r2, [r1, #8] - 800944e: 690b ldr r3, [r1, #16] - 8009450: 4607 mov r7, r0 - 8009452: 4293 cmp r3, r2 - 8009454: bfb8 it lt - 8009456: 4613 movlt r3, r2 - 8009458: 6033 str r3, [r6, #0] - 800945a: f891 2043 ldrb.w r2, [r1, #67] @ 0x43 - 800945e: 460c mov r4, r1 - 8009460: f8dd 9020 ldr.w r9, [sp, #32] - 8009464: b10a cbz r2, 800946a <_printf_common+0x26> - 8009466: 3301 adds r3, #1 - 8009468: 6033 str r3, [r6, #0] - 800946a: 6823 ldr r3, [r4, #0] - 800946c: 0699 lsls r1, r3, #26 - 800946e: bf42 ittt mi - 8009470: 6833 ldrmi r3, [r6, #0] - 8009472: 3302 addmi r3, #2 - 8009474: 6033 strmi r3, [r6, #0] - 8009476: 6825 ldr r5, [r4, #0] - 8009478: f015 0506 ands.w r5, r5, #6 - 800947c: d106 bne.n 800948c <_printf_common+0x48> - 800947e: f104 0a19 add.w sl, r4, #25 - 8009482: 68e3 ldr r3, [r4, #12] - 8009484: 6832 ldr r2, [r6, #0] - 8009486: 1a9b subs r3, r3, r2 - 8009488: 42ab cmp r3, r5 - 800948a: dc2b bgt.n 80094e4 <_printf_common+0xa0> - 800948c: f894 3043 ldrb.w r3, [r4, #67] @ 0x43 - 8009490: 6822 ldr r2, [r4, #0] - 8009492: 3b00 subs r3, #0 - 8009494: bf18 it ne - 8009496: 2301 movne r3, #1 - 8009498: 0692 lsls r2, r2, #26 - 800949a: d430 bmi.n 80094fe <_printf_common+0xba> - 800949c: 4641 mov r1, r8 - 800949e: 4638 mov r0, r7 - 80094a0: f104 0243 add.w r2, r4, #67 @ 0x43 - 80094a4: 47c8 blx r9 - 80094a6: 3001 adds r0, #1 - 80094a8: d023 beq.n 80094f2 <_printf_common+0xae> - 80094aa: 6823 ldr r3, [r4, #0] - 80094ac: 6922 ldr r2, [r4, #16] - 80094ae: f003 0306 and.w r3, r3, #6 - 80094b2: 2b04 cmp r3, #4 - 80094b4: bf14 ite ne - 80094b6: 2500 movne r5, #0 - 80094b8: 6833 ldreq r3, [r6, #0] - 80094ba: f04f 0600 mov.w r6, #0 - 80094be: bf08 it eq - 80094c0: 68e5 ldreq r5, [r4, #12] - 80094c2: f104 041a add.w r4, r4, #26 - 80094c6: bf08 it eq - 80094c8: 1aed subeq r5, r5, r3 - 80094ca: f854 3c12 ldr.w r3, [r4, #-18] - 80094ce: bf08 it eq - 80094d0: ea25 75e5 biceq.w r5, r5, r5, asr #31 - 80094d4: 4293 cmp r3, r2 - 80094d6: bfc4 itt gt - 80094d8: 1a9b subgt r3, r3, r2 - 80094da: 18ed addgt r5, r5, r3 - 80094dc: 42b5 cmp r5, r6 - 80094de: d11a bne.n 8009516 <_printf_common+0xd2> - 80094e0: 2000 movs r0, #0 - 80094e2: e008 b.n 80094f6 <_printf_common+0xb2> - 80094e4: 2301 movs r3, #1 - 80094e6: 4652 mov r2, sl - 80094e8: 4641 mov r1, r8 - 80094ea: 4638 mov r0, r7 - 80094ec: 47c8 blx r9 - 80094ee: 3001 adds r0, #1 - 80094f0: d103 bne.n 80094fa <_printf_common+0xb6> - 80094f2: f04f 30ff mov.w r0, #4294967295 - 80094f6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 80094fa: 3501 adds r5, #1 - 80094fc: e7c1 b.n 8009482 <_printf_common+0x3e> - 80094fe: 2030 movs r0, #48 @ 0x30 - 8009500: 18e1 adds r1, r4, r3 - 8009502: f881 0043 strb.w r0, [r1, #67] @ 0x43 - 8009506: 1c5a adds r2, r3, #1 - 8009508: f894 1045 ldrb.w r1, [r4, #69] @ 0x45 - 800950c: 4422 add r2, r4 - 800950e: 3302 adds r3, #2 - 8009510: f882 1043 strb.w r1, [r2, #67] @ 0x43 - 8009514: e7c2 b.n 800949c <_printf_common+0x58> - 8009516: 2301 movs r3, #1 - 8009518: 4622 mov r2, r4 - 800951a: 4641 mov r1, r8 - 800951c: 4638 mov r0, r7 - 800951e: 47c8 blx r9 - 8009520: 3001 adds r0, #1 - 8009522: d0e6 beq.n 80094f2 <_printf_common+0xae> - 8009524: 3601 adds r6, #1 - 8009526: e7d9 b.n 80094dc <_printf_common+0x98> - -08009528 <_printf_i>: - 8009528: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} - 800952c: 7e0f ldrb r7, [r1, #24] - 800952e: 4691 mov r9, r2 - 8009530: 2f78 cmp r7, #120 @ 0x78 - 8009532: 4680 mov r8, r0 - 8009534: 460c mov r4, r1 - 8009536: 469a mov sl, r3 - 8009538: 9e0c ldr r6, [sp, #48] @ 0x30 - 800953a: f101 0243 add.w r2, r1, #67 @ 0x43 - 800953e: d807 bhi.n 8009550 <_printf_i+0x28> - 8009540: 2f62 cmp r7, #98 @ 0x62 - 8009542: d80a bhi.n 800955a <_printf_i+0x32> - 8009544: 2f00 cmp r7, #0 - 8009546: f000 80d1 beq.w 80096ec <_printf_i+0x1c4> - 800954a: 2f58 cmp r7, #88 @ 0x58 - 800954c: f000 80b8 beq.w 80096c0 <_printf_i+0x198> - 8009550: f104 0642 add.w r6, r4, #66 @ 0x42 - 8009554: f884 7042 strb.w r7, [r4, #66] @ 0x42 - 8009558: e03a b.n 80095d0 <_printf_i+0xa8> - 800955a: f1a7 0363 sub.w r3, r7, #99 @ 0x63 - 800955e: 2b15 cmp r3, #21 - 8009560: d8f6 bhi.n 8009550 <_printf_i+0x28> - 8009562: a101 add r1, pc, #4 @ (adr r1, 8009568 <_printf_i+0x40>) - 8009564: f851 f023 ldr.w pc, [r1, r3, lsl #2] - 8009568: 080095c1 .word 0x080095c1 - 800956c: 080095d5 .word 0x080095d5 - 8009570: 08009551 .word 0x08009551 - 8009574: 08009551 .word 0x08009551 - 8009578: 08009551 .word 0x08009551 - 800957c: 08009551 .word 0x08009551 - 8009580: 080095d5 .word 0x080095d5 - 8009584: 08009551 .word 0x08009551 - 8009588: 08009551 .word 0x08009551 - 800958c: 08009551 .word 0x08009551 - 8009590: 08009551 .word 0x08009551 - 8009594: 080096d3 .word 0x080096d3 - 8009598: 080095ff .word 0x080095ff - 800959c: 0800968d .word 0x0800968d - 80095a0: 08009551 .word 0x08009551 - 80095a4: 08009551 .word 0x08009551 - 80095a8: 080096f5 .word 0x080096f5 - 80095ac: 08009551 .word 0x08009551 - 80095b0: 080095ff .word 0x080095ff - 80095b4: 08009551 .word 0x08009551 - 80095b8: 08009551 .word 0x08009551 - 80095bc: 08009695 .word 0x08009695 - 80095c0: 6833 ldr r3, [r6, #0] - 80095c2: 1d1a adds r2, r3, #4 - 80095c4: 681b ldr r3, [r3, #0] - 80095c6: 6032 str r2, [r6, #0] - 80095c8: f104 0642 add.w r6, r4, #66 @ 0x42 - 80095cc: f884 3042 strb.w r3, [r4, #66] @ 0x42 - 80095d0: 2301 movs r3, #1 - 80095d2: e09c b.n 800970e <_printf_i+0x1e6> - 80095d4: 6833 ldr r3, [r6, #0] - 80095d6: 6820 ldr r0, [r4, #0] - 80095d8: 1d19 adds r1, r3, #4 - 80095da: 6031 str r1, [r6, #0] - 80095dc: 0606 lsls r6, r0, #24 - 80095de: d501 bpl.n 80095e4 <_printf_i+0xbc> - 80095e0: 681d ldr r5, [r3, #0] - 80095e2: e003 b.n 80095ec <_printf_i+0xc4> - 80095e4: 0645 lsls r5, r0, #25 - 80095e6: d5fb bpl.n 80095e0 <_printf_i+0xb8> - 80095e8: f9b3 5000 ldrsh.w r5, [r3] - 80095ec: 2d00 cmp r5, #0 - 80095ee: da03 bge.n 80095f8 <_printf_i+0xd0> - 80095f0: 232d movs r3, #45 @ 0x2d - 80095f2: 426d negs r5, r5 - 80095f4: f884 3043 strb.w r3, [r4, #67] @ 0x43 - 80095f8: 230a movs r3, #10 - 80095fa: 4858 ldr r0, [pc, #352] @ (800975c <_printf_i+0x234>) - 80095fc: e011 b.n 8009622 <_printf_i+0xfa> - 80095fe: 6821 ldr r1, [r4, #0] - 8009600: 6833 ldr r3, [r6, #0] - 8009602: 0608 lsls r0, r1, #24 - 8009604: f853 5b04 ldr.w r5, [r3], #4 - 8009608: d402 bmi.n 8009610 <_printf_i+0xe8> - 800960a: 0649 lsls r1, r1, #25 - 800960c: bf48 it mi - 800960e: b2ad uxthmi r5, r5 - 8009610: 2f6f cmp r7, #111 @ 0x6f - 8009612: 6033 str r3, [r6, #0] - 8009614: bf14 ite ne - 8009616: 230a movne r3, #10 - 8009618: 2308 moveq r3, #8 - 800961a: 4850 ldr r0, [pc, #320] @ (800975c <_printf_i+0x234>) - 800961c: 2100 movs r1, #0 - 800961e: f884 1043 strb.w r1, [r4, #67] @ 0x43 - 8009622: 6866 ldr r6, [r4, #4] - 8009624: 2e00 cmp r6, #0 - 8009626: 60a6 str r6, [r4, #8] - 8009628: db05 blt.n 8009636 <_printf_i+0x10e> - 800962a: 6821 ldr r1, [r4, #0] - 800962c: 432e orrs r6, r5 - 800962e: f021 0104 bic.w r1, r1, #4 - 8009632: 6021 str r1, [r4, #0] - 8009634: d04b beq.n 80096ce <_printf_i+0x1a6> - 8009636: 4616 mov r6, r2 - 8009638: fbb5 f1f3 udiv r1, r5, r3 - 800963c: fb03 5711 mls r7, r3, r1, r5 - 8009640: 5dc7 ldrb r7, [r0, r7] - 8009642: f806 7d01 strb.w r7, [r6, #-1]! - 8009646: 462f mov r7, r5 - 8009648: 42bb cmp r3, r7 - 800964a: 460d mov r5, r1 - 800964c: d9f4 bls.n 8009638 <_printf_i+0x110> - 800964e: 2b08 cmp r3, #8 - 8009650: d10b bne.n 800966a <_printf_i+0x142> - 8009652: 6823 ldr r3, [r4, #0] - 8009654: 07df lsls r7, r3, #31 - 8009656: d508 bpl.n 800966a <_printf_i+0x142> - 8009658: 6923 ldr r3, [r4, #16] - 800965a: 6861 ldr r1, [r4, #4] - 800965c: 4299 cmp r1, r3 - 800965e: bfde ittt le - 8009660: 2330 movle r3, #48 @ 0x30 - 8009662: f806 3c01 strble.w r3, [r6, #-1] - 8009666: f106 36ff addle.w r6, r6, #4294967295 - 800966a: 1b92 subs r2, r2, r6 - 800966c: 6122 str r2, [r4, #16] - 800966e: 464b mov r3, r9 - 8009670: 4621 mov r1, r4 - 8009672: 4640 mov r0, r8 - 8009674: f8cd a000 str.w sl, [sp] - 8009678: aa03 add r2, sp, #12 - 800967a: f7ff fee3 bl 8009444 <_printf_common> - 800967e: 3001 adds r0, #1 - 8009680: d14a bne.n 8009718 <_printf_i+0x1f0> - 8009682: f04f 30ff mov.w r0, #4294967295 - 8009686: b004 add sp, #16 - 8009688: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 800968c: 6823 ldr r3, [r4, #0] - 800968e: f043 0320 orr.w r3, r3, #32 - 8009692: 6023 str r3, [r4, #0] - 8009694: 2778 movs r7, #120 @ 0x78 - 8009696: 4832 ldr r0, [pc, #200] @ (8009760 <_printf_i+0x238>) - 8009698: f884 7045 strb.w r7, [r4, #69] @ 0x45 - 800969c: 6823 ldr r3, [r4, #0] - 800969e: 6831 ldr r1, [r6, #0] - 80096a0: 061f lsls r7, r3, #24 - 80096a2: f851 5b04 ldr.w r5, [r1], #4 - 80096a6: d402 bmi.n 80096ae <_printf_i+0x186> - 80096a8: 065f lsls r7, r3, #25 - 80096aa: bf48 it mi - 80096ac: b2ad uxthmi r5, r5 - 80096ae: 6031 str r1, [r6, #0] - 80096b0: 07d9 lsls r1, r3, #31 - 80096b2: bf44 itt mi - 80096b4: f043 0320 orrmi.w r3, r3, #32 - 80096b8: 6023 strmi r3, [r4, #0] - 80096ba: b11d cbz r5, 80096c4 <_printf_i+0x19c> - 80096bc: 2310 movs r3, #16 - 80096be: e7ad b.n 800961c <_printf_i+0xf4> - 80096c0: 4826 ldr r0, [pc, #152] @ (800975c <_printf_i+0x234>) - 80096c2: e7e9 b.n 8009698 <_printf_i+0x170> - 80096c4: 6823 ldr r3, [r4, #0] - 80096c6: f023 0320 bic.w r3, r3, #32 - 80096ca: 6023 str r3, [r4, #0] - 80096cc: e7f6 b.n 80096bc <_printf_i+0x194> - 80096ce: 4616 mov r6, r2 - 80096d0: e7bd b.n 800964e <_printf_i+0x126> - 80096d2: 6833 ldr r3, [r6, #0] - 80096d4: 6825 ldr r5, [r4, #0] - 80096d6: 1d18 adds r0, r3, #4 - 80096d8: 6961 ldr r1, [r4, #20] - 80096da: 6030 str r0, [r6, #0] - 80096dc: 062e lsls r6, r5, #24 - 80096de: 681b ldr r3, [r3, #0] - 80096e0: d501 bpl.n 80096e6 <_printf_i+0x1be> - 80096e2: 6019 str r1, [r3, #0] - 80096e4: e002 b.n 80096ec <_printf_i+0x1c4> - 80096e6: 0668 lsls r0, r5, #25 - 80096e8: d5fb bpl.n 80096e2 <_printf_i+0x1ba> - 80096ea: 8019 strh r1, [r3, #0] - 80096ec: 2300 movs r3, #0 - 80096ee: 4616 mov r6, r2 - 80096f0: 6123 str r3, [r4, #16] - 80096f2: e7bc b.n 800966e <_printf_i+0x146> - 80096f4: 6833 ldr r3, [r6, #0] - 80096f6: 2100 movs r1, #0 - 80096f8: 1d1a adds r2, r3, #4 - 80096fa: 6032 str r2, [r6, #0] - 80096fc: 681e ldr r6, [r3, #0] - 80096fe: 6862 ldr r2, [r4, #4] - 8009700: 4630 mov r0, r6 - 8009702: f000 f859 bl 80097b8 - 8009706: b108 cbz r0, 800970c <_printf_i+0x1e4> - 8009708: 1b80 subs r0, r0, r6 - 800970a: 6060 str r0, [r4, #4] - 800970c: 6863 ldr r3, [r4, #4] - 800970e: 6123 str r3, [r4, #16] - 8009710: 2300 movs r3, #0 - 8009712: f884 3043 strb.w r3, [r4, #67] @ 0x43 - 8009716: e7aa b.n 800966e <_printf_i+0x146> - 8009718: 4632 mov r2, r6 - 800971a: 4649 mov r1, r9 - 800971c: 4640 mov r0, r8 - 800971e: 6923 ldr r3, [r4, #16] - 8009720: 47d0 blx sl - 8009722: 3001 adds r0, #1 - 8009724: d0ad beq.n 8009682 <_printf_i+0x15a> - 8009726: 6823 ldr r3, [r4, #0] - 8009728: 079b lsls r3, r3, #30 - 800972a: d413 bmi.n 8009754 <_printf_i+0x22c> - 800972c: 68e0 ldr r0, [r4, #12] - 800972e: 9b03 ldr r3, [sp, #12] - 8009730: 4298 cmp r0, r3 - 8009732: bfb8 it lt - 8009734: 4618 movlt r0, r3 - 8009736: e7a6 b.n 8009686 <_printf_i+0x15e> - 8009738: 2301 movs r3, #1 - 800973a: 4632 mov r2, r6 - 800973c: 4649 mov r1, r9 - 800973e: 4640 mov r0, r8 - 8009740: 47d0 blx sl - 8009742: 3001 adds r0, #1 - 8009744: d09d beq.n 8009682 <_printf_i+0x15a> - 8009746: 3501 adds r5, #1 - 8009748: 68e3 ldr r3, [r4, #12] - 800974a: 9903 ldr r1, [sp, #12] - 800974c: 1a5b subs r3, r3, r1 - 800974e: 42ab cmp r3, r5 - 8009750: dcf2 bgt.n 8009738 <_printf_i+0x210> - 8009752: e7eb b.n 800972c <_printf_i+0x204> - 8009754: 2500 movs r5, #0 - 8009756: f104 0619 add.w r6, r4, #25 - 800975a: e7f5 b.n 8009748 <_printf_i+0x220> - 800975c: 080098ff .word 0x080098ff - 8009760: 08009910 .word 0x08009910 - -08009764 : - 8009764: 4288 cmp r0, r1 - 8009766: b510 push {r4, lr} - 8009768: eb01 0402 add.w r4, r1, r2 - 800976c: d902 bls.n 8009774 - 800976e: 4284 cmp r4, r0 - 8009770: 4623 mov r3, r4 - 8009772: d807 bhi.n 8009784 - 8009774: 1e43 subs r3, r0, #1 - 8009776: 42a1 cmp r1, r4 - 8009778: d008 beq.n 800978c - 800977a: f811 2b01 ldrb.w r2, [r1], #1 - 800977e: f803 2f01 strb.w r2, [r3, #1]! - 8009782: e7f8 b.n 8009776 - 8009784: 4601 mov r1, r0 - 8009786: 4402 add r2, r0 - 8009788: 428a cmp r2, r1 - 800978a: d100 bne.n 800978e - 800978c: bd10 pop {r4, pc} - 800978e: f813 4d01 ldrb.w r4, [r3, #-1]! - 8009792: f802 4d01 strb.w r4, [r2, #-1]! - 8009796: e7f7 b.n 8009788 - -08009798 <_sbrk_r>: - 8009798: b538 push {r3, r4, r5, lr} - 800979a: 2300 movs r3, #0 - 800979c: 4d05 ldr r5, [pc, #20] @ (80097b4 <_sbrk_r+0x1c>) - 800979e: 4604 mov r4, r0 - 80097a0: 4608 mov r0, r1 - 80097a2: 602b str r3, [r5, #0] - 80097a4: f7f7 fa8c bl 8000cc0 <_sbrk> - 80097a8: 1c43 adds r3, r0, #1 - 80097aa: d102 bne.n 80097b2 <_sbrk_r+0x1a> - 80097ac: 682b ldr r3, [r5, #0] - 80097ae: b103 cbz r3, 80097b2 <_sbrk_r+0x1a> - 80097b0: 6023 str r3, [r4, #0] - 80097b2: bd38 pop {r3, r4, r5, pc} - 80097b4: 20001740 .word 0x20001740 - -080097b8 : - 80097b8: 4603 mov r3, r0 - 80097ba: b510 push {r4, lr} - 80097bc: b2c9 uxtb r1, r1 - 80097be: 4402 add r2, r0 - 80097c0: 4293 cmp r3, r2 - 80097c2: 4618 mov r0, r3 - 80097c4: d101 bne.n 80097ca - 80097c6: 2000 movs r0, #0 - 80097c8: e003 b.n 80097d2 - 80097ca: 7804 ldrb r4, [r0, #0] - 80097cc: 3301 adds r3, #1 - 80097ce: 428c cmp r4, r1 - 80097d0: d1f6 bne.n 80097c0 - 80097d2: bd10 pop {r4, pc} - -080097d4 : - 80097d4: 440a add r2, r1 - 80097d6: 4291 cmp r1, r2 - 80097d8: f100 33ff add.w r3, r0, #4294967295 - 80097dc: d100 bne.n 80097e0 - 80097de: 4770 bx lr - 80097e0: b510 push {r4, lr} - 80097e2: f811 4b01 ldrb.w r4, [r1], #1 - 80097e6: 4291 cmp r1, r2 - 80097e8: f803 4f01 strb.w r4, [r3, #1]! - 80097ec: d1f9 bne.n 80097e2 - 80097ee: bd10 pop {r4, pc} - -080097f0 <_realloc_r>: - 80097f0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 80097f4: 4607 mov r7, r0 - 80097f6: 4614 mov r4, r2 - 80097f8: 460d mov r5, r1 - 80097fa: b921 cbnz r1, 8009806 <_realloc_r+0x16> - 80097fc: 4611 mov r1, r2 - 80097fe: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 8009802: f7ff bc3b b.w 800907c <_malloc_r> - 8009806: b92a cbnz r2, 8009814 <_realloc_r+0x24> - 8009808: f7ff fbce bl 8008fa8 <_free_r> - 800980c: 4625 mov r5, r4 - 800980e: 4628 mov r0, r5 - 8009810: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8009814: f000 f81a bl 800984c <_malloc_usable_size_r> - 8009818: 4284 cmp r4, r0 - 800981a: 4606 mov r6, r0 - 800981c: d802 bhi.n 8009824 <_realloc_r+0x34> - 800981e: ebb4 0f50 cmp.w r4, r0, lsr #1 - 8009822: d8f4 bhi.n 800980e <_realloc_r+0x1e> - 8009824: 4621 mov r1, r4 - 8009826: 4638 mov r0, r7 - 8009828: f7ff fc28 bl 800907c <_malloc_r> - 800982c: 4680 mov r8, r0 - 800982e: b908 cbnz r0, 8009834 <_realloc_r+0x44> - 8009830: 4645 mov r5, r8 - 8009832: e7ec b.n 800980e <_realloc_r+0x1e> - 8009834: 42b4 cmp r4, r6 - 8009836: 4622 mov r2, r4 - 8009838: 4629 mov r1, r5 - 800983a: bf28 it cs - 800983c: 4632 movcs r2, r6 - 800983e: f7ff ffc9 bl 80097d4 - 8009842: 4629 mov r1, r5 - 8009844: 4638 mov r0, r7 - 8009846: f7ff fbaf bl 8008fa8 <_free_r> - 800984a: e7f1 b.n 8009830 <_realloc_r+0x40> - -0800984c <_malloc_usable_size_r>: - 800984c: f851 3c04 ldr.w r3, [r1, #-4] - 8009850: 1f18 subs r0, r3, #4 - 8009852: 2b00 cmp r3, #0 - 8009854: bfbc itt lt - 8009856: 580b ldrlt r3, [r1, r0] - 8009858: 18c0 addlt r0, r0, r3 - 800985a: 4770 bx lr - -0800985c <_init>: - 800985c: b5f8 push {r3, r4, r5, r6, r7, lr} - 800985e: bf00 nop - 8009860: bcf8 pop {r3, r4, r5, r6, r7} - 8009862: bc08 pop {r3} - 8009864: 469e mov lr, r3 - 8009866: 4770 bx lr - -08009868 <_fini>: - 8009868: b5f8 push {r3, r4, r5, r6, r7, lr} - 800986a: bf00 nop - 800986c: bcf8 pop {r3, r4, r5, r6, r7} - 800986e: bc08 pop {r3} - 8009870: 469e mov lr, r3 - 8009872: 4770 bx lr + +AUTOM10.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 0000010c 08000000 08000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 0000997c 0800010c 0800010c 0000110c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 000000b0 08009a88 08009a88 0000aa88 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .ARM.extab 00000000 08009b38 08009b38 0000b1cc 2**0 + CONTENTS, READONLY + 4 .ARM 00000000 08009b38 08009b38 0000b1cc 2**0 + CONTENTS, READONLY + 5 .preinit_array 00000000 08009b38 08009b38 0000b1cc 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 08009b38 08009b38 0000ab38 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .fini_array 00000004 08009b3c 08009b3c 0000ab3c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 8 .data 000001cc 20000000 08009b40 0000b000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .bss 00001584 200001cc 08009d0c 0000b1cc 2**2 + ALLOC + 10 ._user_heap_stack 00000600 20001750 08009d0c 0000b750 2**0 + ALLOC + 11 .ARM.attributes 00000029 00000000 00000000 0000b1cc 2**0 + CONTENTS, READONLY + 12 .debug_info 00012100 00000000 00000000 0000b1f5 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 13 .debug_abbrev 00003383 00000000 00000000 0001d2f5 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .debug_aranges 00001128 00000000 00000000 00020678 2**3 + CONTENTS, READONLY, DEBUGGING, OCTETS + 15 .debug_rnglists 00000d03 00000000 00000000 000217a0 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .debug_macro 0001ac13 00000000 00000000 000224a3 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_line 000154bc 00000000 00000000 0003d0b6 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .debug_str 0009207d 00000000 00000000 00052572 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 19 .comment 00000043 00000000 00000000 000e45ef 2**0 + CONTENTS, READONLY + 20 .debug_frame 00004b6c 00000000 00000000 000e4634 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + 21 .debug_line_str 00000053 00000000 00000000 000e91a0 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +0800010c <__do_global_dtors_aux>: + 800010c: b510 push {r4, lr} + 800010e: 4c05 ldr r4, [pc, #20] @ (8000124 <__do_global_dtors_aux+0x18>) + 8000110: 7823 ldrb r3, [r4, #0] + 8000112: b933 cbnz r3, 8000122 <__do_global_dtors_aux+0x16> + 8000114: 4b04 ldr r3, [pc, #16] @ (8000128 <__do_global_dtors_aux+0x1c>) + 8000116: b113 cbz r3, 800011e <__do_global_dtors_aux+0x12> + 8000118: 4804 ldr r0, [pc, #16] @ (800012c <__do_global_dtors_aux+0x20>) + 800011a: f3af 8000 nop.w + 800011e: 2301 movs r3, #1 + 8000120: 7023 strb r3, [r4, #0] + 8000122: bd10 pop {r4, pc} + 8000124: 200001cc .word 0x200001cc + 8000128: 00000000 .word 0x00000000 + 800012c: 08009a70 .word 0x08009a70 + +08000130 : + 8000130: b508 push {r3, lr} + 8000132: 4b03 ldr r3, [pc, #12] @ (8000140 ) + 8000134: b11b cbz r3, 800013e + 8000136: 4903 ldr r1, [pc, #12] @ (8000144 ) + 8000138: 4803 ldr r0, [pc, #12] @ (8000148 ) + 800013a: f3af 8000 nop.w + 800013e: bd08 pop {r3, pc} + 8000140: 00000000 .word 0x00000000 + 8000144: 200001d0 .word 0x200001d0 + 8000148: 08009a70 .word 0x08009a70 + +0800014c : + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ +void HAL_SYSTICK_Callback(void){ + 800014c: b580 push {r7, lr} + 800014e: af00 add r7, sp, #0 + static unsigned char c10ms = 0; + + static uint8_t c100ms = 0; + static uint8_t c1s = 0; + if (++c10ms >= 10) { // 10 ms + 8000150: 4b16 ldr r3, [pc, #88] @ (80001ac ) + 8000152: 781b ldrb r3, [r3, #0] + 8000154: 3301 adds r3, #1 + 8000156: b2da uxtb r2, r3 + 8000158: 4b14 ldr r3, [pc, #80] @ (80001ac ) + 800015a: 701a strb r2, [r3, #0] + 800015c: 4b13 ldr r3, [pc, #76] @ (80001ac ) + 800015e: 781b ldrb r3, [r3, #0] + 8000160: 2b09 cmp r3, #9 + 8000162: d921 bls.n 80001a8 + c10ms = 0; + 8000164: 4b11 ldr r3, [pc, #68] @ (80001ac ) + 8000166: 2200 movs r2, #0 + 8000168: 701a strb r2, [r3, #0] + if (++c100ms >= 10) { // 10 ms + 800016a: 4b11 ldr r3, [pc, #68] @ (80001b0 ) + 800016c: 781b ldrb r3, [r3, #0] + 800016e: 3301 adds r3, #1 + 8000170: b2da uxtb r2, r3 + 8000172: 4b0f ldr r3, [pc, #60] @ (80001b0 ) + 8000174: 701a strb r2, [r3, #0] + 8000176: 4b0e ldr r3, [pc, #56] @ (80001b0 ) + 8000178: 781b ldrb r3, [r3, #0] + 800017a: 2b09 cmp r3, #9 + 800017c: d914 bls.n 80001a8 + c100ms = 0; //flag_10ms = 1; // set a flag; do real work in main loop + 800017e: 4b0c ldr r3, [pc, #48] @ (80001b0 ) + 8000180: 2200 movs r2, #0 + 8000182: 701a strb r2, [r3, #0] + if (++c1s >= 10) { // 10 ms + 8000184: 4b0b ldr r3, [pc, #44] @ (80001b4 ) + 8000186: 781b ldrb r3, [r3, #0] + 8000188: 3301 adds r3, #1 + 800018a: b2da uxtb r2, r3 + 800018c: 4b09 ldr r3, [pc, #36] @ (80001b4 ) + 800018e: 701a strb r2, [r3, #0] + 8000190: 4b08 ldr r3, [pc, #32] @ (80001b4 ) + 8000192: 781b ldrb r3, [r3, #0] + 8000194: 2b09 cmp r3, #9 + 8000196: d907 bls.n 80001a8 + c1s = 0; + 8000198: 4b06 ldr r3, [pc, #24] @ (80001b4 ) + 800019a: 2200 movs r2, #0 + 800019c: 701a strb r2, [r3, #0] + HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); + 800019e: f44f 5100 mov.w r1, #8192 @ 0x2000 + 80001a2: 4805 ldr r0, [pc, #20] @ (80001b8 ) + 80001a4: f001 fb56 bl 8001854 + } + } + } +} + 80001a8: bf00 nop + 80001aa: bd80 pop {r7, pc} + 80001ac: 20000338 .word 0x20000338 + 80001b0: 20000339 .word 0x20000339 + 80001b4: 2000033a .word 0x2000033a + 80001b8: 40011000 .word 0x40011000 + +080001bc
: +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + 80001bc: b580 push {r7, lr} + 80001be: b09a sub sp, #104 @ 0x68 + 80001c0: af00 add r7, sp, #0 + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + 80001c2: f000 fe23 bl 8000e0c + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + 80001c6: f000 f873 bl 80002b0 + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + 80001ca: f000 fbb5 bl 8000938 + MX_USB_DEVICE_Init(); + 80001ce: f008 fa85 bl 80086dc + MX_TIM2_Init(); + 80001d2: f000 f9c9 bl 8000568 + MX_TIM4_Init(); + 80001d6: f000 fb0d bl 80007f4 + MX_TIM3_Init(); + 80001da: f000 fa69 bl 80006b0 + MX_ADC1_Init(); + 80001de: f000 f8c5 bl 800036c + MX_TIM1_Init(); + 80001e2: f000 f901 bl 80003e8 + + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); + 80001e6: 2100 movs r1, #0 + 80001e8: 482b ldr r0, [pc, #172] @ (8000298 ) + 80001ea: f003 fde9 bl 8003dc0 + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2); + 80001ee: 2104 movs r1, #4 + 80001f0: 4829 ldr r0, [pc, #164] @ (8000298 ) + 80001f2: f003 fde5 bl 8003dc0 + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3); + 80001f6: 2108 movs r1, #8 + 80001f8: 4827 ldr r0, [pc, #156] @ (8000298 ) + 80001fa: f003 fde1 bl 8003dc0 + HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); + 80001fe: 2100 movs r1, #0 + 8000200: 4826 ldr r0, [pc, #152] @ (800029c ) + 8000202: f003 fddd bl 8003dc0 + HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); + 8000206: 2104 movs r1, #4 + 8000208: 4824 ldr r0, [pc, #144] @ (800029c ) + 800020a: f003 fdd9 bl 8003dc0 + HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); + 800020e: 2108 movs r1, #8 + 8000210: 4822 ldr r0, [pc, #136] @ (800029c ) + 8000212: f003 fdd5 bl 8003dc0 + HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); + 8000216: 210c movs r1, #12 + 8000218: 4820 ldr r0, [pc, #128] @ (800029c ) + 800021a: f003 fdd1 bl 8003dc0 + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); + 800021e: 2100 movs r1, #0 + 8000220: 481f ldr r0, [pc, #124] @ (80002a0 ) + 8000222: f003 fdcd bl 8003dc0 + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2); + 8000226: 2104 movs r1, #4 + 8000228: 481d ldr r0, [pc, #116] @ (80002a0 ) + 800022a: f003 fdc9 bl 8003dc0 + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3); + 800022e: 2108 movs r1, #8 + 8000230: 481b ldr r0, [pc, #108] @ (80002a0 ) + 8000232: f003 fdc5 bl 8003dc0 + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4); + 8000236: 210c movs r1, #12 + 8000238: 4819 ldr r0, [pc, #100] @ (80002a0 ) + 800023a: f003 fdc1 bl 8003dc0 + HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); + 800023e: 2100 movs r1, #0 + 8000240: 4818 ldr r0, [pc, #96] @ (80002a4 ) + 8000242: f003 fdbd bl 8003dc0 + HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2); + 8000246: 2104 movs r1, #4 + 8000248: 4816 ldr r0, [pc, #88] @ (80002a4 ) + 800024a: f003 fdb9 bl 8003dc0 + HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3); + 800024e: 2108 movs r1, #8 + 8000250: 4814 ldr r0, [pc, #80] @ (80002a4 ) + 8000252: f003 fdb5 bl 8003dc0 + HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4); + 8000256: 210c movs r1, #12 + 8000258: 4812 ldr r0, [pc, #72] @ (80002a4 ) + 800025a: f003 fdb1 bl 8003dc0 + /* USER CODE BEGIN 2 */ + + + CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); + 800025e: 2107 movs r1, #7 + 8000260: 4811 ldr r0, [pc, #68] @ (80002a8 ) + 8000262: f008 fb77 bl 8008954 + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1){ + while (CDC_Available()) { + 8000266: e011 b.n 800028c + int c = CDC_ReadByte(); + 8000268: f008 fab2 bl 80087d0 + 800026c: 6678 str r0, [r7, #100] @ 0x64 + +// uint8_t out = (uint8_t)c; +// if (out >= 'a' && out <= 'z') out -= 32; // to upper + + unsigned char s[100]; + sprintf((char*)s,"\nc=%03d",c); + 800026e: 463b mov r3, r7 + 8000270: 6e7a ldr r2, [r7, #100] @ 0x64 + 8000272: 490e ldr r1, [pc, #56] @ (80002ac ) + 8000274: 4618 mov r0, r3 + 8000276: f008 ff4b bl 8009110 + while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { + 800027a: bf00 nop + 800027c: 463b mov r3, r7 + 800027e: 2106 movs r1, #6 + 8000280: 4618 mov r0, r3 + 8000282: f008 fb67 bl 8008954 + 8000286: 4603 mov r3, r0 + 8000288: 2b01 cmp r3, #1 + 800028a: d0f7 beq.n 800027c + while (CDC_Available()) { + 800028c: f008 fa8c bl 80087a8 + 8000290: 4603 mov r3, r0 + 8000292: 2b00 cmp r3, #0 + 8000294: d1e8 bne.n 8000268 + 8000296: e7f9 b.n 800028c + 8000298: 20000218 .word 0x20000218 + 800029c: 20000260 .word 0x20000260 + 80002a0: 200002a8 .word 0x200002a8 + 80002a4: 200002f0 .word 0x200002f0 + 80002a8: 08009a88 .word 0x08009a88 + 80002ac: 08009a90 .word 0x08009a90 + +080002b0 : +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + 80002b0: b580 push {r7, lr} + 80002b2: b094 sub sp, #80 @ 0x50 + 80002b4: af00 add r7, sp, #0 + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 80002b6: f107 0328 add.w r3, r7, #40 @ 0x28 + 80002ba: 2228 movs r2, #40 @ 0x28 + 80002bc: 2100 movs r1, #0 + 80002be: 4618 mov r0, r3 + 80002c0: f008 ff48 bl 8009154 + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 80002c4: f107 0314 add.w r3, r7, #20 + 80002c8: 2200 movs r2, #0 + 80002ca: 601a str r2, [r3, #0] + 80002cc: 605a str r2, [r3, #4] + 80002ce: 609a str r2, [r3, #8] + 80002d0: 60da str r2, [r3, #12] + 80002d2: 611a str r2, [r3, #16] + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + 80002d4: 1d3b adds r3, r7, #4 + 80002d6: 2200 movs r2, #0 + 80002d8: 601a str r2, [r3, #0] + 80002da: 605a str r2, [r3, #4] + 80002dc: 609a str r2, [r3, #8] + 80002de: 60da str r2, [r3, #12] + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + 80002e0: 2301 movs r3, #1 + 80002e2: 62bb str r3, [r7, #40] @ 0x28 + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + 80002e4: f44f 3380 mov.w r3, #65536 @ 0x10000 + 80002e8: 62fb str r3, [r7, #44] @ 0x2c + RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; + 80002ea: 2300 movs r3, #0 + 80002ec: 633b str r3, [r7, #48] @ 0x30 + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 80002ee: 2301 movs r3, #1 + 80002f0: 63bb str r3, [r7, #56] @ 0x38 + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + 80002f2: 2302 movs r3, #2 + 80002f4: 647b str r3, [r7, #68] @ 0x44 + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + 80002f6: f44f 3380 mov.w r3, #65536 @ 0x10000 + 80002fa: 64bb str r3, [r7, #72] @ 0x48 + RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; + 80002fc: f44f 13e0 mov.w r3, #1835008 @ 0x1c0000 + 8000300: 64fb str r3, [r7, #76] @ 0x4c + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 8000302: f107 0328 add.w r3, r7, #40 @ 0x28 + 8000306: 4618 mov r0, r3 + 8000308: f003 f81e bl 8003348 + 800030c: 4603 mov r3, r0 + 800030e: 2b00 cmp r3, #0 + 8000310: d001 beq.n 8000316 + { + Error_Handler(); + 8000312: f000 fb69 bl 80009e8 + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + 8000316: 230f movs r3, #15 + 8000318: 617b str r3, [r7, #20] + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + 800031a: 2302 movs r3, #2 + 800031c: 61bb str r3, [r7, #24] + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 800031e: 2300 movs r3, #0 + 8000320: 61fb str r3, [r7, #28] + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + 8000322: f44f 6380 mov.w r3, #1024 @ 0x400 + 8000326: 623b str r3, [r7, #32] + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 8000328: 2300 movs r3, #0 + 800032a: 627b str r3, [r7, #36] @ 0x24 + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + 800032c: f107 0314 add.w r3, r7, #20 + 8000330: 2102 movs r1, #2 + 8000332: 4618 mov r0, r3 + 8000334: f003 fa8a bl 800384c + 8000338: 4603 mov r3, r0 + 800033a: 2b00 cmp r3, #0 + 800033c: d001 beq.n 8000342 + { + Error_Handler(); + 800033e: f000 fb53 bl 80009e8 + } + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; + 8000342: 2312 movs r3, #18 + 8000344: 607b str r3, [r7, #4] + PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; + 8000346: f44f 4300 mov.w r3, #32768 @ 0x8000 + 800034a: 60fb str r3, [r7, #12] + PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; + 800034c: 2300 movs r3, #0 + 800034e: 613b str r3, [r7, #16] + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + 8000350: 1d3b adds r3, r7, #4 + 8000352: 4618 mov r0, r3 + 8000354: f003 fbd6 bl 8003b04 + 8000358: 4603 mov r3, r0 + 800035a: 2b00 cmp r3, #0 + 800035c: d001 beq.n 8000362 + { + Error_Handler(); + 800035e: f000 fb43 bl 80009e8 + } +} + 8000362: bf00 nop + 8000364: 3750 adds r7, #80 @ 0x50 + 8000366: 46bd mov sp, r7 + 8000368: bd80 pop {r7, pc} + ... + +0800036c : + * @brief ADC1 Initialization Function + * @param None + * @retval None + */ +static void MX_ADC1_Init(void) +{ + 800036c: b580 push {r7, lr} + 800036e: b084 sub sp, #16 + 8000370: af00 add r7, sp, #0 + + /* USER CODE BEGIN ADC1_Init 0 */ + + /* USER CODE END ADC1_Init 0 */ + + ADC_ChannelConfTypeDef sConfig = {0}; + 8000372: 1d3b adds r3, r7, #4 + 8000374: 2200 movs r2, #0 + 8000376: 601a str r2, [r3, #0] + 8000378: 605a str r2, [r3, #4] + 800037a: 609a str r2, [r3, #8] + + /* USER CODE END ADC1_Init 1 */ + + /** Common config + */ + hadc1.Instance = ADC1; + 800037c: 4b18 ldr r3, [pc, #96] @ (80003e0 ) + 800037e: 4a19 ldr r2, [pc, #100] @ (80003e4 ) + 8000380: 601a str r2, [r3, #0] + hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; + 8000382: 4b17 ldr r3, [pc, #92] @ (80003e0 ) + 8000384: 2200 movs r2, #0 + 8000386: 609a str r2, [r3, #8] + hadc1.Init.ContinuousConvMode = DISABLE; + 8000388: 4b15 ldr r3, [pc, #84] @ (80003e0 ) + 800038a: 2200 movs r2, #0 + 800038c: 731a strb r2, [r3, #12] + hadc1.Init.DiscontinuousConvMode = DISABLE; + 800038e: 4b14 ldr r3, [pc, #80] @ (80003e0 ) + 8000390: 2200 movs r2, #0 + 8000392: 751a strb r2, [r3, #20] + hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; + 8000394: 4b12 ldr r3, [pc, #72] @ (80003e0 ) + 8000396: f44f 2260 mov.w r2, #917504 @ 0xe0000 + 800039a: 61da str r2, [r3, #28] + hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; + 800039c: 4b10 ldr r3, [pc, #64] @ (80003e0 ) + 800039e: 2200 movs r2, #0 + 80003a0: 605a str r2, [r3, #4] + hadc1.Init.NbrOfConversion = 1; + 80003a2: 4b0f ldr r3, [pc, #60] @ (80003e0 ) + 80003a4: 2201 movs r2, #1 + 80003a6: 611a str r2, [r3, #16] + if (HAL_ADC_Init(&hadc1) != HAL_OK) + 80003a8: 480d ldr r0, [pc, #52] @ (80003e0 ) + 80003aa: f000 fd91 bl 8000ed0 + 80003ae: 4603 mov r3, r0 + 80003b0: 2b00 cmp r3, #0 + 80003b2: d001 beq.n 80003b8 + { + Error_Handler(); + 80003b4: f000 fb18 bl 80009e8 + } + + /** Configure Regular Channel + */ + sConfig.Channel = ADC_CHANNEL_4; + 80003b8: 2304 movs r3, #4 + 80003ba: 607b str r3, [r7, #4] + sConfig.Rank = ADC_REGULAR_RANK_1; + 80003bc: 2301 movs r3, #1 + 80003be: 60bb str r3, [r7, #8] + sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; + 80003c0: 2300 movs r3, #0 + 80003c2: 60fb str r3, [r7, #12] + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 80003c4: 1d3b adds r3, r7, #4 + 80003c6: 4619 mov r1, r3 + 80003c8: 4805 ldr r0, [pc, #20] @ (80003e0 ) + 80003ca: f000 fe59 bl 8001080 + 80003ce: 4603 mov r3, r0 + 80003d0: 2b00 cmp r3, #0 + 80003d2: d001 beq.n 80003d8 + { + Error_Handler(); + 80003d4: f000 fb08 bl 80009e8 + } + /* USER CODE BEGIN ADC1_Init 2 */ + + /* USER CODE END ADC1_Init 2 */ + +} + 80003d8: bf00 nop + 80003da: 3710 adds r7, #16 + 80003dc: 46bd mov sp, r7 + 80003de: bd80 pop {r7, pc} + 80003e0: 200001e8 .word 0x200001e8 + 80003e4: 40012400 .word 0x40012400 + +080003e8 : + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM1_Init(void) +{ + 80003e8: b580 push {r7, lr} + 80003ea: b096 sub sp, #88 @ 0x58 + 80003ec: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 80003ee: f107 0348 add.w r3, r7, #72 @ 0x48 + 80003f2: 2200 movs r2, #0 + 80003f4: 601a str r2, [r3, #0] + 80003f6: 605a str r2, [r3, #4] + 80003f8: 609a str r2, [r3, #8] + 80003fa: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 80003fc: f107 0340 add.w r3, r7, #64 @ 0x40 + 8000400: 2200 movs r2, #0 + 8000402: 601a str r2, [r3, #0] + 8000404: 605a str r2, [r3, #4] + TIM_OC_InitTypeDef sConfigOC = {0}; + 8000406: f107 0324 add.w r3, r7, #36 @ 0x24 + 800040a: 2200 movs r2, #0 + 800040c: 601a str r2, [r3, #0] + 800040e: 605a str r2, [r3, #4] + 8000410: 609a str r2, [r3, #8] + 8000412: 60da str r2, [r3, #12] + 8000414: 611a str r2, [r3, #16] + 8000416: 615a str r2, [r3, #20] + 8000418: 619a str r2, [r3, #24] + TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0}; + 800041a: 1d3b adds r3, r7, #4 + 800041c: 2220 movs r2, #32 + 800041e: 2100 movs r1, #0 + 8000420: 4618 mov r0, r3 + 8000422: f008 fe97 bl 8009154 + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + htim1.Instance = TIM1; + 8000426: 4b4e ldr r3, [pc, #312] @ (8000560 ) + 8000428: 4a4e ldr r2, [pc, #312] @ (8000564 ) + 800042a: 601a str r2, [r3, #0] + htim1.Init.Prescaler = 0; + 800042c: 4b4c ldr r3, [pc, #304] @ (8000560 ) + 800042e: 2200 movs r2, #0 + 8000430: 605a str r2, [r3, #4] + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + 8000432: 4b4b ldr r3, [pc, #300] @ (8000560 ) + 8000434: 2200 movs r2, #0 + 8000436: 609a str r2, [r3, #8] + htim1.Init.Period = 17999; + 8000438: 4b49 ldr r3, [pc, #292] @ (8000560 ) + 800043a: f244 624f movw r2, #17999 @ 0x464f + 800043e: 60da str r2, [r3, #12] + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 8000440: 4b47 ldr r3, [pc, #284] @ (8000560 ) + 8000442: 2200 movs r2, #0 + 8000444: 611a str r2, [r3, #16] + htim1.Init.RepetitionCounter = 0; + 8000446: 4b46 ldr r3, [pc, #280] @ (8000560 ) + 8000448: 2200 movs r2, #0 + 800044a: 615a str r2, [r3, #20] + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + 800044c: 4b44 ldr r3, [pc, #272] @ (8000560 ) + 800044e: 2200 movs r2, #0 + 8000450: 619a str r2, [r3, #24] + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + 8000452: 4843 ldr r0, [pc, #268] @ (8000560 ) + 8000454: f003 fc0c bl 8003c70 + 8000458: 4603 mov r3, r0 + 800045a: 2b00 cmp r3, #0 + 800045c: d001 beq.n 8000462 + { + Error_Handler(); + 800045e: f000 fac3 bl 80009e8 + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 8000462: f44f 5380 mov.w r3, #4096 @ 0x1000 + 8000466: 64bb str r3, [r7, #72] @ 0x48 + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) + 8000468: f107 0348 add.w r3, r7, #72 @ 0x48 + 800046c: 4619 mov r1, r3 + 800046e: 483c ldr r0, [pc, #240] @ (8000560 ) + 8000470: f003 fe0a bl 8004088 + 8000474: 4603 mov r3, r0 + 8000476: 2b00 cmp r3, #0 + 8000478: d001 beq.n 800047e + { + Error_Handler(); + 800047a: f000 fab5 bl 80009e8 + } + if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) + 800047e: 4838 ldr r0, [pc, #224] @ (8000560 ) + 8000480: f003 fc45 bl 8003d0e + 8000484: 4603 mov r3, r0 + 8000486: 2b00 cmp r3, #0 + 8000488: d001 beq.n 800048e + { + Error_Handler(); + 800048a: f000 faad bl 80009e8 + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 800048e: 2300 movs r3, #0 + 8000490: 643b str r3, [r7, #64] @ 0x40 + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 8000492: 2300 movs r3, #0 + 8000494: 647b str r3, [r7, #68] @ 0x44 + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) + 8000496: f107 0340 add.w r3, r7, #64 @ 0x40 + 800049a: 4619 mov r1, r3 + 800049c: 4830 ldr r0, [pc, #192] @ (8000560 ) + 800049e: f004 f96b bl 8004778 + 80004a2: 4603 mov r3, r0 + 80004a4: 2b00 cmp r3, #0 + 80004a6: d001 beq.n 80004ac + { + Error_Handler(); + 80004a8: f000 fa9e bl 80009e8 + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + 80004ac: 2360 movs r3, #96 @ 0x60 + 80004ae: 627b str r3, [r7, #36] @ 0x24 + sConfigOC.Pulse = 2400; + 80004b0: f44f 6316 mov.w r3, #2400 @ 0x960 + 80004b4: 62bb str r3, [r7, #40] @ 0x28 + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + 80004b6: 2300 movs r3, #0 + 80004b8: 62fb str r3, [r7, #44] @ 0x2c + sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; + 80004ba: 2300 movs r3, #0 + 80004bc: 633b str r3, [r7, #48] @ 0x30 + sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; + 80004be: 2304 movs r3, #4 + 80004c0: 637b str r3, [r7, #52] @ 0x34 + sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; + 80004c2: 2300 movs r3, #0 + 80004c4: 63bb str r3, [r7, #56] @ 0x38 + sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; + 80004c6: 2300 movs r3, #0 + 80004c8: 63fb str r3, [r7, #60] @ 0x3c + if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + 80004ca: f107 0324 add.w r3, r7, #36 @ 0x24 + 80004ce: 2200 movs r2, #0 + 80004d0: 4619 mov r1, r3 + 80004d2: 4823 ldr r0, [pc, #140] @ (8000560 ) + 80004d4: f003 fd16 bl 8003f04 + 80004d8: 4603 mov r3, r0 + 80004da: 2b00 cmp r3, #0 + 80004dc: d001 beq.n 80004e2 + { + Error_Handler(); + 80004de: f000 fa83 bl 80009e8 + } + sConfigOC.Pulse = 5500; + 80004e2: f241 537c movw r3, #5500 @ 0x157c + 80004e6: 62bb str r3, [r7, #40] @ 0x28 + if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + 80004e8: f107 0324 add.w r3, r7, #36 @ 0x24 + 80004ec: 2204 movs r2, #4 + 80004ee: 4619 mov r1, r3 + 80004f0: 481b ldr r0, [pc, #108] @ (8000560 ) + 80004f2: f003 fd07 bl 8003f04 + 80004f6: 4603 mov r3, r0 + 80004f8: 2b00 cmp r3, #0 + 80004fa: d001 beq.n 8000500 + { + Error_Handler(); + 80004fc: f000 fa74 bl 80009e8 + } + sConfigOC.Pulse = 6500; + 8000500: f641 1364 movw r3, #6500 @ 0x1964 + 8000504: 62bb str r3, [r7, #40] @ 0x28 + if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) + 8000506: f107 0324 add.w r3, r7, #36 @ 0x24 + 800050a: 2208 movs r2, #8 + 800050c: 4619 mov r1, r3 + 800050e: 4814 ldr r0, [pc, #80] @ (8000560 ) + 8000510: f003 fcf8 bl 8003f04 + 8000514: 4603 mov r3, r0 + 8000516: 2b00 cmp r3, #0 + 8000518: d001 beq.n 800051e + { + Error_Handler(); + 800051a: f000 fa65 bl 80009e8 + } + sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; + 800051e: 2300 movs r3, #0 + 8000520: 607b str r3, [r7, #4] + sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; + 8000522: 2300 movs r3, #0 + 8000524: 60bb str r3, [r7, #8] + sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; + 8000526: 2300 movs r3, #0 + 8000528: 60fb str r3, [r7, #12] + sBreakDeadTimeConfig.DeadTime = 0; + 800052a: 2300 movs r3, #0 + 800052c: 613b str r3, [r7, #16] + sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; + 800052e: 2300 movs r3, #0 + 8000530: 617b str r3, [r7, #20] + sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; + 8000532: f44f 5300 mov.w r3, #8192 @ 0x2000 + 8000536: 61bb str r3, [r7, #24] + sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; + 8000538: 2300 movs r3, #0 + 800053a: 623b str r3, [r7, #32] + if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) + 800053c: 1d3b adds r3, r7, #4 + 800053e: 4619 mov r1, r3 + 8000540: 4807 ldr r0, [pc, #28] @ (8000560 ) + 8000542: f004 f977 bl 8004834 + 8000546: 4603 mov r3, r0 + 8000548: 2b00 cmp r3, #0 + 800054a: d001 beq.n 8000550 + { + Error_Handler(); + 800054c: f000 fa4c bl 80009e8 + } + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + HAL_TIM_MspPostInit(&htim1); + 8000550: 4803 ldr r0, [pc, #12] @ (8000560 ) + 8000552: f000 fb15 bl 8000b80 + +} + 8000556: bf00 nop + 8000558: 3758 adds r7, #88 @ 0x58 + 800055a: 46bd mov sp, r7 + 800055c: bd80 pop {r7, pc} + 800055e: bf00 nop + 8000560: 20000218 .word 0x20000218 + 8000564: 40012c00 .word 0x40012c00 + +08000568 : + * @brief TIM2 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM2_Init(void) +{ + 8000568: b580 push {r7, lr} + 800056a: b08e sub sp, #56 @ 0x38 + 800056c: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM2_Init 0 */ + + /* USER CODE END TIM2_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 800056e: f107 0328 add.w r3, r7, #40 @ 0x28 + 8000572: 2200 movs r2, #0 + 8000574: 601a str r2, [r3, #0] + 8000576: 605a str r2, [r3, #4] + 8000578: 609a str r2, [r3, #8] + 800057a: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 800057c: f107 0320 add.w r3, r7, #32 + 8000580: 2200 movs r2, #0 + 8000582: 601a str r2, [r3, #0] + 8000584: 605a str r2, [r3, #4] + TIM_OC_InitTypeDef sConfigOC = {0}; + 8000586: 1d3b adds r3, r7, #4 + 8000588: 2200 movs r2, #0 + 800058a: 601a str r2, [r3, #0] + 800058c: 605a str r2, [r3, #4] + 800058e: 609a str r2, [r3, #8] + 8000590: 60da str r2, [r3, #12] + 8000592: 611a str r2, [r3, #16] + 8000594: 615a str r2, [r3, #20] + 8000596: 619a str r2, [r3, #24] + + /* USER CODE BEGIN TIM2_Init 1 */ + + /* USER CODE END TIM2_Init 1 */ + htim2.Instance = TIM2; + 8000598: 4b44 ldr r3, [pc, #272] @ (80006ac ) + 800059a: f04f 4280 mov.w r2, #1073741824 @ 0x40000000 + 800059e: 601a str r2, [r3, #0] + htim2.Init.Prescaler = 0; + 80005a0: 4b42 ldr r3, [pc, #264] @ (80006ac ) + 80005a2: 2200 movs r2, #0 + 80005a4: 605a str r2, [r3, #4] + htim2.Init.CounterMode = TIM_COUNTERMODE_UP; + 80005a6: 4b41 ldr r3, [pc, #260] @ (80006ac ) + 80005a8: 2200 movs r2, #0 + 80005aa: 609a str r2, [r3, #8] + htim2.Init.Period = 17999; + 80005ac: 4b3f ldr r3, [pc, #252] @ (80006ac ) + 80005ae: f244 624f movw r2, #17999 @ 0x464f + 80005b2: 60da str r2, [r3, #12] + htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 80005b4: 4b3d ldr r3, [pc, #244] @ (80006ac ) + 80005b6: 2200 movs r2, #0 + 80005b8: 611a str r2, [r3, #16] + htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + 80005ba: 4b3c ldr r3, [pc, #240] @ (80006ac ) + 80005bc: 2200 movs r2, #0 + 80005be: 619a str r2, [r3, #24] + if (HAL_TIM_Base_Init(&htim2) != HAL_OK) + 80005c0: 483a ldr r0, [pc, #232] @ (80006ac ) + 80005c2: f003 fb55 bl 8003c70 + 80005c6: 4603 mov r3, r0 + 80005c8: 2b00 cmp r3, #0 + 80005ca: d001 beq.n 80005d0 + { + Error_Handler(); + 80005cc: f000 fa0c bl 80009e8 + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 80005d0: f44f 5380 mov.w r3, #4096 @ 0x1000 + 80005d4: 62bb str r3, [r7, #40] @ 0x28 + if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) + 80005d6: f107 0328 add.w r3, r7, #40 @ 0x28 + 80005da: 4619 mov r1, r3 + 80005dc: 4833 ldr r0, [pc, #204] @ (80006ac ) + 80005de: f003 fd53 bl 8004088 + 80005e2: 4603 mov r3, r0 + 80005e4: 2b00 cmp r3, #0 + 80005e6: d001 beq.n 80005ec + { + Error_Handler(); + 80005e8: f000 f9fe bl 80009e8 + } + if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) + 80005ec: 482f ldr r0, [pc, #188] @ (80006ac ) + 80005ee: f003 fb8e bl 8003d0e + 80005f2: 4603 mov r3, r0 + 80005f4: 2b00 cmp r3, #0 + 80005f6: d001 beq.n 80005fc + { + Error_Handler(); + 80005f8: f000 f9f6 bl 80009e8 + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 80005fc: 2300 movs r3, #0 + 80005fe: 623b str r3, [r7, #32] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 8000600: 2300 movs r3, #0 + 8000602: 627b str r3, [r7, #36] @ 0x24 + if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) + 8000604: f107 0320 add.w r3, r7, #32 + 8000608: 4619 mov r1, r3 + 800060a: 4828 ldr r0, [pc, #160] @ (80006ac ) + 800060c: f004 f8b4 bl 8004778 + 8000610: 4603 mov r3, r0 + 8000612: 2b00 cmp r3, #0 + 8000614: d001 beq.n 800061a + { + Error_Handler(); + 8000616: f000 f9e7 bl 80009e8 + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + 800061a: 2360 movs r3, #96 @ 0x60 + 800061c: 607b str r3, [r7, #4] + sConfigOC.Pulse = 1000; + 800061e: f44f 737a mov.w r3, #1000 @ 0x3e8 + 8000622: 60bb str r3, [r7, #8] + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + 8000624: 2300 movs r3, #0 + 8000626: 60fb str r3, [r7, #12] + sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; + 8000628: 2304 movs r3, #4 + 800062a: 617b str r3, [r7, #20] + if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + 800062c: 1d3b adds r3, r7, #4 + 800062e: 2200 movs r2, #0 + 8000630: 4619 mov r1, r3 + 8000632: 481e ldr r0, [pc, #120] @ (80006ac ) + 8000634: f003 fc66 bl 8003f04 + 8000638: 4603 mov r3, r0 + 800063a: 2b00 cmp r3, #0 + 800063c: d001 beq.n 8000642 + { + Error_Handler(); + 800063e: f000 f9d3 bl 80009e8 + } + sConfigOC.Pulse = 2000; + 8000642: f44f 63fa mov.w r3, #2000 @ 0x7d0 + 8000646: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + 8000648: 1d3b adds r3, r7, #4 + 800064a: 2204 movs r2, #4 + 800064c: 4619 mov r1, r3 + 800064e: 4817 ldr r0, [pc, #92] @ (80006ac ) + 8000650: f003 fc58 bl 8003f04 + 8000654: 4603 mov r3, r0 + 8000656: 2b00 cmp r3, #0 + 8000658: d001 beq.n 800065e + { + Error_Handler(); + 800065a: f000 f9c5 bl 80009e8 + } + sConfigOC.Pulse = 3000; + 800065e: f640 33b8 movw r3, #3000 @ 0xbb8 + 8000662: 60bb str r3, [r7, #8] + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + 8000664: 2300 movs r3, #0 + 8000666: 617b str r3, [r7, #20] + if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) + 8000668: 1d3b adds r3, r7, #4 + 800066a: 2208 movs r2, #8 + 800066c: 4619 mov r1, r3 + 800066e: 480f ldr r0, [pc, #60] @ (80006ac ) + 8000670: f003 fc48 bl 8003f04 + 8000674: 4603 mov r3, r0 + 8000676: 2b00 cmp r3, #0 + 8000678: d001 beq.n 800067e + { + Error_Handler(); + 800067a: f000 f9b5 bl 80009e8 + } + sConfigOC.Pulse = 4000; + 800067e: f44f 637a mov.w r3, #4000 @ 0xfa0 + 8000682: 60bb str r3, [r7, #8] + sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; + 8000684: 2304 movs r3, #4 + 8000686: 617b str r3, [r7, #20] + if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) + 8000688: 1d3b adds r3, r7, #4 + 800068a: 220c movs r2, #12 + 800068c: 4619 mov r1, r3 + 800068e: 4807 ldr r0, [pc, #28] @ (80006ac ) + 8000690: f003 fc38 bl 8003f04 + 8000694: 4603 mov r3, r0 + 8000696: 2b00 cmp r3, #0 + 8000698: d001 beq.n 800069e + { + Error_Handler(); + 800069a: f000 f9a5 bl 80009e8 + } + /* USER CODE BEGIN TIM2_Init 2 */ + + /* USER CODE END TIM2_Init 2 */ + HAL_TIM_MspPostInit(&htim2); + 800069e: 4803 ldr r0, [pc, #12] @ (80006ac ) + 80006a0: f000 fa6e bl 8000b80 + +} + 80006a4: bf00 nop + 80006a6: 3738 adds r7, #56 @ 0x38 + 80006a8: 46bd mov sp, r7 + 80006aa: bd80 pop {r7, pc} + 80006ac: 20000260 .word 0x20000260 + +080006b0 : + * @brief TIM3 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM3_Init(void) +{ + 80006b0: b580 push {r7, lr} + 80006b2: b08e sub sp, #56 @ 0x38 + 80006b4: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM3_Init 0 */ + + /* USER CODE END TIM3_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 80006b6: f107 0328 add.w r3, r7, #40 @ 0x28 + 80006ba: 2200 movs r2, #0 + 80006bc: 601a str r2, [r3, #0] + 80006be: 605a str r2, [r3, #4] + 80006c0: 609a str r2, [r3, #8] + 80006c2: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 80006c4: f107 0320 add.w r3, r7, #32 + 80006c8: 2200 movs r2, #0 + 80006ca: 601a str r2, [r3, #0] + 80006cc: 605a str r2, [r3, #4] + TIM_OC_InitTypeDef sConfigOC = {0}; + 80006ce: 1d3b adds r3, r7, #4 + 80006d0: 2200 movs r2, #0 + 80006d2: 601a str r2, [r3, #0] + 80006d4: 605a str r2, [r3, #4] + 80006d6: 609a str r2, [r3, #8] + 80006d8: 60da str r2, [r3, #12] + 80006da: 611a str r2, [r3, #16] + 80006dc: 615a str r2, [r3, #20] + 80006de: 619a str r2, [r3, #24] + + /* USER CODE BEGIN TIM3_Init 1 */ + + /* USER CODE END TIM3_Init 1 */ + htim3.Instance = TIM3; + 80006e0: 4b42 ldr r3, [pc, #264] @ (80007ec ) + 80006e2: 4a43 ldr r2, [pc, #268] @ (80007f0 ) + 80006e4: 601a str r2, [r3, #0] + htim3.Init.Prescaler = 0; + 80006e6: 4b41 ldr r3, [pc, #260] @ (80007ec ) + 80006e8: 2200 movs r2, #0 + 80006ea: 605a str r2, [r3, #4] + htim3.Init.CounterMode = TIM_COUNTERMODE_UP; + 80006ec: 4b3f ldr r3, [pc, #252] @ (80007ec ) + 80006ee: 2200 movs r2, #0 + 80006f0: 609a str r2, [r3, #8] + htim3.Init.Period = 17999; + 80006f2: 4b3e ldr r3, [pc, #248] @ (80007ec ) + 80006f4: f244 624f movw r2, #17999 @ 0x464f + 80006f8: 60da str r2, [r3, #12] + htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 80006fa: 4b3c ldr r3, [pc, #240] @ (80007ec ) + 80006fc: 2200 movs r2, #0 + 80006fe: 611a str r2, [r3, #16] + htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + 8000700: 4b3a ldr r3, [pc, #232] @ (80007ec ) + 8000702: 2200 movs r2, #0 + 8000704: 619a str r2, [r3, #24] + if (HAL_TIM_Base_Init(&htim3) != HAL_OK) + 8000706: 4839 ldr r0, [pc, #228] @ (80007ec ) + 8000708: f003 fab2 bl 8003c70 + 800070c: 4603 mov r3, r0 + 800070e: 2b00 cmp r3, #0 + 8000710: d001 beq.n 8000716 + { + Error_Handler(); + 8000712: f000 f969 bl 80009e8 + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 8000716: f44f 5380 mov.w r3, #4096 @ 0x1000 + 800071a: 62bb str r3, [r7, #40] @ 0x28 + if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) + 800071c: f107 0328 add.w r3, r7, #40 @ 0x28 + 8000720: 4619 mov r1, r3 + 8000722: 4832 ldr r0, [pc, #200] @ (80007ec ) + 8000724: f003 fcb0 bl 8004088 + 8000728: 4603 mov r3, r0 + 800072a: 2b00 cmp r3, #0 + 800072c: d001 beq.n 8000732 + { + Error_Handler(); + 800072e: f000 f95b bl 80009e8 + } + if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) + 8000732: 482e ldr r0, [pc, #184] @ (80007ec ) + 8000734: f003 faeb bl 8003d0e + 8000738: 4603 mov r3, r0 + 800073a: 2b00 cmp r3, #0 + 800073c: d001 beq.n 8000742 + { + Error_Handler(); + 800073e: f000 f953 bl 80009e8 + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 8000742: 2300 movs r3, #0 + 8000744: 623b str r3, [r7, #32] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 8000746: 2300 movs r3, #0 + 8000748: 627b str r3, [r7, #36] @ 0x24 + if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) + 800074a: f107 0320 add.w r3, r7, #32 + 800074e: 4619 mov r1, r3 + 8000750: 4826 ldr r0, [pc, #152] @ (80007ec ) + 8000752: f004 f811 bl 8004778 + 8000756: 4603 mov r3, r0 + 8000758: 2b00 cmp r3, #0 + 800075a: d001 beq.n 8000760 + { + Error_Handler(); + 800075c: f000 f944 bl 80009e8 + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + 8000760: 2360 movs r3, #96 @ 0x60 + 8000762: 607b str r3, [r7, #4] + sConfigOC.Pulse = 9000; + 8000764: f242 3328 movw r3, #9000 @ 0x2328 + 8000768: 60bb str r3, [r7, #8] + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + 800076a: 2300 movs r3, #0 + 800076c: 60fb str r3, [r7, #12] + sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; + 800076e: 2304 movs r3, #4 + 8000770: 617b str r3, [r7, #20] + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + 8000772: 1d3b adds r3, r7, #4 + 8000774: 2200 movs r2, #0 + 8000776: 4619 mov r1, r3 + 8000778: 481c ldr r0, [pc, #112] @ (80007ec ) + 800077a: f003 fbc3 bl 8003f04 + 800077e: 4603 mov r3, r0 + 8000780: 2b00 cmp r3, #0 + 8000782: d001 beq.n 8000788 + { + Error_Handler(); + 8000784: f000 f930 bl 80009e8 + } + sConfigOC.Pulse = 10000; + 8000788: f242 7310 movw r3, #10000 @ 0x2710 + 800078c: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + 800078e: 1d3b adds r3, r7, #4 + 8000790: 2204 movs r2, #4 + 8000792: 4619 mov r1, r3 + 8000794: 4815 ldr r0, [pc, #84] @ (80007ec ) + 8000796: f003 fbb5 bl 8003f04 + 800079a: 4603 mov r3, r0 + 800079c: 2b00 cmp r3, #0 + 800079e: d001 beq.n 80007a4 + { + Error_Handler(); + 80007a0: f000 f922 bl 80009e8 + } + sConfigOC.Pulse = 11000; + 80007a4: f642 23f8 movw r3, #11000 @ 0x2af8 + 80007a8: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) + 80007aa: 1d3b adds r3, r7, #4 + 80007ac: 2208 movs r2, #8 + 80007ae: 4619 mov r1, r3 + 80007b0: 480e ldr r0, [pc, #56] @ (80007ec ) + 80007b2: f003 fba7 bl 8003f04 + 80007b6: 4603 mov r3, r0 + 80007b8: 2b00 cmp r3, #0 + 80007ba: d001 beq.n 80007c0 + { + Error_Handler(); + 80007bc: f000 f914 bl 80009e8 + } + sConfigOC.Pulse = 12000; + 80007c0: f642 63e0 movw r3, #12000 @ 0x2ee0 + 80007c4: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) + 80007c6: 1d3b adds r3, r7, #4 + 80007c8: 220c movs r2, #12 + 80007ca: 4619 mov r1, r3 + 80007cc: 4807 ldr r0, [pc, #28] @ (80007ec ) + 80007ce: f003 fb99 bl 8003f04 + 80007d2: 4603 mov r3, r0 + 80007d4: 2b00 cmp r3, #0 + 80007d6: d001 beq.n 80007dc + { + Error_Handler(); + 80007d8: f000 f906 bl 80009e8 + } + /* USER CODE BEGIN TIM3_Init 2 */ + + /* USER CODE END TIM3_Init 2 */ + HAL_TIM_MspPostInit(&htim3); + 80007dc: 4803 ldr r0, [pc, #12] @ (80007ec ) + 80007de: f000 f9cf bl 8000b80 + +} + 80007e2: bf00 nop + 80007e4: 3738 adds r7, #56 @ 0x38 + 80007e6: 46bd mov sp, r7 + 80007e8: bd80 pop {r7, pc} + 80007ea: bf00 nop + 80007ec: 200002a8 .word 0x200002a8 + 80007f0: 40000400 .word 0x40000400 + +080007f4 : + * @brief TIM4 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM4_Init(void) +{ + 80007f4: b580 push {r7, lr} + 80007f6: b08e sub sp, #56 @ 0x38 + 80007f8: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM4_Init 0 */ + + /* USER CODE END TIM4_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 80007fa: f107 0328 add.w r3, r7, #40 @ 0x28 + 80007fe: 2200 movs r2, #0 + 8000800: 601a str r2, [r3, #0] + 8000802: 605a str r2, [r3, #4] + 8000804: 609a str r2, [r3, #8] + 8000806: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 8000808: f107 0320 add.w r3, r7, #32 + 800080c: 2200 movs r2, #0 + 800080e: 601a str r2, [r3, #0] + 8000810: 605a str r2, [r3, #4] + TIM_OC_InitTypeDef sConfigOC = {0}; + 8000812: 1d3b adds r3, r7, #4 + 8000814: 2200 movs r2, #0 + 8000816: 601a str r2, [r3, #0] + 8000818: 605a str r2, [r3, #4] + 800081a: 609a str r2, [r3, #8] + 800081c: 60da str r2, [r3, #12] + 800081e: 611a str r2, [r3, #16] + 8000820: 615a str r2, [r3, #20] + 8000822: 619a str r2, [r3, #24] + + /* USER CODE BEGIN TIM4_Init 1 */ + + /* USER CODE END TIM4_Init 1 */ + htim4.Instance = TIM4; + 8000824: 4b42 ldr r3, [pc, #264] @ (8000930 ) + 8000826: 4a43 ldr r2, [pc, #268] @ (8000934 ) + 8000828: 601a str r2, [r3, #0] + htim4.Init.Prescaler = 0; + 800082a: 4b41 ldr r3, [pc, #260] @ (8000930 ) + 800082c: 2200 movs r2, #0 + 800082e: 605a str r2, [r3, #4] + htim4.Init.CounterMode = TIM_COUNTERMODE_UP; + 8000830: 4b3f ldr r3, [pc, #252] @ (8000930 ) + 8000832: 2200 movs r2, #0 + 8000834: 609a str r2, [r3, #8] + htim4.Init.Period = 17999; + 8000836: 4b3e ldr r3, [pc, #248] @ (8000930 ) + 8000838: f244 624f movw r2, #17999 @ 0x464f + 800083c: 60da str r2, [r3, #12] + htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 800083e: 4b3c ldr r3, [pc, #240] @ (8000930 ) + 8000840: 2200 movs r2, #0 + 8000842: 611a str r2, [r3, #16] + htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + 8000844: 4b3a ldr r3, [pc, #232] @ (8000930 ) + 8000846: 2200 movs r2, #0 + 8000848: 619a str r2, [r3, #24] + if (HAL_TIM_Base_Init(&htim4) != HAL_OK) + 800084a: 4839 ldr r0, [pc, #228] @ (8000930 ) + 800084c: f003 fa10 bl 8003c70 + 8000850: 4603 mov r3, r0 + 8000852: 2b00 cmp r3, #0 + 8000854: d001 beq.n 800085a + { + Error_Handler(); + 8000856: f000 f8c7 bl 80009e8 + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 800085a: f44f 5380 mov.w r3, #4096 @ 0x1000 + 800085e: 62bb str r3, [r7, #40] @ 0x28 + if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) + 8000860: f107 0328 add.w r3, r7, #40 @ 0x28 + 8000864: 4619 mov r1, r3 + 8000866: 4832 ldr r0, [pc, #200] @ (8000930 ) + 8000868: f003 fc0e bl 8004088 + 800086c: 4603 mov r3, r0 + 800086e: 2b00 cmp r3, #0 + 8000870: d001 beq.n 8000876 + { + Error_Handler(); + 8000872: f000 f8b9 bl 80009e8 + } + if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) + 8000876: 482e ldr r0, [pc, #184] @ (8000930 ) + 8000878: f003 fa49 bl 8003d0e + 800087c: 4603 mov r3, r0 + 800087e: 2b00 cmp r3, #0 + 8000880: d001 beq.n 8000886 + { + Error_Handler(); + 8000882: f000 f8b1 bl 80009e8 + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 8000886: 2300 movs r3, #0 + 8000888: 623b str r3, [r7, #32] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 800088a: 2300 movs r3, #0 + 800088c: 627b str r3, [r7, #36] @ 0x24 + if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) + 800088e: f107 0320 add.w r3, r7, #32 + 8000892: 4619 mov r1, r3 + 8000894: 4826 ldr r0, [pc, #152] @ (8000930 ) + 8000896: f003 ff6f bl 8004778 + 800089a: 4603 mov r3, r0 + 800089c: 2b00 cmp r3, #0 + 800089e: d001 beq.n 80008a4 + { + Error_Handler(); + 80008a0: f000 f8a2 bl 80009e8 + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + 80008a4: 2360 movs r3, #96 @ 0x60 + 80008a6: 607b str r3, [r7, #4] + sConfigOC.Pulse = 5000; + 80008a8: f241 3388 movw r3, #5000 @ 0x1388 + 80008ac: 60bb str r3, [r7, #8] + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + 80008ae: 2300 movs r3, #0 + 80008b0: 60fb str r3, [r7, #12] + sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; + 80008b2: 2304 movs r3, #4 + 80008b4: 617b str r3, [r7, #20] + if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + 80008b6: 1d3b adds r3, r7, #4 + 80008b8: 2200 movs r2, #0 + 80008ba: 4619 mov r1, r3 + 80008bc: 481c ldr r0, [pc, #112] @ (8000930 ) + 80008be: f003 fb21 bl 8003f04 + 80008c2: 4603 mov r3, r0 + 80008c4: 2b00 cmp r3, #0 + 80008c6: d001 beq.n 80008cc + { + Error_Handler(); + 80008c8: f000 f88e bl 80009e8 + } + sConfigOC.Pulse = 6000; + 80008cc: f241 7370 movw r3, #6000 @ 0x1770 + 80008d0: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + 80008d2: 1d3b adds r3, r7, #4 + 80008d4: 2204 movs r2, #4 + 80008d6: 4619 mov r1, r3 + 80008d8: 4815 ldr r0, [pc, #84] @ (8000930 ) + 80008da: f003 fb13 bl 8003f04 + 80008de: 4603 mov r3, r0 + 80008e0: 2b00 cmp r3, #0 + 80008e2: d001 beq.n 80008e8 + { + Error_Handler(); + 80008e4: f000 f880 bl 80009e8 + } + sConfigOC.Pulse = 7000; + 80008e8: f641 3358 movw r3, #7000 @ 0x1b58 + 80008ec: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) + 80008ee: 1d3b adds r3, r7, #4 + 80008f0: 2208 movs r2, #8 + 80008f2: 4619 mov r1, r3 + 80008f4: 480e ldr r0, [pc, #56] @ (8000930 ) + 80008f6: f003 fb05 bl 8003f04 + 80008fa: 4603 mov r3, r0 + 80008fc: 2b00 cmp r3, #0 + 80008fe: d001 beq.n 8000904 + { + Error_Handler(); + 8000900: f000 f872 bl 80009e8 + } + sConfigOC.Pulse = 8000; + 8000904: f44f 53fa mov.w r3, #8000 @ 0x1f40 + 8000908: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) + 800090a: 1d3b adds r3, r7, #4 + 800090c: 220c movs r2, #12 + 800090e: 4619 mov r1, r3 + 8000910: 4807 ldr r0, [pc, #28] @ (8000930 ) + 8000912: f003 faf7 bl 8003f04 + 8000916: 4603 mov r3, r0 + 8000918: 2b00 cmp r3, #0 + 800091a: d001 beq.n 8000920 + { + Error_Handler(); + 800091c: f000 f864 bl 80009e8 + } + /* USER CODE BEGIN TIM4_Init 2 */ + + /* USER CODE END TIM4_Init 2 */ + HAL_TIM_MspPostInit(&htim4); + 8000920: 4803 ldr r0, [pc, #12] @ (8000930 ) + 8000922: f000 f92d bl 8000b80 + +} + 8000926: bf00 nop + 8000928: 3738 adds r7, #56 @ 0x38 + 800092a: 46bd mov sp, r7 + 800092c: bd80 pop {r7, pc} + 800092e: bf00 nop + 8000930: 200002f0 .word 0x200002f0 + 8000934: 40000800 .word 0x40000800 + +08000938 : + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + 8000938: b580 push {r7, lr} + 800093a: b088 sub sp, #32 + 800093c: af00 add r7, sp, #0 + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 800093e: f107 0310 add.w r3, r7, #16 + 8000942: 2200 movs r2, #0 + 8000944: 601a str r2, [r3, #0] + 8000946: 605a str r2, [r3, #4] + 8000948: 609a str r2, [r3, #8] + 800094a: 60da str r2, [r3, #12] + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOC_CLK_ENABLE(); + 800094c: 4b24 ldr r3, [pc, #144] @ (80009e0 ) + 800094e: 699b ldr r3, [r3, #24] + 8000950: 4a23 ldr r2, [pc, #140] @ (80009e0 ) + 8000952: f043 0310 orr.w r3, r3, #16 + 8000956: 6193 str r3, [r2, #24] + 8000958: 4b21 ldr r3, [pc, #132] @ (80009e0 ) + 800095a: 699b ldr r3, [r3, #24] + 800095c: f003 0310 and.w r3, r3, #16 + 8000960: 60fb str r3, [r7, #12] + 8000962: 68fb ldr r3, [r7, #12] + __HAL_RCC_GPIOD_CLK_ENABLE(); + 8000964: 4b1e ldr r3, [pc, #120] @ (80009e0 ) + 8000966: 699b ldr r3, [r3, #24] + 8000968: 4a1d ldr r2, [pc, #116] @ (80009e0 ) + 800096a: f043 0320 orr.w r3, r3, #32 + 800096e: 6193 str r3, [r2, #24] + 8000970: 4b1b ldr r3, [pc, #108] @ (80009e0 ) + 8000972: 699b ldr r3, [r3, #24] + 8000974: f003 0320 and.w r3, r3, #32 + 8000978: 60bb str r3, [r7, #8] + 800097a: 68bb ldr r3, [r7, #8] + __HAL_RCC_GPIOA_CLK_ENABLE(); + 800097c: 4b18 ldr r3, [pc, #96] @ (80009e0 ) + 800097e: 699b ldr r3, [r3, #24] + 8000980: 4a17 ldr r2, [pc, #92] @ (80009e0 ) + 8000982: f043 0304 orr.w r3, r3, #4 + 8000986: 6193 str r3, [r2, #24] + 8000988: 4b15 ldr r3, [pc, #84] @ (80009e0 ) + 800098a: 699b ldr r3, [r3, #24] + 800098c: f003 0304 and.w r3, r3, #4 + 8000990: 607b str r3, [r7, #4] + 8000992: 687b ldr r3, [r7, #4] + __HAL_RCC_GPIOB_CLK_ENABLE(); + 8000994: 4b12 ldr r3, [pc, #72] @ (80009e0 ) + 8000996: 699b ldr r3, [r3, #24] + 8000998: 4a11 ldr r2, [pc, #68] @ (80009e0 ) + 800099a: f043 0308 orr.w r3, r3, #8 + 800099e: 6193 str r3, [r2, #24] + 80009a0: 4b0f ldr r3, [pc, #60] @ (80009e0 ) + 80009a2: 699b ldr r3, [r3, #24] + 80009a4: f003 0308 and.w r3, r3, #8 + 80009a8: 603b str r3, [r7, #0] + 80009aa: 683b ldr r3, [r7, #0] + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); + 80009ac: 2200 movs r2, #0 + 80009ae: f44f 5100 mov.w r1, #8192 @ 0x2000 + 80009b2: 480c ldr r0, [pc, #48] @ (80009e4 ) + 80009b4: f000 ff36 bl 8001824 + + /*Configure GPIO pin : PC13 */ + GPIO_InitStruct.Pin = GPIO_PIN_13; + 80009b8: f44f 5300 mov.w r3, #8192 @ 0x2000 + 80009bc: 613b str r3, [r7, #16] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 80009be: 2301 movs r3, #1 + 80009c0: 617b str r3, [r7, #20] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 80009c2: 2300 movs r3, #0 + 80009c4: 61bb str r3, [r7, #24] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 80009c6: 2302 movs r3, #2 + 80009c8: 61fb str r3, [r7, #28] + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 80009ca: f107 0310 add.w r3, r7, #16 + 80009ce: 4619 mov r1, r3 + 80009d0: 4804 ldr r0, [pc, #16] @ (80009e4 ) + 80009d2: f000 fda3 bl 800151c + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + 80009d6: bf00 nop + 80009d8: 3720 adds r7, #32 + 80009da: 46bd mov sp, r7 + 80009dc: bd80 pop {r7, pc} + 80009de: bf00 nop + 80009e0: 40021000 .word 0x40021000 + 80009e4: 40011000 .word 0x40011000 + +080009e8 : +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + 80009e8: b480 push {r7} + 80009ea: af00 add r7, sp, #0 + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); + 80009ec: b672 cpsid i +} + 80009ee: 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) + 80009f0: bf00 nop + 80009f2: e7fd b.n 80009f0 + +080009f4 : +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + 80009f4: b480 push {r7} + 80009f6: b085 sub sp, #20 + 80009f8: af00 add r7, sp, #0 + + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_AFIO_CLK_ENABLE(); + 80009fa: 4b15 ldr r3, [pc, #84] @ (8000a50 ) + 80009fc: 699b ldr r3, [r3, #24] + 80009fe: 4a14 ldr r2, [pc, #80] @ (8000a50 ) + 8000a00: f043 0301 orr.w r3, r3, #1 + 8000a04: 6193 str r3, [r2, #24] + 8000a06: 4b12 ldr r3, [pc, #72] @ (8000a50 ) + 8000a08: 699b ldr r3, [r3, #24] + 8000a0a: f003 0301 and.w r3, r3, #1 + 8000a0e: 60bb str r3, [r7, #8] + 8000a10: 68bb ldr r3, [r7, #8] + __HAL_RCC_PWR_CLK_ENABLE(); + 8000a12: 4b0f ldr r3, [pc, #60] @ (8000a50 ) + 8000a14: 69db ldr r3, [r3, #28] + 8000a16: 4a0e ldr r2, [pc, #56] @ (8000a50 ) + 8000a18: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8000a1c: 61d3 str r3, [r2, #28] + 8000a1e: 4b0c ldr r3, [pc, #48] @ (8000a50 ) + 8000a20: 69db ldr r3, [r3, #28] + 8000a22: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8000a26: 607b str r3, [r7, #4] + 8000a28: 687b ldr r3, [r7, #4] + + /* System interrupt init*/ + + /** DISABLE: JTAG-DP Disabled and SW-DP Disabled + */ + __HAL_AFIO_REMAP_SWJ_DISABLE(); + 8000a2a: 4b0a ldr r3, [pc, #40] @ (8000a54 ) + 8000a2c: 685b ldr r3, [r3, #4] + 8000a2e: 60fb str r3, [r7, #12] + 8000a30: 68fb ldr r3, [r7, #12] + 8000a32: f023 63e0 bic.w r3, r3, #117440512 @ 0x7000000 + 8000a36: 60fb str r3, [r7, #12] + 8000a38: 68fb ldr r3, [r7, #12] + 8000a3a: f043 6380 orr.w r3, r3, #67108864 @ 0x4000000 + 8000a3e: 60fb str r3, [r7, #12] + 8000a40: 4a04 ldr r2, [pc, #16] @ (8000a54 ) + 8000a42: 68fb ldr r3, [r7, #12] + 8000a44: 6053 str r3, [r2, #4] + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + 8000a46: bf00 nop + 8000a48: 3714 adds r7, #20 + 8000a4a: 46bd mov sp, r7 + 8000a4c: bc80 pop {r7} + 8000a4e: 4770 bx lr + 8000a50: 40021000 .word 0x40021000 + 8000a54: 40010000 .word 0x40010000 + +08000a58 : + * This function configures the hardware resources used in this example + * @param hadc: ADC handle pointer + * @retval None + */ +void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) +{ + 8000a58: b580 push {r7, lr} + 8000a5a: b088 sub sp, #32 + 8000a5c: af00 add r7, sp, #0 + 8000a5e: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000a60: f107 0310 add.w r3, r7, #16 + 8000a64: 2200 movs r2, #0 + 8000a66: 601a str r2, [r3, #0] + 8000a68: 605a str r2, [r3, #4] + 8000a6a: 609a str r2, [r3, #8] + 8000a6c: 60da str r2, [r3, #12] + if(hadc->Instance==ADC1) + 8000a6e: 687b ldr r3, [r7, #4] + 8000a70: 681b ldr r3, [r3, #0] + 8000a72: 4a14 ldr r2, [pc, #80] @ (8000ac4 ) + 8000a74: 4293 cmp r3, r2 + 8000a76: d121 bne.n 8000abc + { + /* USER CODE BEGIN ADC1_MspInit 0 */ + + /* USER CODE END ADC1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_ADC1_CLK_ENABLE(); + 8000a78: 4b13 ldr r3, [pc, #76] @ (8000ac8 ) + 8000a7a: 699b ldr r3, [r3, #24] + 8000a7c: 4a12 ldr r2, [pc, #72] @ (8000ac8 ) + 8000a7e: f443 7300 orr.w r3, r3, #512 @ 0x200 + 8000a82: 6193 str r3, [r2, #24] + 8000a84: 4b10 ldr r3, [pc, #64] @ (8000ac8 ) + 8000a86: 699b ldr r3, [r3, #24] + 8000a88: f403 7300 and.w r3, r3, #512 @ 0x200 + 8000a8c: 60fb str r3, [r7, #12] + 8000a8e: 68fb ldr r3, [r7, #12] + + __HAL_RCC_GPIOA_CLK_ENABLE(); + 8000a90: 4b0d ldr r3, [pc, #52] @ (8000ac8 ) + 8000a92: 699b ldr r3, [r3, #24] + 8000a94: 4a0c ldr r2, [pc, #48] @ (8000ac8 ) + 8000a96: f043 0304 orr.w r3, r3, #4 + 8000a9a: 6193 str r3, [r2, #24] + 8000a9c: 4b0a ldr r3, [pc, #40] @ (8000ac8 ) + 8000a9e: 699b ldr r3, [r3, #24] + 8000aa0: f003 0304 and.w r3, r3, #4 + 8000aa4: 60bb str r3, [r7, #8] + 8000aa6: 68bb ldr r3, [r7, #8] + /**ADC1 GPIO Configuration + PA4 ------> ADC1_IN4 + PA5 ------> ADC1_IN5 + */ + GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5; + 8000aa8: 2330 movs r3, #48 @ 0x30 + 8000aaa: 613b str r3, [r7, #16] + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + 8000aac: 2303 movs r3, #3 + 8000aae: 617b str r3, [r7, #20] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8000ab0: f107 0310 add.w r3, r7, #16 + 8000ab4: 4619 mov r1, r3 + 8000ab6: 4805 ldr r0, [pc, #20] @ (8000acc ) + 8000ab8: f000 fd30 bl 800151c + + /* USER CODE END ADC1_MspInit 1 */ + + } + +} + 8000abc: bf00 nop + 8000abe: 3720 adds r7, #32 + 8000ac0: 46bd mov sp, r7 + 8000ac2: bd80 pop {r7, pc} + 8000ac4: 40012400 .word 0x40012400 + 8000ac8: 40021000 .word 0x40021000 + 8000acc: 40010800 .word 0x40010800 + +08000ad0 : + * 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) +{ + 8000ad0: b480 push {r7} + 8000ad2: b087 sub sp, #28 + 8000ad4: af00 add r7, sp, #0 + 8000ad6: 6078 str r0, [r7, #4] + if(htim_base->Instance==TIM1) + 8000ad8: 687b ldr r3, [r7, #4] + 8000ada: 681b ldr r3, [r3, #0] + 8000adc: 4a24 ldr r2, [pc, #144] @ (8000b70 ) + 8000ade: 4293 cmp r3, r2 + 8000ae0: d10c bne.n 8000afc + { + /* USER CODE BEGIN TIM1_MspInit 0 */ + + /* USER CODE END TIM1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM1_CLK_ENABLE(); + 8000ae2: 4b24 ldr r3, [pc, #144] @ (8000b74 ) + 8000ae4: 699b ldr r3, [r3, #24] + 8000ae6: 4a23 ldr r2, [pc, #140] @ (8000b74 ) + 8000ae8: f443 6300 orr.w r3, r3, #2048 @ 0x800 + 8000aec: 6193 str r3, [r2, #24] + 8000aee: 4b21 ldr r3, [pc, #132] @ (8000b74 ) + 8000af0: 699b ldr r3, [r3, #24] + 8000af2: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8000af6: 617b str r3, [r7, #20] + 8000af8: 697b ldr r3, [r7, #20] + /* USER CODE BEGIN TIM4_MspInit 1 */ + + /* USER CODE END TIM4_MspInit 1 */ + } + +} + 8000afa: e034 b.n 8000b66 + else if(htim_base->Instance==TIM2) + 8000afc: 687b ldr r3, [r7, #4] + 8000afe: 681b ldr r3, [r3, #0] + 8000b00: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8000b04: d10c bne.n 8000b20 + __HAL_RCC_TIM2_CLK_ENABLE(); + 8000b06: 4b1b ldr r3, [pc, #108] @ (8000b74 ) + 8000b08: 69db ldr r3, [r3, #28] + 8000b0a: 4a1a ldr r2, [pc, #104] @ (8000b74 ) + 8000b0c: f043 0301 orr.w r3, r3, #1 + 8000b10: 61d3 str r3, [r2, #28] + 8000b12: 4b18 ldr r3, [pc, #96] @ (8000b74 ) + 8000b14: 69db ldr r3, [r3, #28] + 8000b16: f003 0301 and.w r3, r3, #1 + 8000b1a: 613b str r3, [r7, #16] + 8000b1c: 693b ldr r3, [r7, #16] +} + 8000b1e: e022 b.n 8000b66 + else if(htim_base->Instance==TIM3) + 8000b20: 687b ldr r3, [r7, #4] + 8000b22: 681b ldr r3, [r3, #0] + 8000b24: 4a14 ldr r2, [pc, #80] @ (8000b78 ) + 8000b26: 4293 cmp r3, r2 + 8000b28: d10c bne.n 8000b44 + __HAL_RCC_TIM3_CLK_ENABLE(); + 8000b2a: 4b12 ldr r3, [pc, #72] @ (8000b74 ) + 8000b2c: 69db ldr r3, [r3, #28] + 8000b2e: 4a11 ldr r2, [pc, #68] @ (8000b74 ) + 8000b30: f043 0302 orr.w r3, r3, #2 + 8000b34: 61d3 str r3, [r2, #28] + 8000b36: 4b0f ldr r3, [pc, #60] @ (8000b74 ) + 8000b38: 69db ldr r3, [r3, #28] + 8000b3a: f003 0302 and.w r3, r3, #2 + 8000b3e: 60fb str r3, [r7, #12] + 8000b40: 68fb ldr r3, [r7, #12] +} + 8000b42: e010 b.n 8000b66 + else if(htim_base->Instance==TIM4) + 8000b44: 687b ldr r3, [r7, #4] + 8000b46: 681b ldr r3, [r3, #0] + 8000b48: 4a0c ldr r2, [pc, #48] @ (8000b7c ) + 8000b4a: 4293 cmp r3, r2 + 8000b4c: d10b bne.n 8000b66 + __HAL_RCC_TIM4_CLK_ENABLE(); + 8000b4e: 4b09 ldr r3, [pc, #36] @ (8000b74 ) + 8000b50: 69db ldr r3, [r3, #28] + 8000b52: 4a08 ldr r2, [pc, #32] @ (8000b74 ) + 8000b54: f043 0304 orr.w r3, r3, #4 + 8000b58: 61d3 str r3, [r2, #28] + 8000b5a: 4b06 ldr r3, [pc, #24] @ (8000b74 ) + 8000b5c: 69db ldr r3, [r3, #28] + 8000b5e: f003 0304 and.w r3, r3, #4 + 8000b62: 60bb str r3, [r7, #8] + 8000b64: 68bb ldr r3, [r7, #8] +} + 8000b66: bf00 nop + 8000b68: 371c adds r7, #28 + 8000b6a: 46bd mov sp, r7 + 8000b6c: bc80 pop {r7} + 8000b6e: 4770 bx lr + 8000b70: 40012c00 .word 0x40012c00 + 8000b74: 40021000 .word 0x40021000 + 8000b78: 40000400 .word 0x40000400 + 8000b7c: 40000800 .word 0x40000800 + +08000b80 : + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) +{ + 8000b80: b580 push {r7, lr} + 8000b82: b08c sub sp, #48 @ 0x30 + 8000b84: af00 add r7, sp, #0 + 8000b86: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000b88: f107 0320 add.w r3, r7, #32 + 8000b8c: 2200 movs r2, #0 + 8000b8e: 601a str r2, [r3, #0] + 8000b90: 605a str r2, [r3, #4] + 8000b92: 609a str r2, [r3, #8] + 8000b94: 60da str r2, [r3, #12] + if(htim->Instance==TIM1) + 8000b96: 687b ldr r3, [r7, #4] + 8000b98: 681b ldr r3, [r3, #0] + 8000b9a: 4a49 ldr r2, [pc, #292] @ (8000cc0 ) + 8000b9c: 4293 cmp r3, r2 + 8000b9e: d119 bne.n 8000bd4 + { + /* USER CODE BEGIN TIM1_MspPostInit 0 */ + + /* USER CODE END TIM1_MspPostInit 0 */ + __HAL_RCC_GPIOA_CLK_ENABLE(); + 8000ba0: 4b48 ldr r3, [pc, #288] @ (8000cc4 ) + 8000ba2: 699b ldr r3, [r3, #24] + 8000ba4: 4a47 ldr r2, [pc, #284] @ (8000cc4 ) + 8000ba6: f043 0304 orr.w r3, r3, #4 + 8000baa: 6193 str r3, [r2, #24] + 8000bac: 4b45 ldr r3, [pc, #276] @ (8000cc4 ) + 8000bae: 699b ldr r3, [r3, #24] + 8000bb0: f003 0304 and.w r3, r3, #4 + 8000bb4: 61fb str r3, [r7, #28] + 8000bb6: 69fb ldr r3, [r7, #28] + /**TIM1 GPIO Configuration + PA8 ------> TIM1_CH1 + PA9 ------> TIM1_CH2 + PA10 ------> TIM1_CH3 + */ + GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10; + 8000bb8: f44f 63e0 mov.w r3, #1792 @ 0x700 + 8000bbc: 623b str r3, [r7, #32] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000bbe: 2302 movs r3, #2 + 8000bc0: 627b str r3, [r7, #36] @ 0x24 + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000bc2: 2302 movs r3, #2 + 8000bc4: 62fb str r3, [r7, #44] @ 0x2c + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8000bc6: f107 0320 add.w r3, r7, #32 + 8000bca: 4619 mov r1, r3 + 8000bcc: 483e ldr r0, [pc, #248] @ (8000cc8 ) + 8000bce: f000 fca5 bl 800151c + /* USER CODE BEGIN TIM4_MspPostInit 1 */ + + /* USER CODE END TIM4_MspPostInit 1 */ + } + +} + 8000bd2: e071 b.n 8000cb8 + else if(htim->Instance==TIM2) + 8000bd4: 687b ldr r3, [r7, #4] + 8000bd6: 681b ldr r3, [r3, #0] + 8000bd8: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8000bdc: d118 bne.n 8000c10 + __HAL_RCC_GPIOA_CLK_ENABLE(); + 8000bde: 4b39 ldr r3, [pc, #228] @ (8000cc4 ) + 8000be0: 699b ldr r3, [r3, #24] + 8000be2: 4a38 ldr r2, [pc, #224] @ (8000cc4 ) + 8000be4: f043 0304 orr.w r3, r3, #4 + 8000be8: 6193 str r3, [r2, #24] + 8000bea: 4b36 ldr r3, [pc, #216] @ (8000cc4 ) + 8000bec: 699b ldr r3, [r3, #24] + 8000bee: f003 0304 and.w r3, r3, #4 + 8000bf2: 61bb str r3, [r7, #24] + 8000bf4: 69bb ldr r3, [r7, #24] + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3; + 8000bf6: 230f movs r3, #15 + 8000bf8: 623b str r3, [r7, #32] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000bfa: 2302 movs r3, #2 + 8000bfc: 627b str r3, [r7, #36] @ 0x24 + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000bfe: 2302 movs r3, #2 + 8000c00: 62fb str r3, [r7, #44] @ 0x2c + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8000c02: f107 0320 add.w r3, r7, #32 + 8000c06: 4619 mov r1, r3 + 8000c08: 482f ldr r0, [pc, #188] @ (8000cc8 ) + 8000c0a: f000 fc87 bl 800151c +} + 8000c0e: e053 b.n 8000cb8 + else if(htim->Instance==TIM3) + 8000c10: 687b ldr r3, [r7, #4] + 8000c12: 681b ldr r3, [r3, #0] + 8000c14: 4a2d ldr r2, [pc, #180] @ (8000ccc ) + 8000c16: 4293 cmp r3, r2 + 8000c18: d130 bne.n 8000c7c + __HAL_RCC_GPIOA_CLK_ENABLE(); + 8000c1a: 4b2a ldr r3, [pc, #168] @ (8000cc4 ) + 8000c1c: 699b ldr r3, [r3, #24] + 8000c1e: 4a29 ldr r2, [pc, #164] @ (8000cc4 ) + 8000c20: f043 0304 orr.w r3, r3, #4 + 8000c24: 6193 str r3, [r2, #24] + 8000c26: 4b27 ldr r3, [pc, #156] @ (8000cc4 ) + 8000c28: 699b ldr r3, [r3, #24] + 8000c2a: f003 0304 and.w r3, r3, #4 + 8000c2e: 617b str r3, [r7, #20] + 8000c30: 697b ldr r3, [r7, #20] + __HAL_RCC_GPIOB_CLK_ENABLE(); + 8000c32: 4b24 ldr r3, [pc, #144] @ (8000cc4 ) + 8000c34: 699b ldr r3, [r3, #24] + 8000c36: 4a23 ldr r2, [pc, #140] @ (8000cc4 ) + 8000c38: f043 0308 orr.w r3, r3, #8 + 8000c3c: 6193 str r3, [r2, #24] + 8000c3e: 4b21 ldr r3, [pc, #132] @ (8000cc4 ) + 8000c40: 699b ldr r3, [r3, #24] + 8000c42: f003 0308 and.w r3, r3, #8 + 8000c46: 613b str r3, [r7, #16] + 8000c48: 693b ldr r3, [r7, #16] + GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; + 8000c4a: 23c0 movs r3, #192 @ 0xc0 + 8000c4c: 623b str r3, [r7, #32] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000c4e: 2302 movs r3, #2 + 8000c50: 627b str r3, [r7, #36] @ 0x24 + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000c52: 2302 movs r3, #2 + 8000c54: 62fb str r3, [r7, #44] @ 0x2c + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8000c56: f107 0320 add.w r3, r7, #32 + 8000c5a: 4619 mov r1, r3 + 8000c5c: 481a ldr r0, [pc, #104] @ (8000cc8 ) + 8000c5e: f000 fc5d bl 800151c + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1; + 8000c62: 2303 movs r3, #3 + 8000c64: 623b str r3, [r7, #32] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000c66: 2302 movs r3, #2 + 8000c68: 627b str r3, [r7, #36] @ 0x24 + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000c6a: 2302 movs r3, #2 + 8000c6c: 62fb str r3, [r7, #44] @ 0x2c + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 8000c6e: f107 0320 add.w r3, r7, #32 + 8000c72: 4619 mov r1, r3 + 8000c74: 4816 ldr r0, [pc, #88] @ (8000cd0 ) + 8000c76: f000 fc51 bl 800151c +} + 8000c7a: e01d b.n 8000cb8 + else if(htim->Instance==TIM4) + 8000c7c: 687b ldr r3, [r7, #4] + 8000c7e: 681b ldr r3, [r3, #0] + 8000c80: 4a14 ldr r2, [pc, #80] @ (8000cd4 ) + 8000c82: 4293 cmp r3, r2 + 8000c84: d118 bne.n 8000cb8 + __HAL_RCC_GPIOB_CLK_ENABLE(); + 8000c86: 4b0f ldr r3, [pc, #60] @ (8000cc4 ) + 8000c88: 699b ldr r3, [r3, #24] + 8000c8a: 4a0e ldr r2, [pc, #56] @ (8000cc4 ) + 8000c8c: f043 0308 orr.w r3, r3, #8 + 8000c90: 6193 str r3, [r2, #24] + 8000c92: 4b0c ldr r3, [pc, #48] @ (8000cc4 ) + 8000c94: 699b ldr r3, [r3, #24] + 8000c96: f003 0308 and.w r3, r3, #8 + 8000c9a: 60fb str r3, [r7, #12] + 8000c9c: 68fb ldr r3, [r7, #12] + GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9; + 8000c9e: f44f 7370 mov.w r3, #960 @ 0x3c0 + 8000ca2: 623b str r3, [r7, #32] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000ca4: 2302 movs r3, #2 + 8000ca6: 627b str r3, [r7, #36] @ 0x24 + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000ca8: 2302 movs r3, #2 + 8000caa: 62fb str r3, [r7, #44] @ 0x2c + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 8000cac: f107 0320 add.w r3, r7, #32 + 8000cb0: 4619 mov r1, r3 + 8000cb2: 4807 ldr r0, [pc, #28] @ (8000cd0 ) + 8000cb4: f000 fc32 bl 800151c +} + 8000cb8: bf00 nop + 8000cba: 3730 adds r7, #48 @ 0x30 + 8000cbc: 46bd mov sp, r7 + 8000cbe: bd80 pop {r7, pc} + 8000cc0: 40012c00 .word 0x40012c00 + 8000cc4: 40021000 .word 0x40021000 + 8000cc8: 40010800 .word 0x40010800 + 8000ccc: 40000400 .word 0x40000400 + 8000cd0: 40010c00 .word 0x40010c00 + 8000cd4: 40000800 .word 0x40000800 + +08000cd8 : +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + 8000cd8: b480 push {r7} + 8000cda: 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) + 8000cdc: bf00 nop + 8000cde: e7fd b.n 8000cdc + +08000ce0 : + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + 8000ce0: b480 push {r7} + 8000ce2: af00 add r7, sp, #0 + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + 8000ce4: bf00 nop + 8000ce6: e7fd b.n 8000ce4 + +08000ce8 : + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + 8000ce8: b480 push {r7} + 8000cea: af00 add r7, sp, #0 + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + 8000cec: bf00 nop + 8000cee: e7fd b.n 8000cec + +08000cf0 : + +/** + * @brief This function handles Prefetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + 8000cf0: b480 push {r7} + 8000cf2: af00 add r7, sp, #0 + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + 8000cf4: bf00 nop + 8000cf6: e7fd b.n 8000cf4 + +08000cf8 : + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + 8000cf8: b480 push {r7} + 8000cfa: af00 add r7, sp, #0 + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + 8000cfc: bf00 nop + 8000cfe: e7fd b.n 8000cfc + +08000d00 : + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + 8000d00: b480 push {r7} + 8000d02: af00 add r7, sp, #0 + + /* USER CODE END SVCall_IRQn 0 */ + /* USER CODE BEGIN SVCall_IRQn 1 */ + + /* USER CODE END SVCall_IRQn 1 */ +} + 8000d04: bf00 nop + 8000d06: 46bd mov sp, r7 + 8000d08: bc80 pop {r7} + 8000d0a: 4770 bx lr + +08000d0c : + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + 8000d0c: b480 push {r7} + 8000d0e: af00 add r7, sp, #0 + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + 8000d10: bf00 nop + 8000d12: 46bd mov sp, r7 + 8000d14: bc80 pop {r7} + 8000d16: 4770 bx lr + +08000d18 : + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + 8000d18: b480 push {r7} + 8000d1a: af00 add r7, sp, #0 + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + 8000d1c: bf00 nop + 8000d1e: 46bd mov sp, r7 + 8000d20: bc80 pop {r7} + 8000d22: 4770 bx lr + +08000d24 : + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + 8000d24: b580 push {r7, lr} + 8000d26: af00 add r7, sp, #0 + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + 8000d28: f000 f8b6 bl 8000e98 + /* USER CODE BEGIN SysTick_IRQn 1 */ + HAL_SYSTICK_IRQHandler(); + 8000d2c: f000 fbef bl 800150e + /* USER CODE END SysTick_IRQn 1 */ +} + 8000d30: bf00 nop + 8000d32: bd80 pop {r7, pc} + +08000d34 : + +/** + * @brief This function handles USB low priority or CAN RX0 interrupts. + */ +void USB_LP_CAN1_RX0_IRQHandler(void) +{ + 8000d34: b580 push {r7, lr} + 8000d36: af00 add r7, sp, #0 + /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ + + /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ + HAL_PCD_IRQHandler(&hpcd_USB_FS); + 8000d38: 4802 ldr r0, [pc, #8] @ (8000d44 ) + 8000d3a: f000 fec0 bl 8001abe + /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ + + /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ +} + 8000d3e: bf00 nop + 8000d40: bd80 pop {r7, pc} + 8000d42: bf00 nop + 8000d44: 20001110 .word 0x20001110 + +08000d48 <_sbrk>: + * + * @param incr Memory size + * @return Pointer to allocated memory + */ +void *_sbrk(ptrdiff_t incr) +{ + 8000d48: b580 push {r7, lr} + 8000d4a: b086 sub sp, #24 + 8000d4c: af00 add r7, sp, #0 + 8000d4e: 6078 str r0, [r7, #4] + extern uint8_t _end; /* Symbol defined in the linker script */ + extern uint8_t _estack; /* Symbol defined in the linker script */ + extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ + const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; + 8000d50: 4a14 ldr r2, [pc, #80] @ (8000da4 <_sbrk+0x5c>) + 8000d52: 4b15 ldr r3, [pc, #84] @ (8000da8 <_sbrk+0x60>) + 8000d54: 1ad3 subs r3, r2, r3 + 8000d56: 617b str r3, [r7, #20] + const uint8_t *max_heap = (uint8_t *)stack_limit; + 8000d58: 697b ldr r3, [r7, #20] + 8000d5a: 613b str r3, [r7, #16] + uint8_t *prev_heap_end; + + /* Initialize heap end at first call */ + if (NULL == __sbrk_heap_end) + 8000d5c: 4b13 ldr r3, [pc, #76] @ (8000dac <_sbrk+0x64>) + 8000d5e: 681b ldr r3, [r3, #0] + 8000d60: 2b00 cmp r3, #0 + 8000d62: d102 bne.n 8000d6a <_sbrk+0x22> + { + __sbrk_heap_end = &_end; + 8000d64: 4b11 ldr r3, [pc, #68] @ (8000dac <_sbrk+0x64>) + 8000d66: 4a12 ldr r2, [pc, #72] @ (8000db0 <_sbrk+0x68>) + 8000d68: 601a str r2, [r3, #0] + } + + /* Protect heap from growing into the reserved MSP stack */ + if (__sbrk_heap_end + incr > max_heap) + 8000d6a: 4b10 ldr r3, [pc, #64] @ (8000dac <_sbrk+0x64>) + 8000d6c: 681a ldr r2, [r3, #0] + 8000d6e: 687b ldr r3, [r7, #4] + 8000d70: 4413 add r3, r2 + 8000d72: 693a ldr r2, [r7, #16] + 8000d74: 429a cmp r2, r3 + 8000d76: d207 bcs.n 8000d88 <_sbrk+0x40> + { + errno = ENOMEM; + 8000d78: f008 f9f4 bl 8009164 <__errno> + 8000d7c: 4603 mov r3, r0 + 8000d7e: 220c movs r2, #12 + 8000d80: 601a str r2, [r3, #0] + return (void *)-1; + 8000d82: f04f 33ff mov.w r3, #4294967295 + 8000d86: e009 b.n 8000d9c <_sbrk+0x54> + } + + prev_heap_end = __sbrk_heap_end; + 8000d88: 4b08 ldr r3, [pc, #32] @ (8000dac <_sbrk+0x64>) + 8000d8a: 681b ldr r3, [r3, #0] + 8000d8c: 60fb str r3, [r7, #12] + __sbrk_heap_end += incr; + 8000d8e: 4b07 ldr r3, [pc, #28] @ (8000dac <_sbrk+0x64>) + 8000d90: 681a ldr r2, [r3, #0] + 8000d92: 687b ldr r3, [r7, #4] + 8000d94: 4413 add r3, r2 + 8000d96: 4a05 ldr r2, [pc, #20] @ (8000dac <_sbrk+0x64>) + 8000d98: 6013 str r3, [r2, #0] + + return (void *)prev_heap_end; + 8000d9a: 68fb ldr r3, [r7, #12] +} + 8000d9c: 4618 mov r0, r3 + 8000d9e: 3718 adds r7, #24 + 8000da0: 46bd mov sp, r7 + 8000da2: bd80 pop {r7, pc} + 8000da4: 20005000 .word 0x20005000 + 8000da8: 00000400 .word 0x00000400 + 8000dac: 2000033c .word 0x2000033c + 8000db0: 20001750 .word 0x20001750 + +08000db4 : + * @note This function should be used only after reset. + * @param None + * @retval None + */ +void SystemInit (void) +{ + 8000db4: b480 push {r7} + 8000db6: af00 add r7, sp, #0 + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + 8000db8: bf00 nop + 8000dba: 46bd mov sp, r7 + 8000dbc: bc80 pop {r7} + 8000dbe: 4770 bx lr + +08000dc0 : + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + +/* Call the clock system initialization function.*/ + bl SystemInit + 8000dc0: f7ff fff8 bl 8000db4 + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 8000dc4: 480b ldr r0, [pc, #44] @ (8000df4 ) + ldr r1, =_edata + 8000dc6: 490c ldr r1, [pc, #48] @ (8000df8 ) + ldr r2, =_sidata + 8000dc8: 4a0c ldr r2, [pc, #48] @ (8000dfc ) + movs r3, #0 + 8000dca: 2300 movs r3, #0 + b LoopCopyDataInit + 8000dcc: e002 b.n 8000dd4 + +08000dce : + +CopyDataInit: + ldr r4, [r2, r3] + 8000dce: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 8000dd0: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 8000dd2: 3304 adds r3, #4 + +08000dd4 : + +LoopCopyDataInit: + adds r4, r0, r3 + 8000dd4: 18c4 adds r4, r0, r3 + cmp r4, r1 + 8000dd6: 428c cmp r4, r1 + bcc CopyDataInit + 8000dd8: d3f9 bcc.n 8000dce + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 8000dda: 4a09 ldr r2, [pc, #36] @ (8000e00 ) + ldr r4, =_ebss + 8000ddc: 4c09 ldr r4, [pc, #36] @ (8000e04 ) + movs r3, #0 + 8000dde: 2300 movs r3, #0 + b LoopFillZerobss + 8000de0: e001 b.n 8000de6 + +08000de2 : + +FillZerobss: + str r3, [r2] + 8000de2: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 8000de4: 3204 adds r2, #4 + +08000de6 : + +LoopFillZerobss: + cmp r2, r4 + 8000de6: 42a2 cmp r2, r4 + bcc FillZerobss + 8000de8: d3fb bcc.n 8000de2 + +/* Call static constructors */ + bl __libc_init_array + 8000dea: f008 f9c1 bl 8009170 <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 8000dee: f7ff f9e5 bl 80001bc
+ bx lr + 8000df2: 4770 bx lr + ldr r0, =_sdata + 8000df4: 20000000 .word 0x20000000 + ldr r1, =_edata + 8000df8: 200001cc .word 0x200001cc + ldr r2, =_sidata + 8000dfc: 08009b40 .word 0x08009b40 + ldr r2, =_sbss + 8000e00: 200001cc .word 0x200001cc + ldr r4, =_ebss + 8000e04: 20001750 .word 0x20001750 + +08000e08 : + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 8000e08: e7fe b.n 8000e08 + ... + +08000e0c : + * 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) +{ + 8000e0c: b580 push {r7, lr} + 8000e0e: af00 add r7, sp, #0 + defined(STM32F102x6) || defined(STM32F102xB) || \ + defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || \ + defined(STM32F105xC) || defined(STM32F107xC) + + /* Prefetch buffer is not available on value line devices */ + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); + 8000e10: 4b08 ldr r3, [pc, #32] @ (8000e34 ) + 8000e12: 681b ldr r3, [r3, #0] + 8000e14: 4a07 ldr r2, [pc, #28] @ (8000e34 ) + 8000e16: f043 0310 orr.w r3, r3, #16 + 8000e1a: 6013 str r3, [r2, #0] +#endif +#endif /* PREFETCH_ENABLE */ + + /* Set Interrupt Group Priority */ + HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + 8000e1c: 2003 movs r0, #3 + 8000e1e: f000 fb35 bl 800148c + + /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */ + HAL_InitTick(TICK_INT_PRIORITY); + 8000e22: 200f movs r0, #15 + 8000e24: f000 f808 bl 8000e38 + + /* Init the low level hardware */ + HAL_MspInit(); + 8000e28: f7ff fde4 bl 80009f4 + + /* Return function status */ + return HAL_OK; + 8000e2c: 2300 movs r3, #0 +} + 8000e2e: 4618 mov r0, r3 + 8000e30: bd80 pop {r7, pc} + 8000e32: bf00 nop + 8000e34: 40022000 .word 0x40022000 + +08000e38 : + * implementation in user file. + * @param TickPriority Tick interrupt priority. + * @retval HAL status + */ +__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + 8000e38: b580 push {r7, lr} + 8000e3a: b082 sub sp, #8 + 8000e3c: af00 add r7, sp, #0 + 8000e3e: 6078 str r0, [r7, #4] + /* Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U) + 8000e40: 4b12 ldr r3, [pc, #72] @ (8000e8c ) + 8000e42: 681a ldr r2, [r3, #0] + 8000e44: 4b12 ldr r3, [pc, #72] @ (8000e90 ) + 8000e46: 781b ldrb r3, [r3, #0] + 8000e48: 4619 mov r1, r3 + 8000e4a: f44f 737a mov.w r3, #1000 @ 0x3e8 + 8000e4e: fbb3 f3f1 udiv r3, r3, r1 + 8000e52: fbb2 f3f3 udiv r3, r2, r3 + 8000e56: 4618 mov r0, r3 + 8000e58: f000 fb4d bl 80014f6 + 8000e5c: 4603 mov r3, r0 + 8000e5e: 2b00 cmp r3, #0 + 8000e60: d001 beq.n 8000e66 + { + return HAL_ERROR; + 8000e62: 2301 movs r3, #1 + 8000e64: e00e b.n 8000e84 + } + + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + 8000e66: 687b ldr r3, [r7, #4] + 8000e68: 2b0f cmp r3, #15 + 8000e6a: d80a bhi.n 8000e82 + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + 8000e6c: 2200 movs r2, #0 + 8000e6e: 6879 ldr r1, [r7, #4] + 8000e70: f04f 30ff mov.w r0, #4294967295 + 8000e74: f000 fb15 bl 80014a2 + uwTickPrio = TickPriority; + 8000e78: 4a06 ldr r2, [pc, #24] @ (8000e94 ) + 8000e7a: 687b ldr r3, [r7, #4] + 8000e7c: 6013 str r3, [r2, #0] + { + return HAL_ERROR; + } + + /* Return function status */ + return HAL_OK; + 8000e7e: 2300 movs r3, #0 + 8000e80: e000 b.n 8000e84 + return HAL_ERROR; + 8000e82: 2301 movs r3, #1 +} + 8000e84: 4618 mov r0, r3 + 8000e86: 3708 adds r7, #8 + 8000e88: 46bd mov sp, r7 + 8000e8a: bd80 pop {r7, pc} + 8000e8c: 20000000 .word 0x20000000 + 8000e90: 20000008 .word 0x20000008 + 8000e94: 20000004 .word 0x20000004 + +08000e98 : + * @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) +{ + 8000e98: b480 push {r7} + 8000e9a: af00 add r7, sp, #0 + uwTick += uwTickFreq; + 8000e9c: 4b05 ldr r3, [pc, #20] @ (8000eb4 ) + 8000e9e: 781b ldrb r3, [r3, #0] + 8000ea0: 461a mov r2, r3 + 8000ea2: 4b05 ldr r3, [pc, #20] @ (8000eb8 ) + 8000ea4: 681b ldr r3, [r3, #0] + 8000ea6: 4413 add r3, r2 + 8000ea8: 4a03 ldr r2, [pc, #12] @ (8000eb8 ) + 8000eaa: 6013 str r3, [r2, #0] +} + 8000eac: bf00 nop + 8000eae: 46bd mov sp, r7 + 8000eb0: bc80 pop {r7} + 8000eb2: 4770 bx lr + 8000eb4: 20000008 .word 0x20000008 + 8000eb8: 20000340 .word 0x20000340 + +08000ebc : + * @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) +{ + 8000ebc: b480 push {r7} + 8000ebe: af00 add r7, sp, #0 + return uwTick; + 8000ec0: 4b02 ldr r3, [pc, #8] @ (8000ecc ) + 8000ec2: 681b ldr r3, [r3, #0] +} + 8000ec4: 4618 mov r0, r3 + 8000ec6: 46bd mov sp, r7 + 8000ec8: bc80 pop {r7} + 8000eca: 4770 bx lr + 8000ecc: 20000340 .word 0x20000340 + +08000ed0 : + * of structure "ADC_InitTypeDef". + * @param hadc: ADC handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc) +{ + 8000ed0: b580 push {r7, lr} + 8000ed2: b086 sub sp, #24 + 8000ed4: af00 add r7, sp, #0 + 8000ed6: 6078 str r0, [r7, #4] + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 8000ed8: 2300 movs r3, #0 + 8000eda: 75fb strb r3, [r7, #23] + uint32_t tmp_cr1 = 0U; + 8000edc: 2300 movs r3, #0 + 8000ede: 613b str r3, [r7, #16] + uint32_t tmp_cr2 = 0U; + 8000ee0: 2300 movs r3, #0 + 8000ee2: 60bb str r3, [r7, #8] + uint32_t tmp_sqr1 = 0U; + 8000ee4: 2300 movs r3, #0 + 8000ee6: 60fb str r3, [r7, #12] + + /* Check ADC handle */ + if(hadc == NULL) + 8000ee8: 687b ldr r3, [r7, #4] + 8000eea: 2b00 cmp r3, #0 + 8000eec: d101 bne.n 8000ef2 + { + return HAL_ERROR; + 8000eee: 2301 movs r3, #1 + 8000ef0: e0be b.n 8001070 + assert_param(IS_ADC_DATA_ALIGN(hadc->Init.DataAlign)); + assert_param(IS_ADC_SCAN_MODE(hadc->Init.ScanConvMode)); + assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); + assert_param(IS_ADC_EXTTRIG(hadc->Init.ExternalTrigConv)); + + if(hadc->Init.ScanConvMode != ADC_SCAN_DISABLE) + 8000ef2: 687b ldr r3, [r7, #4] + 8000ef4: 689b ldr r3, [r3, #8] + 8000ef6: 2b00 cmp r3, #0 + /* Refer to header of this file for more details on clock enabling */ + /* procedure. */ + + /* Actions performed only if ADC is coming from state reset: */ + /* - Initialization of ADC MSP */ + if (hadc->State == HAL_ADC_STATE_RESET) + 8000ef8: 687b ldr r3, [r7, #4] + 8000efa: 6a9b ldr r3, [r3, #40] @ 0x28 + 8000efc: 2b00 cmp r3, #0 + 8000efe: d109 bne.n 8000f14 + { + /* Initialize ADC error code */ + ADC_CLEAR_ERRORCODE(hadc); + 8000f00: 687b ldr r3, [r7, #4] + 8000f02: 2200 movs r2, #0 + 8000f04: 62da str r2, [r3, #44] @ 0x2c + + /* Allocate lock resource and initialize it */ + hadc->Lock = HAL_UNLOCKED; + 8000f06: 687b ldr r3, [r7, #4] + 8000f08: 2200 movs r2, #0 + 8000f0a: f883 2024 strb.w r2, [r3, #36] @ 0x24 + + /* Init the low level hardware */ + hadc->MspInitCallback(hadc); +#else + /* Init the low level hardware */ + HAL_ADC_MspInit(hadc); + 8000f0e: 6878 ldr r0, [r7, #4] + 8000f10: f7ff fda2 bl 8000a58 + /* Stop potential conversion on going, on regular and injected groups */ + /* Disable ADC peripheral */ + /* Note: In case of ADC already enabled, precaution to not launch an */ + /* unwanted conversion while modifying register CR2 by writing 1 to */ + /* bit ADON. */ + tmp_hal_status = ADC_ConversionStop_Disable(hadc); + 8000f14: 6878 ldr r0, [r7, #4] + 8000f16: f000 f9ab bl 8001270 + 8000f1a: 4603 mov r3, r0 + 8000f1c: 75fb strb r3, [r7, #23] + + + /* Configuration of ADC parameters if previous preliminary actions are */ + /* correctly completed. */ + if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL) && + 8000f1e: 687b ldr r3, [r7, #4] + 8000f20: 6a9b ldr r3, [r3, #40] @ 0x28 + 8000f22: f003 0310 and.w r3, r3, #16 + 8000f26: 2b00 cmp r3, #0 + 8000f28: f040 8099 bne.w 800105e + 8000f2c: 7dfb ldrb r3, [r7, #23] + 8000f2e: 2b00 cmp r3, #0 + 8000f30: f040 8095 bne.w 800105e + (tmp_hal_status == HAL_OK) ) + { + /* Set ADC state */ + ADC_STATE_CLR_SET(hadc->State, + 8000f34: 687b ldr r3, [r7, #4] + 8000f36: 6a9b ldr r3, [r3, #40] @ 0x28 + 8000f38: f423 5388 bic.w r3, r3, #4352 @ 0x1100 + 8000f3c: f023 0302 bic.w r3, r3, #2 + 8000f40: f043 0202 orr.w r2, r3, #2 + 8000f44: 687b ldr r3, [r7, #4] + 8000f46: 629a str r2, [r3, #40] @ 0x28 + /* - continuous conversion mode */ + /* Note: External trigger polarity (ADC_CR2_EXTTRIG) is set into */ + /* HAL_ADC_Start_xxx functions because if set in this function, */ + /* a conversion on injected group would start a conversion also on */ + /* regular group after ADC enabling. */ + tmp_cr2 |= (hadc->Init.DataAlign | + 8000f48: 687b ldr r3, [r7, #4] + 8000f4a: 685a ldr r2, [r3, #4] + ADC_CFGR_EXTSEL(hadc, hadc->Init.ExternalTrigConv) | + 8000f4c: 687b ldr r3, [r7, #4] + 8000f4e: 69db ldr r3, [r3, #28] + tmp_cr2 |= (hadc->Init.DataAlign | + 8000f50: 431a orrs r2, r3 + ADC_CR2_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) ); + 8000f52: 687b ldr r3, [r7, #4] + 8000f54: 7b1b ldrb r3, [r3, #12] + 8000f56: 005b lsls r3, r3, #1 + ADC_CFGR_EXTSEL(hadc, hadc->Init.ExternalTrigConv) | + 8000f58: 4313 orrs r3, r2 + tmp_cr2 |= (hadc->Init.DataAlign | + 8000f5a: 68ba ldr r2, [r7, #8] + 8000f5c: 4313 orrs r3, r2 + 8000f5e: 60bb str r3, [r7, #8] + + /* Configuration of ADC: */ + /* - scan mode */ + /* - discontinuous mode disable/enable */ + /* - discontinuous mode number of conversions */ + tmp_cr1 |= (ADC_CR1_SCAN_SET(hadc->Init.ScanConvMode)); + 8000f60: 687b ldr r3, [r7, #4] + 8000f62: 689b ldr r3, [r3, #8] + 8000f64: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 8000f68: d003 beq.n 8000f72 + 8000f6a: 687b ldr r3, [r7, #4] + 8000f6c: 689b ldr r3, [r3, #8] + 8000f6e: 2b01 cmp r3, #1 + 8000f70: d102 bne.n 8000f78 + 8000f72: f44f 7380 mov.w r3, #256 @ 0x100 + 8000f76: e000 b.n 8000f7a + 8000f78: 2300 movs r3, #0 + 8000f7a: 693a ldr r2, [r7, #16] + 8000f7c: 4313 orrs r3, r2 + 8000f7e: 613b str r3, [r7, #16] + + /* Enable discontinuous mode only if continuous mode is disabled */ + /* Note: If parameter "Init.ScanConvMode" is set to disable, parameter */ + /* discontinuous is set anyway, but will have no effect on ADC HW. */ + if (hadc->Init.DiscontinuousConvMode == ENABLE) + 8000f80: 687b ldr r3, [r7, #4] + 8000f82: 7d1b ldrb r3, [r3, #20] + 8000f84: 2b01 cmp r3, #1 + 8000f86: d119 bne.n 8000fbc + { + if (hadc->Init.ContinuousConvMode == DISABLE) + 8000f88: 687b ldr r3, [r7, #4] + 8000f8a: 7b1b ldrb r3, [r3, #12] + 8000f8c: 2b00 cmp r3, #0 + 8000f8e: d109 bne.n 8000fa4 + { + /* Enable the selected ADC regular discontinuous mode */ + /* Set the number of channels to be converted in discontinuous mode */ + SET_BIT(tmp_cr1, ADC_CR1_DISCEN | + 8000f90: 687b ldr r3, [r7, #4] + 8000f92: 699b ldr r3, [r3, #24] + 8000f94: 3b01 subs r3, #1 + 8000f96: 035a lsls r2, r3, #13 + 8000f98: 693b ldr r3, [r7, #16] + 8000f9a: 4313 orrs r3, r2 + 8000f9c: f443 6300 orr.w r3, r3, #2048 @ 0x800 + 8000fa0: 613b str r3, [r7, #16] + 8000fa2: e00b b.n 8000fbc + { + /* ADC regular group settings continuous and sequencer discontinuous*/ + /* cannot be enabled simultaneously. */ + + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); + 8000fa4: 687b ldr r3, [r7, #4] + 8000fa6: 6a9b ldr r3, [r3, #40] @ 0x28 + 8000fa8: f043 0220 orr.w r2, r3, #32 + 8000fac: 687b ldr r3, [r7, #4] + 8000fae: 629a str r2, [r3, #40] @ 0x28 + + /* Set ADC error code to ADC IP internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 8000fb0: 687b ldr r3, [r7, #4] + 8000fb2: 6adb ldr r3, [r3, #44] @ 0x2c + 8000fb4: f043 0201 orr.w r2, r3, #1 + 8000fb8: 687b ldr r3, [r7, #4] + 8000fba: 62da str r2, [r3, #44] @ 0x2c + } + } + + /* Update ADC configuration register CR1 with previous settings */ + MODIFY_REG(hadc->Instance->CR1, + 8000fbc: 687b ldr r3, [r7, #4] + 8000fbe: 681b ldr r3, [r3, #0] + 8000fc0: 685b ldr r3, [r3, #4] + 8000fc2: f423 4169 bic.w r1, r3, #59648 @ 0xe900 + 8000fc6: 687b ldr r3, [r7, #4] + 8000fc8: 681b ldr r3, [r3, #0] + 8000fca: 693a ldr r2, [r7, #16] + 8000fcc: 430a orrs r2, r1 + 8000fce: 605a str r2, [r3, #4] + ADC_CR1_DISCEN | + ADC_CR1_DISCNUM , + tmp_cr1 ); + + /* Update ADC configuration register CR2 with previous settings */ + MODIFY_REG(hadc->Instance->CR2, + 8000fd0: 687b ldr r3, [r7, #4] + 8000fd2: 681b ldr r3, [r3, #0] + 8000fd4: 689a ldr r2, [r3, #8] + 8000fd6: 4b28 ldr r3, [pc, #160] @ (8001078 ) + 8000fd8: 4013 ands r3, r2 + 8000fda: 687a ldr r2, [r7, #4] + 8000fdc: 6812 ldr r2, [r2, #0] + 8000fde: 68b9 ldr r1, [r7, #8] + 8000fe0: 430b orrs r3, r1 + 8000fe2: 6093 str r3, [r2, #8] + /* Note: Scan mode is present by hardware on this device and, if */ + /* disabled, discards automatically nb of conversions. Anyway, nb of */ + /* conversions is forced to 0x00 for alignment over all STM32 devices. */ + /* - if scan mode is enabled, regular channels sequence length is set to */ + /* parameter "NbrOfConversion" */ + if (ADC_CR1_SCAN_SET(hadc->Init.ScanConvMode) == ADC_SCAN_ENABLE) + 8000fe4: 687b ldr r3, [r7, #4] + 8000fe6: 689b ldr r3, [r3, #8] + 8000fe8: f5b3 7f80 cmp.w r3, #256 @ 0x100 + 8000fec: d003 beq.n 8000ff6 + 8000fee: 687b ldr r3, [r7, #4] + 8000ff0: 689b ldr r3, [r3, #8] + 8000ff2: 2b01 cmp r3, #1 + 8000ff4: d104 bne.n 8001000 + { + tmp_sqr1 = ADC_SQR1_L_SHIFT(hadc->Init.NbrOfConversion); + 8000ff6: 687b ldr r3, [r7, #4] + 8000ff8: 691b ldr r3, [r3, #16] + 8000ffa: 3b01 subs r3, #1 + 8000ffc: 051b lsls r3, r3, #20 + 8000ffe: 60fb str r3, [r7, #12] + } + + MODIFY_REG(hadc->Instance->SQR1, + 8001000: 687b ldr r3, [r7, #4] + 8001002: 681b ldr r3, [r3, #0] + 8001004: 6adb ldr r3, [r3, #44] @ 0x2c + 8001006: f423 0170 bic.w r1, r3, #15728640 @ 0xf00000 + 800100a: 687b ldr r3, [r7, #4] + 800100c: 681b ldr r3, [r3, #0] + 800100e: 68fa ldr r2, [r7, #12] + 8001010: 430a orrs r2, r1 + 8001012: 62da str r2, [r3, #44] @ 0x2c + /* ensure of no potential problem of ADC core IP clocking. */ + /* Check through register CR2 (excluding bits set in other functions: */ + /* execution control bits (ADON, JSWSTART, SWSTART), regular group bits */ + /* (DMA), injected group bits (JEXTTRIG and JEXTSEL), channel internal */ + /* measurement path bit (TSVREFE). */ + if (READ_BIT(hadc->Instance->CR2, ~(ADC_CR2_ADON | ADC_CR2_DMA | + 8001014: 687b ldr r3, [r7, #4] + 8001016: 681b ldr r3, [r3, #0] + 8001018: 689a ldr r2, [r3, #8] + 800101a: 4b18 ldr r3, [pc, #96] @ (800107c ) + 800101c: 4013 ands r3, r2 + 800101e: 68ba ldr r2, [r7, #8] + 8001020: 429a cmp r2, r3 + 8001022: d10b bne.n 800103c + ADC_CR2_JEXTTRIG | ADC_CR2_JEXTSEL | + ADC_CR2_TSVREFE )) + == tmp_cr2) + { + /* Set ADC error code to none */ + ADC_CLEAR_ERRORCODE(hadc); + 8001024: 687b ldr r3, [r7, #4] + 8001026: 2200 movs r2, #0 + 8001028: 62da str r2, [r3, #44] @ 0x2c + + /* Set the ADC state */ + ADC_STATE_CLR_SET(hadc->State, + 800102a: 687b ldr r3, [r7, #4] + 800102c: 6a9b ldr r3, [r3, #40] @ 0x28 + 800102e: f023 0303 bic.w r3, r3, #3 + 8001032: f043 0201 orr.w r2, r3, #1 + 8001036: 687b ldr r3, [r7, #4] + 8001038: 629a str r2, [r3, #40] @ 0x28 + if (READ_BIT(hadc->Instance->CR2, ~(ADC_CR2_ADON | ADC_CR2_DMA | + 800103a: e018 b.n 800106e + HAL_ADC_STATE_READY); + } + else + { + /* Update ADC state machine to error */ + ADC_STATE_CLR_SET(hadc->State, + 800103c: 687b ldr r3, [r7, #4] + 800103e: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001040: f023 0312 bic.w r3, r3, #18 + 8001044: f043 0210 orr.w r2, r3, #16 + 8001048: 687b ldr r3, [r7, #4] + 800104a: 629a str r2, [r3, #40] @ 0x28 + HAL_ADC_STATE_BUSY_INTERNAL, + HAL_ADC_STATE_ERROR_INTERNAL); + + /* Set ADC error code to ADC IP internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 800104c: 687b ldr r3, [r7, #4] + 800104e: 6adb ldr r3, [r3, #44] @ 0x2c + 8001050: f043 0201 orr.w r2, r3, #1 + 8001054: 687b ldr r3, [r7, #4] + 8001056: 62da str r2, [r3, #44] @ 0x2c + + tmp_hal_status = HAL_ERROR; + 8001058: 2301 movs r3, #1 + 800105a: 75fb strb r3, [r7, #23] + if (READ_BIT(hadc->Instance->CR2, ~(ADC_CR2_ADON | ADC_CR2_DMA | + 800105c: e007 b.n 800106e + + } + else + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 800105e: 687b ldr r3, [r7, #4] + 8001060: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001062: f043 0210 orr.w r2, r3, #16 + 8001066: 687b ldr r3, [r7, #4] + 8001068: 629a str r2, [r3, #40] @ 0x28 + + tmp_hal_status = HAL_ERROR; + 800106a: 2301 movs r3, #1 + 800106c: 75fb strb r3, [r7, #23] + } + + /* Return function status */ + return tmp_hal_status; + 800106e: 7dfb ldrb r3, [r7, #23] +} + 8001070: 4618 mov r0, r3 + 8001072: 3718 adds r7, #24 + 8001074: 46bd mov sp, r7 + 8001076: bd80 pop {r7, pc} + 8001078: ffe1f7fd .word 0xffe1f7fd + 800107c: ff1f0efe .word 0xff1f0efe + +08001080 : + * @param hadc: ADC handle + * @param sConfig: Structure of ADC channel for regular group. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig) +{ + 8001080: b480 push {r7} + 8001082: b085 sub sp, #20 + 8001084: af00 add r7, sp, #0 + 8001086: 6078 str r0, [r7, #4] + 8001088: 6039 str r1, [r7, #0] + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 800108a: 2300 movs r3, #0 + 800108c: 73fb strb r3, [r7, #15] + __IO uint32_t wait_loop_index = 0U; + 800108e: 2300 movs r3, #0 + 8001090: 60bb str r3, [r7, #8] + assert_param(IS_ADC_CHANNEL(sConfig->Channel)); + assert_param(IS_ADC_REGULAR_RANK(sConfig->Rank)); + assert_param(IS_ADC_SAMPLE_TIME(sConfig->SamplingTime)); + + /* Process locked */ + __HAL_LOCK(hadc); + 8001092: 687b ldr r3, [r7, #4] + 8001094: f893 3024 ldrb.w r3, [r3, #36] @ 0x24 + 8001098: 2b01 cmp r3, #1 + 800109a: d101 bne.n 80010a0 + 800109c: 2302 movs r3, #2 + 800109e: e0dc b.n 800125a + 80010a0: 687b ldr r3, [r7, #4] + 80010a2: 2201 movs r2, #1 + 80010a4: f883 2024 strb.w r2, [r3, #36] @ 0x24 + + + /* Regular sequence configuration */ + /* For Rank 1 to 6 */ + if (sConfig->Rank < 7U) + 80010a8: 683b ldr r3, [r7, #0] + 80010aa: 685b ldr r3, [r3, #4] + 80010ac: 2b06 cmp r3, #6 + 80010ae: d81c bhi.n 80010ea + { + MODIFY_REG(hadc->Instance->SQR3 , + 80010b0: 687b ldr r3, [r7, #4] + 80010b2: 681b ldr r3, [r3, #0] + 80010b4: 6b59 ldr r1, [r3, #52] @ 0x34 + 80010b6: 683b ldr r3, [r7, #0] + 80010b8: 685a ldr r2, [r3, #4] + 80010ba: 4613 mov r3, r2 + 80010bc: 009b lsls r3, r3, #2 + 80010be: 4413 add r3, r2 + 80010c0: 3b05 subs r3, #5 + 80010c2: 221f movs r2, #31 + 80010c4: fa02 f303 lsl.w r3, r2, r3 + 80010c8: 43db mvns r3, r3 + 80010ca: 4019 ands r1, r3 + 80010cc: 683b ldr r3, [r7, #0] + 80010ce: 6818 ldr r0, [r3, #0] + 80010d0: 683b ldr r3, [r7, #0] + 80010d2: 685a ldr r2, [r3, #4] + 80010d4: 4613 mov r3, r2 + 80010d6: 009b lsls r3, r3, #2 + 80010d8: 4413 add r3, r2 + 80010da: 3b05 subs r3, #5 + 80010dc: fa00 f203 lsl.w r2, r0, r3 + 80010e0: 687b ldr r3, [r7, #4] + 80010e2: 681b ldr r3, [r3, #0] + 80010e4: 430a orrs r2, r1 + 80010e6: 635a str r2, [r3, #52] @ 0x34 + 80010e8: e03c b.n 8001164 + ADC_SQR3_RK(ADC_SQR3_SQ1, sConfig->Rank) , + ADC_SQR3_RK(sConfig->Channel, sConfig->Rank) ); + } + /* For Rank 7 to 12 */ + else if (sConfig->Rank < 13U) + 80010ea: 683b ldr r3, [r7, #0] + 80010ec: 685b ldr r3, [r3, #4] + 80010ee: 2b0c cmp r3, #12 + 80010f0: d81c bhi.n 800112c + { + MODIFY_REG(hadc->Instance->SQR2 , + 80010f2: 687b ldr r3, [r7, #4] + 80010f4: 681b ldr r3, [r3, #0] + 80010f6: 6b19 ldr r1, [r3, #48] @ 0x30 + 80010f8: 683b ldr r3, [r7, #0] + 80010fa: 685a ldr r2, [r3, #4] + 80010fc: 4613 mov r3, r2 + 80010fe: 009b lsls r3, r3, #2 + 8001100: 4413 add r3, r2 + 8001102: 3b23 subs r3, #35 @ 0x23 + 8001104: 221f movs r2, #31 + 8001106: fa02 f303 lsl.w r3, r2, r3 + 800110a: 43db mvns r3, r3 + 800110c: 4019 ands r1, r3 + 800110e: 683b ldr r3, [r7, #0] + 8001110: 6818 ldr r0, [r3, #0] + 8001112: 683b ldr r3, [r7, #0] + 8001114: 685a ldr r2, [r3, #4] + 8001116: 4613 mov r3, r2 + 8001118: 009b lsls r3, r3, #2 + 800111a: 4413 add r3, r2 + 800111c: 3b23 subs r3, #35 @ 0x23 + 800111e: fa00 f203 lsl.w r2, r0, r3 + 8001122: 687b ldr r3, [r7, #4] + 8001124: 681b ldr r3, [r3, #0] + 8001126: 430a orrs r2, r1 + 8001128: 631a str r2, [r3, #48] @ 0x30 + 800112a: e01b b.n 8001164 + ADC_SQR2_RK(sConfig->Channel, sConfig->Rank) ); + } + /* For Rank 13 to 16 */ + else + { + MODIFY_REG(hadc->Instance->SQR1 , + 800112c: 687b ldr r3, [r7, #4] + 800112e: 681b ldr r3, [r3, #0] + 8001130: 6ad9 ldr r1, [r3, #44] @ 0x2c + 8001132: 683b ldr r3, [r7, #0] + 8001134: 685a ldr r2, [r3, #4] + 8001136: 4613 mov r3, r2 + 8001138: 009b lsls r3, r3, #2 + 800113a: 4413 add r3, r2 + 800113c: 3b41 subs r3, #65 @ 0x41 + 800113e: 221f movs r2, #31 + 8001140: fa02 f303 lsl.w r3, r2, r3 + 8001144: 43db mvns r3, r3 + 8001146: 4019 ands r1, r3 + 8001148: 683b ldr r3, [r7, #0] + 800114a: 6818 ldr r0, [r3, #0] + 800114c: 683b ldr r3, [r7, #0] + 800114e: 685a ldr r2, [r3, #4] + 8001150: 4613 mov r3, r2 + 8001152: 009b lsls r3, r3, #2 + 8001154: 4413 add r3, r2 + 8001156: 3b41 subs r3, #65 @ 0x41 + 8001158: fa00 f203 lsl.w r2, r0, r3 + 800115c: 687b ldr r3, [r7, #4] + 800115e: 681b ldr r3, [r3, #0] + 8001160: 430a orrs r2, r1 + 8001162: 62da str r2, [r3, #44] @ 0x2c + } + + + /* Channel sampling time configuration */ + /* For channels 10 to 17 */ + if (sConfig->Channel >= ADC_CHANNEL_10) + 8001164: 683b ldr r3, [r7, #0] + 8001166: 681b ldr r3, [r3, #0] + 8001168: 2b09 cmp r3, #9 + 800116a: d91c bls.n 80011a6 + { + MODIFY_REG(hadc->Instance->SMPR1 , + 800116c: 687b ldr r3, [r7, #4] + 800116e: 681b ldr r3, [r3, #0] + 8001170: 68d9 ldr r1, [r3, #12] + 8001172: 683b ldr r3, [r7, #0] + 8001174: 681a ldr r2, [r3, #0] + 8001176: 4613 mov r3, r2 + 8001178: 005b lsls r3, r3, #1 + 800117a: 4413 add r3, r2 + 800117c: 3b1e subs r3, #30 + 800117e: 2207 movs r2, #7 + 8001180: fa02 f303 lsl.w r3, r2, r3 + 8001184: 43db mvns r3, r3 + 8001186: 4019 ands r1, r3 + 8001188: 683b ldr r3, [r7, #0] + 800118a: 6898 ldr r0, [r3, #8] + 800118c: 683b ldr r3, [r7, #0] + 800118e: 681a ldr r2, [r3, #0] + 8001190: 4613 mov r3, r2 + 8001192: 005b lsls r3, r3, #1 + 8001194: 4413 add r3, r2 + 8001196: 3b1e subs r3, #30 + 8001198: fa00 f203 lsl.w r2, r0, r3 + 800119c: 687b ldr r3, [r7, #4] + 800119e: 681b ldr r3, [r3, #0] + 80011a0: 430a orrs r2, r1 + 80011a2: 60da str r2, [r3, #12] + 80011a4: e019 b.n 80011da + ADC_SMPR1(ADC_SMPR1_SMP10, sConfig->Channel) , + ADC_SMPR1(sConfig->SamplingTime, sConfig->Channel) ); + } + else /* For channels 0 to 9 */ + { + MODIFY_REG(hadc->Instance->SMPR2 , + 80011a6: 687b ldr r3, [r7, #4] + 80011a8: 681b ldr r3, [r3, #0] + 80011aa: 6919 ldr r1, [r3, #16] + 80011ac: 683b ldr r3, [r7, #0] + 80011ae: 681a ldr r2, [r3, #0] + 80011b0: 4613 mov r3, r2 + 80011b2: 005b lsls r3, r3, #1 + 80011b4: 4413 add r3, r2 + 80011b6: 2207 movs r2, #7 + 80011b8: fa02 f303 lsl.w r3, r2, r3 + 80011bc: 43db mvns r3, r3 + 80011be: 4019 ands r1, r3 + 80011c0: 683b ldr r3, [r7, #0] + 80011c2: 6898 ldr r0, [r3, #8] + 80011c4: 683b ldr r3, [r7, #0] + 80011c6: 681a ldr r2, [r3, #0] + 80011c8: 4613 mov r3, r2 + 80011ca: 005b lsls r3, r3, #1 + 80011cc: 4413 add r3, r2 + 80011ce: fa00 f203 lsl.w r2, r0, r3 + 80011d2: 687b ldr r3, [r7, #4] + 80011d4: 681b ldr r3, [r3, #0] + 80011d6: 430a orrs r2, r1 + 80011d8: 611a str r2, [r3, #16] + ADC_SMPR2(sConfig->SamplingTime, sConfig->Channel) ); + } + + /* If ADC1 Channel_16 or Channel_17 is selected, enable Temperature sensor */ + /* and VREFINT measurement path. */ + if ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) || + 80011da: 683b ldr r3, [r7, #0] + 80011dc: 681b ldr r3, [r3, #0] + 80011de: 2b10 cmp r3, #16 + 80011e0: d003 beq.n 80011ea + (sConfig->Channel == ADC_CHANNEL_VREFINT) ) + 80011e2: 683b ldr r3, [r7, #0] + 80011e4: 681b ldr r3, [r3, #0] + if ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) || + 80011e6: 2b11 cmp r3, #17 + 80011e8: d132 bne.n 8001250 + { + /* For STM32F1 devices with several ADC: Only ADC1 can access internal */ + /* measurement channels (VrefInt/TempSensor). If these channels are */ + /* intended to be set on other ADC instances, an error is reported. */ + if (hadc->Instance == ADC1) + 80011ea: 687b ldr r3, [r7, #4] + 80011ec: 681b ldr r3, [r3, #0] + 80011ee: 4a1d ldr r2, [pc, #116] @ (8001264 ) + 80011f0: 4293 cmp r3, r2 + 80011f2: d125 bne.n 8001240 + { + if (READ_BIT(hadc->Instance->CR2, ADC_CR2_TSVREFE) == RESET) + 80011f4: 687b ldr r3, [r7, #4] + 80011f6: 681b ldr r3, [r3, #0] + 80011f8: 689b ldr r3, [r3, #8] + 80011fa: f403 0300 and.w r3, r3, #8388608 @ 0x800000 + 80011fe: 2b00 cmp r3, #0 + 8001200: d126 bne.n 8001250 + { + SET_BIT(hadc->Instance->CR2, ADC_CR2_TSVREFE); + 8001202: 687b ldr r3, [r7, #4] + 8001204: 681b ldr r3, [r3, #0] + 8001206: 689a ldr r2, [r3, #8] + 8001208: 687b ldr r3, [r7, #4] + 800120a: 681b ldr r3, [r3, #0] + 800120c: f442 0200 orr.w r2, r2, #8388608 @ 0x800000 + 8001210: 609a str r2, [r3, #8] + + if (sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) + 8001212: 683b ldr r3, [r7, #0] + 8001214: 681b ldr r3, [r3, #0] + 8001216: 2b10 cmp r3, #16 + 8001218: d11a bne.n 8001250 + { + /* Delay for temperature sensor stabilization time */ + /* Compute number of CPU cycles to wait for */ + wait_loop_index = (ADC_TEMPSENSOR_DELAY_US * (SystemCoreClock / 1000000U)); + 800121a: 4b13 ldr r3, [pc, #76] @ (8001268 ) + 800121c: 681b ldr r3, [r3, #0] + 800121e: 4a13 ldr r2, [pc, #76] @ (800126c ) + 8001220: fba2 2303 umull r2, r3, r2, r3 + 8001224: 0c9a lsrs r2, r3, #18 + 8001226: 4613 mov r3, r2 + 8001228: 009b lsls r3, r3, #2 + 800122a: 4413 add r3, r2 + 800122c: 005b lsls r3, r3, #1 + 800122e: 60bb str r3, [r7, #8] + while(wait_loop_index != 0U) + 8001230: e002 b.n 8001238 + { + wait_loop_index--; + 8001232: 68bb ldr r3, [r7, #8] + 8001234: 3b01 subs r3, #1 + 8001236: 60bb str r3, [r7, #8] + while(wait_loop_index != 0U) + 8001238: 68bb ldr r3, [r7, #8] + 800123a: 2b00 cmp r3, #0 + 800123c: d1f9 bne.n 8001232 + 800123e: e007 b.n 8001250 + } + } + else + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); + 8001240: 687b ldr r3, [r7, #4] + 8001242: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001244: f043 0220 orr.w r2, r3, #32 + 8001248: 687b ldr r3, [r7, #4] + 800124a: 629a str r2, [r3, #40] @ 0x28 + + tmp_hal_status = HAL_ERROR; + 800124c: 2301 movs r3, #1 + 800124e: 73fb strb r3, [r7, #15] + } + } + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + 8001250: 687b ldr r3, [r7, #4] + 8001252: 2200 movs r2, #0 + 8001254: f883 2024 strb.w r2, [r3, #36] @ 0x24 + + /* Return function status */ + return tmp_hal_status; + 8001258: 7bfb ldrb r3, [r7, #15] +} + 800125a: 4618 mov r0, r3 + 800125c: 3714 adds r7, #20 + 800125e: 46bd mov sp, r7 + 8001260: bc80 pop {r7} + 8001262: 4770 bx lr + 8001264: 40012400 .word 0x40012400 + 8001268: 20000000 .word 0x20000000 + 800126c: 431bde83 .word 0x431bde83 + +08001270 : + * stopped to disable the ADC. + * @param hadc: ADC handle + * @retval HAL status. + */ +HAL_StatusTypeDef ADC_ConversionStop_Disable(ADC_HandleTypeDef* hadc) +{ + 8001270: b580 push {r7, lr} + 8001272: b084 sub sp, #16 + 8001274: af00 add r7, sp, #0 + 8001276: 6078 str r0, [r7, #4] + uint32_t tickstart = 0U; + 8001278: 2300 movs r3, #0 + 800127a: 60fb str r3, [r7, #12] + + /* Verification if ADC is not already disabled */ + if (ADC_IS_ENABLE(hadc) != RESET) + 800127c: 687b ldr r3, [r7, #4] + 800127e: 681b ldr r3, [r3, #0] + 8001280: 689b ldr r3, [r3, #8] + 8001282: f003 0301 and.w r3, r3, #1 + 8001286: 2b01 cmp r3, #1 + 8001288: d12e bne.n 80012e8 + { + /* Disable the ADC peripheral */ + __HAL_ADC_DISABLE(hadc); + 800128a: 687b ldr r3, [r7, #4] + 800128c: 681b ldr r3, [r3, #0] + 800128e: 689a ldr r2, [r3, #8] + 8001290: 687b ldr r3, [r7, #4] + 8001292: 681b ldr r3, [r3, #0] + 8001294: f022 0201 bic.w r2, r2, #1 + 8001298: 609a str r2, [r3, #8] + + /* Get tick count */ + tickstart = HAL_GetTick(); + 800129a: f7ff fe0f bl 8000ebc + 800129e: 60f8 str r0, [r7, #12] + + /* Wait for ADC effectively disabled */ + while(ADC_IS_ENABLE(hadc) != RESET) + 80012a0: e01b b.n 80012da + { + if((HAL_GetTick() - tickstart) > ADC_DISABLE_TIMEOUT) + 80012a2: f7ff fe0b bl 8000ebc + 80012a6: 4602 mov r2, r0 + 80012a8: 68fb ldr r3, [r7, #12] + 80012aa: 1ad3 subs r3, r2, r3 + 80012ac: 2b02 cmp r3, #2 + 80012ae: d914 bls.n 80012da + { + /* New check to avoid false timeout detection in case of preemption */ + if(ADC_IS_ENABLE(hadc) != RESET) + 80012b0: 687b ldr r3, [r7, #4] + 80012b2: 681b ldr r3, [r3, #0] + 80012b4: 689b ldr r3, [r3, #8] + 80012b6: f003 0301 and.w r3, r3, #1 + 80012ba: 2b01 cmp r3, #1 + 80012bc: d10d bne.n 80012da + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 80012be: 687b ldr r3, [r7, #4] + 80012c0: 6a9b ldr r3, [r3, #40] @ 0x28 + 80012c2: f043 0210 orr.w r2, r3, #16 + 80012c6: 687b ldr r3, [r7, #4] + 80012c8: 629a str r2, [r3, #40] @ 0x28 + + /* Set ADC error code to ADC IP internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 80012ca: 687b ldr r3, [r7, #4] + 80012cc: 6adb ldr r3, [r3, #44] @ 0x2c + 80012ce: f043 0201 orr.w r2, r3, #1 + 80012d2: 687b ldr r3, [r7, #4] + 80012d4: 62da str r2, [r3, #44] @ 0x2c + + return HAL_ERROR; + 80012d6: 2301 movs r3, #1 + 80012d8: e007 b.n 80012ea + while(ADC_IS_ENABLE(hadc) != RESET) + 80012da: 687b ldr r3, [r7, #4] + 80012dc: 681b ldr r3, [r3, #0] + 80012de: 689b ldr r3, [r3, #8] + 80012e0: f003 0301 and.w r3, r3, #1 + 80012e4: 2b01 cmp r3, #1 + 80012e6: d0dc beq.n 80012a2 + } + } + } + + /* Return HAL status */ + return HAL_OK; + 80012e8: 2300 movs r3, #0 +} + 80012ea: 4618 mov r0, r3 + 80012ec: 3710 adds r7, #16 + 80012ee: 46bd mov sp, r7 + 80012f0: bd80 pop {r7, pc} + ... + +080012f4 <__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) +{ + 80012f4: b480 push {r7} + 80012f6: b085 sub sp, #20 + 80012f8: af00 add r7, sp, #0 + 80012fa: 6078 str r0, [r7, #4] + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 80012fc: 687b ldr r3, [r7, #4] + 80012fe: f003 0307 and.w r3, r3, #7 + 8001302: 60fb str r3, [r7, #12] + + reg_value = SCB->AIRCR; /* read old register configuration */ + 8001304: 4b0c ldr r3, [pc, #48] @ (8001338 <__NVIC_SetPriorityGrouping+0x44>) + 8001306: 68db ldr r3, [r3, #12] + 8001308: 60bb str r3, [r7, #8] + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + 800130a: 68ba ldr r2, [r7, #8] + 800130c: f64f 03ff movw r3, #63743 @ 0xf8ff + 8001310: 4013 ands r3, r2 + 8001312: 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 */ + 8001314: 68fb ldr r3, [r7, #12] + 8001316: 021a lsls r2, r3, #8 + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 8001318: 68bb ldr r3, [r7, #8] + 800131a: 4313 orrs r3, r2 + reg_value = (reg_value | + 800131c: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 + 8001320: f443 3300 orr.w r3, r3, #131072 @ 0x20000 + 8001324: 60bb str r3, [r7, #8] + SCB->AIRCR = reg_value; + 8001326: 4a04 ldr r2, [pc, #16] @ (8001338 <__NVIC_SetPriorityGrouping+0x44>) + 8001328: 68bb ldr r3, [r7, #8] + 800132a: 60d3 str r3, [r2, #12] +} + 800132c: bf00 nop + 800132e: 3714 adds r7, #20 + 8001330: 46bd mov sp, r7 + 8001332: bc80 pop {r7} + 8001334: 4770 bx lr + 8001336: bf00 nop + 8001338: e000ed00 .word 0xe000ed00 + +0800133c <__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) +{ + 800133c: b480 push {r7} + 800133e: af00 add r7, sp, #0 + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); + 8001340: 4b04 ldr r3, [pc, #16] @ (8001354 <__NVIC_GetPriorityGrouping+0x18>) + 8001342: 68db ldr r3, [r3, #12] + 8001344: 0a1b lsrs r3, r3, #8 + 8001346: f003 0307 and.w r3, r3, #7 +} + 800134a: 4618 mov r0, r3 + 800134c: 46bd mov sp, r7 + 800134e: bc80 pop {r7} + 8001350: 4770 bx lr + 8001352: bf00 nop + 8001354: e000ed00 .word 0xe000ed00 + +08001358 <__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) +{ + 8001358: b480 push {r7} + 800135a: b083 sub sp, #12 + 800135c: af00 add r7, sp, #0 + 800135e: 4603 mov r3, r0 + 8001360: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8001362: f997 3007 ldrsb.w r3, [r7, #7] + 8001366: 2b00 cmp r3, #0 + 8001368: db0b blt.n 8001382 <__NVIC_EnableIRQ+0x2a> + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + 800136a: 79fb ldrb r3, [r7, #7] + 800136c: f003 021f and.w r2, r3, #31 + 8001370: 4906 ldr r1, [pc, #24] @ (800138c <__NVIC_EnableIRQ+0x34>) + 8001372: f997 3007 ldrsb.w r3, [r7, #7] + 8001376: 095b lsrs r3, r3, #5 + 8001378: 2001 movs r0, #1 + 800137a: fa00 f202 lsl.w r2, r0, r2 + 800137e: f841 2023 str.w r2, [r1, r3, lsl #2] + } +} + 8001382: bf00 nop + 8001384: 370c adds r7, #12 + 8001386: 46bd mov sp, r7 + 8001388: bc80 pop {r7} + 800138a: 4770 bx lr + 800138c: e000e100 .word 0xe000e100 + +08001390 <__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) +{ + 8001390: b480 push {r7} + 8001392: b083 sub sp, #12 + 8001394: af00 add r7, sp, #0 + 8001396: 4603 mov r3, r0 + 8001398: 6039 str r1, [r7, #0] + 800139a: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 800139c: f997 3007 ldrsb.w r3, [r7, #7] + 80013a0: 2b00 cmp r3, #0 + 80013a2: db0a blt.n 80013ba <__NVIC_SetPriority+0x2a> + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 80013a4: 683b ldr r3, [r7, #0] + 80013a6: b2da uxtb r2, r3 + 80013a8: 490c ldr r1, [pc, #48] @ (80013dc <__NVIC_SetPriority+0x4c>) + 80013aa: f997 3007 ldrsb.w r3, [r7, #7] + 80013ae: 0112 lsls r2, r2, #4 + 80013b0: b2d2 uxtb r2, r2 + 80013b2: 440b add r3, r1 + 80013b4: 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); + } +} + 80013b8: e00a b.n 80013d0 <__NVIC_SetPriority+0x40> + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 80013ba: 683b ldr r3, [r7, #0] + 80013bc: b2da uxtb r2, r3 + 80013be: 4908 ldr r1, [pc, #32] @ (80013e0 <__NVIC_SetPriority+0x50>) + 80013c0: 79fb ldrb r3, [r7, #7] + 80013c2: f003 030f and.w r3, r3, #15 + 80013c6: 3b04 subs r3, #4 + 80013c8: 0112 lsls r2, r2, #4 + 80013ca: b2d2 uxtb r2, r2 + 80013cc: 440b add r3, r1 + 80013ce: 761a strb r2, [r3, #24] +} + 80013d0: bf00 nop + 80013d2: 370c adds r7, #12 + 80013d4: 46bd mov sp, r7 + 80013d6: bc80 pop {r7} + 80013d8: 4770 bx lr + 80013da: bf00 nop + 80013dc: e000e100 .word 0xe000e100 + 80013e0: e000ed00 .word 0xe000ed00 + +080013e4 : + \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) +{ + 80013e4: b480 push {r7} + 80013e6: b089 sub sp, #36 @ 0x24 + 80013e8: af00 add r7, sp, #0 + 80013ea: 60f8 str r0, [r7, #12] + 80013ec: 60b9 str r1, [r7, #8] + 80013ee: 607a str r2, [r7, #4] + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 80013f0: 68fb ldr r3, [r7, #12] + 80013f2: f003 0307 and.w r3, r3, #7 + 80013f6: 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); + 80013f8: 69fb ldr r3, [r7, #28] + 80013fa: f1c3 0307 rsb r3, r3, #7 + 80013fe: 2b04 cmp r3, #4 + 8001400: bf28 it cs + 8001402: 2304 movcs r3, #4 + 8001404: 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)); + 8001406: 69fb ldr r3, [r7, #28] + 8001408: 3304 adds r3, #4 + 800140a: 2b06 cmp r3, #6 + 800140c: d902 bls.n 8001414 + 800140e: 69fb ldr r3, [r7, #28] + 8001410: 3b03 subs r3, #3 + 8001412: e000 b.n 8001416 + 8001414: 2300 movs r3, #0 + 8001416: 617b str r3, [r7, #20] + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8001418: f04f 32ff mov.w r2, #4294967295 + 800141c: 69bb ldr r3, [r7, #24] + 800141e: fa02 f303 lsl.w r3, r2, r3 + 8001422: 43da mvns r2, r3 + 8001424: 68bb ldr r3, [r7, #8] + 8001426: 401a ands r2, r3 + 8001428: 697b ldr r3, [r7, #20] + 800142a: 409a lsls r2, r3 + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + 800142c: f04f 31ff mov.w r1, #4294967295 + 8001430: 697b ldr r3, [r7, #20] + 8001432: fa01 f303 lsl.w r3, r1, r3 + 8001436: 43d9 mvns r1, r3 + 8001438: 687b ldr r3, [r7, #4] + 800143a: 400b ands r3, r1 + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 800143c: 4313 orrs r3, r2 + ); +} + 800143e: 4618 mov r0, r3 + 8001440: 3724 adds r7, #36 @ 0x24 + 8001442: 46bd mov sp, r7 + 8001444: bc80 pop {r7} + 8001446: 4770 bx lr + +08001448 : + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + 8001448: b580 push {r7, lr} + 800144a: b082 sub sp, #8 + 800144c: af00 add r7, sp, #0 + 800144e: 6078 str r0, [r7, #4] + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + 8001450: 687b ldr r3, [r7, #4] + 8001452: 3b01 subs r3, #1 + 8001454: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 8001458: d301 bcc.n 800145e + { + return (1UL); /* Reload value impossible */ + 800145a: 2301 movs r3, #1 + 800145c: e00f b.n 800147e + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + 800145e: 4a0a ldr r2, [pc, #40] @ (8001488 ) + 8001460: 687b ldr r3, [r7, #4] + 8001462: 3b01 subs r3, #1 + 8001464: 6053 str r3, [r2, #4] + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + 8001466: 210f movs r1, #15 + 8001468: f04f 30ff mov.w r0, #4294967295 + 800146c: f7ff ff90 bl 8001390 <__NVIC_SetPriority> + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + 8001470: 4b05 ldr r3, [pc, #20] @ (8001488 ) + 8001472: 2200 movs r2, #0 + 8001474: 609a str r2, [r3, #8] + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + 8001476: 4b04 ldr r3, [pc, #16] @ (8001488 ) + 8001478: 2207 movs r2, #7 + 800147a: 601a str r2, [r3, #0] + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ + 800147c: 2300 movs r3, #0 +} + 800147e: 4618 mov r0, r3 + 8001480: 3708 adds r7, #8 + 8001482: 46bd mov sp, r7 + 8001484: bd80 pop {r7, pc} + 8001486: bf00 nop + 8001488: e000e010 .word 0xe000e010 + +0800148c : + * @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) +{ + 800148c: b580 push {r7, lr} + 800148e: b082 sub sp, #8 + 8001490: af00 add r7, sp, #0 + 8001492: 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); + 8001494: 6878 ldr r0, [r7, #4] + 8001496: f7ff ff2d bl 80012f4 <__NVIC_SetPriorityGrouping> +} + 800149a: bf00 nop + 800149c: 3708 adds r7, #8 + 800149e: 46bd mov sp, r7 + 80014a0: bd80 pop {r7, pc} + +080014a2 : + * 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) +{ + 80014a2: b580 push {r7, lr} + 80014a4: b086 sub sp, #24 + 80014a6: af00 add r7, sp, #0 + 80014a8: 4603 mov r3, r0 + 80014aa: 60b9 str r1, [r7, #8] + 80014ac: 607a str r2, [r7, #4] + 80014ae: 73fb strb r3, [r7, #15] + uint32_t prioritygroup = 0x00U; + 80014b0: 2300 movs r3, #0 + 80014b2: 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(); + 80014b4: f7ff ff42 bl 800133c <__NVIC_GetPriorityGrouping> + 80014b8: 6178 str r0, [r7, #20] + + NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); + 80014ba: 687a ldr r2, [r7, #4] + 80014bc: 68b9 ldr r1, [r7, #8] + 80014be: 6978 ldr r0, [r7, #20] + 80014c0: f7ff ff90 bl 80013e4 + 80014c4: 4602 mov r2, r0 + 80014c6: f997 300f ldrsb.w r3, [r7, #15] + 80014ca: 4611 mov r1, r2 + 80014cc: 4618 mov r0, r3 + 80014ce: f7ff ff5f bl 8001390 <__NVIC_SetPriority> +} + 80014d2: bf00 nop + 80014d4: 3718 adds r7, #24 + 80014d6: 46bd mov sp, r7 + 80014d8: bd80 pop {r7, pc} + +080014da : + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h)) + * @retval None + */ +void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 80014da: b580 push {r7, lr} + 80014dc: b082 sub sp, #8 + 80014de: af00 add r7, sp, #0 + 80014e0: 4603 mov r3, r0 + 80014e2: 71fb strb r3, [r7, #7] + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Enable interrupt */ + NVIC_EnableIRQ(IRQn); + 80014e4: f997 3007 ldrsb.w r3, [r7, #7] + 80014e8: 4618 mov r0, r3 + 80014ea: f7ff ff35 bl 8001358 <__NVIC_EnableIRQ> +} + 80014ee: bf00 nop + 80014f0: 3708 adds r7, #8 + 80014f2: 46bd mov sp, r7 + 80014f4: bd80 pop {r7, pc} + +080014f6 : + * @param TicksNumb: Specifies the ticks Number of ticks between two interrupts. + * @retval status: - 0 Function succeeded. + * - 1 Function failed. + */ +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) +{ + 80014f6: b580 push {r7, lr} + 80014f8: b082 sub sp, #8 + 80014fa: af00 add r7, sp, #0 + 80014fc: 6078 str r0, [r7, #4] + return SysTick_Config(TicksNumb); + 80014fe: 6878 ldr r0, [r7, #4] + 8001500: f7ff ffa2 bl 8001448 + 8001504: 4603 mov r3, r0 +} + 8001506: 4618 mov r0, r3 + 8001508: 3708 adds r7, #8 + 800150a: 46bd mov sp, r7 + 800150c: bd80 pop {r7, pc} + +0800150e : +/** + * @brief This function handles SYSTICK interrupt request. + * @retval None + */ +void HAL_SYSTICK_IRQHandler(void) +{ + 800150e: b580 push {r7, lr} + 8001510: af00 add r7, sp, #0 + HAL_SYSTICK_Callback(); + 8001512: f7fe fe1b bl 800014c +} + 8001516: bf00 nop + 8001518: bd80 pop {r7, pc} + ... + +0800151c : + * @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) +{ + 800151c: b480 push {r7} + 800151e: b08b sub sp, #44 @ 0x2c + 8001520: af00 add r7, sp, #0 + 8001522: 6078 str r0, [r7, #4] + 8001524: 6039 str r1, [r7, #0] + uint32_t position = 0x00u; + 8001526: 2300 movs r3, #0 + 8001528: 627b str r3, [r7, #36] @ 0x24 + uint32_t ioposition; + uint32_t iocurrent; + uint32_t temp; + uint32_t config = 0x00u; + 800152a: 2300 movs r3, #0 + 800152c: 623b str r3, [r7, #32] + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0x00u) + 800152e: e169 b.n 8001804 + { + /* Get the IO position */ + ioposition = (0x01uL << position); + 8001530: 2201 movs r2, #1 + 8001532: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001534: fa02 f303 lsl.w r3, r2, r3 + 8001538: 61fb str r3, [r7, #28] + + /* Get the current IO position */ + iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition; + 800153a: 683b ldr r3, [r7, #0] + 800153c: 681b ldr r3, [r3, #0] + 800153e: 69fa ldr r2, [r7, #28] + 8001540: 4013 ands r3, r2 + 8001542: 61bb str r3, [r7, #24] + + if (iocurrent == ioposition) + 8001544: 69ba ldr r2, [r7, #24] + 8001546: 69fb ldr r3, [r7, #28] + 8001548: 429a cmp r2, r3 + 800154a: f040 8158 bne.w 80017fe + { + /* Check the Alternate function parameters */ + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + + /* Based on the required mode, filling config variable with MODEy[1:0] and CNFy[3:2] corresponding bits */ + switch (GPIO_Init->Mode) + 800154e: 683b ldr r3, [r7, #0] + 8001550: 685b ldr r3, [r3, #4] + 8001552: 4a9a ldr r2, [pc, #616] @ (80017bc ) + 8001554: 4293 cmp r3, r2 + 8001556: d05e beq.n 8001616 + 8001558: 4a98 ldr r2, [pc, #608] @ (80017bc ) + 800155a: 4293 cmp r3, r2 + 800155c: d875 bhi.n 800164a + 800155e: 4a98 ldr r2, [pc, #608] @ (80017c0 ) + 8001560: 4293 cmp r3, r2 + 8001562: d058 beq.n 8001616 + 8001564: 4a96 ldr r2, [pc, #600] @ (80017c0 ) + 8001566: 4293 cmp r3, r2 + 8001568: d86f bhi.n 800164a + 800156a: 4a96 ldr r2, [pc, #600] @ (80017c4 ) + 800156c: 4293 cmp r3, r2 + 800156e: d052 beq.n 8001616 + 8001570: 4a94 ldr r2, [pc, #592] @ (80017c4 ) + 8001572: 4293 cmp r3, r2 + 8001574: d869 bhi.n 800164a + 8001576: 4a94 ldr r2, [pc, #592] @ (80017c8 ) + 8001578: 4293 cmp r3, r2 + 800157a: d04c beq.n 8001616 + 800157c: 4a92 ldr r2, [pc, #584] @ (80017c8 ) + 800157e: 4293 cmp r3, r2 + 8001580: d863 bhi.n 800164a + 8001582: 4a92 ldr r2, [pc, #584] @ (80017cc ) + 8001584: 4293 cmp r3, r2 + 8001586: d046 beq.n 8001616 + 8001588: 4a90 ldr r2, [pc, #576] @ (80017cc ) + 800158a: 4293 cmp r3, r2 + 800158c: d85d bhi.n 800164a + 800158e: 2b12 cmp r3, #18 + 8001590: d82a bhi.n 80015e8 + 8001592: 2b12 cmp r3, #18 + 8001594: d859 bhi.n 800164a + 8001596: a201 add r2, pc, #4 @ (adr r2, 800159c ) + 8001598: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 800159c: 08001617 .word 0x08001617 + 80015a0: 080015f1 .word 0x080015f1 + 80015a4: 08001603 .word 0x08001603 + 80015a8: 08001645 .word 0x08001645 + 80015ac: 0800164b .word 0x0800164b + 80015b0: 0800164b .word 0x0800164b + 80015b4: 0800164b .word 0x0800164b + 80015b8: 0800164b .word 0x0800164b + 80015bc: 0800164b .word 0x0800164b + 80015c0: 0800164b .word 0x0800164b + 80015c4: 0800164b .word 0x0800164b + 80015c8: 0800164b .word 0x0800164b + 80015cc: 0800164b .word 0x0800164b + 80015d0: 0800164b .word 0x0800164b + 80015d4: 0800164b .word 0x0800164b + 80015d8: 0800164b .word 0x0800164b + 80015dc: 0800164b .word 0x0800164b + 80015e0: 080015f9 .word 0x080015f9 + 80015e4: 0800160d .word 0x0800160d + 80015e8: 4a79 ldr r2, [pc, #484] @ (80017d0 ) + 80015ea: 4293 cmp r3, r2 + 80015ec: d013 beq.n 8001616 + config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG; + break; + + /* Parameters are checked with assert_param */ + default: + break; + 80015ee: e02c b.n 800164a + config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_PP; + 80015f0: 683b ldr r3, [r7, #0] + 80015f2: 68db ldr r3, [r3, #12] + 80015f4: 623b str r3, [r7, #32] + break; + 80015f6: e029 b.n 800164c + config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_OD; + 80015f8: 683b ldr r3, [r7, #0] + 80015fa: 68db ldr r3, [r3, #12] + 80015fc: 3304 adds r3, #4 + 80015fe: 623b str r3, [r7, #32] + break; + 8001600: e024 b.n 800164c + config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_PP; + 8001602: 683b ldr r3, [r7, #0] + 8001604: 68db ldr r3, [r3, #12] + 8001606: 3308 adds r3, #8 + 8001608: 623b str r3, [r7, #32] + break; + 800160a: e01f b.n 800164c + config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_OD; + 800160c: 683b ldr r3, [r7, #0] + 800160e: 68db ldr r3, [r3, #12] + 8001610: 330c adds r3, #12 + 8001612: 623b str r3, [r7, #32] + break; + 8001614: e01a b.n 800164c + if (GPIO_Init->Pull == GPIO_NOPULL) + 8001616: 683b ldr r3, [r7, #0] + 8001618: 689b ldr r3, [r3, #8] + 800161a: 2b00 cmp r3, #0 + 800161c: d102 bne.n 8001624 + config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_FLOATING; + 800161e: 2304 movs r3, #4 + 8001620: 623b str r3, [r7, #32] + break; + 8001622: e013 b.n 800164c + else if (GPIO_Init->Pull == GPIO_PULLUP) + 8001624: 683b ldr r3, [r7, #0] + 8001626: 689b ldr r3, [r3, #8] + 8001628: 2b01 cmp r3, #1 + 800162a: d105 bne.n 8001638 + config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD; + 800162c: 2308 movs r3, #8 + 800162e: 623b str r3, [r7, #32] + GPIOx->BSRR = ioposition; + 8001630: 687b ldr r3, [r7, #4] + 8001632: 69fa ldr r2, [r7, #28] + 8001634: 611a str r2, [r3, #16] + break; + 8001636: e009 b.n 800164c + config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD; + 8001638: 2308 movs r3, #8 + 800163a: 623b str r3, [r7, #32] + GPIOx->BRR = ioposition; + 800163c: 687b ldr r3, [r7, #4] + 800163e: 69fa ldr r2, [r7, #28] + 8001640: 615a str r2, [r3, #20] + break; + 8001642: e003 b.n 800164c + config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG; + 8001644: 2300 movs r3, #0 + 8001646: 623b str r3, [r7, #32] + break; + 8001648: e000 b.n 800164c + break; + 800164a: bf00 nop + } + + /* Check if the current bit belongs to first half or last half of the pin count number + in order to address CRH or CRL register*/ + configregister = (iocurrent < GPIO_PIN_8) ? &GPIOx->CRL : &GPIOx->CRH; + 800164c: 69bb ldr r3, [r7, #24] + 800164e: 2bff cmp r3, #255 @ 0xff + 8001650: d801 bhi.n 8001656 + 8001652: 687b ldr r3, [r7, #4] + 8001654: e001 b.n 800165a + 8001656: 687b ldr r3, [r7, #4] + 8001658: 3304 adds r3, #4 + 800165a: 617b str r3, [r7, #20] + registeroffset = (iocurrent < GPIO_PIN_8) ? (position << 2u) : ((position - 8u) << 2u); + 800165c: 69bb ldr r3, [r7, #24] + 800165e: 2bff cmp r3, #255 @ 0xff + 8001660: d802 bhi.n 8001668 + 8001662: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001664: 009b lsls r3, r3, #2 + 8001666: e002 b.n 800166e + 8001668: 6a7b ldr r3, [r7, #36] @ 0x24 + 800166a: 3b08 subs r3, #8 + 800166c: 009b lsls r3, r3, #2 + 800166e: 613b str r3, [r7, #16] + + /* Apply the new configuration of the pin to the register */ + MODIFY_REG((*configregister), ((GPIO_CRL_MODE0 | GPIO_CRL_CNF0) << registeroffset), (config << registeroffset)); + 8001670: 697b ldr r3, [r7, #20] + 8001672: 681a ldr r2, [r3, #0] + 8001674: 210f movs r1, #15 + 8001676: 693b ldr r3, [r7, #16] + 8001678: fa01 f303 lsl.w r3, r1, r3 + 800167c: 43db mvns r3, r3 + 800167e: 401a ands r2, r3 + 8001680: 6a39 ldr r1, [r7, #32] + 8001682: 693b ldr r3, [r7, #16] + 8001684: fa01 f303 lsl.w r3, r1, r3 + 8001688: 431a orrs r2, r3 + 800168a: 697b ldr r3, [r7, #20] + 800168c: 601a str r2, [r3, #0] + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE) + 800168e: 683b ldr r3, [r7, #0] + 8001690: 685b ldr r3, [r3, #4] + 8001692: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8001696: 2b00 cmp r3, #0 + 8001698: f000 80b1 beq.w 80017fe + { + /* Enable AFIO Clock */ + __HAL_RCC_AFIO_CLK_ENABLE(); + 800169c: 4b4d ldr r3, [pc, #308] @ (80017d4 ) + 800169e: 699b ldr r3, [r3, #24] + 80016a0: 4a4c ldr r2, [pc, #304] @ (80017d4 ) + 80016a2: f043 0301 orr.w r3, r3, #1 + 80016a6: 6193 str r3, [r2, #24] + 80016a8: 4b4a ldr r3, [pc, #296] @ (80017d4 ) + 80016aa: 699b ldr r3, [r3, #24] + 80016ac: f003 0301 and.w r3, r3, #1 + 80016b0: 60bb str r3, [r7, #8] + 80016b2: 68bb ldr r3, [r7, #8] + temp = AFIO->EXTICR[position >> 2u]; + 80016b4: 4a48 ldr r2, [pc, #288] @ (80017d8 ) + 80016b6: 6a7b ldr r3, [r7, #36] @ 0x24 + 80016b8: 089b lsrs r3, r3, #2 + 80016ba: 3302 adds r3, #2 + 80016bc: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 80016c0: 60fb str r3, [r7, #12] + CLEAR_BIT(temp, (0x0Fu) << (4u * (position & 0x03u))); + 80016c2: 6a7b ldr r3, [r7, #36] @ 0x24 + 80016c4: f003 0303 and.w r3, r3, #3 + 80016c8: 009b lsls r3, r3, #2 + 80016ca: 220f movs r2, #15 + 80016cc: fa02 f303 lsl.w r3, r2, r3 + 80016d0: 43db mvns r3, r3 + 80016d2: 68fa ldr r2, [r7, #12] + 80016d4: 4013 ands r3, r2 + 80016d6: 60fb str r3, [r7, #12] + SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4u * (position & 0x03u))); + 80016d8: 687b ldr r3, [r7, #4] + 80016da: 4a40 ldr r2, [pc, #256] @ (80017dc ) + 80016dc: 4293 cmp r3, r2 + 80016de: d013 beq.n 8001708 + 80016e0: 687b ldr r3, [r7, #4] + 80016e2: 4a3f ldr r2, [pc, #252] @ (80017e0 ) + 80016e4: 4293 cmp r3, r2 + 80016e6: d00d beq.n 8001704 + 80016e8: 687b ldr r3, [r7, #4] + 80016ea: 4a3e ldr r2, [pc, #248] @ (80017e4 ) + 80016ec: 4293 cmp r3, r2 + 80016ee: d007 beq.n 8001700 + 80016f0: 687b ldr r3, [r7, #4] + 80016f2: 4a3d ldr r2, [pc, #244] @ (80017e8 ) + 80016f4: 4293 cmp r3, r2 + 80016f6: d101 bne.n 80016fc + 80016f8: 2303 movs r3, #3 + 80016fa: e006 b.n 800170a + 80016fc: 2304 movs r3, #4 + 80016fe: e004 b.n 800170a + 8001700: 2302 movs r3, #2 + 8001702: e002 b.n 800170a + 8001704: 2301 movs r3, #1 + 8001706: e000 b.n 800170a + 8001708: 2300 movs r3, #0 + 800170a: 6a7a ldr r2, [r7, #36] @ 0x24 + 800170c: f002 0203 and.w r2, r2, #3 + 8001710: 0092 lsls r2, r2, #2 + 8001712: 4093 lsls r3, r2 + 8001714: 68fa ldr r2, [r7, #12] + 8001716: 4313 orrs r3, r2 + 8001718: 60fb str r3, [r7, #12] + AFIO->EXTICR[position >> 2u] = temp; + 800171a: 492f ldr r1, [pc, #188] @ (80017d8 ) + 800171c: 6a7b ldr r3, [r7, #36] @ 0x24 + 800171e: 089b lsrs r3, r3, #2 + 8001720: 3302 adds r3, #2 + 8001722: 68fa ldr r2, [r7, #12] + 8001724: f841 2023 str.w r2, [r1, r3, lsl #2] + + + /* Enable or disable the rising trigger */ + if ((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE) + 8001728: 683b ldr r3, [r7, #0] + 800172a: 685b ldr r3, [r3, #4] + 800172c: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 8001730: 2b00 cmp r3, #0 + 8001732: d006 beq.n 8001742 + { + SET_BIT(EXTI->RTSR, iocurrent); + 8001734: 4b2d ldr r3, [pc, #180] @ (80017ec ) + 8001736: 689a ldr r2, [r3, #8] + 8001738: 492c ldr r1, [pc, #176] @ (80017ec ) + 800173a: 69bb ldr r3, [r7, #24] + 800173c: 4313 orrs r3, r2 + 800173e: 608b str r3, [r1, #8] + 8001740: e006 b.n 8001750 + } + else + { + CLEAR_BIT(EXTI->RTSR, iocurrent); + 8001742: 4b2a ldr r3, [pc, #168] @ (80017ec ) + 8001744: 689a ldr r2, [r3, #8] + 8001746: 69bb ldr r3, [r7, #24] + 8001748: 43db mvns r3, r3 + 800174a: 4928 ldr r1, [pc, #160] @ (80017ec ) + 800174c: 4013 ands r3, r2 + 800174e: 608b str r3, [r1, #8] + } + + /* Enable or disable the falling trigger */ + if ((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE) + 8001750: 683b ldr r3, [r7, #0] + 8001752: 685b ldr r3, [r3, #4] + 8001754: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 8001758: 2b00 cmp r3, #0 + 800175a: d006 beq.n 800176a + { + SET_BIT(EXTI->FTSR, iocurrent); + 800175c: 4b23 ldr r3, [pc, #140] @ (80017ec ) + 800175e: 68da ldr r2, [r3, #12] + 8001760: 4922 ldr r1, [pc, #136] @ (80017ec ) + 8001762: 69bb ldr r3, [r7, #24] + 8001764: 4313 orrs r3, r2 + 8001766: 60cb str r3, [r1, #12] + 8001768: e006 b.n 8001778 + } + else + { + CLEAR_BIT(EXTI->FTSR, iocurrent); + 800176a: 4b20 ldr r3, [pc, #128] @ (80017ec ) + 800176c: 68da ldr r2, [r3, #12] + 800176e: 69bb ldr r3, [r7, #24] + 8001770: 43db mvns r3, r3 + 8001772: 491e ldr r1, [pc, #120] @ (80017ec ) + 8001774: 4013 ands r3, r2 + 8001776: 60cb str r3, [r1, #12] + } + + /* Configure the event mask */ + if ((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT) + 8001778: 683b ldr r3, [r7, #0] + 800177a: 685b ldr r3, [r3, #4] + 800177c: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001780: 2b00 cmp r3, #0 + 8001782: d006 beq.n 8001792 + { + SET_BIT(EXTI->EMR, iocurrent); + 8001784: 4b19 ldr r3, [pc, #100] @ (80017ec ) + 8001786: 685a ldr r2, [r3, #4] + 8001788: 4918 ldr r1, [pc, #96] @ (80017ec ) + 800178a: 69bb ldr r3, [r7, #24] + 800178c: 4313 orrs r3, r2 + 800178e: 604b str r3, [r1, #4] + 8001790: e006 b.n 80017a0 + } + else + { + CLEAR_BIT(EXTI->EMR, iocurrent); + 8001792: 4b16 ldr r3, [pc, #88] @ (80017ec ) + 8001794: 685a ldr r2, [r3, #4] + 8001796: 69bb ldr r3, [r7, #24] + 8001798: 43db mvns r3, r3 + 800179a: 4914 ldr r1, [pc, #80] @ (80017ec ) + 800179c: 4013 ands r3, r2 + 800179e: 604b str r3, [r1, #4] + } + + /* Configure the interrupt mask */ + if ((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT) + 80017a0: 683b ldr r3, [r7, #0] + 80017a2: 685b ldr r3, [r3, #4] + 80017a4: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 80017a8: 2b00 cmp r3, #0 + 80017aa: d021 beq.n 80017f0 + { + SET_BIT(EXTI->IMR, iocurrent); + 80017ac: 4b0f ldr r3, [pc, #60] @ (80017ec ) + 80017ae: 681a ldr r2, [r3, #0] + 80017b0: 490e ldr r1, [pc, #56] @ (80017ec ) + 80017b2: 69bb ldr r3, [r7, #24] + 80017b4: 4313 orrs r3, r2 + 80017b6: 600b str r3, [r1, #0] + 80017b8: e021 b.n 80017fe + 80017ba: bf00 nop + 80017bc: 10320000 .word 0x10320000 + 80017c0: 10310000 .word 0x10310000 + 80017c4: 10220000 .word 0x10220000 + 80017c8: 10210000 .word 0x10210000 + 80017cc: 10120000 .word 0x10120000 + 80017d0: 10110000 .word 0x10110000 + 80017d4: 40021000 .word 0x40021000 + 80017d8: 40010000 .word 0x40010000 + 80017dc: 40010800 .word 0x40010800 + 80017e0: 40010c00 .word 0x40010c00 + 80017e4: 40011000 .word 0x40011000 + 80017e8: 40011400 .word 0x40011400 + 80017ec: 40010400 .word 0x40010400 + } + else + { + CLEAR_BIT(EXTI->IMR, iocurrent); + 80017f0: 4b0b ldr r3, [pc, #44] @ (8001820 ) + 80017f2: 681a ldr r2, [r3, #0] + 80017f4: 69bb ldr r3, [r7, #24] + 80017f6: 43db mvns r3, r3 + 80017f8: 4909 ldr r1, [pc, #36] @ (8001820 ) + 80017fa: 4013 ands r3, r2 + 80017fc: 600b str r3, [r1, #0] + } + } + } + + position++; + 80017fe: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001800: 3301 adds r3, #1 + 8001802: 627b str r3, [r7, #36] @ 0x24 + while (((GPIO_Init->Pin) >> position) != 0x00u) + 8001804: 683b ldr r3, [r7, #0] + 8001806: 681a ldr r2, [r3, #0] + 8001808: 6a7b ldr r3, [r7, #36] @ 0x24 + 800180a: fa22 f303 lsr.w r3, r2, r3 + 800180e: 2b00 cmp r3, #0 + 8001810: f47f ae8e bne.w 8001530 + } +} + 8001814: bf00 nop + 8001816: bf00 nop + 8001818: 372c adds r7, #44 @ 0x2c + 800181a: 46bd mov sp, r7 + 800181c: bc80 pop {r7} + 800181e: 4770 bx lr + 8001820: 40010400 .word 0x40010400 + +08001824 : + * @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) +{ + 8001824: b480 push {r7} + 8001826: b083 sub sp, #12 + 8001828: af00 add r7, sp, #0 + 800182a: 6078 str r0, [r7, #4] + 800182c: 460b mov r3, r1 + 800182e: 807b strh r3, [r7, #2] + 8001830: 4613 mov r3, r2 + 8001832: 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) + 8001834: 787b ldrb r3, [r7, #1] + 8001836: 2b00 cmp r3, #0 + 8001838: d003 beq.n 8001842 + { + GPIOx->BSRR = GPIO_Pin; + 800183a: 887a ldrh r2, [r7, #2] + 800183c: 687b ldr r3, [r7, #4] + 800183e: 611a str r2, [r3, #16] + } + else + { + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u; + } +} + 8001840: e003 b.n 800184a + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u; + 8001842: 887b ldrh r3, [r7, #2] + 8001844: 041a lsls r2, r3, #16 + 8001846: 687b ldr r3, [r7, #4] + 8001848: 611a str r2, [r3, #16] +} + 800184a: bf00 nop + 800184c: 370c adds r7, #12 + 800184e: 46bd mov sp, r7 + 8001850: bc80 pop {r7} + 8001852: 4770 bx lr + +08001854 : + * @param GPIOx: where x can be (A..G depending on device used) to select the GPIO peripheral + * @param GPIO_Pin: Specifies the pins to be toggled. + * @retval None + */ +void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) +{ + 8001854: b480 push {r7} + 8001856: b085 sub sp, #20 + 8001858: af00 add r7, sp, #0 + 800185a: 6078 str r0, [r7, #4] + 800185c: 460b mov r3, r1 + 800185e: 807b strh r3, [r7, #2] + + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + /* get current Output Data Register value */ + odr = GPIOx->ODR; + 8001860: 687b ldr r3, [r7, #4] + 8001862: 68db ldr r3, [r3, #12] + 8001864: 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); + 8001866: 887a ldrh r2, [r7, #2] + 8001868: 68fb ldr r3, [r7, #12] + 800186a: 4013 ands r3, r2 + 800186c: 041a lsls r2, r3, #16 + 800186e: 68fb ldr r3, [r7, #12] + 8001870: 43d9 mvns r1, r3 + 8001872: 887b ldrh r3, [r7, #2] + 8001874: 400b ands r3, r1 + 8001876: 431a orrs r2, r3 + 8001878: 687b ldr r3, [r7, #4] + 800187a: 611a str r2, [r3, #16] +} + 800187c: bf00 nop + 800187e: 3714 adds r7, #20 + 8001880: 46bd mov sp, r7 + 8001882: bc80 pop {r7} + 8001884: 4770 bx lr + +08001886 : + * parameters in the PCD_InitTypeDef and initialize the associated handle. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd) +{ + 8001886: b580 push {r7, lr} + 8001888: b084 sub sp, #16 + 800188a: af00 add r7, sp, #0 + 800188c: 6078 str r0, [r7, #4] + uint8_t i; + + /* Check the PCD handle allocation */ + if (hpcd == NULL) + 800188e: 687b ldr r3, [r7, #4] + 8001890: 2b00 cmp r3, #0 + 8001892: d101 bne.n 8001898 + { + return HAL_ERROR; + 8001894: 2301 movs r3, #1 + 8001896: e0e8 b.n 8001a6a + } + + /* Check the parameters */ + assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance)); + + if (hpcd->State == HAL_PCD_STATE_RESET) + 8001898: 687b ldr r3, [r7, #4] + 800189a: f893 3291 ldrb.w r3, [r3, #657] @ 0x291 + 800189e: b2db uxtb r3, r3 + 80018a0: 2b00 cmp r3, #0 + 80018a2: d106 bne.n 80018b2 + { + /* Allocate lock resource and initialize it */ + hpcd->Lock = HAL_UNLOCKED; + 80018a4: 687b ldr r3, [r7, #4] + 80018a6: 2200 movs r2, #0 + 80018a8: f883 2290 strb.w r2, [r3, #656] @ 0x290 + + /* Init the low level hardware */ + hpcd->MspInitCallback(hpcd); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + HAL_PCD_MspInit(hpcd); + 80018ac: 6878 ldr r0, [r7, #4] + 80018ae: f007 f985 bl 8008bbc +#endif /* (USE_HAL_PCD_REGISTER_CALLBACKS) */ + } + + hpcd->State = HAL_PCD_STATE_BUSY; + 80018b2: 687b ldr r3, [r7, #4] + 80018b4: 2203 movs r2, #3 + 80018b6: f883 2291 strb.w r2, [r3, #657] @ 0x291 + + /* Disable DMA mode for FS instance */ + hpcd->Init.dma_enable = 0U; + 80018ba: 687b ldr r3, [r7, #4] + 80018bc: 2200 movs r2, #0 + 80018be: 715a strb r2, [r3, #5] + + /* Disable the Interrupts */ + __HAL_PCD_DISABLE(hpcd); + 80018c0: 687b ldr r3, [r7, #4] + 80018c2: 681b ldr r3, [r3, #0] + 80018c4: 4618 mov r0, r3 + 80018c6: f003 f829 bl 800491c + + /*Init the Core (common init.) */ + if (USB_CoreInit(hpcd->Instance, hpcd->Init) != HAL_OK) + 80018ca: 687b ldr r3, [r7, #4] + 80018cc: 6818 ldr r0, [r3, #0] + 80018ce: 687b ldr r3, [r7, #4] + 80018d0: 3304 adds r3, #4 + 80018d2: cb0e ldmia r3, {r1, r2, r3} + 80018d4: f002 ffff bl 80048d6 + 80018d8: 4603 mov r3, r0 + 80018da: 2b00 cmp r3, #0 + 80018dc: d005 beq.n 80018ea + { + hpcd->State = HAL_PCD_STATE_ERROR; + 80018de: 687b ldr r3, [r7, #4] + 80018e0: 2202 movs r2, #2 + 80018e2: f883 2291 strb.w r2, [r3, #657] @ 0x291 + return HAL_ERROR; + 80018e6: 2301 movs r3, #1 + 80018e8: e0bf b.n 8001a6a + } + + /* Force Device Mode */ + if (USB_SetCurrentMode(hpcd->Instance, USB_DEVICE_MODE) != HAL_OK) + 80018ea: 687b ldr r3, [r7, #4] + 80018ec: 681b ldr r3, [r3, #0] + 80018ee: 2100 movs r1, #0 + 80018f0: 4618 mov r0, r3 + 80018f2: f003 f82d bl 8004950 + 80018f6: 4603 mov r3, r0 + 80018f8: 2b00 cmp r3, #0 + 80018fa: d005 beq.n 8001908 + { + hpcd->State = HAL_PCD_STATE_ERROR; + 80018fc: 687b ldr r3, [r7, #4] + 80018fe: 2202 movs r2, #2 + 8001900: f883 2291 strb.w r2, [r3, #657] @ 0x291 + return HAL_ERROR; + 8001904: 2301 movs r3, #1 + 8001906: e0b0 b.n 8001a6a + } + + /* Init endpoints structures */ + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + 8001908: 2300 movs r3, #0 + 800190a: 73fb strb r3, [r7, #15] + 800190c: e03e b.n 800198c + { + /* Init ep structure */ + hpcd->IN_ep[i].is_in = 1U; + 800190e: 7bfa ldrb r2, [r7, #15] + 8001910: 6879 ldr r1, [r7, #4] + 8001912: 4613 mov r3, r2 + 8001914: 009b lsls r3, r3, #2 + 8001916: 4413 add r3, r2 + 8001918: 00db lsls r3, r3, #3 + 800191a: 440b add r3, r1 + 800191c: 3311 adds r3, #17 + 800191e: 2201 movs r2, #1 + 8001920: 701a strb r2, [r3, #0] + hpcd->IN_ep[i].num = i; + 8001922: 7bfa ldrb r2, [r7, #15] + 8001924: 6879 ldr r1, [r7, #4] + 8001926: 4613 mov r3, r2 + 8001928: 009b lsls r3, r3, #2 + 800192a: 4413 add r3, r2 + 800192c: 00db lsls r3, r3, #3 + 800192e: 440b add r3, r1 + 8001930: 3310 adds r3, #16 + 8001932: 7bfa ldrb r2, [r7, #15] + 8001934: 701a strb r2, [r3, #0] +#if defined (USB_OTG_FS) + hpcd->IN_ep[i].tx_fifo_num = i; +#endif /* defined (USB_OTG_FS) */ + /* Control until ep is activated */ + hpcd->IN_ep[i].type = EP_TYPE_CTRL; + 8001936: 7bfa ldrb r2, [r7, #15] + 8001938: 6879 ldr r1, [r7, #4] + 800193a: 4613 mov r3, r2 + 800193c: 009b lsls r3, r3, #2 + 800193e: 4413 add r3, r2 + 8001940: 00db lsls r3, r3, #3 + 8001942: 440b add r3, r1 + 8001944: 3313 adds r3, #19 + 8001946: 2200 movs r2, #0 + 8001948: 701a strb r2, [r3, #0] + hpcd->IN_ep[i].maxpacket = 0U; + 800194a: 7bfa ldrb r2, [r7, #15] + 800194c: 6879 ldr r1, [r7, #4] + 800194e: 4613 mov r3, r2 + 8001950: 009b lsls r3, r3, #2 + 8001952: 4413 add r3, r2 + 8001954: 00db lsls r3, r3, #3 + 8001956: 440b add r3, r1 + 8001958: 3320 adds r3, #32 + 800195a: 2200 movs r2, #0 + 800195c: 601a str r2, [r3, #0] + hpcd->IN_ep[i].xfer_buff = 0U; + 800195e: 7bfa ldrb r2, [r7, #15] + 8001960: 6879 ldr r1, [r7, #4] + 8001962: 4613 mov r3, r2 + 8001964: 009b lsls r3, r3, #2 + 8001966: 4413 add r3, r2 + 8001968: 00db lsls r3, r3, #3 + 800196a: 440b add r3, r1 + 800196c: 3324 adds r3, #36 @ 0x24 + 800196e: 2200 movs r2, #0 + 8001970: 601a str r2, [r3, #0] + hpcd->IN_ep[i].xfer_len = 0U; + 8001972: 7bfb ldrb r3, [r7, #15] + 8001974: 6879 ldr r1, [r7, #4] + 8001976: 1c5a adds r2, r3, #1 + 8001978: 4613 mov r3, r2 + 800197a: 009b lsls r3, r3, #2 + 800197c: 4413 add r3, r2 + 800197e: 00db lsls r3, r3, #3 + 8001980: 440b add r3, r1 + 8001982: 2200 movs r2, #0 + 8001984: 601a str r2, [r3, #0] + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + 8001986: 7bfb ldrb r3, [r7, #15] + 8001988: 3301 adds r3, #1 + 800198a: 73fb strb r3, [r7, #15] + 800198c: 687b ldr r3, [r7, #4] + 800198e: 791b ldrb r3, [r3, #4] + 8001990: 7bfa ldrb r2, [r7, #15] + 8001992: 429a cmp r2, r3 + 8001994: d3bb bcc.n 800190e + } + + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + 8001996: 2300 movs r3, #0 + 8001998: 73fb strb r3, [r7, #15] + 800199a: e044 b.n 8001a26 + { + hpcd->OUT_ep[i].is_in = 0U; + 800199c: 7bfa ldrb r2, [r7, #15] + 800199e: 6879 ldr r1, [r7, #4] + 80019a0: 4613 mov r3, r2 + 80019a2: 009b lsls r3, r3, #2 + 80019a4: 4413 add r3, r2 + 80019a6: 00db lsls r3, r3, #3 + 80019a8: 440b add r3, r1 + 80019aa: f203 1351 addw r3, r3, #337 @ 0x151 + 80019ae: 2200 movs r2, #0 + 80019b0: 701a strb r2, [r3, #0] + hpcd->OUT_ep[i].num = i; + 80019b2: 7bfa ldrb r2, [r7, #15] + 80019b4: 6879 ldr r1, [r7, #4] + 80019b6: 4613 mov r3, r2 + 80019b8: 009b lsls r3, r3, #2 + 80019ba: 4413 add r3, r2 + 80019bc: 00db lsls r3, r3, #3 + 80019be: 440b add r3, r1 + 80019c0: f503 73a8 add.w r3, r3, #336 @ 0x150 + 80019c4: 7bfa ldrb r2, [r7, #15] + 80019c6: 701a strb r2, [r3, #0] + /* Control until ep is activated */ + hpcd->OUT_ep[i].type = EP_TYPE_CTRL; + 80019c8: 7bfa ldrb r2, [r7, #15] + 80019ca: 6879 ldr r1, [r7, #4] + 80019cc: 4613 mov r3, r2 + 80019ce: 009b lsls r3, r3, #2 + 80019d0: 4413 add r3, r2 + 80019d2: 00db lsls r3, r3, #3 + 80019d4: 440b add r3, r1 + 80019d6: f203 1353 addw r3, r3, #339 @ 0x153 + 80019da: 2200 movs r2, #0 + 80019dc: 701a strb r2, [r3, #0] + hpcd->OUT_ep[i].maxpacket = 0U; + 80019de: 7bfa ldrb r2, [r7, #15] + 80019e0: 6879 ldr r1, [r7, #4] + 80019e2: 4613 mov r3, r2 + 80019e4: 009b lsls r3, r3, #2 + 80019e6: 4413 add r3, r2 + 80019e8: 00db lsls r3, r3, #3 + 80019ea: 440b add r3, r1 + 80019ec: f503 73b0 add.w r3, r3, #352 @ 0x160 + 80019f0: 2200 movs r2, #0 + 80019f2: 601a str r2, [r3, #0] + hpcd->OUT_ep[i].xfer_buff = 0U; + 80019f4: 7bfa ldrb r2, [r7, #15] + 80019f6: 6879 ldr r1, [r7, #4] + 80019f8: 4613 mov r3, r2 + 80019fa: 009b lsls r3, r3, #2 + 80019fc: 4413 add r3, r2 + 80019fe: 00db lsls r3, r3, #3 + 8001a00: 440b add r3, r1 + 8001a02: f503 73b2 add.w r3, r3, #356 @ 0x164 + 8001a06: 2200 movs r2, #0 + 8001a08: 601a str r2, [r3, #0] + hpcd->OUT_ep[i].xfer_len = 0U; + 8001a0a: 7bfa ldrb r2, [r7, #15] + 8001a0c: 6879 ldr r1, [r7, #4] + 8001a0e: 4613 mov r3, r2 + 8001a10: 009b lsls r3, r3, #2 + 8001a12: 4413 add r3, r2 + 8001a14: 00db lsls r3, r3, #3 + 8001a16: 440b add r3, r1 + 8001a18: f503 73b4 add.w r3, r3, #360 @ 0x168 + 8001a1c: 2200 movs r2, #0 + 8001a1e: 601a str r2, [r3, #0] + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + 8001a20: 7bfb ldrb r3, [r7, #15] + 8001a22: 3301 adds r3, #1 + 8001a24: 73fb strb r3, [r7, #15] + 8001a26: 687b ldr r3, [r7, #4] + 8001a28: 791b ldrb r3, [r3, #4] + 8001a2a: 7bfa ldrb r2, [r7, #15] + 8001a2c: 429a cmp r2, r3 + 8001a2e: d3b5 bcc.n 800199c + } + + /* Init Device */ + if (USB_DevInit(hpcd->Instance, hpcd->Init) != HAL_OK) + 8001a30: 687b ldr r3, [r7, #4] + 8001a32: 6818 ldr r0, [r3, #0] + 8001a34: 687b ldr r3, [r7, #4] + 8001a36: 3304 adds r3, #4 + 8001a38: cb0e ldmia r3, {r1, r2, r3} + 8001a3a: f002 ff95 bl 8004968 + 8001a3e: 4603 mov r3, r0 + 8001a40: 2b00 cmp r3, #0 + 8001a42: d005 beq.n 8001a50 + { + hpcd->State = HAL_PCD_STATE_ERROR; + 8001a44: 687b ldr r3, [r7, #4] + 8001a46: 2202 movs r2, #2 + 8001a48: f883 2291 strb.w r2, [r3, #657] @ 0x291 + return HAL_ERROR; + 8001a4c: 2301 movs r3, #1 + 8001a4e: e00c b.n 8001a6a + } + + hpcd->USB_Address = 0U; + 8001a50: 687b ldr r3, [r7, #4] + 8001a52: 2200 movs r2, #0 + 8001a54: 735a strb r2, [r3, #13] + hpcd->State = HAL_PCD_STATE_READY; + 8001a56: 687b ldr r3, [r7, #4] + 8001a58: 2201 movs r2, #1 + 8001a5a: f883 2291 strb.w r2, [r3, #657] @ 0x291 + (void)USB_DevDisconnect(hpcd->Instance); + 8001a5e: 687b ldr r3, [r7, #4] + 8001a60: 681b ldr r3, [r3, #0] + 8001a62: 4618 mov r0, r3 + 8001a64: f005 fa15 bl 8006e92 + + return HAL_OK; + 8001a68: 2300 movs r3, #0 +} + 8001a6a: 4618 mov r0, r3 + 8001a6c: 3710 adds r7, #16 + 8001a6e: 46bd mov sp, r7 + 8001a70: bd80 pop {r7, pc} + +08001a72 : + * @brief Start the USB device + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd) +{ + 8001a72: b580 push {r7, lr} + 8001a74: b082 sub sp, #8 + 8001a76: af00 add r7, sp, #0 + 8001a78: 6078 str r0, [r7, #4] + __HAL_LOCK(hpcd); + 8001a7a: 687b ldr r3, [r7, #4] + 8001a7c: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 + 8001a80: 2b01 cmp r3, #1 + 8001a82: d101 bne.n 8001a88 + 8001a84: 2302 movs r3, #2 + 8001a86: e016 b.n 8001ab6 + 8001a88: 687b ldr r3, [r7, #4] + 8001a8a: 2201 movs r2, #1 + 8001a8c: f883 2290 strb.w r2, [r3, #656] @ 0x290 + __HAL_PCD_ENABLE(hpcd); + 8001a90: 687b ldr r3, [r7, #4] + 8001a92: 681b ldr r3, [r3, #0] + 8001a94: 4618 mov r0, r3 + 8001a96: f002 ff2b bl 80048f0 + +#if defined (USB) + HAL_PCDEx_SetConnectionState(hpcd, 1U); + 8001a9a: 2101 movs r1, #1 + 8001a9c: 6878 ldr r0, [r7, #4] + 8001a9e: f007 fb00 bl 80090a2 +#endif /* defined (USB) */ + + (void)USB_DevConnect(hpcd->Instance); + 8001aa2: 687b ldr r3, [r7, #4] + 8001aa4: 681b ldr r3, [r3, #0] + 8001aa6: 4618 mov r0, r3 + 8001aa8: f005 f9e9 bl 8006e7e + __HAL_UNLOCK(hpcd); + 8001aac: 687b ldr r3, [r7, #4] + 8001aae: 2200 movs r2, #0 + 8001ab0: f883 2290 strb.w r2, [r3, #656] @ 0x290 + + return HAL_OK; + 8001ab4: 2300 movs r3, #0 +} + 8001ab6: 4618 mov r0, r3 + 8001ab8: 3708 adds r7, #8 + 8001aba: 46bd mov sp, r7 + 8001abc: bd80 pop {r7, pc} + +08001abe : + * @brief This function handles PCD interrupt request. + * @param hpcd PCD handle + * @retval HAL status + */ +void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) +{ + 8001abe: b580 push {r7, lr} + 8001ac0: b088 sub sp, #32 + 8001ac2: af00 add r7, sp, #0 + 8001ac4: 6078 str r0, [r7, #4] + uint32_t wIstr = USB_ReadInterrupts(hpcd->Instance); + 8001ac6: 687b ldr r3, [r7, #4] + 8001ac8: 681b ldr r3, [r3, #0] + 8001aca: 4618 mov r0, r3 + 8001acc: f005 f9eb bl 8006ea6 + 8001ad0: 61b8 str r0, [r7, #24] + uint16_t store_ep[8]; + uint8_t i; + + if ((wIstr & USB_ISTR_CTR) == USB_ISTR_CTR) + 8001ad2: 69bb ldr r3, [r7, #24] + 8001ad4: f403 4300 and.w r3, r3, #32768 @ 0x8000 + 8001ad8: 2b00 cmp r3, #0 + 8001ada: d003 beq.n 8001ae4 + { + /* servicing of the endpoint correct transfer interrupt */ + /* clear of the CTR flag into the sub */ + (void)PCD_EP_ISR_Handler(hpcd); + 8001adc: 6878 ldr r0, [r7, #4] + 8001ade: f000 fb1a bl 8002116 + + return; + 8001ae2: e119 b.n 8001d18 + } + + if ((wIstr & USB_ISTR_RESET) == USB_ISTR_RESET) + 8001ae4: 69bb ldr r3, [r7, #24] + 8001ae6: f403 6380 and.w r3, r3, #1024 @ 0x400 + 8001aea: 2b00 cmp r3, #0 + 8001aec: d013 beq.n 8001b16 + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET); + 8001aee: 687b ldr r3, [r7, #4] + 8001af0: 681b ldr r3, [r3, #0] + 8001af2: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 8001af6: b29a uxth r2, r3 + 8001af8: 687b ldr r3, [r7, #4] + 8001afa: 681b ldr r3, [r3, #0] + 8001afc: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 8001b00: b292 uxth r2, r2 + 8001b02: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ResetCallback(hpcd); +#else + HAL_PCD_ResetCallback(hpcd); + 8001b06: 6878 ldr r0, [r7, #4] + 8001b08: f007 f8d3 bl 8008cb2 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + (void)HAL_PCD_SetAddress(hpcd, 0U); + 8001b0c: 2100 movs r1, #0 + 8001b0e: 6878 ldr r0, [r7, #4] + 8001b10: f000 f905 bl 8001d1e + + return; + 8001b14: e100 b.n 8001d18 + } + + if ((wIstr & USB_ISTR_PMAOVR) == USB_ISTR_PMAOVR) + 8001b16: 69bb ldr r3, [r7, #24] + 8001b18: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8001b1c: 2b00 cmp r3, #0 + 8001b1e: d00c beq.n 8001b3a + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_PMAOVR); + 8001b20: 687b ldr r3, [r7, #4] + 8001b22: 681b ldr r3, [r3, #0] + 8001b24: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 8001b28: b29a uxth r2, r3 + 8001b2a: 687b ldr r3, [r7, #4] + 8001b2c: 681b ldr r3, [r3, #0] + 8001b2e: f422 4280 bic.w r2, r2, #16384 @ 0x4000 + 8001b32: b292 uxth r2, r2 + 8001b34: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + return; + 8001b38: e0ee b.n 8001d18 + } + + if ((wIstr & USB_ISTR_ERR) == USB_ISTR_ERR) + 8001b3a: 69bb ldr r3, [r7, #24] + 8001b3c: f403 5300 and.w r3, r3, #8192 @ 0x2000 + 8001b40: 2b00 cmp r3, #0 + 8001b42: d00c beq.n 8001b5e + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ERR); + 8001b44: 687b ldr r3, [r7, #4] + 8001b46: 681b ldr r3, [r3, #0] + 8001b48: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 8001b4c: b29a uxth r2, r3 + 8001b4e: 687b ldr r3, [r7, #4] + 8001b50: 681b ldr r3, [r3, #0] + 8001b52: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 8001b56: b292 uxth r2, r2 + 8001b58: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + return; + 8001b5c: e0dc b.n 8001d18 + } + + if ((wIstr & USB_ISTR_WKUP) == USB_ISTR_WKUP) + 8001b5e: 69bb ldr r3, [r7, #24] + 8001b60: f403 5380 and.w r3, r3, #4096 @ 0x1000 + 8001b64: 2b00 cmp r3, #0 + 8001b66: d027 beq.n 8001bb8 + { + hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_LP_MODE); + 8001b68: 687b ldr r3, [r7, #4] + 8001b6a: 681b ldr r3, [r3, #0] + 8001b6c: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 8001b70: b29a uxth r2, r3 + 8001b72: 687b ldr r3, [r7, #4] + 8001b74: 681b ldr r3, [r3, #0] + 8001b76: f022 0204 bic.w r2, r2, #4 + 8001b7a: b292 uxth r2, r2 + 8001b7c: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_FSUSP); + 8001b80: 687b ldr r3, [r7, #4] + 8001b82: 681b ldr r3, [r3, #0] + 8001b84: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 8001b88: b29a uxth r2, r3 + 8001b8a: 687b ldr r3, [r7, #4] + 8001b8c: 681b ldr r3, [r3, #0] + 8001b8e: f022 0208 bic.w r2, r2, #8 + 8001b92: b292 uxth r2, r2 + 8001b94: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ResumeCallback(hpcd); +#else + HAL_PCD_ResumeCallback(hpcd); + 8001b98: 6878 ldr r0, [r7, #4] + 8001b9a: f007 f8c3 bl 8008d24 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_WKUP); + 8001b9e: 687b ldr r3, [r7, #4] + 8001ba0: 681b ldr r3, [r3, #0] + 8001ba2: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 8001ba6: b29a uxth r2, r3 + 8001ba8: 687b ldr r3, [r7, #4] + 8001baa: 681b ldr r3, [r3, #0] + 8001bac: f422 5280 bic.w r2, r2, #4096 @ 0x1000 + 8001bb0: b292 uxth r2, r2 + 8001bb2: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + return; + 8001bb6: e0af b.n 8001d18 + } + + if ((wIstr & USB_ISTR_SUSP) == USB_ISTR_SUSP) + 8001bb8: 69bb ldr r3, [r7, #24] + 8001bba: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8001bbe: 2b00 cmp r3, #0 + 8001bc0: f000 8083 beq.w 8001cca + { + /* WA: To Clear Wakeup flag if raised with suspend signal */ + + /* Store Endpoint registers */ + for (i = 0U; i < 8U; i++) + 8001bc4: 2300 movs r3, #0 + 8001bc6: 77fb strb r3, [r7, #31] + 8001bc8: e010 b.n 8001bec + { + store_ep[i] = PCD_GET_ENDPOINT(hpcd->Instance, i); + 8001bca: 687b ldr r3, [r7, #4] + 8001bcc: 681b ldr r3, [r3, #0] + 8001bce: 461a mov r2, r3 + 8001bd0: 7ffb ldrb r3, [r7, #31] + 8001bd2: 009b lsls r3, r3, #2 + 8001bd4: 441a add r2, r3 + 8001bd6: 7ffb ldrb r3, [r7, #31] + 8001bd8: 8812 ldrh r2, [r2, #0] + 8001bda: b292 uxth r2, r2 + 8001bdc: 005b lsls r3, r3, #1 + 8001bde: 3320 adds r3, #32 + 8001be0: 443b add r3, r7 + 8001be2: f823 2c18 strh.w r2, [r3, #-24] + for (i = 0U; i < 8U; i++) + 8001be6: 7ffb ldrb r3, [r7, #31] + 8001be8: 3301 adds r3, #1 + 8001bea: 77fb strb r3, [r7, #31] + 8001bec: 7ffb ldrb r3, [r7, #31] + 8001bee: 2b07 cmp r3, #7 + 8001bf0: d9eb bls.n 8001bca + } + + /* FORCE RESET */ + hpcd->Instance->CNTR |= (uint16_t)(USB_CNTR_FRES); + 8001bf2: 687b ldr r3, [r7, #4] + 8001bf4: 681b ldr r3, [r3, #0] + 8001bf6: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 8001bfa: b29a uxth r2, r3 + 8001bfc: 687b ldr r3, [r7, #4] + 8001bfe: 681b ldr r3, [r3, #0] + 8001c00: f042 0201 orr.w r2, r2, #1 + 8001c04: b292 uxth r2, r2 + 8001c06: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + + /* CLEAR RESET */ + hpcd->Instance->CNTR &= (uint16_t)(~USB_CNTR_FRES); + 8001c0a: 687b ldr r3, [r7, #4] + 8001c0c: 681b ldr r3, [r3, #0] + 8001c0e: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 8001c12: b29a uxth r2, r3 + 8001c14: 687b ldr r3, [r7, #4] + 8001c16: 681b ldr r3, [r3, #0] + 8001c18: f022 0201 bic.w r2, r2, #1 + 8001c1c: b292 uxth r2, r2 + 8001c1e: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + + /* wait for reset flag in ISTR */ + while ((hpcd->Instance->ISTR & USB_ISTR_RESET) == 0U) + 8001c22: bf00 nop + 8001c24: 687b ldr r3, [r7, #4] + 8001c26: 681b ldr r3, [r3, #0] + 8001c28: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 8001c2c: b29b uxth r3, r3 + 8001c2e: f403 6380 and.w r3, r3, #1024 @ 0x400 + 8001c32: 2b00 cmp r3, #0 + 8001c34: d0f6 beq.n 8001c24 + { + } + + /* Clear Reset Flag */ + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET); + 8001c36: 687b ldr r3, [r7, #4] + 8001c38: 681b ldr r3, [r3, #0] + 8001c3a: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 8001c3e: b29a uxth r2, r3 + 8001c40: 687b ldr r3, [r7, #4] + 8001c42: 681b ldr r3, [r3, #0] + 8001c44: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 8001c48: b292 uxth r2, r2 + 8001c4a: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + /* Restore Registre */ + for (i = 0U; i < 8U; i++) + 8001c4e: 2300 movs r3, #0 + 8001c50: 77fb strb r3, [r7, #31] + 8001c52: e00f b.n 8001c74 + { + PCD_SET_ENDPOINT(hpcd->Instance, i, store_ep[i]); + 8001c54: 7ffb ldrb r3, [r7, #31] + 8001c56: 687a ldr r2, [r7, #4] + 8001c58: 6812 ldr r2, [r2, #0] + 8001c5a: 4611 mov r1, r2 + 8001c5c: 7ffa ldrb r2, [r7, #31] + 8001c5e: 0092 lsls r2, r2, #2 + 8001c60: 440a add r2, r1 + 8001c62: 005b lsls r3, r3, #1 + 8001c64: 3320 adds r3, #32 + 8001c66: 443b add r3, r7 + 8001c68: f833 3c18 ldrh.w r3, [r3, #-24] + 8001c6c: 8013 strh r3, [r2, #0] + for (i = 0U; i < 8U; i++) + 8001c6e: 7ffb ldrb r3, [r7, #31] + 8001c70: 3301 adds r3, #1 + 8001c72: 77fb strb r3, [r7, #31] + 8001c74: 7ffb ldrb r3, [r7, #31] + 8001c76: 2b07 cmp r3, #7 + 8001c78: d9ec bls.n 8001c54 + } + + /* Force low-power mode in the macrocell */ + hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_FSUSP; + 8001c7a: 687b ldr r3, [r7, #4] + 8001c7c: 681b ldr r3, [r3, #0] + 8001c7e: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 8001c82: b29a uxth r2, r3 + 8001c84: 687b ldr r3, [r7, #4] + 8001c86: 681b ldr r3, [r3, #0] + 8001c88: f042 0208 orr.w r2, r2, #8 + 8001c8c: b292 uxth r2, r2 + 8001c8e: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + + /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */ + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SUSP); + 8001c92: 687b ldr r3, [r7, #4] + 8001c94: 681b ldr r3, [r3, #0] + 8001c96: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 8001c9a: b29a uxth r2, r3 + 8001c9c: 687b ldr r3, [r7, #4] + 8001c9e: 681b ldr r3, [r3, #0] + 8001ca0: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 8001ca4: b292 uxth r2, r2 + 8001ca6: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_LP_MODE; + 8001caa: 687b ldr r3, [r7, #4] + 8001cac: 681b ldr r3, [r3, #0] + 8001cae: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 8001cb2: b29a uxth r2, r3 + 8001cb4: 687b ldr r3, [r7, #4] + 8001cb6: 681b ldr r3, [r3, #0] + 8001cb8: f042 0204 orr.w r2, r2, #4 + 8001cbc: b292 uxth r2, r2 + 8001cbe: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SuspendCallback(hpcd); +#else + HAL_PCD_SuspendCallback(hpcd); + 8001cc2: 6878 ldr r0, [r7, #4] + 8001cc4: f007 f814 bl 8008cf0 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + return; + 8001cc8: e026 b.n 8001d18 + } + + if ((wIstr & USB_ISTR_SOF) == USB_ISTR_SOF) + 8001cca: 69bb ldr r3, [r7, #24] + 8001ccc: f403 7300 and.w r3, r3, #512 @ 0x200 + 8001cd0: 2b00 cmp r3, #0 + 8001cd2: d00f beq.n 8001cf4 + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SOF); + 8001cd4: 687b ldr r3, [r7, #4] + 8001cd6: 681b ldr r3, [r3, #0] + 8001cd8: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 8001cdc: b29a uxth r2, r3 + 8001cde: 687b ldr r3, [r7, #4] + 8001ce0: 681b ldr r3, [r3, #0] + 8001ce2: f422 7200 bic.w r2, r2, #512 @ 0x200 + 8001ce6: b292 uxth r2, r2 + 8001ce8: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SOFCallback(hpcd); +#else + HAL_PCD_SOFCallback(hpcd); + 8001cec: 6878 ldr r0, [r7, #4] + 8001cee: f006 ffd2 bl 8008c96 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + return; + 8001cf2: e011 b.n 8001d18 + } + + if ((wIstr & USB_ISTR_ESOF) == USB_ISTR_ESOF) + 8001cf4: 69bb ldr r3, [r7, #24] + 8001cf6: f403 7380 and.w r3, r3, #256 @ 0x100 + 8001cfa: 2b00 cmp r3, #0 + 8001cfc: d00c beq.n 8001d18 + { + /* clear ESOF flag in ISTR */ + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ESOF); + 8001cfe: 687b ldr r3, [r7, #4] + 8001d00: 681b ldr r3, [r3, #0] + 8001d02: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 8001d06: b29a uxth r2, r3 + 8001d08: 687b ldr r3, [r7, #4] + 8001d0a: 681b ldr r3, [r3, #0] + 8001d0c: f422 7280 bic.w r2, r2, #256 @ 0x100 + 8001d10: b292 uxth r2, r2 + 8001d12: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + return; + 8001d16: bf00 nop + } +} + 8001d18: 3720 adds r7, #32 + 8001d1a: 46bd mov sp, r7 + 8001d1c: bd80 pop {r7, pc} + +08001d1e : + * @param hpcd PCD handle + * @param address new device address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address) +{ + 8001d1e: b580 push {r7, lr} + 8001d20: b082 sub sp, #8 + 8001d22: af00 add r7, sp, #0 + 8001d24: 6078 str r0, [r7, #4] + 8001d26: 460b mov r3, r1 + 8001d28: 70fb strb r3, [r7, #3] + __HAL_LOCK(hpcd); + 8001d2a: 687b ldr r3, [r7, #4] + 8001d2c: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 + 8001d30: 2b01 cmp r3, #1 + 8001d32: d101 bne.n 8001d38 + 8001d34: 2302 movs r3, #2 + 8001d36: e012 b.n 8001d5e + 8001d38: 687b ldr r3, [r7, #4] + 8001d3a: 2201 movs r2, #1 + 8001d3c: f883 2290 strb.w r2, [r3, #656] @ 0x290 + hpcd->USB_Address = address; + 8001d40: 687b ldr r3, [r7, #4] + 8001d42: 78fa ldrb r2, [r7, #3] + 8001d44: 735a strb r2, [r3, #13] + (void)USB_SetDevAddress(hpcd->Instance, address); + 8001d46: 687b ldr r3, [r7, #4] + 8001d48: 681b ldr r3, [r3, #0] + 8001d4a: 78fa ldrb r2, [r7, #3] + 8001d4c: 4611 mov r1, r2 + 8001d4e: 4618 mov r0, r3 + 8001d50: f005 f882 bl 8006e58 + __HAL_UNLOCK(hpcd); + 8001d54: 687b ldr r3, [r7, #4] + 8001d56: 2200 movs r2, #0 + 8001d58: f883 2290 strb.w r2, [r3, #656] @ 0x290 + + return HAL_OK; + 8001d5c: 2300 movs r3, #0 +} + 8001d5e: 4618 mov r0, r3 + 8001d60: 3708 adds r7, #8 + 8001d62: 46bd mov sp, r7 + 8001d64: bd80 pop {r7, pc} + +08001d66 : + * @param ep_type endpoint type + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, + uint16_t ep_mps, uint8_t ep_type) +{ + 8001d66: b580 push {r7, lr} + 8001d68: b084 sub sp, #16 + 8001d6a: af00 add r7, sp, #0 + 8001d6c: 6078 str r0, [r7, #4] + 8001d6e: 4608 mov r0, r1 + 8001d70: 4611 mov r1, r2 + 8001d72: 461a mov r2, r3 + 8001d74: 4603 mov r3, r0 + 8001d76: 70fb strb r3, [r7, #3] + 8001d78: 460b mov r3, r1 + 8001d7a: 803b strh r3, [r7, #0] + 8001d7c: 4613 mov r3, r2 + 8001d7e: 70bb strb r3, [r7, #2] + HAL_StatusTypeDef ret = HAL_OK; + 8001d80: 2300 movs r3, #0 + 8001d82: 72fb strb r3, [r7, #11] + PCD_EPTypeDef *ep; + + if ((ep_addr & 0x80U) == 0x80U) + 8001d84: f997 3003 ldrsb.w r3, [r7, #3] + 8001d88: 2b00 cmp r3, #0 + 8001d8a: da0e bge.n 8001daa + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 8001d8c: 78fb ldrb r3, [r7, #3] + 8001d8e: f003 0207 and.w r2, r3, #7 + 8001d92: 4613 mov r3, r2 + 8001d94: 009b lsls r3, r3, #2 + 8001d96: 4413 add r3, r2 + 8001d98: 00db lsls r3, r3, #3 + 8001d9a: 3310 adds r3, #16 + 8001d9c: 687a ldr r2, [r7, #4] + 8001d9e: 4413 add r3, r2 + 8001da0: 60fb str r3, [r7, #12] + ep->is_in = 1U; + 8001da2: 68fb ldr r3, [r7, #12] + 8001da4: 2201 movs r2, #1 + 8001da6: 705a strb r2, [r3, #1] + 8001da8: e00e b.n 8001dc8 + } + else + { + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + 8001daa: 78fb ldrb r3, [r7, #3] + 8001dac: f003 0207 and.w r2, r3, #7 + 8001db0: 4613 mov r3, r2 + 8001db2: 009b lsls r3, r3, #2 + 8001db4: 4413 add r3, r2 + 8001db6: 00db lsls r3, r3, #3 + 8001db8: f503 73a8 add.w r3, r3, #336 @ 0x150 + 8001dbc: 687a ldr r2, [r7, #4] + 8001dbe: 4413 add r3, r2 + 8001dc0: 60fb str r3, [r7, #12] + ep->is_in = 0U; + 8001dc2: 68fb ldr r3, [r7, #12] + 8001dc4: 2200 movs r2, #0 + 8001dc6: 705a strb r2, [r3, #1] + } + + ep->num = ep_addr & EP_ADDR_MSK; + 8001dc8: 78fb ldrb r3, [r7, #3] + 8001dca: f003 0307 and.w r3, r3, #7 + 8001dce: b2da uxtb r2, r3 + 8001dd0: 68fb ldr r3, [r7, #12] + 8001dd2: 701a strb r2, [r3, #0] + ep->maxpacket = ep_mps; + 8001dd4: 883a ldrh r2, [r7, #0] + 8001dd6: 68fb ldr r3, [r7, #12] + 8001dd8: 611a str r2, [r3, #16] + ep->type = ep_type; + 8001dda: 68fb ldr r3, [r7, #12] + 8001ddc: 78ba ldrb r2, [r7, #2] + 8001dde: 70da strb r2, [r3, #3] + ep->tx_fifo_num = ep->num; + } +#endif /* defined (USB_OTG_FS) */ + + /* Set initial data PID. */ + if (ep_type == EP_TYPE_BULK) + 8001de0: 78bb ldrb r3, [r7, #2] + 8001de2: 2b02 cmp r3, #2 + 8001de4: d102 bne.n 8001dec + { + ep->data_pid_start = 0U; + 8001de6: 68fb ldr r3, [r7, #12] + 8001de8: 2200 movs r2, #0 + 8001dea: 711a strb r2, [r3, #4] + } + + __HAL_LOCK(hpcd); + 8001dec: 687b ldr r3, [r7, #4] + 8001dee: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 + 8001df2: 2b01 cmp r3, #1 + 8001df4: d101 bne.n 8001dfa + 8001df6: 2302 movs r3, #2 + 8001df8: e00e b.n 8001e18 + 8001dfa: 687b ldr r3, [r7, #4] + 8001dfc: 2201 movs r2, #1 + 8001dfe: f883 2290 strb.w r2, [r3, #656] @ 0x290 + (void)USB_ActivateEndpoint(hpcd->Instance, ep); + 8001e02: 687b ldr r3, [r7, #4] + 8001e04: 681b ldr r3, [r3, #0] + 8001e06: 68f9 ldr r1, [r7, #12] + 8001e08: 4618 mov r0, r3 + 8001e0a: f002 fdcb bl 80049a4 + __HAL_UNLOCK(hpcd); + 8001e0e: 687b ldr r3, [r7, #4] + 8001e10: 2200 movs r2, #0 + 8001e12: f883 2290 strb.w r2, [r3, #656] @ 0x290 + + return ret; + 8001e16: 7afb ldrb r3, [r7, #11] +} + 8001e18: 4618 mov r0, r3 + 8001e1a: 3710 adds r7, #16 + 8001e1c: 46bd mov sp, r7 + 8001e1e: bd80 pop {r7, pc} + +08001e20 : + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + 8001e20: b580 push {r7, lr} + 8001e22: b084 sub sp, #16 + 8001e24: af00 add r7, sp, #0 + 8001e26: 6078 str r0, [r7, #4] + 8001e28: 460b mov r3, r1 + 8001e2a: 70fb strb r3, [r7, #3] + PCD_EPTypeDef *ep; + + if ((ep_addr & 0x80U) == 0x80U) + 8001e2c: f997 3003 ldrsb.w r3, [r7, #3] + 8001e30: 2b00 cmp r3, #0 + 8001e32: da0e bge.n 8001e52 + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 8001e34: 78fb ldrb r3, [r7, #3] + 8001e36: f003 0207 and.w r2, r3, #7 + 8001e3a: 4613 mov r3, r2 + 8001e3c: 009b lsls r3, r3, #2 + 8001e3e: 4413 add r3, r2 + 8001e40: 00db lsls r3, r3, #3 + 8001e42: 3310 adds r3, #16 + 8001e44: 687a ldr r2, [r7, #4] + 8001e46: 4413 add r3, r2 + 8001e48: 60fb str r3, [r7, #12] + ep->is_in = 1U; + 8001e4a: 68fb ldr r3, [r7, #12] + 8001e4c: 2201 movs r2, #1 + 8001e4e: 705a strb r2, [r3, #1] + 8001e50: e00e b.n 8001e70 + } + else + { + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + 8001e52: 78fb ldrb r3, [r7, #3] + 8001e54: f003 0207 and.w r2, r3, #7 + 8001e58: 4613 mov r3, r2 + 8001e5a: 009b lsls r3, r3, #2 + 8001e5c: 4413 add r3, r2 + 8001e5e: 00db lsls r3, r3, #3 + 8001e60: f503 73a8 add.w r3, r3, #336 @ 0x150 + 8001e64: 687a ldr r2, [r7, #4] + 8001e66: 4413 add r3, r2 + 8001e68: 60fb str r3, [r7, #12] + ep->is_in = 0U; + 8001e6a: 68fb ldr r3, [r7, #12] + 8001e6c: 2200 movs r2, #0 + 8001e6e: 705a strb r2, [r3, #1] + } + ep->num = ep_addr & EP_ADDR_MSK; + 8001e70: 78fb ldrb r3, [r7, #3] + 8001e72: f003 0307 and.w r3, r3, #7 + 8001e76: b2da uxtb r2, r3 + 8001e78: 68fb ldr r3, [r7, #12] + 8001e7a: 701a strb r2, [r3, #0] + + __HAL_LOCK(hpcd); + 8001e7c: 687b ldr r3, [r7, #4] + 8001e7e: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 + 8001e82: 2b01 cmp r3, #1 + 8001e84: d101 bne.n 8001e8a + 8001e86: 2302 movs r3, #2 + 8001e88: e00e b.n 8001ea8 + 8001e8a: 687b ldr r3, [r7, #4] + 8001e8c: 2201 movs r2, #1 + 8001e8e: f883 2290 strb.w r2, [r3, #656] @ 0x290 + (void)USB_DeactivateEndpoint(hpcd->Instance, ep); + 8001e92: 687b ldr r3, [r7, #4] + 8001e94: 681b ldr r3, [r3, #0] + 8001e96: 68f9 ldr r1, [r7, #12] + 8001e98: 4618 mov r0, r3 + 8001e9a: f003 f943 bl 8005124 + __HAL_UNLOCK(hpcd); + 8001e9e: 687b ldr r3, [r7, #4] + 8001ea0: 2200 movs r2, #0 + 8001ea2: f883 2290 strb.w r2, [r3, #656] @ 0x290 + return HAL_OK; + 8001ea6: 2300 movs r3, #0 +} + 8001ea8: 4618 mov r0, r3 + 8001eaa: 3710 adds r7, #16 + 8001eac: 46bd mov sp, r7 + 8001eae: bd80 pop {r7, pc} + +08001eb0 : + * @param pBuf pointer to the reception buffer + * @param len amount of data to be received + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len) +{ + 8001eb0: b580 push {r7, lr} + 8001eb2: b086 sub sp, #24 + 8001eb4: af00 add r7, sp, #0 + 8001eb6: 60f8 str r0, [r7, #12] + 8001eb8: 607a str r2, [r7, #4] + 8001eba: 603b str r3, [r7, #0] + 8001ebc: 460b mov r3, r1 + 8001ebe: 72fb strb r3, [r7, #11] + PCD_EPTypeDef *ep; + + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + 8001ec0: 7afb ldrb r3, [r7, #11] + 8001ec2: f003 0207 and.w r2, r3, #7 + 8001ec6: 4613 mov r3, r2 + 8001ec8: 009b lsls r3, r3, #2 + 8001eca: 4413 add r3, r2 + 8001ecc: 00db lsls r3, r3, #3 + 8001ece: f503 73a8 add.w r3, r3, #336 @ 0x150 + 8001ed2: 68fa ldr r2, [r7, #12] + 8001ed4: 4413 add r3, r2 + 8001ed6: 617b str r3, [r7, #20] + + /*setup and start the Xfer */ + ep->xfer_buff = pBuf; + 8001ed8: 697b ldr r3, [r7, #20] + 8001eda: 687a ldr r2, [r7, #4] + 8001edc: 615a str r2, [r3, #20] + ep->xfer_len = len; + 8001ede: 697b ldr r3, [r7, #20] + 8001ee0: 683a ldr r2, [r7, #0] + 8001ee2: 619a str r2, [r3, #24] + ep->xfer_count = 0U; + 8001ee4: 697b ldr r3, [r7, #20] + 8001ee6: 2200 movs r2, #0 + 8001ee8: 61da str r2, [r3, #28] + ep->is_in = 0U; + 8001eea: 697b ldr r3, [r7, #20] + 8001eec: 2200 movs r2, #0 + 8001eee: 705a strb r2, [r3, #1] + ep->num = ep_addr & EP_ADDR_MSK; + 8001ef0: 7afb ldrb r3, [r7, #11] + 8001ef2: f003 0307 and.w r3, r3, #7 + 8001ef6: b2da uxtb r2, r3 + 8001ef8: 697b ldr r3, [r7, #20] + 8001efa: 701a strb r2, [r3, #0] + + (void)USB_EPStartXfer(hpcd->Instance, ep); + 8001efc: 68fb ldr r3, [r7, #12] + 8001efe: 681b ldr r3, [r3, #0] + 8001f00: 6979 ldr r1, [r7, #20] + 8001f02: 4618 mov r0, r3 + 8001f04: f003 fafa bl 80054fc + + return HAL_OK; + 8001f08: 2300 movs r3, #0 +} + 8001f0a: 4618 mov r0, r3 + 8001f0c: 3718 adds r7, #24 + 8001f0e: 46bd mov sp, r7 + 8001f10: bd80 pop {r7, pc} + +08001f12 : + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval Data Size + */ +uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef const *hpcd, uint8_t ep_addr) +{ + 8001f12: b480 push {r7} + 8001f14: b083 sub sp, #12 + 8001f16: af00 add r7, sp, #0 + 8001f18: 6078 str r0, [r7, #4] + 8001f1a: 460b mov r3, r1 + 8001f1c: 70fb strb r3, [r7, #3] + return hpcd->OUT_ep[ep_addr & EP_ADDR_MSK].xfer_count; + 8001f1e: 78fb ldrb r3, [r7, #3] + 8001f20: f003 0207 and.w r2, r3, #7 + 8001f24: 6879 ldr r1, [r7, #4] + 8001f26: 4613 mov r3, r2 + 8001f28: 009b lsls r3, r3, #2 + 8001f2a: 4413 add r3, r2 + 8001f2c: 00db lsls r3, r3, #3 + 8001f2e: 440b add r3, r1 + 8001f30: f503 73b6 add.w r3, r3, #364 @ 0x16c + 8001f34: 681b ldr r3, [r3, #0] +} + 8001f36: 4618 mov r0, r3 + 8001f38: 370c adds r7, #12 + 8001f3a: 46bd mov sp, r7 + 8001f3c: bc80 pop {r7} + 8001f3e: 4770 bx lr + +08001f40 : + * @param pBuf pointer to the transmission buffer + * @param len amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len) +{ + 8001f40: b580 push {r7, lr} + 8001f42: b086 sub sp, #24 + 8001f44: af00 add r7, sp, #0 + 8001f46: 60f8 str r0, [r7, #12] + 8001f48: 607a str r2, [r7, #4] + 8001f4a: 603b str r3, [r7, #0] + 8001f4c: 460b mov r3, r1 + 8001f4e: 72fb strb r3, [r7, #11] + PCD_EPTypeDef *ep; + + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 8001f50: 7afb ldrb r3, [r7, #11] + 8001f52: f003 0207 and.w r2, r3, #7 + 8001f56: 4613 mov r3, r2 + 8001f58: 009b lsls r3, r3, #2 + 8001f5a: 4413 add r3, r2 + 8001f5c: 00db lsls r3, r3, #3 + 8001f5e: 3310 adds r3, #16 + 8001f60: 68fa ldr r2, [r7, #12] + 8001f62: 4413 add r3, r2 + 8001f64: 617b str r3, [r7, #20] + + /*setup and start the Xfer */ + ep->xfer_buff = pBuf; + 8001f66: 697b ldr r3, [r7, #20] + 8001f68: 687a ldr r2, [r7, #4] + 8001f6a: 615a str r2, [r3, #20] + ep->xfer_len = len; + 8001f6c: 697b ldr r3, [r7, #20] + 8001f6e: 683a ldr r2, [r7, #0] + 8001f70: 619a str r2, [r3, #24] +#if defined (USB) + ep->xfer_fill_db = 1U; + 8001f72: 697b ldr r3, [r7, #20] + 8001f74: 2201 movs r2, #1 + 8001f76: f883 2024 strb.w r2, [r3, #36] @ 0x24 + ep->xfer_len_db = len; + 8001f7a: 697b ldr r3, [r7, #20] + 8001f7c: 683a ldr r2, [r7, #0] + 8001f7e: 621a str r2, [r3, #32] +#endif /* defined (USB) */ + ep->xfer_count = 0U; + 8001f80: 697b ldr r3, [r7, #20] + 8001f82: 2200 movs r2, #0 + 8001f84: 61da str r2, [r3, #28] + ep->is_in = 1U; + 8001f86: 697b ldr r3, [r7, #20] + 8001f88: 2201 movs r2, #1 + 8001f8a: 705a strb r2, [r3, #1] + ep->num = ep_addr & EP_ADDR_MSK; + 8001f8c: 7afb ldrb r3, [r7, #11] + 8001f8e: f003 0307 and.w r3, r3, #7 + 8001f92: b2da uxtb r2, r3 + 8001f94: 697b ldr r3, [r7, #20] + 8001f96: 701a strb r2, [r3, #0] + + (void)USB_EPStartXfer(hpcd->Instance, ep); + 8001f98: 68fb ldr r3, [r7, #12] + 8001f9a: 681b ldr r3, [r3, #0] + 8001f9c: 6979 ldr r1, [r7, #20] + 8001f9e: 4618 mov r0, r3 + 8001fa0: f003 faac bl 80054fc + + return HAL_OK; + 8001fa4: 2300 movs r3, #0 +} + 8001fa6: 4618 mov r0, r3 + 8001fa8: 3718 adds r7, #24 + 8001faa: 46bd mov sp, r7 + 8001fac: bd80 pop {r7, pc} + +08001fae : + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + 8001fae: b580 push {r7, lr} + 8001fb0: b084 sub sp, #16 + 8001fb2: af00 add r7, sp, #0 + 8001fb4: 6078 str r0, [r7, #4] + 8001fb6: 460b mov r3, r1 + 8001fb8: 70fb strb r3, [r7, #3] + PCD_EPTypeDef *ep; + + if (((uint32_t)ep_addr & EP_ADDR_MSK) > hpcd->Init.dev_endpoints) + 8001fba: 78fb ldrb r3, [r7, #3] + 8001fbc: f003 0307 and.w r3, r3, #7 + 8001fc0: 687a ldr r2, [r7, #4] + 8001fc2: 7912 ldrb r2, [r2, #4] + 8001fc4: 4293 cmp r3, r2 + 8001fc6: d901 bls.n 8001fcc + { + return HAL_ERROR; + 8001fc8: 2301 movs r3, #1 + 8001fca: e04c b.n 8002066 + } + + if ((0x80U & ep_addr) == 0x80U) + 8001fcc: f997 3003 ldrsb.w r3, [r7, #3] + 8001fd0: 2b00 cmp r3, #0 + 8001fd2: da0e bge.n 8001ff2 + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 8001fd4: 78fb ldrb r3, [r7, #3] + 8001fd6: f003 0207 and.w r2, r3, #7 + 8001fda: 4613 mov r3, r2 + 8001fdc: 009b lsls r3, r3, #2 + 8001fde: 4413 add r3, r2 + 8001fe0: 00db lsls r3, r3, #3 + 8001fe2: 3310 adds r3, #16 + 8001fe4: 687a ldr r2, [r7, #4] + 8001fe6: 4413 add r3, r2 + 8001fe8: 60fb str r3, [r7, #12] + ep->is_in = 1U; + 8001fea: 68fb ldr r3, [r7, #12] + 8001fec: 2201 movs r2, #1 + 8001fee: 705a strb r2, [r3, #1] + 8001ff0: e00c b.n 800200c + } + else + { + ep = &hpcd->OUT_ep[ep_addr]; + 8001ff2: 78fa ldrb r2, [r7, #3] + 8001ff4: 4613 mov r3, r2 + 8001ff6: 009b lsls r3, r3, #2 + 8001ff8: 4413 add r3, r2 + 8001ffa: 00db lsls r3, r3, #3 + 8001ffc: f503 73a8 add.w r3, r3, #336 @ 0x150 + 8002000: 687a ldr r2, [r7, #4] + 8002002: 4413 add r3, r2 + 8002004: 60fb str r3, [r7, #12] + ep->is_in = 0U; + 8002006: 68fb ldr r3, [r7, #12] + 8002008: 2200 movs r2, #0 + 800200a: 705a strb r2, [r3, #1] + } + + ep->is_stall = 1U; + 800200c: 68fb ldr r3, [r7, #12] + 800200e: 2201 movs r2, #1 + 8002010: 709a strb r2, [r3, #2] + ep->num = ep_addr & EP_ADDR_MSK; + 8002012: 78fb ldrb r3, [r7, #3] + 8002014: f003 0307 and.w r3, r3, #7 + 8002018: b2da uxtb r2, r3 + 800201a: 68fb ldr r3, [r7, #12] + 800201c: 701a strb r2, [r3, #0] + + __HAL_LOCK(hpcd); + 800201e: 687b ldr r3, [r7, #4] + 8002020: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 + 8002024: 2b01 cmp r3, #1 + 8002026: d101 bne.n 800202c + 8002028: 2302 movs r3, #2 + 800202a: e01c b.n 8002066 + 800202c: 687b ldr r3, [r7, #4] + 800202e: 2201 movs r2, #1 + 8002030: f883 2290 strb.w r2, [r3, #656] @ 0x290 + + (void)USB_EPSetStall(hpcd->Instance, ep); + 8002034: 687b ldr r3, [r7, #4] + 8002036: 681b ldr r3, [r3, #0] + 8002038: 68f9 ldr r1, [r7, #12] + 800203a: 4618 mov r0, r3 + 800203c: f004 fe0f bl 8006c5e + + if ((ep_addr & EP_ADDR_MSK) == 0U) + 8002040: 78fb ldrb r3, [r7, #3] + 8002042: f003 0307 and.w r3, r3, #7 + 8002046: 2b00 cmp r3, #0 + 8002048: d108 bne.n 800205c + { + (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t *)hpcd->Setup); + 800204a: 687b ldr r3, [r7, #4] + 800204c: 681a ldr r2, [r3, #0] + 800204e: 687b ldr r3, [r7, #4] + 8002050: f503 7326 add.w r3, r3, #664 @ 0x298 + 8002054: 4619 mov r1, r3 + 8002056: 4610 mov r0, r2 + 8002058: f004 ff34 bl 8006ec4 + } + + __HAL_UNLOCK(hpcd); + 800205c: 687b ldr r3, [r7, #4] + 800205e: 2200 movs r2, #0 + 8002060: f883 2290 strb.w r2, [r3, #656] @ 0x290 + + return HAL_OK; + 8002064: 2300 movs r3, #0 +} + 8002066: 4618 mov r0, r3 + 8002068: 3710 adds r7, #16 + 800206a: 46bd mov sp, r7 + 800206c: bd80 pop {r7, pc} + +0800206e : + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + 800206e: b580 push {r7, lr} + 8002070: b084 sub sp, #16 + 8002072: af00 add r7, sp, #0 + 8002074: 6078 str r0, [r7, #4] + 8002076: 460b mov r3, r1 + 8002078: 70fb strb r3, [r7, #3] + PCD_EPTypeDef *ep; + + if (((uint32_t)ep_addr & 0x0FU) > hpcd->Init.dev_endpoints) + 800207a: 78fb ldrb r3, [r7, #3] + 800207c: f003 030f and.w r3, r3, #15 + 8002080: 687a ldr r2, [r7, #4] + 8002082: 7912 ldrb r2, [r2, #4] + 8002084: 4293 cmp r3, r2 + 8002086: d901 bls.n 800208c + { + return HAL_ERROR; + 8002088: 2301 movs r3, #1 + 800208a: e040 b.n 800210e + } + + if ((0x80U & ep_addr) == 0x80U) + 800208c: f997 3003 ldrsb.w r3, [r7, #3] + 8002090: 2b00 cmp r3, #0 + 8002092: da0e bge.n 80020b2 + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 8002094: 78fb ldrb r3, [r7, #3] + 8002096: f003 0207 and.w r2, r3, #7 + 800209a: 4613 mov r3, r2 + 800209c: 009b lsls r3, r3, #2 + 800209e: 4413 add r3, r2 + 80020a0: 00db lsls r3, r3, #3 + 80020a2: 3310 adds r3, #16 + 80020a4: 687a ldr r2, [r7, #4] + 80020a6: 4413 add r3, r2 + 80020a8: 60fb str r3, [r7, #12] + ep->is_in = 1U; + 80020aa: 68fb ldr r3, [r7, #12] + 80020ac: 2201 movs r2, #1 + 80020ae: 705a strb r2, [r3, #1] + 80020b0: e00e b.n 80020d0 + } + else + { + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + 80020b2: 78fb ldrb r3, [r7, #3] + 80020b4: f003 0207 and.w r2, r3, #7 + 80020b8: 4613 mov r3, r2 + 80020ba: 009b lsls r3, r3, #2 + 80020bc: 4413 add r3, r2 + 80020be: 00db lsls r3, r3, #3 + 80020c0: f503 73a8 add.w r3, r3, #336 @ 0x150 + 80020c4: 687a ldr r2, [r7, #4] + 80020c6: 4413 add r3, r2 + 80020c8: 60fb str r3, [r7, #12] + ep->is_in = 0U; + 80020ca: 68fb ldr r3, [r7, #12] + 80020cc: 2200 movs r2, #0 + 80020ce: 705a strb r2, [r3, #1] + } + + ep->is_stall = 0U; + 80020d0: 68fb ldr r3, [r7, #12] + 80020d2: 2200 movs r2, #0 + 80020d4: 709a strb r2, [r3, #2] + ep->num = ep_addr & EP_ADDR_MSK; + 80020d6: 78fb ldrb r3, [r7, #3] + 80020d8: f003 0307 and.w r3, r3, #7 + 80020dc: b2da uxtb r2, r3 + 80020de: 68fb ldr r3, [r7, #12] + 80020e0: 701a strb r2, [r3, #0] + + __HAL_LOCK(hpcd); + 80020e2: 687b ldr r3, [r7, #4] + 80020e4: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 + 80020e8: 2b01 cmp r3, #1 + 80020ea: d101 bne.n 80020f0 + 80020ec: 2302 movs r3, #2 + 80020ee: e00e b.n 800210e + 80020f0: 687b ldr r3, [r7, #4] + 80020f2: 2201 movs r2, #1 + 80020f4: f883 2290 strb.w r2, [r3, #656] @ 0x290 + (void)USB_EPClearStall(hpcd->Instance, ep); + 80020f8: 687b ldr r3, [r7, #4] + 80020fa: 681b ldr r3, [r3, #0] + 80020fc: 68f9 ldr r1, [r7, #12] + 80020fe: 4618 mov r0, r3 + 8002100: f004 fdfd bl 8006cfe + __HAL_UNLOCK(hpcd); + 8002104: 687b ldr r3, [r7, #4] + 8002106: 2200 movs r2, #0 + 8002108: f883 2290 strb.w r2, [r3, #656] @ 0x290 + + return HAL_OK; + 800210c: 2300 movs r3, #0 +} + 800210e: 4618 mov r0, r3 + 8002110: 3710 adds r7, #16 + 8002112: 46bd mov sp, r7 + 8002114: bd80 pop {r7, pc} + +08002116 : + * @brief This function handles PCD Endpoint interrupt request. + * @param hpcd PCD handle + * @retval HAL status + */ +static HAL_StatusTypeDef PCD_EP_ISR_Handler(PCD_HandleTypeDef *hpcd) +{ + 8002116: b580 push {r7, lr} + 8002118: b096 sub sp, #88 @ 0x58 + 800211a: af00 add r7, sp, #0 + 800211c: 6078 str r0, [r7, #4] +#if (USE_USB_DOUBLE_BUFFER != 1U) + count = 0U; +#endif /* USE_USB_DOUBLE_BUFFER */ + + /* stay in loop while pending interrupts */ + while ((hpcd->Instance->ISTR & USB_ISTR_CTR) != 0U) + 800211e: e3bb b.n 8002898 + { + wIstr = hpcd->Instance->ISTR; + 8002120: 687b ldr r3, [r7, #4] + 8002122: 681b ldr r3, [r3, #0] + 8002124: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 8002128: f8a7 304e strh.w r3, [r7, #78] @ 0x4e + + /* extract highest priority endpoint number */ + epindex = (uint8_t)(wIstr & USB_ISTR_EP_ID); + 800212c: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e + 8002130: b2db uxtb r3, r3 + 8002132: f003 030f and.w r3, r3, #15 + 8002136: f887 304d strb.w r3, [r7, #77] @ 0x4d + + if (epindex == 0U) + 800213a: f897 304d ldrb.w r3, [r7, #77] @ 0x4d + 800213e: 2b00 cmp r3, #0 + 8002140: f040 8175 bne.w 800242e + { + /* Decode and service control endpoint interrupt */ + + /* DIR bit = origin of the interrupt */ + if ((wIstr & USB_ISTR_DIR) == 0U) + 8002144: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e + 8002148: f003 0310 and.w r3, r3, #16 + 800214c: 2b00 cmp r3, #0 + 800214e: d14e bne.n 80021ee + { + /* DIR = 0 */ + + /* DIR = 0 => IN int */ + /* DIR = 0 implies that (EP_CTR_TX = 1) always */ + PCD_CLEAR_TX_EP_CTR(hpcd->Instance, PCD_ENDP0); + 8002150: 687b ldr r3, [r7, #4] + 8002152: 681b ldr r3, [r3, #0] + 8002154: 881b ldrh r3, [r3, #0] + 8002156: b29b uxth r3, r3 + 8002158: f423 43e1 bic.w r3, r3, #28800 @ 0x7080 + 800215c: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002160: 81fb strh r3, [r7, #14] + 8002162: 687b ldr r3, [r7, #4] + 8002164: 681a ldr r2, [r3, #0] + 8002166: 89fb ldrh r3, [r7, #14] + 8002168: ea6f 4343 mvn.w r3, r3, lsl #17 + 800216c: ea6f 4353 mvn.w r3, r3, lsr #17 + 8002170: b29b uxth r3, r3 + 8002172: 8013 strh r3, [r2, #0] + ep = &hpcd->IN_ep[0]; + 8002174: 687b ldr r3, [r7, #4] + 8002176: 3310 adds r3, #16 + 8002178: 657b str r3, [r7, #84] @ 0x54 + + ep->xfer_count = PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); + 800217a: 687b ldr r3, [r7, #4] + 800217c: 681b ldr r3, [r3, #0] + 800217e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002182: b29b uxth r3, r3 + 8002184: 461a mov r2, r3 + 8002186: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002188: 781b ldrb r3, [r3, #0] + 800218a: 00db lsls r3, r3, #3 + 800218c: 4413 add r3, r2 + 800218e: 3302 adds r3, #2 + 8002190: 005b lsls r3, r3, #1 + 8002192: 687a ldr r2, [r7, #4] + 8002194: 6812 ldr r2, [r2, #0] + 8002196: 4413 add r3, r2 + 8002198: f503 6380 add.w r3, r3, #1024 @ 0x400 + 800219c: 881b ldrh r3, [r3, #0] + 800219e: f3c3 0209 ubfx r2, r3, #0, #10 + 80021a2: 6d7b ldr r3, [r7, #84] @ 0x54 + 80021a4: 61da str r2, [r3, #28] + ep->xfer_buff += ep->xfer_count; + 80021a6: 6d7b ldr r3, [r7, #84] @ 0x54 + 80021a8: 695a ldr r2, [r3, #20] + 80021aa: 6d7b ldr r3, [r7, #84] @ 0x54 + 80021ac: 69db ldr r3, [r3, #28] + 80021ae: 441a add r2, r3 + 80021b0: 6d7b ldr r3, [r7, #84] @ 0x54 + 80021b2: 615a str r2, [r3, #20] + + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, 0U); +#else + HAL_PCD_DataInStageCallback(hpcd, 0U); + 80021b4: 2100 movs r1, #0 + 80021b6: 6878 ldr r0, [r7, #4] + 80021b8: f006 fd53 bl 8008c62 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + if ((hpcd->USB_Address > 0U) && (ep->xfer_len == 0U)) + 80021bc: 687b ldr r3, [r7, #4] + 80021be: 7b5b ldrb r3, [r3, #13] + 80021c0: b2db uxtb r3, r3 + 80021c2: 2b00 cmp r3, #0 + 80021c4: f000 8368 beq.w 8002898 + 80021c8: 6d7b ldr r3, [r7, #84] @ 0x54 + 80021ca: 699b ldr r3, [r3, #24] + 80021cc: 2b00 cmp r3, #0 + 80021ce: f040 8363 bne.w 8002898 + { + hpcd->Instance->DADDR = ((uint16_t)hpcd->USB_Address | USB_DADDR_EF); + 80021d2: 687b ldr r3, [r7, #4] + 80021d4: 7b5b ldrb r3, [r3, #13] + 80021d6: b2db uxtb r3, r3 + 80021d8: f063 037f orn r3, r3, #127 @ 0x7f + 80021dc: b2da uxtb r2, r3 + 80021de: 687b ldr r3, [r7, #4] + 80021e0: 681b ldr r3, [r3, #0] + 80021e2: f8a3 204c strh.w r2, [r3, #76] @ 0x4c + hpcd->USB_Address = 0U; + 80021e6: 687b ldr r3, [r7, #4] + 80021e8: 2200 movs r2, #0 + 80021ea: 735a strb r2, [r3, #13] + 80021ec: e354 b.n 8002898 + { + /* DIR = 1 */ + + /* DIR = 1 & CTR_RX => SETUP or OUT int */ + /* DIR = 1 & (CTR_TX | CTR_RX) => 2 int pending */ + ep = &hpcd->OUT_ep[0]; + 80021ee: 687b ldr r3, [r7, #4] + 80021f0: f503 73a8 add.w r3, r3, #336 @ 0x150 + 80021f4: 657b str r3, [r7, #84] @ 0x54 + wEPVal = PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); + 80021f6: 687b ldr r3, [r7, #4] + 80021f8: 681b ldr r3, [r3, #0] + 80021fa: 881b ldrh r3, [r3, #0] + 80021fc: f8a7 304a strh.w r3, [r7, #74] @ 0x4a + + if ((wEPVal & USB_EP_SETUP) != 0U) + 8002200: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 8002204: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8002208: 2b00 cmp r3, #0 + 800220a: d034 beq.n 8002276 + { + /* Get SETUP Packet */ + ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); + 800220c: 687b ldr r3, [r7, #4] + 800220e: 681b ldr r3, [r3, #0] + 8002210: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002214: b29b uxth r3, r3 + 8002216: 461a mov r2, r3 + 8002218: 6d7b ldr r3, [r7, #84] @ 0x54 + 800221a: 781b ldrb r3, [r3, #0] + 800221c: 00db lsls r3, r3, #3 + 800221e: 4413 add r3, r2 + 8002220: 3306 adds r3, #6 + 8002222: 005b lsls r3, r3, #1 + 8002224: 687a ldr r2, [r7, #4] + 8002226: 6812 ldr r2, [r2, #0] + 8002228: 4413 add r3, r2 + 800222a: f503 6380 add.w r3, r3, #1024 @ 0x400 + 800222e: 881b ldrh r3, [r3, #0] + 8002230: f3c3 0209 ubfx r2, r3, #0, #10 + 8002234: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002236: 61da str r2, [r3, #28] + + USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup, + 8002238: 687b ldr r3, [r7, #4] + 800223a: 6818 ldr r0, [r3, #0] + 800223c: 687b ldr r3, [r7, #4] + 800223e: f503 7126 add.w r1, r3, #664 @ 0x298 + 8002242: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002244: 88da ldrh r2, [r3, #6] + ep->pmaadress, (uint16_t)ep->xfer_count); + 8002246: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002248: 69db ldr r3, [r3, #28] + USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup, + 800224a: b29b uxth r3, r3 + 800224c: f004 fe8b bl 8006f66 + + /* SETUP bit kept frozen while CTR_RX = 1 */ + PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); + 8002250: 687b ldr r3, [r7, #4] + 8002252: 681b ldr r3, [r3, #0] + 8002254: 881b ldrh r3, [r3, #0] + 8002256: b29a uxth r2, r3 + 8002258: f640 738f movw r3, #3983 @ 0xf8f + 800225c: 4013 ands r3, r2 + 800225e: 823b strh r3, [r7, #16] + 8002260: 687b ldr r3, [r7, #4] + 8002262: 681b ldr r3, [r3, #0] + 8002264: 8a3a ldrh r2, [r7, #16] + 8002266: f042 0280 orr.w r2, r2, #128 @ 0x80 + 800226a: b292 uxth r2, r2 + 800226c: 801a strh r2, [r3, #0] + + /* Process SETUP Packet*/ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SetupStageCallback(hpcd); +#else + HAL_PCD_SetupStageCallback(hpcd); + 800226e: 6878 ldr r0, [r7, #4] + 8002270: f006 fcca bl 8008c08 + 8002274: e310 b.n 8002898 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else if ((wEPVal & USB_EP_CTR_RX) != 0U) + 8002276: f9b7 304a ldrsh.w r3, [r7, #74] @ 0x4a + 800227a: 2b00 cmp r3, #0 + 800227c: f280 830c bge.w 8002898 + { + PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); + 8002280: 687b ldr r3, [r7, #4] + 8002282: 681b ldr r3, [r3, #0] + 8002284: 881b ldrh r3, [r3, #0] + 8002286: b29a uxth r2, r3 + 8002288: f640 738f movw r3, #3983 @ 0xf8f + 800228c: 4013 ands r3, r2 + 800228e: 83fb strh r3, [r7, #30] + 8002290: 687b ldr r3, [r7, #4] + 8002292: 681b ldr r3, [r3, #0] + 8002294: 8bfa ldrh r2, [r7, #30] + 8002296: f042 0280 orr.w r2, r2, #128 @ 0x80 + 800229a: b292 uxth r2, r2 + 800229c: 801a strh r2, [r3, #0] + + /* Get Control Data OUT Packet */ + ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); + 800229e: 687b ldr r3, [r7, #4] + 80022a0: 681b ldr r3, [r3, #0] + 80022a2: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80022a6: b29b uxth r3, r3 + 80022a8: 461a mov r2, r3 + 80022aa: 6d7b ldr r3, [r7, #84] @ 0x54 + 80022ac: 781b ldrb r3, [r3, #0] + 80022ae: 00db lsls r3, r3, #3 + 80022b0: 4413 add r3, r2 + 80022b2: 3306 adds r3, #6 + 80022b4: 005b lsls r3, r3, #1 + 80022b6: 687a ldr r2, [r7, #4] + 80022b8: 6812 ldr r2, [r2, #0] + 80022ba: 4413 add r3, r2 + 80022bc: f503 6380 add.w r3, r3, #1024 @ 0x400 + 80022c0: 881b ldrh r3, [r3, #0] + 80022c2: f3c3 0209 ubfx r2, r3, #0, #10 + 80022c6: 6d7b ldr r3, [r7, #84] @ 0x54 + 80022c8: 61da str r2, [r3, #28] + + if ((ep->xfer_count != 0U) && (ep->xfer_buff != 0U)) + 80022ca: 6d7b ldr r3, [r7, #84] @ 0x54 + 80022cc: 69db ldr r3, [r3, #28] + 80022ce: 2b00 cmp r3, #0 + 80022d0: d019 beq.n 8002306 + 80022d2: 6d7b ldr r3, [r7, #84] @ 0x54 + 80022d4: 695b ldr r3, [r3, #20] + 80022d6: 2b00 cmp r3, #0 + 80022d8: d015 beq.n 8002306 + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, + 80022da: 687b ldr r3, [r7, #4] + 80022dc: 6818 ldr r0, [r3, #0] + 80022de: 6d7b ldr r3, [r7, #84] @ 0x54 + 80022e0: 6959 ldr r1, [r3, #20] + 80022e2: 6d7b ldr r3, [r7, #84] @ 0x54 + 80022e4: 88da ldrh r2, [r3, #6] + ep->pmaadress, (uint16_t)ep->xfer_count); + 80022e6: 6d7b ldr r3, [r7, #84] @ 0x54 + 80022e8: 69db ldr r3, [r3, #28] + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, + 80022ea: b29b uxth r3, r3 + 80022ec: f004 fe3b bl 8006f66 + + ep->xfer_buff += ep->xfer_count; + 80022f0: 6d7b ldr r3, [r7, #84] @ 0x54 + 80022f2: 695a ldr r2, [r3, #20] + 80022f4: 6d7b ldr r3, [r7, #84] @ 0x54 + 80022f6: 69db ldr r3, [r3, #28] + 80022f8: 441a add r2, r3 + 80022fa: 6d7b ldr r3, [r7, #84] @ 0x54 + 80022fc: 615a str r2, [r3, #20] + + /* Process Control Data OUT Packet */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataOutStageCallback(hpcd, 0U); +#else + HAL_PCD_DataOutStageCallback(hpcd, 0U); + 80022fe: 2100 movs r1, #0 + 8002300: 6878 ldr r0, [r7, #4] + 8002302: f006 fc93 bl 8008c2c +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + + wEPVal = (uint16_t)PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); + 8002306: 687b ldr r3, [r7, #4] + 8002308: 681b ldr r3, [r3, #0] + 800230a: 881b ldrh r3, [r3, #0] + 800230c: f8a7 304a strh.w r3, [r7, #74] @ 0x4a + + if (((wEPVal & USB_EP_SETUP) == 0U) && ((wEPVal & USB_EP_RX_STRX) != USB_EP_RX_VALID)) + 8002310: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 8002314: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8002318: 2b00 cmp r3, #0 + 800231a: f040 82bd bne.w 8002898 + 800231e: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 8002322: f403 5340 and.w r3, r3, #12288 @ 0x3000 + 8002326: f5b3 5f40 cmp.w r3, #12288 @ 0x3000 + 800232a: f000 82b5 beq.w 8002898 + { + PCD_SET_EP_RX_CNT(hpcd->Instance, PCD_ENDP0, ep->maxpacket); + 800232e: 687b ldr r3, [r7, #4] + 8002330: 681b ldr r3, [r3, #0] + 8002332: 61bb str r3, [r7, #24] + 8002334: 687b ldr r3, [r7, #4] + 8002336: 681b ldr r3, [r3, #0] + 8002338: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800233c: b29b uxth r3, r3 + 800233e: 461a mov r2, r3 + 8002340: 69bb ldr r3, [r7, #24] + 8002342: 4413 add r3, r2 + 8002344: 61bb str r3, [r7, #24] + 8002346: 69bb ldr r3, [r7, #24] + 8002348: f203 430c addw r3, r3, #1036 @ 0x40c + 800234c: 617b str r3, [r7, #20] + 800234e: 697b ldr r3, [r7, #20] + 8002350: 881b ldrh r3, [r3, #0] + 8002352: b29b uxth r3, r3 + 8002354: f3c3 0309 ubfx r3, r3, #0, #10 + 8002358: b29a uxth r2, r3 + 800235a: 697b ldr r3, [r7, #20] + 800235c: 801a strh r2, [r3, #0] + 800235e: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002360: 691b ldr r3, [r3, #16] + 8002362: 2b3e cmp r3, #62 @ 0x3e + 8002364: d91d bls.n 80023a2 + 8002366: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002368: 691b ldr r3, [r3, #16] + 800236a: 095b lsrs r3, r3, #5 + 800236c: 647b str r3, [r7, #68] @ 0x44 + 800236e: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002370: 691b ldr r3, [r3, #16] + 8002372: f003 031f and.w r3, r3, #31 + 8002376: 2b00 cmp r3, #0 + 8002378: d102 bne.n 8002380 + 800237a: 6c7b ldr r3, [r7, #68] @ 0x44 + 800237c: 3b01 subs r3, #1 + 800237e: 647b str r3, [r7, #68] @ 0x44 + 8002380: 697b ldr r3, [r7, #20] + 8002382: 881b ldrh r3, [r3, #0] + 8002384: b29a uxth r2, r3 + 8002386: 6c7b ldr r3, [r7, #68] @ 0x44 + 8002388: b29b uxth r3, r3 + 800238a: 029b lsls r3, r3, #10 + 800238c: b29b uxth r3, r3 + 800238e: 4313 orrs r3, r2 + 8002390: b29b uxth r3, r3 + 8002392: ea6f 4343 mvn.w r3, r3, lsl #17 + 8002396: ea6f 4353 mvn.w r3, r3, lsr #17 + 800239a: b29a uxth r2, r3 + 800239c: 697b ldr r3, [r7, #20] + 800239e: 801a strh r2, [r3, #0] + 80023a0: e026 b.n 80023f0 + 80023a2: 6d7b ldr r3, [r7, #84] @ 0x54 + 80023a4: 691b ldr r3, [r3, #16] + 80023a6: 2b00 cmp r3, #0 + 80023a8: d10a bne.n 80023c0 + 80023aa: 697b ldr r3, [r7, #20] + 80023ac: 881b ldrh r3, [r3, #0] + 80023ae: b29b uxth r3, r3 + 80023b0: ea6f 4343 mvn.w r3, r3, lsl #17 + 80023b4: ea6f 4353 mvn.w r3, r3, lsr #17 + 80023b8: b29a uxth r2, r3 + 80023ba: 697b ldr r3, [r7, #20] + 80023bc: 801a strh r2, [r3, #0] + 80023be: e017 b.n 80023f0 + 80023c0: 6d7b ldr r3, [r7, #84] @ 0x54 + 80023c2: 691b ldr r3, [r3, #16] + 80023c4: 085b lsrs r3, r3, #1 + 80023c6: 647b str r3, [r7, #68] @ 0x44 + 80023c8: 6d7b ldr r3, [r7, #84] @ 0x54 + 80023ca: 691b ldr r3, [r3, #16] + 80023cc: f003 0301 and.w r3, r3, #1 + 80023d0: 2b00 cmp r3, #0 + 80023d2: d002 beq.n 80023da + 80023d4: 6c7b ldr r3, [r7, #68] @ 0x44 + 80023d6: 3301 adds r3, #1 + 80023d8: 647b str r3, [r7, #68] @ 0x44 + 80023da: 697b ldr r3, [r7, #20] + 80023dc: 881b ldrh r3, [r3, #0] + 80023de: b29a uxth r2, r3 + 80023e0: 6c7b ldr r3, [r7, #68] @ 0x44 + 80023e2: b29b uxth r3, r3 + 80023e4: 029b lsls r3, r3, #10 + 80023e6: b29b uxth r3, r3 + 80023e8: 4313 orrs r3, r2 + 80023ea: b29a uxth r2, r3 + 80023ec: 697b ldr r3, [r7, #20] + 80023ee: 801a strh r2, [r3, #0] + PCD_SET_EP_RX_STATUS(hpcd->Instance, PCD_ENDP0, USB_EP_RX_VALID); + 80023f0: 687b ldr r3, [r7, #4] + 80023f2: 681b ldr r3, [r3, #0] + 80023f4: 881b ldrh r3, [r3, #0] + 80023f6: b29b uxth r3, r3 + 80023f8: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 80023fc: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002400: 827b strh r3, [r7, #18] + 8002402: 8a7b ldrh r3, [r7, #18] + 8002404: f483 5380 eor.w r3, r3, #4096 @ 0x1000 + 8002408: 827b strh r3, [r7, #18] + 800240a: 8a7b ldrh r3, [r7, #18] + 800240c: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 8002410: 827b strh r3, [r7, #18] + 8002412: 687b ldr r3, [r7, #4] + 8002414: 681a ldr r2, [r3, #0] + 8002416: 8a7b ldrh r3, [r7, #18] + 8002418: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800241c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8002420: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8002424: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8002428: b29b uxth r3, r3 + 800242a: 8013 strh r3, [r2, #0] + 800242c: e234 b.n 8002898 + } + else + { + /* Decode and service non control endpoints interrupt */ + /* process related endpoint register */ + wEPVal = PCD_GET_ENDPOINT(hpcd->Instance, epindex); + 800242e: 687b ldr r3, [r7, #4] + 8002430: 681b ldr r3, [r3, #0] + 8002432: 461a mov r2, r3 + 8002434: f897 304d ldrb.w r3, [r7, #77] @ 0x4d + 8002438: 009b lsls r3, r3, #2 + 800243a: 4413 add r3, r2 + 800243c: 881b ldrh r3, [r3, #0] + 800243e: f8a7 304a strh.w r3, [r7, #74] @ 0x4a + + if ((wEPVal & USB_EP_CTR_RX) != 0U) + 8002442: f9b7 304a ldrsh.w r3, [r7, #74] @ 0x4a + 8002446: 2b00 cmp r3, #0 + 8002448: f280 80fc bge.w 8002644 + { + /* clear int flag */ + PCD_CLEAR_RX_EP_CTR(hpcd->Instance, epindex); + 800244c: 687b ldr r3, [r7, #4] + 800244e: 681b ldr r3, [r3, #0] + 8002450: 461a mov r2, r3 + 8002452: f897 304d ldrb.w r3, [r7, #77] @ 0x4d + 8002456: 009b lsls r3, r3, #2 + 8002458: 4413 add r3, r2 + 800245a: 881b ldrh r3, [r3, #0] + 800245c: b29a uxth r2, r3 + 800245e: f640 738f movw r3, #3983 @ 0xf8f + 8002462: 4013 ands r3, r2 + 8002464: f8a7 3048 strh.w r3, [r7, #72] @ 0x48 + 8002468: 687b ldr r3, [r7, #4] + 800246a: 681b ldr r3, [r3, #0] + 800246c: 461a mov r2, r3 + 800246e: f897 304d ldrb.w r3, [r7, #77] @ 0x4d + 8002472: 009b lsls r3, r3, #2 + 8002474: 4413 add r3, r2 + 8002476: f8b7 2048 ldrh.w r2, [r7, #72] @ 0x48 + 800247a: f042 0280 orr.w r2, r2, #128 @ 0x80 + 800247e: b292 uxth r2, r2 + 8002480: 801a strh r2, [r3, #0] + ep = &hpcd->OUT_ep[epindex]; + 8002482: f897 204d ldrb.w r2, [r7, #77] @ 0x4d + 8002486: 4613 mov r3, r2 + 8002488: 009b lsls r3, r3, #2 + 800248a: 4413 add r3, r2 + 800248c: 00db lsls r3, r3, #3 + 800248e: f503 73a8 add.w r3, r3, #336 @ 0x150 + 8002492: 687a ldr r2, [r7, #4] + 8002494: 4413 add r3, r2 + 8002496: 657b str r3, [r7, #84] @ 0x54 + + /* OUT Single Buffering */ + if (ep->doublebuffer == 0U) + 8002498: 6d7b ldr r3, [r7, #84] @ 0x54 + 800249a: 7b1b ldrb r3, [r3, #12] + 800249c: 2b00 cmp r3, #0 + 800249e: d125 bne.n 80024ec + { + count = (uint16_t)PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); + 80024a0: 687b ldr r3, [r7, #4] + 80024a2: 681b ldr r3, [r3, #0] + 80024a4: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80024a8: b29b uxth r3, r3 + 80024aa: 461a mov r2, r3 + 80024ac: 6d7b ldr r3, [r7, #84] @ 0x54 + 80024ae: 781b ldrb r3, [r3, #0] + 80024b0: 00db lsls r3, r3, #3 + 80024b2: 4413 add r3, r2 + 80024b4: 3306 adds r3, #6 + 80024b6: 005b lsls r3, r3, #1 + 80024b8: 687a ldr r2, [r7, #4] + 80024ba: 6812 ldr r2, [r2, #0] + 80024bc: 4413 add r3, r2 + 80024be: f503 6380 add.w r3, r3, #1024 @ 0x400 + 80024c2: 881b ldrh r3, [r3, #0] + 80024c4: f3c3 0309 ubfx r3, r3, #0, #10 + 80024c8: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 + + if (count != 0U) + 80024cc: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 80024d0: 2b00 cmp r3, #0 + 80024d2: f000 8092 beq.w 80025fa + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaadress, count); + 80024d6: 687b ldr r3, [r7, #4] + 80024d8: 6818 ldr r0, [r3, #0] + 80024da: 6d7b ldr r3, [r7, #84] @ 0x54 + 80024dc: 6959 ldr r1, [r3, #20] + 80024de: 6d7b ldr r3, [r7, #84] @ 0x54 + 80024e0: 88da ldrh r2, [r3, #6] + 80024e2: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 80024e6: f004 fd3e bl 8006f66 + 80024ea: e086 b.n 80025fa + } +#if (USE_USB_DOUBLE_BUFFER == 1U) + else + { + /* manage double buffer bulk out */ + if (ep->type == EP_TYPE_BULK) + 80024ec: 6d7b ldr r3, [r7, #84] @ 0x54 + 80024ee: 78db ldrb r3, [r3, #3] + 80024f0: 2b02 cmp r3, #2 + 80024f2: d10a bne.n 800250a + { + count = HAL_PCD_EP_DB_Receive(hpcd, ep, wEPVal); + 80024f4: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 80024f8: 461a mov r2, r3 + 80024fa: 6d79 ldr r1, [r7, #84] @ 0x54 + 80024fc: 6878 ldr r0, [r7, #4] + 80024fe: f000 f9d9 bl 80028b4 + 8002502: 4603 mov r3, r0 + 8002504: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 + 8002508: e077 b.n 80025fa + } + else /* manage double buffer iso out */ + { + /* free EP OUT Buffer */ + PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); + 800250a: 687b ldr r3, [r7, #4] + 800250c: 681b ldr r3, [r3, #0] + 800250e: 461a mov r2, r3 + 8002510: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002512: 781b ldrb r3, [r3, #0] + 8002514: 009b lsls r3, r3, #2 + 8002516: 4413 add r3, r2 + 8002518: 881b ldrh r3, [r3, #0] + 800251a: b29b uxth r3, r3 + 800251c: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002520: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002524: f8a7 3052 strh.w r3, [r7, #82] @ 0x52 + 8002528: 687b ldr r3, [r7, #4] + 800252a: 681b ldr r3, [r3, #0] + 800252c: 461a mov r2, r3 + 800252e: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002530: 781b ldrb r3, [r3, #0] + 8002532: 009b lsls r3, r3, #2 + 8002534: 441a add r2, r3 + 8002536: f8b7 3052 ldrh.w r3, [r7, #82] @ 0x52 + 800253a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800253e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8002542: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8002546: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 800254a: b29b uxth r3, r3 + 800254c: 8013 strh r3, [r2, #0] + + if ((PCD_GET_ENDPOINT(hpcd->Instance, ep->num) & USB_EP_DTOG_RX) != 0U) + 800254e: 687b ldr r3, [r7, #4] + 8002550: 681b ldr r3, [r3, #0] + 8002552: 461a mov r2, r3 + 8002554: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002556: 781b ldrb r3, [r3, #0] + 8002558: 009b lsls r3, r3, #2 + 800255a: 4413 add r3, r2 + 800255c: 881b ldrh r3, [r3, #0] + 800255e: b29b uxth r3, r3 + 8002560: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8002564: 2b00 cmp r3, #0 + 8002566: d024 beq.n 80025b2 + { + /* read from endpoint BUF0Addr buffer */ + count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); + 8002568: 687b ldr r3, [r7, #4] + 800256a: 681b ldr r3, [r3, #0] + 800256c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002570: b29b uxth r3, r3 + 8002572: 461a mov r2, r3 + 8002574: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002576: 781b ldrb r3, [r3, #0] + 8002578: 00db lsls r3, r3, #3 + 800257a: 4413 add r3, r2 + 800257c: 3302 adds r3, #2 + 800257e: 005b lsls r3, r3, #1 + 8002580: 687a ldr r2, [r7, #4] + 8002582: 6812 ldr r2, [r2, #0] + 8002584: 4413 add r3, r2 + 8002586: f503 6380 add.w r3, r3, #1024 @ 0x400 + 800258a: 881b ldrh r3, [r3, #0] + 800258c: f3c3 0309 ubfx r3, r3, #0, #10 + 8002590: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 + + if (count != 0U) + 8002594: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 8002598: 2b00 cmp r3, #0 + 800259a: d02e beq.n 80025fa + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); + 800259c: 687b ldr r3, [r7, #4] + 800259e: 6818 ldr r0, [r3, #0] + 80025a0: 6d7b ldr r3, [r7, #84] @ 0x54 + 80025a2: 6959 ldr r1, [r3, #20] + 80025a4: 6d7b ldr r3, [r7, #84] @ 0x54 + 80025a6: 891a ldrh r2, [r3, #8] + 80025a8: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 80025ac: f004 fcdb bl 8006f66 + 80025b0: e023 b.n 80025fa + } + } + else + { + /* read from endpoint BUF1Addr buffer */ + count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); + 80025b2: 687b ldr r3, [r7, #4] + 80025b4: 681b ldr r3, [r3, #0] + 80025b6: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80025ba: b29b uxth r3, r3 + 80025bc: 461a mov r2, r3 + 80025be: 6d7b ldr r3, [r7, #84] @ 0x54 + 80025c0: 781b ldrb r3, [r3, #0] + 80025c2: 00db lsls r3, r3, #3 + 80025c4: 4413 add r3, r2 + 80025c6: 3306 adds r3, #6 + 80025c8: 005b lsls r3, r3, #1 + 80025ca: 687a ldr r2, [r7, #4] + 80025cc: 6812 ldr r2, [r2, #0] + 80025ce: 4413 add r3, r2 + 80025d0: f503 6380 add.w r3, r3, #1024 @ 0x400 + 80025d4: 881b ldrh r3, [r3, #0] + 80025d6: f3c3 0309 ubfx r3, r3, #0, #10 + 80025da: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 + + if (count != 0U) + 80025de: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 80025e2: 2b00 cmp r3, #0 + 80025e4: d009 beq.n 80025fa + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); + 80025e6: 687b ldr r3, [r7, #4] + 80025e8: 6818 ldr r0, [r3, #0] + 80025ea: 6d7b ldr r3, [r7, #84] @ 0x54 + 80025ec: 6959 ldr r1, [r3, #20] + 80025ee: 6d7b ldr r3, [r7, #84] @ 0x54 + 80025f0: 895a ldrh r2, [r3, #10] + 80025f2: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 80025f6: f004 fcb6 bl 8006f66 + } + } +#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ + + /* multi-packet on the NON control OUT endpoint */ + ep->xfer_count += count; + 80025fa: 6d7b ldr r3, [r7, #84] @ 0x54 + 80025fc: 69da ldr r2, [r3, #28] + 80025fe: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 8002602: 441a add r2, r3 + 8002604: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002606: 61da str r2, [r3, #28] + ep->xfer_buff += count; + 8002608: 6d7b ldr r3, [r7, #84] @ 0x54 + 800260a: 695a ldr r2, [r3, #20] + 800260c: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 8002610: 441a add r2, r3 + 8002612: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002614: 615a str r2, [r3, #20] + + if ((ep->xfer_len == 0U) || (count < ep->maxpacket)) + 8002616: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002618: 699b ldr r3, [r3, #24] + 800261a: 2b00 cmp r3, #0 + 800261c: d005 beq.n 800262a + 800261e: f8b7 2050 ldrh.w r2, [r7, #80] @ 0x50 + 8002622: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002624: 691b ldr r3, [r3, #16] + 8002626: 429a cmp r2, r3 + 8002628: d206 bcs.n 8002638 + { + /* RX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataOutStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataOutStageCallback(hpcd, ep->num); + 800262a: 6d7b ldr r3, [r7, #84] @ 0x54 + 800262c: 781b ldrb r3, [r3, #0] + 800262e: 4619 mov r1, r3 + 8002630: 6878 ldr r0, [r7, #4] + 8002632: f006 fafb bl 8008c2c + 8002636: e005 b.n 8002644 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else + { + (void)USB_EPStartXfer(hpcd->Instance, ep); + 8002638: 687b ldr r3, [r7, #4] + 800263a: 681b ldr r3, [r3, #0] + 800263c: 6d79 ldr r1, [r7, #84] @ 0x54 + 800263e: 4618 mov r0, r3 + 8002640: f002 ff5c bl 80054fc + } + } + + if ((wEPVal & USB_EP_CTR_TX) != 0U) + 8002644: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 8002648: f003 0380 and.w r3, r3, #128 @ 0x80 + 800264c: 2b00 cmp r3, #0 + 800264e: f000 8123 beq.w 8002898 + { + ep = &hpcd->IN_ep[epindex]; + 8002652: f897 204d ldrb.w r2, [r7, #77] @ 0x4d + 8002656: 4613 mov r3, r2 + 8002658: 009b lsls r3, r3, #2 + 800265a: 4413 add r3, r2 + 800265c: 00db lsls r3, r3, #3 + 800265e: 3310 adds r3, #16 + 8002660: 687a ldr r2, [r7, #4] + 8002662: 4413 add r3, r2 + 8002664: 657b str r3, [r7, #84] @ 0x54 + + /* clear int flag */ + PCD_CLEAR_TX_EP_CTR(hpcd->Instance, epindex); + 8002666: 687b ldr r3, [r7, #4] + 8002668: 681b ldr r3, [r3, #0] + 800266a: 461a mov r2, r3 + 800266c: f897 304d ldrb.w r3, [r7, #77] @ 0x4d + 8002670: 009b lsls r3, r3, #2 + 8002672: 4413 add r3, r2 + 8002674: 881b ldrh r3, [r3, #0] + 8002676: b29b uxth r3, r3 + 8002678: f423 43e1 bic.w r3, r3, #28800 @ 0x7080 + 800267c: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002680: f8a7 3042 strh.w r3, [r7, #66] @ 0x42 + 8002684: 687b ldr r3, [r7, #4] + 8002686: 681b ldr r3, [r3, #0] + 8002688: 461a mov r2, r3 + 800268a: f897 304d ldrb.w r3, [r7, #77] @ 0x4d + 800268e: 009b lsls r3, r3, #2 + 8002690: 441a add r2, r3 + 8002692: f8b7 3042 ldrh.w r3, [r7, #66] @ 0x42 + 8002696: ea6f 4343 mvn.w r3, r3, lsl #17 + 800269a: ea6f 4353 mvn.w r3, r3, lsr #17 + 800269e: b29b uxth r3, r3 + 80026a0: 8013 strh r3, [r2, #0] + + if (ep->type == EP_TYPE_ISOC) + 80026a2: 6d7b ldr r3, [r7, #84] @ 0x54 + 80026a4: 78db ldrb r3, [r3, #3] + 80026a6: 2b01 cmp r3, #1 + 80026a8: f040 80a2 bne.w 80027f0 + { + ep->xfer_len = 0U; + 80026ac: 6d7b ldr r3, [r7, #84] @ 0x54 + 80026ae: 2200 movs r2, #0 + 80026b0: 619a str r2, [r3, #24] + +#if (USE_USB_DOUBLE_BUFFER == 1U) + if (ep->doublebuffer != 0U) + 80026b2: 6d7b ldr r3, [r7, #84] @ 0x54 + 80026b4: 7b1b ldrb r3, [r3, #12] + 80026b6: 2b00 cmp r3, #0 + 80026b8: f000 8093 beq.w 80027e2 + { + if ((wEPVal & USB_EP_DTOG_TX) != 0U) + 80026bc: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 80026c0: f003 0340 and.w r3, r3, #64 @ 0x40 + 80026c4: 2b00 cmp r3, #0 + 80026c6: d046 beq.n 8002756 + { + PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 80026c8: 6d7b ldr r3, [r7, #84] @ 0x54 + 80026ca: 785b ldrb r3, [r3, #1] + 80026cc: 2b00 cmp r3, #0 + 80026ce: d126 bne.n 800271e + 80026d0: 687b ldr r3, [r7, #4] + 80026d2: 681b ldr r3, [r3, #0] + 80026d4: 627b str r3, [r7, #36] @ 0x24 + 80026d6: 687b ldr r3, [r7, #4] + 80026d8: 681b ldr r3, [r3, #0] + 80026da: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80026de: b29b uxth r3, r3 + 80026e0: 461a mov r2, r3 + 80026e2: 6a7b ldr r3, [r7, #36] @ 0x24 + 80026e4: 4413 add r3, r2 + 80026e6: 627b str r3, [r7, #36] @ 0x24 + 80026e8: 6d7b ldr r3, [r7, #84] @ 0x54 + 80026ea: 781b ldrb r3, [r3, #0] + 80026ec: 011a lsls r2, r3, #4 + 80026ee: 6a7b ldr r3, [r7, #36] @ 0x24 + 80026f0: 4413 add r3, r2 + 80026f2: f203 4304 addw r3, r3, #1028 @ 0x404 + 80026f6: 623b str r3, [r7, #32] + 80026f8: 6a3b ldr r3, [r7, #32] + 80026fa: 881b ldrh r3, [r3, #0] + 80026fc: b29b uxth r3, r3 + 80026fe: f3c3 0309 ubfx r3, r3, #0, #10 + 8002702: b29a uxth r2, r3 + 8002704: 6a3b ldr r3, [r7, #32] + 8002706: 801a strh r2, [r3, #0] + 8002708: 6a3b ldr r3, [r7, #32] + 800270a: 881b ldrh r3, [r3, #0] + 800270c: b29b uxth r3, r3 + 800270e: ea6f 4343 mvn.w r3, r3, lsl #17 + 8002712: ea6f 4353 mvn.w r3, r3, lsr #17 + 8002716: b29a uxth r2, r3 + 8002718: 6a3b ldr r3, [r7, #32] + 800271a: 801a strh r2, [r3, #0] + 800271c: e061 b.n 80027e2 + 800271e: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002720: 785b ldrb r3, [r3, #1] + 8002722: 2b01 cmp r3, #1 + 8002724: d15d bne.n 80027e2 + 8002726: 687b ldr r3, [r7, #4] + 8002728: 681b ldr r3, [r3, #0] + 800272a: 62fb str r3, [r7, #44] @ 0x2c + 800272c: 687b ldr r3, [r7, #4] + 800272e: 681b ldr r3, [r3, #0] + 8002730: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002734: b29b uxth r3, r3 + 8002736: 461a mov r2, r3 + 8002738: 6afb ldr r3, [r7, #44] @ 0x2c + 800273a: 4413 add r3, r2 + 800273c: 62fb str r3, [r7, #44] @ 0x2c + 800273e: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002740: 781b ldrb r3, [r3, #0] + 8002742: 011a lsls r2, r3, #4 + 8002744: 6afb ldr r3, [r7, #44] @ 0x2c + 8002746: 4413 add r3, r2 + 8002748: f203 4304 addw r3, r3, #1028 @ 0x404 + 800274c: 62bb str r3, [r7, #40] @ 0x28 + 800274e: 6abb ldr r3, [r7, #40] @ 0x28 + 8002750: 2200 movs r2, #0 + 8002752: 801a strh r2, [r3, #0] + 8002754: e045 b.n 80027e2 + } + else + { + PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 8002756: 687b ldr r3, [r7, #4] + 8002758: 681b ldr r3, [r3, #0] + 800275a: 63fb str r3, [r7, #60] @ 0x3c + 800275c: 6d7b ldr r3, [r7, #84] @ 0x54 + 800275e: 785b ldrb r3, [r3, #1] + 8002760: 2b00 cmp r3, #0 + 8002762: d126 bne.n 80027b2 + 8002764: 687b ldr r3, [r7, #4] + 8002766: 681b ldr r3, [r3, #0] + 8002768: 637b str r3, [r7, #52] @ 0x34 + 800276a: 687b ldr r3, [r7, #4] + 800276c: 681b ldr r3, [r3, #0] + 800276e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002772: b29b uxth r3, r3 + 8002774: 461a mov r2, r3 + 8002776: 6b7b ldr r3, [r7, #52] @ 0x34 + 8002778: 4413 add r3, r2 + 800277a: 637b str r3, [r7, #52] @ 0x34 + 800277c: 6d7b ldr r3, [r7, #84] @ 0x54 + 800277e: 781b ldrb r3, [r3, #0] + 8002780: 011a lsls r2, r3, #4 + 8002782: 6b7b ldr r3, [r7, #52] @ 0x34 + 8002784: 4413 add r3, r2 + 8002786: f203 430c addw r3, r3, #1036 @ 0x40c + 800278a: 633b str r3, [r7, #48] @ 0x30 + 800278c: 6b3b ldr r3, [r7, #48] @ 0x30 + 800278e: 881b ldrh r3, [r3, #0] + 8002790: b29b uxth r3, r3 + 8002792: f3c3 0309 ubfx r3, r3, #0, #10 + 8002796: b29a uxth r2, r3 + 8002798: 6b3b ldr r3, [r7, #48] @ 0x30 + 800279a: 801a strh r2, [r3, #0] + 800279c: 6b3b ldr r3, [r7, #48] @ 0x30 + 800279e: 881b ldrh r3, [r3, #0] + 80027a0: b29b uxth r3, r3 + 80027a2: ea6f 4343 mvn.w r3, r3, lsl #17 + 80027a6: ea6f 4353 mvn.w r3, r3, lsr #17 + 80027aa: b29a uxth r2, r3 + 80027ac: 6b3b ldr r3, [r7, #48] @ 0x30 + 80027ae: 801a strh r2, [r3, #0] + 80027b0: e017 b.n 80027e2 + 80027b2: 6d7b ldr r3, [r7, #84] @ 0x54 + 80027b4: 785b ldrb r3, [r3, #1] + 80027b6: 2b01 cmp r3, #1 + 80027b8: d113 bne.n 80027e2 + 80027ba: 687b ldr r3, [r7, #4] + 80027bc: 681b ldr r3, [r3, #0] + 80027be: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80027c2: b29b uxth r3, r3 + 80027c4: 461a mov r2, r3 + 80027c6: 6bfb ldr r3, [r7, #60] @ 0x3c + 80027c8: 4413 add r3, r2 + 80027ca: 63fb str r3, [r7, #60] @ 0x3c + 80027cc: 6d7b ldr r3, [r7, #84] @ 0x54 + 80027ce: 781b ldrb r3, [r3, #0] + 80027d0: 011a lsls r2, r3, #4 + 80027d2: 6bfb ldr r3, [r7, #60] @ 0x3c + 80027d4: 4413 add r3, r2 + 80027d6: f203 430c addw r3, r3, #1036 @ 0x40c + 80027da: 63bb str r3, [r7, #56] @ 0x38 + 80027dc: 6bbb ldr r3, [r7, #56] @ 0x38 + 80027de: 2200 movs r2, #0 + 80027e0: 801a strh r2, [r3, #0] + + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataInStageCallback(hpcd, ep->num); + 80027e2: 6d7b ldr r3, [r7, #84] @ 0x54 + 80027e4: 781b ldrb r3, [r3, #0] + 80027e6: 4619 mov r1, r3 + 80027e8: 6878 ldr r0, [r7, #4] + 80027ea: f006 fa3a bl 8008c62 + 80027ee: e053 b.n 8002898 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else + { + /* Manage Single Buffer Transaction */ + if ((wEPVal & USB_EP_KIND) == 0U) + 80027f0: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 80027f4: f403 7380 and.w r3, r3, #256 @ 0x100 + 80027f8: 2b00 cmp r3, #0 + 80027fa: d146 bne.n 800288a + { + /* multi-packet on the NON control IN endpoint */ + TxPctSize = (uint16_t)PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); + 80027fc: 687b ldr r3, [r7, #4] + 80027fe: 681b ldr r3, [r3, #0] + 8002800: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002804: b29b uxth r3, r3 + 8002806: 461a mov r2, r3 + 8002808: 6d7b ldr r3, [r7, #84] @ 0x54 + 800280a: 781b ldrb r3, [r3, #0] + 800280c: 00db lsls r3, r3, #3 + 800280e: 4413 add r3, r2 + 8002810: 3302 adds r3, #2 + 8002812: 005b lsls r3, r3, #1 + 8002814: 687a ldr r2, [r7, #4] + 8002816: 6812 ldr r2, [r2, #0] + 8002818: 4413 add r3, r2 + 800281a: f503 6380 add.w r3, r3, #1024 @ 0x400 + 800281e: 881b ldrh r3, [r3, #0] + 8002820: f3c3 0309 ubfx r3, r3, #0, #10 + 8002824: f8a7 3040 strh.w r3, [r7, #64] @ 0x40 + + if (ep->xfer_len > TxPctSize) + 8002828: 6d7b ldr r3, [r7, #84] @ 0x54 + 800282a: 699a ldr r2, [r3, #24] + 800282c: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 + 8002830: 429a cmp r2, r3 + 8002832: d907 bls.n 8002844 + { + ep->xfer_len -= TxPctSize; + 8002834: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002836: 699a ldr r2, [r3, #24] + 8002838: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 + 800283c: 1ad2 subs r2, r2, r3 + 800283e: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002840: 619a str r2, [r3, #24] + 8002842: e002 b.n 800284a + } + else + { + ep->xfer_len = 0U; + 8002844: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002846: 2200 movs r2, #0 + 8002848: 619a str r2, [r3, #24] + } + + /* Zero Length Packet? */ + if (ep->xfer_len == 0U) + 800284a: 6d7b ldr r3, [r7, #84] @ 0x54 + 800284c: 699b ldr r3, [r3, #24] + 800284e: 2b00 cmp r3, #0 + 8002850: d106 bne.n 8002860 + { + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataInStageCallback(hpcd, ep->num); + 8002852: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002854: 781b ldrb r3, [r3, #0] + 8002856: 4619 mov r1, r3 + 8002858: 6878 ldr r0, [r7, #4] + 800285a: f006 fa02 bl 8008c62 + 800285e: e01b b.n 8002898 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else + { + /* Transfer is not yet Done */ + ep->xfer_buff += TxPctSize; + 8002860: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002862: 695a ldr r2, [r3, #20] + 8002864: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 + 8002868: 441a add r2, r3 + 800286a: 6d7b ldr r3, [r7, #84] @ 0x54 + 800286c: 615a str r2, [r3, #20] + ep->xfer_count += TxPctSize; + 800286e: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002870: 69da ldr r2, [r3, #28] + 8002872: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 + 8002876: 441a add r2, r3 + 8002878: 6d7b ldr r3, [r7, #84] @ 0x54 + 800287a: 61da str r2, [r3, #28] + (void)USB_EPStartXfer(hpcd->Instance, ep); + 800287c: 687b ldr r3, [r7, #4] + 800287e: 681b ldr r3, [r3, #0] + 8002880: 6d79 ldr r1, [r7, #84] @ 0x54 + 8002882: 4618 mov r0, r3 + 8002884: f002 fe3a bl 80054fc + 8002888: e006 b.n 8002898 + } +#if (USE_USB_DOUBLE_BUFFER == 1U) + /* Double Buffer bulk IN (bulk transfer Len > Ep_Mps) */ + else + { + (void)HAL_PCD_EP_DB_Transmit(hpcd, ep, wEPVal); + 800288a: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 800288e: 461a mov r2, r3 + 8002890: 6d79 ldr r1, [r7, #84] @ 0x54 + 8002892: 6878 ldr r0, [r7, #4] + 8002894: f000 f91b bl 8002ace + while ((hpcd->Instance->ISTR & USB_ISTR_CTR) != 0U) + 8002898: 687b ldr r3, [r7, #4] + 800289a: 681b ldr r3, [r3, #0] + 800289c: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 80028a0: b29b uxth r3, r3 + 80028a2: b21b sxth r3, r3 + 80028a4: 2b00 cmp r3, #0 + 80028a6: f6ff ac3b blt.w 8002120 + } + } + } + } + + return HAL_OK; + 80028aa: 2300 movs r3, #0 +} + 80028ac: 4618 mov r0, r3 + 80028ae: 3758 adds r7, #88 @ 0x58 + 80028b0: 46bd mov sp, r7 + 80028b2: bd80 pop {r7, pc} + +080028b4 : + * @param wEPVal Last snapshot of EPRx register value taken in ISR + * @retval HAL status + */ +static uint16_t HAL_PCD_EP_DB_Receive(PCD_HandleTypeDef *hpcd, + PCD_EPTypeDef *ep, uint16_t wEPVal) +{ + 80028b4: b580 push {r7, lr} + 80028b6: b088 sub sp, #32 + 80028b8: af00 add r7, sp, #0 + 80028ba: 60f8 str r0, [r7, #12] + 80028bc: 60b9 str r1, [r7, #8] + 80028be: 4613 mov r3, r2 + 80028c0: 80fb strh r3, [r7, #6] + uint16_t count; + + /* Manage Buffer0 OUT */ + if ((wEPVal & USB_EP_DTOG_RX) != 0U) + 80028c2: 88fb ldrh r3, [r7, #6] + 80028c4: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 80028c8: 2b00 cmp r3, #0 + 80028ca: d07e beq.n 80029ca + { + /* Get count of received Data on buffer0 */ + count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); + 80028cc: 68fb ldr r3, [r7, #12] + 80028ce: 681b ldr r3, [r3, #0] + 80028d0: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80028d4: b29b uxth r3, r3 + 80028d6: 461a mov r2, r3 + 80028d8: 68bb ldr r3, [r7, #8] + 80028da: 781b ldrb r3, [r3, #0] + 80028dc: 00db lsls r3, r3, #3 + 80028de: 4413 add r3, r2 + 80028e0: 3302 adds r3, #2 + 80028e2: 005b lsls r3, r3, #1 + 80028e4: 68fa ldr r2, [r7, #12] + 80028e6: 6812 ldr r2, [r2, #0] + 80028e8: 4413 add r3, r2 + 80028ea: f503 6380 add.w r3, r3, #1024 @ 0x400 + 80028ee: 881b ldrh r3, [r3, #0] + 80028f0: f3c3 0309 ubfx r3, r3, #0, #10 + 80028f4: 837b strh r3, [r7, #26] + + if (ep->xfer_len >= count) + 80028f6: 68bb ldr r3, [r7, #8] + 80028f8: 699a ldr r2, [r3, #24] + 80028fa: 8b7b ldrh r3, [r7, #26] + 80028fc: 429a cmp r2, r3 + 80028fe: d306 bcc.n 800290e + { + ep->xfer_len -= count; + 8002900: 68bb ldr r3, [r7, #8] + 8002902: 699a ldr r2, [r3, #24] + 8002904: 8b7b ldrh r3, [r7, #26] + 8002906: 1ad2 subs r2, r2, r3 + 8002908: 68bb ldr r3, [r7, #8] + 800290a: 619a str r2, [r3, #24] + 800290c: e002 b.n 8002914 + } + else + { + ep->xfer_len = 0U; + 800290e: 68bb ldr r3, [r7, #8] + 8002910: 2200 movs r2, #0 + 8002912: 619a str r2, [r3, #24] + } + + if (ep->xfer_len == 0U) + 8002914: 68bb ldr r3, [r7, #8] + 8002916: 699b ldr r3, [r3, #24] + 8002918: 2b00 cmp r3, #0 + 800291a: d123 bne.n 8002964 + { + /* set NAK to OUT endpoint since double buffer is enabled */ + PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); + 800291c: 68fb ldr r3, [r7, #12] + 800291e: 681b ldr r3, [r3, #0] + 8002920: 461a mov r2, r3 + 8002922: 68bb ldr r3, [r7, #8] + 8002924: 781b ldrb r3, [r3, #0] + 8002926: 009b lsls r3, r3, #2 + 8002928: 4413 add r3, r2 + 800292a: 881b ldrh r3, [r3, #0] + 800292c: b29b uxth r3, r3 + 800292e: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8002932: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002936: 833b strh r3, [r7, #24] + 8002938: 8b3b ldrh r3, [r7, #24] + 800293a: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 800293e: 833b strh r3, [r7, #24] + 8002940: 68fb ldr r3, [r7, #12] + 8002942: 681b ldr r3, [r3, #0] + 8002944: 461a mov r2, r3 + 8002946: 68bb ldr r3, [r7, #8] + 8002948: 781b ldrb r3, [r3, #0] + 800294a: 009b lsls r3, r3, #2 + 800294c: 441a add r2, r3 + 800294e: 8b3b ldrh r3, [r7, #24] + 8002950: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8002954: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8002958: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800295c: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8002960: b29b uxth r3, r3 + 8002962: 8013 strh r3, [r2, #0] + } + + /* Check if Buffer1 is in blocked state which requires to toggle */ + if ((wEPVal & USB_EP_DTOG_TX) != 0U) + 8002964: 88fb ldrh r3, [r7, #6] + 8002966: f003 0340 and.w r3, r3, #64 @ 0x40 + 800296a: 2b00 cmp r3, #0 + 800296c: d01f beq.n 80029ae + { + PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); + 800296e: 68fb ldr r3, [r7, #12] + 8002970: 681b ldr r3, [r3, #0] + 8002972: 461a mov r2, r3 + 8002974: 68bb ldr r3, [r7, #8] + 8002976: 781b ldrb r3, [r3, #0] + 8002978: 009b lsls r3, r3, #2 + 800297a: 4413 add r3, r2 + 800297c: 881b ldrh r3, [r3, #0] + 800297e: b29b uxth r3, r3 + 8002980: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002984: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002988: 82fb strh r3, [r7, #22] + 800298a: 68fb ldr r3, [r7, #12] + 800298c: 681b ldr r3, [r3, #0] + 800298e: 461a mov r2, r3 + 8002990: 68bb ldr r3, [r7, #8] + 8002992: 781b ldrb r3, [r3, #0] + 8002994: 009b lsls r3, r3, #2 + 8002996: 441a add r2, r3 + 8002998: 8afb ldrh r3, [r7, #22] + 800299a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800299e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80029a2: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 80029a6: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 80029aa: b29b uxth r3, r3 + 80029ac: 8013 strh r3, [r2, #0] + } + + if (count != 0U) + 80029ae: 8b7b ldrh r3, [r7, #26] + 80029b0: 2b00 cmp r3, #0 + 80029b2: f000 8087 beq.w 8002ac4 + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); + 80029b6: 68fb ldr r3, [r7, #12] + 80029b8: 6818 ldr r0, [r3, #0] + 80029ba: 68bb ldr r3, [r7, #8] + 80029bc: 6959 ldr r1, [r3, #20] + 80029be: 68bb ldr r3, [r7, #8] + 80029c0: 891a ldrh r2, [r3, #8] + 80029c2: 8b7b ldrh r3, [r7, #26] + 80029c4: f004 facf bl 8006f66 + 80029c8: e07c b.n 8002ac4 + } + /* Manage Buffer 1 DTOG_RX=0 */ + else + { + /* Get count of received data */ + count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); + 80029ca: 68fb ldr r3, [r7, #12] + 80029cc: 681b ldr r3, [r3, #0] + 80029ce: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80029d2: b29b uxth r3, r3 + 80029d4: 461a mov r2, r3 + 80029d6: 68bb ldr r3, [r7, #8] + 80029d8: 781b ldrb r3, [r3, #0] + 80029da: 00db lsls r3, r3, #3 + 80029dc: 4413 add r3, r2 + 80029de: 3306 adds r3, #6 + 80029e0: 005b lsls r3, r3, #1 + 80029e2: 68fa ldr r2, [r7, #12] + 80029e4: 6812 ldr r2, [r2, #0] + 80029e6: 4413 add r3, r2 + 80029e8: f503 6380 add.w r3, r3, #1024 @ 0x400 + 80029ec: 881b ldrh r3, [r3, #0] + 80029ee: f3c3 0309 ubfx r3, r3, #0, #10 + 80029f2: 837b strh r3, [r7, #26] + + if (ep->xfer_len >= count) + 80029f4: 68bb ldr r3, [r7, #8] + 80029f6: 699a ldr r2, [r3, #24] + 80029f8: 8b7b ldrh r3, [r7, #26] + 80029fa: 429a cmp r2, r3 + 80029fc: d306 bcc.n 8002a0c + { + ep->xfer_len -= count; + 80029fe: 68bb ldr r3, [r7, #8] + 8002a00: 699a ldr r2, [r3, #24] + 8002a02: 8b7b ldrh r3, [r7, #26] + 8002a04: 1ad2 subs r2, r2, r3 + 8002a06: 68bb ldr r3, [r7, #8] + 8002a08: 619a str r2, [r3, #24] + 8002a0a: e002 b.n 8002a12 + } + else + { + ep->xfer_len = 0U; + 8002a0c: 68bb ldr r3, [r7, #8] + 8002a0e: 2200 movs r2, #0 + 8002a10: 619a str r2, [r3, #24] + } + + if (ep->xfer_len == 0U) + 8002a12: 68bb ldr r3, [r7, #8] + 8002a14: 699b ldr r3, [r3, #24] + 8002a16: 2b00 cmp r3, #0 + 8002a18: d123 bne.n 8002a62 + { + /* set NAK on the current endpoint */ + PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); + 8002a1a: 68fb ldr r3, [r7, #12] + 8002a1c: 681b ldr r3, [r3, #0] + 8002a1e: 461a mov r2, r3 + 8002a20: 68bb ldr r3, [r7, #8] + 8002a22: 781b ldrb r3, [r3, #0] + 8002a24: 009b lsls r3, r3, #2 + 8002a26: 4413 add r3, r2 + 8002a28: 881b ldrh r3, [r3, #0] + 8002a2a: b29b uxth r3, r3 + 8002a2c: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8002a30: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002a34: 83fb strh r3, [r7, #30] + 8002a36: 8bfb ldrh r3, [r7, #30] + 8002a38: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 8002a3c: 83fb strh r3, [r7, #30] + 8002a3e: 68fb ldr r3, [r7, #12] + 8002a40: 681b ldr r3, [r3, #0] + 8002a42: 461a mov r2, r3 + 8002a44: 68bb ldr r3, [r7, #8] + 8002a46: 781b ldrb r3, [r3, #0] + 8002a48: 009b lsls r3, r3, #2 + 8002a4a: 441a add r2, r3 + 8002a4c: 8bfb ldrh r3, [r7, #30] + 8002a4e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8002a52: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8002a56: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8002a5a: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8002a5e: b29b uxth r3, r3 + 8002a60: 8013 strh r3, [r2, #0] + } + + /*Need to FreeUser Buffer*/ + if ((wEPVal & USB_EP_DTOG_TX) == 0U) + 8002a62: 88fb ldrh r3, [r7, #6] + 8002a64: f003 0340 and.w r3, r3, #64 @ 0x40 + 8002a68: 2b00 cmp r3, #0 + 8002a6a: d11f bne.n 8002aac + { + PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); + 8002a6c: 68fb ldr r3, [r7, #12] + 8002a6e: 681b ldr r3, [r3, #0] + 8002a70: 461a mov r2, r3 + 8002a72: 68bb ldr r3, [r7, #8] + 8002a74: 781b ldrb r3, [r3, #0] + 8002a76: 009b lsls r3, r3, #2 + 8002a78: 4413 add r3, r2 + 8002a7a: 881b ldrh r3, [r3, #0] + 8002a7c: b29b uxth r3, r3 + 8002a7e: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002a82: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002a86: 83bb strh r3, [r7, #28] + 8002a88: 68fb ldr r3, [r7, #12] + 8002a8a: 681b ldr r3, [r3, #0] + 8002a8c: 461a mov r2, r3 + 8002a8e: 68bb ldr r3, [r7, #8] + 8002a90: 781b ldrb r3, [r3, #0] + 8002a92: 009b lsls r3, r3, #2 + 8002a94: 441a add r2, r3 + 8002a96: 8bbb ldrh r3, [r7, #28] + 8002a98: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8002a9c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8002aa0: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8002aa4: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 8002aa8: b29b uxth r3, r3 + 8002aaa: 8013 strh r3, [r2, #0] + } + + if (count != 0U) + 8002aac: 8b7b ldrh r3, [r7, #26] + 8002aae: 2b00 cmp r3, #0 + 8002ab0: d008 beq.n 8002ac4 + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); + 8002ab2: 68fb ldr r3, [r7, #12] + 8002ab4: 6818 ldr r0, [r3, #0] + 8002ab6: 68bb ldr r3, [r7, #8] + 8002ab8: 6959 ldr r1, [r3, #20] + 8002aba: 68bb ldr r3, [r7, #8] + 8002abc: 895a ldrh r2, [r3, #10] + 8002abe: 8b7b ldrh r3, [r7, #26] + 8002ac0: f004 fa51 bl 8006f66 + } + } + + return count; + 8002ac4: 8b7b ldrh r3, [r7, #26] +} + 8002ac6: 4618 mov r0, r3 + 8002ac8: 3720 adds r7, #32 + 8002aca: 46bd mov sp, r7 + 8002acc: bd80 pop {r7, pc} + +08002ace : + * @param wEPVal Last snapshot of EPRx register value taken in ISR + * @retval HAL status + */ +static HAL_StatusTypeDef HAL_PCD_EP_DB_Transmit(PCD_HandleTypeDef *hpcd, + PCD_EPTypeDef *ep, uint16_t wEPVal) +{ + 8002ace: b580 push {r7, lr} + 8002ad0: b0a4 sub sp, #144 @ 0x90 + 8002ad2: af00 add r7, sp, #0 + 8002ad4: 60f8 str r0, [r7, #12] + 8002ad6: 60b9 str r1, [r7, #8] + 8002ad8: 4613 mov r3, r2 + 8002ada: 80fb strh r3, [r7, #6] + uint32_t len; + uint16_t TxPctSize; + + /* Data Buffer0 ACK received */ + if ((wEPVal & USB_EP_DTOG_TX) != 0U) + 8002adc: 88fb ldrh r3, [r7, #6] + 8002ade: f003 0340 and.w r3, r3, #64 @ 0x40 + 8002ae2: 2b00 cmp r3, #0 + 8002ae4: f000 81dd beq.w 8002ea2 + { + /* multi-packet on the NON control IN endpoint */ + TxPctSize = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); + 8002ae8: 68fb ldr r3, [r7, #12] + 8002aea: 681b ldr r3, [r3, #0] + 8002aec: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002af0: b29b uxth r3, r3 + 8002af2: 461a mov r2, r3 + 8002af4: 68bb ldr r3, [r7, #8] + 8002af6: 781b ldrb r3, [r3, #0] + 8002af8: 00db lsls r3, r3, #3 + 8002afa: 4413 add r3, r2 + 8002afc: 3302 adds r3, #2 + 8002afe: 005b lsls r3, r3, #1 + 8002b00: 68fa ldr r2, [r7, #12] + 8002b02: 6812 ldr r2, [r2, #0] + 8002b04: 4413 add r3, r2 + 8002b06: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8002b0a: 881b ldrh r3, [r3, #0] + 8002b0c: f3c3 0309 ubfx r3, r3, #0, #10 + 8002b10: f8a7 3086 strh.w r3, [r7, #134] @ 0x86 + + if (ep->xfer_len > TxPctSize) + 8002b14: 68bb ldr r3, [r7, #8] + 8002b16: 699a ldr r2, [r3, #24] + 8002b18: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 8002b1c: 429a cmp r2, r3 + 8002b1e: d907 bls.n 8002b30 + { + ep->xfer_len -= TxPctSize; + 8002b20: 68bb ldr r3, [r7, #8] + 8002b22: 699a ldr r2, [r3, #24] + 8002b24: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 8002b28: 1ad2 subs r2, r2, r3 + 8002b2a: 68bb ldr r3, [r7, #8] + 8002b2c: 619a str r2, [r3, #24] + 8002b2e: e002 b.n 8002b36 + } + else + { + ep->xfer_len = 0U; + 8002b30: 68bb ldr r3, [r7, #8] + 8002b32: 2200 movs r2, #0 + 8002b34: 619a str r2, [r3, #24] + } + + /* Transfer is completed */ + if (ep->xfer_len == 0U) + 8002b36: 68bb ldr r3, [r7, #8] + 8002b38: 699b ldr r3, [r3, #24] + 8002b3a: 2b00 cmp r3, #0 + 8002b3c: f040 80b9 bne.w 8002cb2 + { + PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 8002b40: 68bb ldr r3, [r7, #8] + 8002b42: 785b ldrb r3, [r3, #1] + 8002b44: 2b00 cmp r3, #0 + 8002b46: d126 bne.n 8002b96 + 8002b48: 68fb ldr r3, [r7, #12] + 8002b4a: 681b ldr r3, [r3, #0] + 8002b4c: 62fb str r3, [r7, #44] @ 0x2c + 8002b4e: 68fb ldr r3, [r7, #12] + 8002b50: 681b ldr r3, [r3, #0] + 8002b52: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002b56: b29b uxth r3, r3 + 8002b58: 461a mov r2, r3 + 8002b5a: 6afb ldr r3, [r7, #44] @ 0x2c + 8002b5c: 4413 add r3, r2 + 8002b5e: 62fb str r3, [r7, #44] @ 0x2c + 8002b60: 68bb ldr r3, [r7, #8] + 8002b62: 781b ldrb r3, [r3, #0] + 8002b64: 011a lsls r2, r3, #4 + 8002b66: 6afb ldr r3, [r7, #44] @ 0x2c + 8002b68: 4413 add r3, r2 + 8002b6a: f203 4304 addw r3, r3, #1028 @ 0x404 + 8002b6e: 62bb str r3, [r7, #40] @ 0x28 + 8002b70: 6abb ldr r3, [r7, #40] @ 0x28 + 8002b72: 881b ldrh r3, [r3, #0] + 8002b74: b29b uxth r3, r3 + 8002b76: f3c3 0309 ubfx r3, r3, #0, #10 + 8002b7a: b29a uxth r2, r3 + 8002b7c: 6abb ldr r3, [r7, #40] @ 0x28 + 8002b7e: 801a strh r2, [r3, #0] + 8002b80: 6abb ldr r3, [r7, #40] @ 0x28 + 8002b82: 881b ldrh r3, [r3, #0] + 8002b84: b29b uxth r3, r3 + 8002b86: ea6f 4343 mvn.w r3, r3, lsl #17 + 8002b8a: ea6f 4353 mvn.w r3, r3, lsr #17 + 8002b8e: b29a uxth r2, r3 + 8002b90: 6abb ldr r3, [r7, #40] @ 0x28 + 8002b92: 801a strh r2, [r3, #0] + 8002b94: e01a b.n 8002bcc + 8002b96: 68bb ldr r3, [r7, #8] + 8002b98: 785b ldrb r3, [r3, #1] + 8002b9a: 2b01 cmp r3, #1 + 8002b9c: d116 bne.n 8002bcc + 8002b9e: 68fb ldr r3, [r7, #12] + 8002ba0: 681b ldr r3, [r3, #0] + 8002ba2: 637b str r3, [r7, #52] @ 0x34 + 8002ba4: 68fb ldr r3, [r7, #12] + 8002ba6: 681b ldr r3, [r3, #0] + 8002ba8: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002bac: b29b uxth r3, r3 + 8002bae: 461a mov r2, r3 + 8002bb0: 6b7b ldr r3, [r7, #52] @ 0x34 + 8002bb2: 4413 add r3, r2 + 8002bb4: 637b str r3, [r7, #52] @ 0x34 + 8002bb6: 68bb ldr r3, [r7, #8] + 8002bb8: 781b ldrb r3, [r3, #0] + 8002bba: 011a lsls r2, r3, #4 + 8002bbc: 6b7b ldr r3, [r7, #52] @ 0x34 + 8002bbe: 4413 add r3, r2 + 8002bc0: f203 4304 addw r3, r3, #1028 @ 0x404 + 8002bc4: 633b str r3, [r7, #48] @ 0x30 + 8002bc6: 6b3b ldr r3, [r7, #48] @ 0x30 + 8002bc8: 2200 movs r2, #0 + 8002bca: 801a strh r2, [r3, #0] + PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 8002bcc: 68fb ldr r3, [r7, #12] + 8002bce: 681b ldr r3, [r3, #0] + 8002bd0: 627b str r3, [r7, #36] @ 0x24 + 8002bd2: 68bb ldr r3, [r7, #8] + 8002bd4: 785b ldrb r3, [r3, #1] + 8002bd6: 2b00 cmp r3, #0 + 8002bd8: d126 bne.n 8002c28 + 8002bda: 68fb ldr r3, [r7, #12] + 8002bdc: 681b ldr r3, [r3, #0] + 8002bde: 61fb str r3, [r7, #28] + 8002be0: 68fb ldr r3, [r7, #12] + 8002be2: 681b ldr r3, [r3, #0] + 8002be4: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002be8: b29b uxth r3, r3 + 8002bea: 461a mov r2, r3 + 8002bec: 69fb ldr r3, [r7, #28] + 8002bee: 4413 add r3, r2 + 8002bf0: 61fb str r3, [r7, #28] + 8002bf2: 68bb ldr r3, [r7, #8] + 8002bf4: 781b ldrb r3, [r3, #0] + 8002bf6: 011a lsls r2, r3, #4 + 8002bf8: 69fb ldr r3, [r7, #28] + 8002bfa: 4413 add r3, r2 + 8002bfc: f203 430c addw r3, r3, #1036 @ 0x40c + 8002c00: 61bb str r3, [r7, #24] + 8002c02: 69bb ldr r3, [r7, #24] + 8002c04: 881b ldrh r3, [r3, #0] + 8002c06: b29b uxth r3, r3 + 8002c08: f3c3 0309 ubfx r3, r3, #0, #10 + 8002c0c: b29a uxth r2, r3 + 8002c0e: 69bb ldr r3, [r7, #24] + 8002c10: 801a strh r2, [r3, #0] + 8002c12: 69bb ldr r3, [r7, #24] + 8002c14: 881b ldrh r3, [r3, #0] + 8002c16: b29b uxth r3, r3 + 8002c18: ea6f 4343 mvn.w r3, r3, lsl #17 + 8002c1c: ea6f 4353 mvn.w r3, r3, lsr #17 + 8002c20: b29a uxth r2, r3 + 8002c22: 69bb ldr r3, [r7, #24] + 8002c24: 801a strh r2, [r3, #0] + 8002c26: e017 b.n 8002c58 + 8002c28: 68bb ldr r3, [r7, #8] + 8002c2a: 785b ldrb r3, [r3, #1] + 8002c2c: 2b01 cmp r3, #1 + 8002c2e: d113 bne.n 8002c58 + 8002c30: 68fb ldr r3, [r7, #12] + 8002c32: 681b ldr r3, [r3, #0] + 8002c34: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002c38: b29b uxth r3, r3 + 8002c3a: 461a mov r2, r3 + 8002c3c: 6a7b ldr r3, [r7, #36] @ 0x24 + 8002c3e: 4413 add r3, r2 + 8002c40: 627b str r3, [r7, #36] @ 0x24 + 8002c42: 68bb ldr r3, [r7, #8] + 8002c44: 781b ldrb r3, [r3, #0] + 8002c46: 011a lsls r2, r3, #4 + 8002c48: 6a7b ldr r3, [r7, #36] @ 0x24 + 8002c4a: 4413 add r3, r2 + 8002c4c: f203 430c addw r3, r3, #1036 @ 0x40c + 8002c50: 623b str r3, [r7, #32] + 8002c52: 6a3b ldr r3, [r7, #32] + 8002c54: 2200 movs r2, #0 + 8002c56: 801a strh r2, [r3, #0] + + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataInStageCallback(hpcd, ep->num); + 8002c58: 68bb ldr r3, [r7, #8] + 8002c5a: 781b ldrb r3, [r3, #0] + 8002c5c: 4619 mov r1, r3 + 8002c5e: 68f8 ldr r0, [r7, #12] + 8002c60: f005 ffff bl 8008c62 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + if ((wEPVal & USB_EP_DTOG_RX) != 0U) + 8002c64: 88fb ldrh r3, [r7, #6] + 8002c66: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8002c6a: 2b00 cmp r3, #0 + 8002c6c: f000 82fc beq.w 8003268 + { + PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); + 8002c70: 68fb ldr r3, [r7, #12] + 8002c72: 681b ldr r3, [r3, #0] + 8002c74: 461a mov r2, r3 + 8002c76: 68bb ldr r3, [r7, #8] + 8002c78: 781b ldrb r3, [r3, #0] + 8002c7a: 009b lsls r3, r3, #2 + 8002c7c: 4413 add r3, r2 + 8002c7e: 881b ldrh r3, [r3, #0] + 8002c80: b29b uxth r3, r3 + 8002c82: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002c86: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002c8a: 82fb strh r3, [r7, #22] + 8002c8c: 68fb ldr r3, [r7, #12] + 8002c8e: 681b ldr r3, [r3, #0] + 8002c90: 461a mov r2, r3 + 8002c92: 68bb ldr r3, [r7, #8] + 8002c94: 781b ldrb r3, [r3, #0] + 8002c96: 009b lsls r3, r3, #2 + 8002c98: 441a add r2, r3 + 8002c9a: 8afb ldrh r3, [r7, #22] + 8002c9c: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8002ca0: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8002ca4: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8002ca8: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8002cac: b29b uxth r3, r3 + 8002cae: 8013 strh r3, [r2, #0] + 8002cb0: e2da b.n 8003268 + } + } + else /* Transfer is not yet Done */ + { + /* need to Free USB Buff */ + if ((wEPVal & USB_EP_DTOG_RX) != 0U) + 8002cb2: 88fb ldrh r3, [r7, #6] + 8002cb4: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8002cb8: 2b00 cmp r3, #0 + 8002cba: d021 beq.n 8002d00 + { + PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); + 8002cbc: 68fb ldr r3, [r7, #12] + 8002cbe: 681b ldr r3, [r3, #0] + 8002cc0: 461a mov r2, r3 + 8002cc2: 68bb ldr r3, [r7, #8] + 8002cc4: 781b ldrb r3, [r3, #0] + 8002cc6: 009b lsls r3, r3, #2 + 8002cc8: 4413 add r3, r2 + 8002cca: 881b ldrh r3, [r3, #0] + 8002ccc: b29b uxth r3, r3 + 8002cce: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002cd2: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002cd6: f8a7 308a strh.w r3, [r7, #138] @ 0x8a + 8002cda: 68fb ldr r3, [r7, #12] + 8002cdc: 681b ldr r3, [r3, #0] + 8002cde: 461a mov r2, r3 + 8002ce0: 68bb ldr r3, [r7, #8] + 8002ce2: 781b ldrb r3, [r3, #0] + 8002ce4: 009b lsls r3, r3, #2 + 8002ce6: 441a add r2, r3 + 8002ce8: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a + 8002cec: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8002cf0: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8002cf4: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8002cf8: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8002cfc: b29b uxth r3, r3 + 8002cfe: 8013 strh r3, [r2, #0] + } + + /* Still there is data to Fill in the next Buffer */ + if (ep->xfer_fill_db == 1U) + 8002d00: 68bb ldr r3, [r7, #8] + 8002d02: f893 3024 ldrb.w r3, [r3, #36] @ 0x24 + 8002d06: 2b01 cmp r3, #1 + 8002d08: f040 82ae bne.w 8003268 + { + ep->xfer_buff += TxPctSize; + 8002d0c: 68bb ldr r3, [r7, #8] + 8002d0e: 695a ldr r2, [r3, #20] + 8002d10: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 8002d14: 441a add r2, r3 + 8002d16: 68bb ldr r3, [r7, #8] + 8002d18: 615a str r2, [r3, #20] + ep->xfer_count += TxPctSize; + 8002d1a: 68bb ldr r3, [r7, #8] + 8002d1c: 69da ldr r2, [r3, #28] + 8002d1e: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 8002d22: 441a add r2, r3 + 8002d24: 68bb ldr r3, [r7, #8] + 8002d26: 61da str r2, [r3, #28] + + /* Calculate the len of the new buffer to fill */ + if (ep->xfer_len_db >= ep->maxpacket) + 8002d28: 68bb ldr r3, [r7, #8] + 8002d2a: 6a1a ldr r2, [r3, #32] + 8002d2c: 68bb ldr r3, [r7, #8] + 8002d2e: 691b ldr r3, [r3, #16] + 8002d30: 429a cmp r2, r3 + 8002d32: d30b bcc.n 8002d4c + { + len = ep->maxpacket; + 8002d34: 68bb ldr r3, [r7, #8] + 8002d36: 691b ldr r3, [r3, #16] + 8002d38: f8c7 308c str.w r3, [r7, #140] @ 0x8c + ep->xfer_len_db -= len; + 8002d3c: 68bb ldr r3, [r7, #8] + 8002d3e: 6a1a ldr r2, [r3, #32] + 8002d40: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8002d44: 1ad2 subs r2, r2, r3 + 8002d46: 68bb ldr r3, [r7, #8] + 8002d48: 621a str r2, [r3, #32] + 8002d4a: e017 b.n 8002d7c + } + else if (ep->xfer_len_db == 0U) + 8002d4c: 68bb ldr r3, [r7, #8] + 8002d4e: 6a1b ldr r3, [r3, #32] + 8002d50: 2b00 cmp r3, #0 + 8002d52: d108 bne.n 8002d66 + { + len = TxPctSize; + 8002d54: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 8002d58: f8c7 308c str.w r3, [r7, #140] @ 0x8c + ep->xfer_fill_db = 0U; + 8002d5c: 68bb ldr r3, [r7, #8] + 8002d5e: 2200 movs r2, #0 + 8002d60: f883 2024 strb.w r2, [r3, #36] @ 0x24 + 8002d64: e00a b.n 8002d7c + } + else + { + ep->xfer_fill_db = 0U; + 8002d66: 68bb ldr r3, [r7, #8] + 8002d68: 2200 movs r2, #0 + 8002d6a: f883 2024 strb.w r2, [r3, #36] @ 0x24 + len = ep->xfer_len_db; + 8002d6e: 68bb ldr r3, [r7, #8] + 8002d70: 6a1b ldr r3, [r3, #32] + 8002d72: f8c7 308c str.w r3, [r7, #140] @ 0x8c + ep->xfer_len_db = 0U; + 8002d76: 68bb ldr r3, [r7, #8] + 8002d78: 2200 movs r2, #0 + 8002d7a: 621a str r2, [r3, #32] + } + + /* Write remaining Data to Buffer */ + /* Set the Double buffer counter for pma buffer1 */ + PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, len); + 8002d7c: 68bb ldr r3, [r7, #8] + 8002d7e: 785b ldrb r3, [r3, #1] + 8002d80: 2b00 cmp r3, #0 + 8002d82: d165 bne.n 8002e50 + 8002d84: 68fb ldr r3, [r7, #12] + 8002d86: 681b ldr r3, [r3, #0] + 8002d88: 63fb str r3, [r7, #60] @ 0x3c + 8002d8a: 68fb ldr r3, [r7, #12] + 8002d8c: 681b ldr r3, [r3, #0] + 8002d8e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002d92: b29b uxth r3, r3 + 8002d94: 461a mov r2, r3 + 8002d96: 6bfb ldr r3, [r7, #60] @ 0x3c + 8002d98: 4413 add r3, r2 + 8002d9a: 63fb str r3, [r7, #60] @ 0x3c + 8002d9c: 68bb ldr r3, [r7, #8] + 8002d9e: 781b ldrb r3, [r3, #0] + 8002da0: 011a lsls r2, r3, #4 + 8002da2: 6bfb ldr r3, [r7, #60] @ 0x3c + 8002da4: 4413 add r3, r2 + 8002da6: f203 4304 addw r3, r3, #1028 @ 0x404 + 8002daa: 63bb str r3, [r7, #56] @ 0x38 + 8002dac: 6bbb ldr r3, [r7, #56] @ 0x38 + 8002dae: 881b ldrh r3, [r3, #0] + 8002db0: b29b uxth r3, r3 + 8002db2: f3c3 0309 ubfx r3, r3, #0, #10 + 8002db6: b29a uxth r2, r3 + 8002db8: 6bbb ldr r3, [r7, #56] @ 0x38 + 8002dba: 801a strh r2, [r3, #0] + 8002dbc: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8002dc0: 2b3e cmp r3, #62 @ 0x3e + 8002dc2: d91d bls.n 8002e00 + 8002dc4: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8002dc8: 095b lsrs r3, r3, #5 + 8002dca: 64bb str r3, [r7, #72] @ 0x48 + 8002dcc: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8002dd0: f003 031f and.w r3, r3, #31 + 8002dd4: 2b00 cmp r3, #0 + 8002dd6: d102 bne.n 8002dde + 8002dd8: 6cbb ldr r3, [r7, #72] @ 0x48 + 8002dda: 3b01 subs r3, #1 + 8002ddc: 64bb str r3, [r7, #72] @ 0x48 + 8002dde: 6bbb ldr r3, [r7, #56] @ 0x38 + 8002de0: 881b ldrh r3, [r3, #0] + 8002de2: b29a uxth r2, r3 + 8002de4: 6cbb ldr r3, [r7, #72] @ 0x48 + 8002de6: b29b uxth r3, r3 + 8002de8: 029b lsls r3, r3, #10 + 8002dea: b29b uxth r3, r3 + 8002dec: 4313 orrs r3, r2 + 8002dee: b29b uxth r3, r3 + 8002df0: ea6f 4343 mvn.w r3, r3, lsl #17 + 8002df4: ea6f 4353 mvn.w r3, r3, lsr #17 + 8002df8: b29a uxth r2, r3 + 8002dfa: 6bbb ldr r3, [r7, #56] @ 0x38 + 8002dfc: 801a strh r2, [r3, #0] + 8002dfe: e044 b.n 8002e8a + 8002e00: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8002e04: 2b00 cmp r3, #0 + 8002e06: d10a bne.n 8002e1e + 8002e08: 6bbb ldr r3, [r7, #56] @ 0x38 + 8002e0a: 881b ldrh r3, [r3, #0] + 8002e0c: b29b uxth r3, r3 + 8002e0e: ea6f 4343 mvn.w r3, r3, lsl #17 + 8002e12: ea6f 4353 mvn.w r3, r3, lsr #17 + 8002e16: b29a uxth r2, r3 + 8002e18: 6bbb ldr r3, [r7, #56] @ 0x38 + 8002e1a: 801a strh r2, [r3, #0] + 8002e1c: e035 b.n 8002e8a + 8002e1e: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8002e22: 085b lsrs r3, r3, #1 + 8002e24: 64bb str r3, [r7, #72] @ 0x48 + 8002e26: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8002e2a: f003 0301 and.w r3, r3, #1 + 8002e2e: 2b00 cmp r3, #0 + 8002e30: d002 beq.n 8002e38 + 8002e32: 6cbb ldr r3, [r7, #72] @ 0x48 + 8002e34: 3301 adds r3, #1 + 8002e36: 64bb str r3, [r7, #72] @ 0x48 + 8002e38: 6bbb ldr r3, [r7, #56] @ 0x38 + 8002e3a: 881b ldrh r3, [r3, #0] + 8002e3c: b29a uxth r2, r3 + 8002e3e: 6cbb ldr r3, [r7, #72] @ 0x48 + 8002e40: b29b uxth r3, r3 + 8002e42: 029b lsls r3, r3, #10 + 8002e44: b29b uxth r3, r3 + 8002e46: 4313 orrs r3, r2 + 8002e48: b29a uxth r2, r3 + 8002e4a: 6bbb ldr r3, [r7, #56] @ 0x38 + 8002e4c: 801a strh r2, [r3, #0] + 8002e4e: e01c b.n 8002e8a + 8002e50: 68bb ldr r3, [r7, #8] + 8002e52: 785b ldrb r3, [r3, #1] + 8002e54: 2b01 cmp r3, #1 + 8002e56: d118 bne.n 8002e8a + 8002e58: 68fb ldr r3, [r7, #12] + 8002e5a: 681b ldr r3, [r3, #0] + 8002e5c: 647b str r3, [r7, #68] @ 0x44 + 8002e5e: 68fb ldr r3, [r7, #12] + 8002e60: 681b ldr r3, [r3, #0] + 8002e62: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002e66: b29b uxth r3, r3 + 8002e68: 461a mov r2, r3 + 8002e6a: 6c7b ldr r3, [r7, #68] @ 0x44 + 8002e6c: 4413 add r3, r2 + 8002e6e: 647b str r3, [r7, #68] @ 0x44 + 8002e70: 68bb ldr r3, [r7, #8] + 8002e72: 781b ldrb r3, [r3, #0] + 8002e74: 011a lsls r2, r3, #4 + 8002e76: 6c7b ldr r3, [r7, #68] @ 0x44 + 8002e78: 4413 add r3, r2 + 8002e7a: f203 4304 addw r3, r3, #1028 @ 0x404 + 8002e7e: 643b str r3, [r7, #64] @ 0x40 + 8002e80: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8002e84: b29a uxth r2, r3 + 8002e86: 6c3b ldr r3, [r7, #64] @ 0x40 + 8002e88: 801a strh r2, [r3, #0] + + /* Copy user buffer to USB PMA */ + USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, (uint16_t)len); + 8002e8a: 68fb ldr r3, [r7, #12] + 8002e8c: 6818 ldr r0, [r3, #0] + 8002e8e: 68bb ldr r3, [r7, #8] + 8002e90: 6959 ldr r1, [r3, #20] + 8002e92: 68bb ldr r3, [r7, #8] + 8002e94: 891a ldrh r2, [r3, #8] + 8002e96: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8002e9a: b29b uxth r3, r3 + 8002e9c: f004 f81d bl 8006eda + 8002ea0: e1e2 b.n 8003268 + } + } + else /* Data Buffer1 ACK received */ + { + /* multi-packet on the NON control IN endpoint */ + TxPctSize = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); + 8002ea2: 68fb ldr r3, [r7, #12] + 8002ea4: 681b ldr r3, [r3, #0] + 8002ea6: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002eaa: b29b uxth r3, r3 + 8002eac: 461a mov r2, r3 + 8002eae: 68bb ldr r3, [r7, #8] + 8002eb0: 781b ldrb r3, [r3, #0] + 8002eb2: 00db lsls r3, r3, #3 + 8002eb4: 4413 add r3, r2 + 8002eb6: 3306 adds r3, #6 + 8002eb8: 005b lsls r3, r3, #1 + 8002eba: 68fa ldr r2, [r7, #12] + 8002ebc: 6812 ldr r2, [r2, #0] + 8002ebe: 4413 add r3, r2 + 8002ec0: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8002ec4: 881b ldrh r3, [r3, #0] + 8002ec6: f3c3 0309 ubfx r3, r3, #0, #10 + 8002eca: f8a7 3086 strh.w r3, [r7, #134] @ 0x86 + + if (ep->xfer_len >= TxPctSize) + 8002ece: 68bb ldr r3, [r7, #8] + 8002ed0: 699a ldr r2, [r3, #24] + 8002ed2: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 8002ed6: 429a cmp r2, r3 + 8002ed8: d307 bcc.n 8002eea + { + ep->xfer_len -= TxPctSize; + 8002eda: 68bb ldr r3, [r7, #8] + 8002edc: 699a ldr r2, [r3, #24] + 8002ede: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 8002ee2: 1ad2 subs r2, r2, r3 + 8002ee4: 68bb ldr r3, [r7, #8] + 8002ee6: 619a str r2, [r3, #24] + 8002ee8: e002 b.n 8002ef0 + } + else + { + ep->xfer_len = 0U; + 8002eea: 68bb ldr r3, [r7, #8] + 8002eec: 2200 movs r2, #0 + 8002eee: 619a str r2, [r3, #24] + } + + /* Transfer is completed */ + if (ep->xfer_len == 0U) + 8002ef0: 68bb ldr r3, [r7, #8] + 8002ef2: 699b ldr r3, [r3, #24] + 8002ef4: 2b00 cmp r3, #0 + 8002ef6: f040 80c0 bne.w 800307a + { + PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 8002efa: 68bb ldr r3, [r7, #8] + 8002efc: 785b ldrb r3, [r3, #1] + 8002efe: 2b00 cmp r3, #0 + 8002f00: d126 bne.n 8002f50 + 8002f02: 68fb ldr r3, [r7, #12] + 8002f04: 681b ldr r3, [r3, #0] + 8002f06: 67fb str r3, [r7, #124] @ 0x7c + 8002f08: 68fb ldr r3, [r7, #12] + 8002f0a: 681b ldr r3, [r3, #0] + 8002f0c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002f10: b29b uxth r3, r3 + 8002f12: 461a mov r2, r3 + 8002f14: 6ffb ldr r3, [r7, #124] @ 0x7c + 8002f16: 4413 add r3, r2 + 8002f18: 67fb str r3, [r7, #124] @ 0x7c + 8002f1a: 68bb ldr r3, [r7, #8] + 8002f1c: 781b ldrb r3, [r3, #0] + 8002f1e: 011a lsls r2, r3, #4 + 8002f20: 6ffb ldr r3, [r7, #124] @ 0x7c + 8002f22: 4413 add r3, r2 + 8002f24: f203 4304 addw r3, r3, #1028 @ 0x404 + 8002f28: 67bb str r3, [r7, #120] @ 0x78 + 8002f2a: 6fbb ldr r3, [r7, #120] @ 0x78 + 8002f2c: 881b ldrh r3, [r3, #0] + 8002f2e: b29b uxth r3, r3 + 8002f30: f3c3 0309 ubfx r3, r3, #0, #10 + 8002f34: b29a uxth r2, r3 + 8002f36: 6fbb ldr r3, [r7, #120] @ 0x78 + 8002f38: 801a strh r2, [r3, #0] + 8002f3a: 6fbb ldr r3, [r7, #120] @ 0x78 + 8002f3c: 881b ldrh r3, [r3, #0] + 8002f3e: b29b uxth r3, r3 + 8002f40: ea6f 4343 mvn.w r3, r3, lsl #17 + 8002f44: ea6f 4353 mvn.w r3, r3, lsr #17 + 8002f48: b29a uxth r2, r3 + 8002f4a: 6fbb ldr r3, [r7, #120] @ 0x78 + 8002f4c: 801a strh r2, [r3, #0] + 8002f4e: e01a b.n 8002f86 + 8002f50: 68bb ldr r3, [r7, #8] + 8002f52: 785b ldrb r3, [r3, #1] + 8002f54: 2b01 cmp r3, #1 + 8002f56: d116 bne.n 8002f86 + 8002f58: 68fb ldr r3, [r7, #12] + 8002f5a: 681b ldr r3, [r3, #0] + 8002f5c: 667b str r3, [r7, #100] @ 0x64 + 8002f5e: 68fb ldr r3, [r7, #12] + 8002f60: 681b ldr r3, [r3, #0] + 8002f62: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002f66: b29b uxth r3, r3 + 8002f68: 461a mov r2, r3 + 8002f6a: 6e7b ldr r3, [r7, #100] @ 0x64 + 8002f6c: 4413 add r3, r2 + 8002f6e: 667b str r3, [r7, #100] @ 0x64 + 8002f70: 68bb ldr r3, [r7, #8] + 8002f72: 781b ldrb r3, [r3, #0] + 8002f74: 011a lsls r2, r3, #4 + 8002f76: 6e7b ldr r3, [r7, #100] @ 0x64 + 8002f78: 4413 add r3, r2 + 8002f7a: f203 4304 addw r3, r3, #1028 @ 0x404 + 8002f7e: 663b str r3, [r7, #96] @ 0x60 + 8002f80: 6e3b ldr r3, [r7, #96] @ 0x60 + 8002f82: 2200 movs r2, #0 + 8002f84: 801a strh r2, [r3, #0] + PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 8002f86: 68fb ldr r3, [r7, #12] + 8002f88: 681b ldr r3, [r3, #0] + 8002f8a: 677b str r3, [r7, #116] @ 0x74 + 8002f8c: 68bb ldr r3, [r7, #8] + 8002f8e: 785b ldrb r3, [r3, #1] + 8002f90: 2b00 cmp r3, #0 + 8002f92: d12b bne.n 8002fec + 8002f94: 68fb ldr r3, [r7, #12] + 8002f96: 681b ldr r3, [r3, #0] + 8002f98: 66fb str r3, [r7, #108] @ 0x6c + 8002f9a: 68fb ldr r3, [r7, #12] + 8002f9c: 681b ldr r3, [r3, #0] + 8002f9e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002fa2: b29b uxth r3, r3 + 8002fa4: 461a mov r2, r3 + 8002fa6: 6efb ldr r3, [r7, #108] @ 0x6c + 8002fa8: 4413 add r3, r2 + 8002faa: 66fb str r3, [r7, #108] @ 0x6c + 8002fac: 68bb ldr r3, [r7, #8] + 8002fae: 781b ldrb r3, [r3, #0] + 8002fb0: 011a lsls r2, r3, #4 + 8002fb2: 6efb ldr r3, [r7, #108] @ 0x6c + 8002fb4: 4413 add r3, r2 + 8002fb6: f203 430c addw r3, r3, #1036 @ 0x40c + 8002fba: f8c7 3080 str.w r3, [r7, #128] @ 0x80 + 8002fbe: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 + 8002fc2: 881b ldrh r3, [r3, #0] + 8002fc4: b29b uxth r3, r3 + 8002fc6: f3c3 0309 ubfx r3, r3, #0, #10 + 8002fca: b29a uxth r2, r3 + 8002fcc: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 + 8002fd0: 801a strh r2, [r3, #0] + 8002fd2: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 + 8002fd6: 881b ldrh r3, [r3, #0] + 8002fd8: b29b uxth r3, r3 + 8002fda: ea6f 4343 mvn.w r3, r3, lsl #17 + 8002fde: ea6f 4353 mvn.w r3, r3, lsr #17 + 8002fe2: b29a uxth r2, r3 + 8002fe4: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 + 8002fe8: 801a strh r2, [r3, #0] + 8002fea: e017 b.n 800301c + 8002fec: 68bb ldr r3, [r7, #8] + 8002fee: 785b ldrb r3, [r3, #1] + 8002ff0: 2b01 cmp r3, #1 + 8002ff2: d113 bne.n 800301c + 8002ff4: 68fb ldr r3, [r7, #12] + 8002ff6: 681b ldr r3, [r3, #0] + 8002ff8: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002ffc: b29b uxth r3, r3 + 8002ffe: 461a mov r2, r3 + 8003000: 6f7b ldr r3, [r7, #116] @ 0x74 + 8003002: 4413 add r3, r2 + 8003004: 677b str r3, [r7, #116] @ 0x74 + 8003006: 68bb ldr r3, [r7, #8] + 8003008: 781b ldrb r3, [r3, #0] + 800300a: 011a lsls r2, r3, #4 + 800300c: 6f7b ldr r3, [r7, #116] @ 0x74 + 800300e: 4413 add r3, r2 + 8003010: f203 430c addw r3, r3, #1036 @ 0x40c + 8003014: 673b str r3, [r7, #112] @ 0x70 + 8003016: 6f3b ldr r3, [r7, #112] @ 0x70 + 8003018: 2200 movs r2, #0 + 800301a: 801a strh r2, [r3, #0] + + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataInStageCallback(hpcd, ep->num); + 800301c: 68bb ldr r3, [r7, #8] + 800301e: 781b ldrb r3, [r3, #0] + 8003020: 4619 mov r1, r3 + 8003022: 68f8 ldr r0, [r7, #12] + 8003024: f005 fe1d bl 8008c62 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + /* need to Free USB Buff */ + if ((wEPVal & USB_EP_DTOG_RX) == 0U) + 8003028: 88fb ldrh r3, [r7, #6] + 800302a: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 800302e: 2b00 cmp r3, #0 + 8003030: f040 811a bne.w 8003268 + { + PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); + 8003034: 68fb ldr r3, [r7, #12] + 8003036: 681b ldr r3, [r3, #0] + 8003038: 461a mov r2, r3 + 800303a: 68bb ldr r3, [r7, #8] + 800303c: 781b ldrb r3, [r3, #0] + 800303e: 009b lsls r3, r3, #2 + 8003040: 4413 add r3, r2 + 8003042: 881b ldrh r3, [r3, #0] + 8003044: b29b uxth r3, r3 + 8003046: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800304a: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800304e: f8a7 3088 strh.w r3, [r7, #136] @ 0x88 + 8003052: 68fb ldr r3, [r7, #12] + 8003054: 681b ldr r3, [r3, #0] + 8003056: 461a mov r2, r3 + 8003058: 68bb ldr r3, [r7, #8] + 800305a: 781b ldrb r3, [r3, #0] + 800305c: 009b lsls r3, r3, #2 + 800305e: 441a add r2, r3 + 8003060: f8b7 3088 ldrh.w r3, [r7, #136] @ 0x88 + 8003064: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8003068: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800306c: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8003070: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8003074: b29b uxth r3, r3 + 8003076: 8013 strh r3, [r2, #0] + 8003078: e0f6 b.n 8003268 + } + } + else /* Transfer is not yet Done */ + { + /* need to Free USB Buff */ + if ((wEPVal & USB_EP_DTOG_RX) == 0U) + 800307a: 88fb ldrh r3, [r7, #6] + 800307c: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8003080: 2b00 cmp r3, #0 + 8003082: d121 bne.n 80030c8 + { + PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); + 8003084: 68fb ldr r3, [r7, #12] + 8003086: 681b ldr r3, [r3, #0] + 8003088: 461a mov r2, r3 + 800308a: 68bb ldr r3, [r7, #8] + 800308c: 781b ldrb r3, [r3, #0] + 800308e: 009b lsls r3, r3, #2 + 8003090: 4413 add r3, r2 + 8003092: 881b ldrh r3, [r3, #0] + 8003094: b29b uxth r3, r3 + 8003096: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800309a: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800309e: f8a7 304e strh.w r3, [r7, #78] @ 0x4e + 80030a2: 68fb ldr r3, [r7, #12] + 80030a4: 681b ldr r3, [r3, #0] + 80030a6: 461a mov r2, r3 + 80030a8: 68bb ldr r3, [r7, #8] + 80030aa: 781b ldrb r3, [r3, #0] + 80030ac: 009b lsls r3, r3, #2 + 80030ae: 441a add r2, r3 + 80030b0: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e + 80030b4: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80030b8: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80030bc: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 80030c0: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80030c4: b29b uxth r3, r3 + 80030c6: 8013 strh r3, [r2, #0] + } + + /* Still there is data to Fill in the next Buffer */ + if (ep->xfer_fill_db == 1U) + 80030c8: 68bb ldr r3, [r7, #8] + 80030ca: f893 3024 ldrb.w r3, [r3, #36] @ 0x24 + 80030ce: 2b01 cmp r3, #1 + 80030d0: f040 80ca bne.w 8003268 + { + ep->xfer_buff += TxPctSize; + 80030d4: 68bb ldr r3, [r7, #8] + 80030d6: 695a ldr r2, [r3, #20] + 80030d8: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 80030dc: 441a add r2, r3 + 80030de: 68bb ldr r3, [r7, #8] + 80030e0: 615a str r2, [r3, #20] + ep->xfer_count += TxPctSize; + 80030e2: 68bb ldr r3, [r7, #8] + 80030e4: 69da ldr r2, [r3, #28] + 80030e6: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 80030ea: 441a add r2, r3 + 80030ec: 68bb ldr r3, [r7, #8] + 80030ee: 61da str r2, [r3, #28] + + /* Calculate the len of the new buffer to fill */ + if (ep->xfer_len_db >= ep->maxpacket) + 80030f0: 68bb ldr r3, [r7, #8] + 80030f2: 6a1a ldr r2, [r3, #32] + 80030f4: 68bb ldr r3, [r7, #8] + 80030f6: 691b ldr r3, [r3, #16] + 80030f8: 429a cmp r2, r3 + 80030fa: d30b bcc.n 8003114 + { + len = ep->maxpacket; + 80030fc: 68bb ldr r3, [r7, #8] + 80030fe: 691b ldr r3, [r3, #16] + 8003100: f8c7 308c str.w r3, [r7, #140] @ 0x8c + ep->xfer_len_db -= len; + 8003104: 68bb ldr r3, [r7, #8] + 8003106: 6a1a ldr r2, [r3, #32] + 8003108: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 800310c: 1ad2 subs r2, r2, r3 + 800310e: 68bb ldr r3, [r7, #8] + 8003110: 621a str r2, [r3, #32] + 8003112: e017 b.n 8003144 + } + else if (ep->xfer_len_db == 0U) + 8003114: 68bb ldr r3, [r7, #8] + 8003116: 6a1b ldr r3, [r3, #32] + 8003118: 2b00 cmp r3, #0 + 800311a: d108 bne.n 800312e + { + len = TxPctSize; + 800311c: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 8003120: f8c7 308c str.w r3, [r7, #140] @ 0x8c + ep->xfer_fill_db = 0U; + 8003124: 68bb ldr r3, [r7, #8] + 8003126: 2200 movs r2, #0 + 8003128: f883 2024 strb.w r2, [r3, #36] @ 0x24 + 800312c: e00a b.n 8003144 + } + else + { + len = ep->xfer_len_db; + 800312e: 68bb ldr r3, [r7, #8] + 8003130: 6a1b ldr r3, [r3, #32] + 8003132: f8c7 308c str.w r3, [r7, #140] @ 0x8c + ep->xfer_len_db = 0U; + 8003136: 68bb ldr r3, [r7, #8] + 8003138: 2200 movs r2, #0 + 800313a: 621a str r2, [r3, #32] + ep->xfer_fill_db = 0; + 800313c: 68bb ldr r3, [r7, #8] + 800313e: 2200 movs r2, #0 + 8003140: f883 2024 strb.w r2, [r3, #36] @ 0x24 + } + + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, len); + 8003144: 68fb ldr r3, [r7, #12] + 8003146: 681b ldr r3, [r3, #0] + 8003148: 657b str r3, [r7, #84] @ 0x54 + 800314a: 68bb ldr r3, [r7, #8] + 800314c: 785b ldrb r3, [r3, #1] + 800314e: 2b00 cmp r3, #0 + 8003150: d165 bne.n 800321e + 8003152: 68fb ldr r3, [r7, #12] + 8003154: 681b ldr r3, [r3, #0] + 8003156: 65fb str r3, [r7, #92] @ 0x5c + 8003158: 68fb ldr r3, [r7, #12] + 800315a: 681b ldr r3, [r3, #0] + 800315c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8003160: b29b uxth r3, r3 + 8003162: 461a mov r2, r3 + 8003164: 6dfb ldr r3, [r7, #92] @ 0x5c + 8003166: 4413 add r3, r2 + 8003168: 65fb str r3, [r7, #92] @ 0x5c + 800316a: 68bb ldr r3, [r7, #8] + 800316c: 781b ldrb r3, [r3, #0] + 800316e: 011a lsls r2, r3, #4 + 8003170: 6dfb ldr r3, [r7, #92] @ 0x5c + 8003172: 4413 add r3, r2 + 8003174: f203 430c addw r3, r3, #1036 @ 0x40c + 8003178: 65bb str r3, [r7, #88] @ 0x58 + 800317a: 6dbb ldr r3, [r7, #88] @ 0x58 + 800317c: 881b ldrh r3, [r3, #0] + 800317e: b29b uxth r3, r3 + 8003180: f3c3 0309 ubfx r3, r3, #0, #10 + 8003184: b29a uxth r2, r3 + 8003186: 6dbb ldr r3, [r7, #88] @ 0x58 + 8003188: 801a strh r2, [r3, #0] + 800318a: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 800318e: 2b3e cmp r3, #62 @ 0x3e + 8003190: d91d bls.n 80031ce + 8003192: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8003196: 095b lsrs r3, r3, #5 + 8003198: 66bb str r3, [r7, #104] @ 0x68 + 800319a: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 800319e: f003 031f and.w r3, r3, #31 + 80031a2: 2b00 cmp r3, #0 + 80031a4: d102 bne.n 80031ac + 80031a6: 6ebb ldr r3, [r7, #104] @ 0x68 + 80031a8: 3b01 subs r3, #1 + 80031aa: 66bb str r3, [r7, #104] @ 0x68 + 80031ac: 6dbb ldr r3, [r7, #88] @ 0x58 + 80031ae: 881b ldrh r3, [r3, #0] + 80031b0: b29a uxth r2, r3 + 80031b2: 6ebb ldr r3, [r7, #104] @ 0x68 + 80031b4: b29b uxth r3, r3 + 80031b6: 029b lsls r3, r3, #10 + 80031b8: b29b uxth r3, r3 + 80031ba: 4313 orrs r3, r2 + 80031bc: b29b uxth r3, r3 + 80031be: ea6f 4343 mvn.w r3, r3, lsl #17 + 80031c2: ea6f 4353 mvn.w r3, r3, lsr #17 + 80031c6: b29a uxth r2, r3 + 80031c8: 6dbb ldr r3, [r7, #88] @ 0x58 + 80031ca: 801a strh r2, [r3, #0] + 80031cc: e041 b.n 8003252 + 80031ce: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 80031d2: 2b00 cmp r3, #0 + 80031d4: d10a bne.n 80031ec + 80031d6: 6dbb ldr r3, [r7, #88] @ 0x58 + 80031d8: 881b ldrh r3, [r3, #0] + 80031da: b29b uxth r3, r3 + 80031dc: ea6f 4343 mvn.w r3, r3, lsl #17 + 80031e0: ea6f 4353 mvn.w r3, r3, lsr #17 + 80031e4: b29a uxth r2, r3 + 80031e6: 6dbb ldr r3, [r7, #88] @ 0x58 + 80031e8: 801a strh r2, [r3, #0] + 80031ea: e032 b.n 8003252 + 80031ec: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 80031f0: 085b lsrs r3, r3, #1 + 80031f2: 66bb str r3, [r7, #104] @ 0x68 + 80031f4: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 80031f8: f003 0301 and.w r3, r3, #1 + 80031fc: 2b00 cmp r3, #0 + 80031fe: d002 beq.n 8003206 + 8003200: 6ebb ldr r3, [r7, #104] @ 0x68 + 8003202: 3301 adds r3, #1 + 8003204: 66bb str r3, [r7, #104] @ 0x68 + 8003206: 6dbb ldr r3, [r7, #88] @ 0x58 + 8003208: 881b ldrh r3, [r3, #0] + 800320a: b29a uxth r2, r3 + 800320c: 6ebb ldr r3, [r7, #104] @ 0x68 + 800320e: b29b uxth r3, r3 + 8003210: 029b lsls r3, r3, #10 + 8003212: b29b uxth r3, r3 + 8003214: 4313 orrs r3, r2 + 8003216: b29a uxth r2, r3 + 8003218: 6dbb ldr r3, [r7, #88] @ 0x58 + 800321a: 801a strh r2, [r3, #0] + 800321c: e019 b.n 8003252 + 800321e: 68bb ldr r3, [r7, #8] + 8003220: 785b ldrb r3, [r3, #1] + 8003222: 2b01 cmp r3, #1 + 8003224: d115 bne.n 8003252 + 8003226: 68fb ldr r3, [r7, #12] + 8003228: 681b ldr r3, [r3, #0] + 800322a: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800322e: b29b uxth r3, r3 + 8003230: 461a mov r2, r3 + 8003232: 6d7b ldr r3, [r7, #84] @ 0x54 + 8003234: 4413 add r3, r2 + 8003236: 657b str r3, [r7, #84] @ 0x54 + 8003238: 68bb ldr r3, [r7, #8] + 800323a: 781b ldrb r3, [r3, #0] + 800323c: 011a lsls r2, r3, #4 + 800323e: 6d7b ldr r3, [r7, #84] @ 0x54 + 8003240: 4413 add r3, r2 + 8003242: f203 430c addw r3, r3, #1036 @ 0x40c + 8003246: 653b str r3, [r7, #80] @ 0x50 + 8003248: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 800324c: b29a uxth r2, r3 + 800324e: 6d3b ldr r3, [r7, #80] @ 0x50 + 8003250: 801a strh r2, [r3, #0] + + /* Copy the user buffer to USB PMA */ + USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, (uint16_t)len); + 8003252: 68fb ldr r3, [r7, #12] + 8003254: 6818 ldr r0, [r3, #0] + 8003256: 68bb ldr r3, [r7, #8] + 8003258: 6959 ldr r1, [r3, #20] + 800325a: 68bb ldr r3, [r7, #8] + 800325c: 895a ldrh r2, [r3, #10] + 800325e: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8003262: b29b uxth r3, r3 + 8003264: f003 fe39 bl 8006eda + } + } + } + + /*enable endpoint IN*/ + PCD_SET_EP_TX_STATUS(hpcd->Instance, ep->num, USB_EP_TX_VALID); + 8003268: 68fb ldr r3, [r7, #12] + 800326a: 681b ldr r3, [r3, #0] + 800326c: 461a mov r2, r3 + 800326e: 68bb ldr r3, [r7, #8] + 8003270: 781b ldrb r3, [r3, #0] + 8003272: 009b lsls r3, r3, #2 + 8003274: 4413 add r3, r2 + 8003276: 881b ldrh r3, [r3, #0] + 8003278: b29b uxth r3, r3 + 800327a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800327e: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8003282: 82bb strh r3, [r7, #20] + 8003284: 8abb ldrh r3, [r7, #20] + 8003286: f083 0310 eor.w r3, r3, #16 + 800328a: 82bb strh r3, [r7, #20] + 800328c: 8abb ldrh r3, [r7, #20] + 800328e: f083 0320 eor.w r3, r3, #32 + 8003292: 82bb strh r3, [r7, #20] + 8003294: 68fb ldr r3, [r7, #12] + 8003296: 681b ldr r3, [r3, #0] + 8003298: 461a mov r2, r3 + 800329a: 68bb ldr r3, [r7, #8] + 800329c: 781b ldrb r3, [r3, #0] + 800329e: 009b lsls r3, r3, #2 + 80032a0: 441a add r2, r3 + 80032a2: 8abb ldrh r3, [r7, #20] + 80032a4: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80032a8: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80032ac: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 80032b0: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80032b4: b29b uxth r3, r3 + 80032b6: 8013 strh r3, [r2, #0] + + return HAL_OK; + 80032b8: 2300 movs r3, #0 +} + 80032ba: 4618 mov r0, r3 + 80032bc: 3790 adds r7, #144 @ 0x90 + 80032be: 46bd mov sp, r7 + 80032c0: bd80 pop {r7, pc} + +080032c2 : + * @retval HAL status + */ + +HAL_StatusTypeDef HAL_PCDEx_PMAConfig(PCD_HandleTypeDef *hpcd, uint16_t ep_addr, + uint16_t ep_kind, uint32_t pmaadress) +{ + 80032c2: b480 push {r7} + 80032c4: b087 sub sp, #28 + 80032c6: af00 add r7, sp, #0 + 80032c8: 60f8 str r0, [r7, #12] + 80032ca: 607b str r3, [r7, #4] + 80032cc: 460b mov r3, r1 + 80032ce: 817b strh r3, [r7, #10] + 80032d0: 4613 mov r3, r2 + 80032d2: 813b strh r3, [r7, #8] + PCD_EPTypeDef *ep; + + /* initialize ep structure*/ + if ((0x80U & ep_addr) == 0x80U) + 80032d4: 897b ldrh r3, [r7, #10] + 80032d6: f003 0380 and.w r3, r3, #128 @ 0x80 + 80032da: b29b uxth r3, r3 + 80032dc: 2b00 cmp r3, #0 + 80032de: d00b beq.n 80032f8 + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 80032e0: 897b ldrh r3, [r7, #10] + 80032e2: f003 0207 and.w r2, r3, #7 + 80032e6: 4613 mov r3, r2 + 80032e8: 009b lsls r3, r3, #2 + 80032ea: 4413 add r3, r2 + 80032ec: 00db lsls r3, r3, #3 + 80032ee: 3310 adds r3, #16 + 80032f0: 68fa ldr r2, [r7, #12] + 80032f2: 4413 add r3, r2 + 80032f4: 617b str r3, [r7, #20] + 80032f6: e009 b.n 800330c + } + else + { + ep = &hpcd->OUT_ep[ep_addr]; + 80032f8: 897a ldrh r2, [r7, #10] + 80032fa: 4613 mov r3, r2 + 80032fc: 009b lsls r3, r3, #2 + 80032fe: 4413 add r3, r2 + 8003300: 00db lsls r3, r3, #3 + 8003302: f503 73a8 add.w r3, r3, #336 @ 0x150 + 8003306: 68fa ldr r2, [r7, #12] + 8003308: 4413 add r3, r2 + 800330a: 617b str r3, [r7, #20] + } + + /* Here we check if the endpoint is single or double Buffer*/ + if (ep_kind == PCD_SNG_BUF) + 800330c: 893b ldrh r3, [r7, #8] + 800330e: 2b00 cmp r3, #0 + 8003310: d107 bne.n 8003322 + { + /* Single Buffer */ + ep->doublebuffer = 0U; + 8003312: 697b ldr r3, [r7, #20] + 8003314: 2200 movs r2, #0 + 8003316: 731a strb r2, [r3, #12] + /* Configure the PMA */ + ep->pmaadress = (uint16_t)pmaadress; + 8003318: 687b ldr r3, [r7, #4] + 800331a: b29a uxth r2, r3 + 800331c: 697b ldr r3, [r7, #20] + 800331e: 80da strh r2, [r3, #6] + 8003320: e00b b.n 800333a + } +#if (USE_USB_DOUBLE_BUFFER == 1U) + else /* USB_DBL_BUF */ + { + /* Double Buffer Endpoint */ + ep->doublebuffer = 1U; + 8003322: 697b ldr r3, [r7, #20] + 8003324: 2201 movs r2, #1 + 8003326: 731a strb r2, [r3, #12] + /* Configure the PMA */ + ep->pmaaddr0 = (uint16_t)(pmaadress & 0xFFFFU); + 8003328: 687b ldr r3, [r7, #4] + 800332a: b29a uxth r2, r3 + 800332c: 697b ldr r3, [r7, #20] + 800332e: 811a strh r2, [r3, #8] + ep->pmaaddr1 = (uint16_t)((pmaadress & 0xFFFF0000U) >> 16); + 8003330: 687b ldr r3, [r7, #4] + 8003332: 0c1b lsrs r3, r3, #16 + 8003334: b29a uxth r2, r3 + 8003336: 697b ldr r3, [r7, #20] + 8003338: 815a strh r2, [r3, #10] + } +#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ + + return HAL_OK; + 800333a: 2300 movs r3, #0 +} + 800333c: 4618 mov r0, r3 + 800333e: 371c adds r7, #28 + 8003340: 46bd mov sp, r7 + 8003342: bc80 pop {r7} + 8003344: 4770 bx lr + ... + +08003348 : + * supported by this macro. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + 8003348: b580 push {r7, lr} + 800334a: b086 sub sp, #24 + 800334c: af00 add r7, sp, #0 + 800334e: 6078 str r0, [r7, #4] + uint32_t tickstart; + uint32_t pll_config; + + /* Check Null pointer */ + if (RCC_OscInitStruct == NULL) + 8003350: 687b ldr r3, [r7, #4] + 8003352: 2b00 cmp r3, #0 + 8003354: d101 bne.n 800335a + { + return HAL_ERROR; + 8003356: 2301 movs r3, #1 + 8003358: e272 b.n 8003840 + + /* Check the parameters */ + assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + + /*------------------------------- HSE Configuration ------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + 800335a: 687b ldr r3, [r7, #4] + 800335c: 681b ldr r3, [r3, #0] + 800335e: f003 0301 and.w r3, r3, #1 + 8003362: 2b00 cmp r3, #0 + 8003364: f000 8087 beq.w 8003476 + { + /* Check the parameters */ + assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); + + /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ + if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE) + 8003368: 4b92 ldr r3, [pc, #584] @ (80035b4 ) + 800336a: 685b ldr r3, [r3, #4] + 800336c: f003 030c and.w r3, r3, #12 + 8003370: 2b04 cmp r3, #4 + 8003372: d00c beq.n 800338e + || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSE))) + 8003374: 4b8f ldr r3, [pc, #572] @ (80035b4 ) + 8003376: 685b ldr r3, [r3, #4] + 8003378: f003 030c and.w r3, r3, #12 + 800337c: 2b08 cmp r3, #8 + 800337e: d112 bne.n 80033a6 + 8003380: 4b8c ldr r3, [pc, #560] @ (80035b4 ) + 8003382: 685b ldr r3, [r3, #4] + 8003384: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8003388: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 800338c: d10b bne.n 80033a6 + { + if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 800338e: 4b89 ldr r3, [pc, #548] @ (80035b4 ) + 8003390: 681b ldr r3, [r3, #0] + 8003392: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8003396: 2b00 cmp r3, #0 + 8003398: d06c beq.n 8003474 + 800339a: 687b ldr r3, [r7, #4] + 800339c: 685b ldr r3, [r3, #4] + 800339e: 2b00 cmp r3, #0 + 80033a0: d168 bne.n 8003474 + { + return HAL_ERROR; + 80033a2: 2301 movs r3, #1 + 80033a4: e24c b.n 8003840 + } + } + else + { + /* Set the new HSE configuration ---------------------------------------*/ + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + 80033a6: 687b ldr r3, [r7, #4] + 80033a8: 685b ldr r3, [r3, #4] + 80033aa: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 80033ae: d106 bne.n 80033be + 80033b0: 4b80 ldr r3, [pc, #512] @ (80035b4 ) + 80033b2: 681b ldr r3, [r3, #0] + 80033b4: 4a7f ldr r2, [pc, #508] @ (80035b4 ) + 80033b6: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 80033ba: 6013 str r3, [r2, #0] + 80033bc: e02e b.n 800341c + 80033be: 687b ldr r3, [r7, #4] + 80033c0: 685b ldr r3, [r3, #4] + 80033c2: 2b00 cmp r3, #0 + 80033c4: d10c bne.n 80033e0 + 80033c6: 4b7b ldr r3, [pc, #492] @ (80035b4 ) + 80033c8: 681b ldr r3, [r3, #0] + 80033ca: 4a7a ldr r2, [pc, #488] @ (80035b4 ) + 80033cc: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 80033d0: 6013 str r3, [r2, #0] + 80033d2: 4b78 ldr r3, [pc, #480] @ (80035b4 ) + 80033d4: 681b ldr r3, [r3, #0] + 80033d6: 4a77 ldr r2, [pc, #476] @ (80035b4 ) + 80033d8: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 80033dc: 6013 str r3, [r2, #0] + 80033de: e01d b.n 800341c + 80033e0: 687b ldr r3, [r7, #4] + 80033e2: 685b ldr r3, [r3, #4] + 80033e4: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 + 80033e8: d10c bne.n 8003404 + 80033ea: 4b72 ldr r3, [pc, #456] @ (80035b4 ) + 80033ec: 681b ldr r3, [r3, #0] + 80033ee: 4a71 ldr r2, [pc, #452] @ (80035b4 ) + 80033f0: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 80033f4: 6013 str r3, [r2, #0] + 80033f6: 4b6f ldr r3, [pc, #444] @ (80035b4 ) + 80033f8: 681b ldr r3, [r3, #0] + 80033fa: 4a6e ldr r2, [pc, #440] @ (80035b4 ) + 80033fc: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8003400: 6013 str r3, [r2, #0] + 8003402: e00b b.n 800341c + 8003404: 4b6b ldr r3, [pc, #428] @ (80035b4 ) + 8003406: 681b ldr r3, [r3, #0] + 8003408: 4a6a ldr r2, [pc, #424] @ (80035b4 ) + 800340a: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 800340e: 6013 str r3, [r2, #0] + 8003410: 4b68 ldr r3, [pc, #416] @ (80035b4 ) + 8003412: 681b ldr r3, [r3, #0] + 8003414: 4a67 ldr r2, [pc, #412] @ (80035b4 ) + 8003416: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 800341a: 6013 str r3, [r2, #0] + + + /* Check the HSE State */ + if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + 800341c: 687b ldr r3, [r7, #4] + 800341e: 685b ldr r3, [r3, #4] + 8003420: 2b00 cmp r3, #0 + 8003422: d013 beq.n 800344c + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8003424: f7fd fd4a bl 8000ebc + 8003428: 6138 str r0, [r7, #16] + + /* Wait till HSE is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) + 800342a: e008 b.n 800343e + { + if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) + 800342c: f7fd fd46 bl 8000ebc + 8003430: 4602 mov r2, r0 + 8003432: 693b ldr r3, [r7, #16] + 8003434: 1ad3 subs r3, r2, r3 + 8003436: 2b64 cmp r3, #100 @ 0x64 + 8003438: d901 bls.n 800343e + { + return HAL_TIMEOUT; + 800343a: 2303 movs r3, #3 + 800343c: e200 b.n 8003840 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) + 800343e: 4b5d ldr r3, [pc, #372] @ (80035b4 ) + 8003440: 681b ldr r3, [r3, #0] + 8003442: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8003446: 2b00 cmp r3, #0 + 8003448: d0f0 beq.n 800342c + 800344a: e014 b.n 8003476 + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800344c: f7fd fd36 bl 8000ebc + 8003450: 6138 str r0, [r7, #16] + + /* Wait till HSE is disabled */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) + 8003452: e008 b.n 8003466 + { + if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) + 8003454: f7fd fd32 bl 8000ebc + 8003458: 4602 mov r2, r0 + 800345a: 693b ldr r3, [r7, #16] + 800345c: 1ad3 subs r3, r2, r3 + 800345e: 2b64 cmp r3, #100 @ 0x64 + 8003460: d901 bls.n 8003466 + { + return HAL_TIMEOUT; + 8003462: 2303 movs r3, #3 + 8003464: e1ec b.n 8003840 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) + 8003466: 4b53 ldr r3, [pc, #332] @ (80035b4 ) + 8003468: 681b ldr r3, [r3, #0] + 800346a: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 800346e: 2b00 cmp r3, #0 + 8003470: d1f0 bne.n 8003454 + 8003472: e000 b.n 8003476 + if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 8003474: bf00 nop + } + } + } + } + /*----------------------------- HSI Configuration --------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + 8003476: 687b ldr r3, [r7, #4] + 8003478: 681b ldr r3, [r3, #0] + 800347a: f003 0302 and.w r3, r3, #2 + 800347e: 2b00 cmp r3, #0 + 8003480: d063 beq.n 800354a + /* Check the parameters */ + assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + + /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ + if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI) + 8003482: 4b4c ldr r3, [pc, #304] @ (80035b4 ) + 8003484: 685b ldr r3, [r3, #4] + 8003486: f003 030c and.w r3, r3, #12 + 800348a: 2b00 cmp r3, #0 + 800348c: d00b beq.n 80034a6 + || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSI_DIV2))) + 800348e: 4b49 ldr r3, [pc, #292] @ (80035b4 ) + 8003490: 685b ldr r3, [r3, #4] + 8003492: f003 030c and.w r3, r3, #12 + 8003496: 2b08 cmp r3, #8 + 8003498: d11c bne.n 80034d4 + 800349a: 4b46 ldr r3, [pc, #280] @ (80035b4 ) + 800349c: 685b ldr r3, [r3, #4] + 800349e: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 80034a2: 2b00 cmp r3, #0 + 80034a4: d116 bne.n 80034d4 + { + /* 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)) + 80034a6: 4b43 ldr r3, [pc, #268] @ (80035b4 ) + 80034a8: 681b ldr r3, [r3, #0] + 80034aa: f003 0302 and.w r3, r3, #2 + 80034ae: 2b00 cmp r3, #0 + 80034b0: d005 beq.n 80034be + 80034b2: 687b ldr r3, [r7, #4] + 80034b4: 691b ldr r3, [r3, #16] + 80034b6: 2b01 cmp r3, #1 + 80034b8: d001 beq.n 80034be + { + return HAL_ERROR; + 80034ba: 2301 movs r3, #1 + 80034bc: e1c0 b.n 8003840 + } + /* Otherwise, just the calibration is allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 80034be: 4b3d ldr r3, [pc, #244] @ (80035b4 ) + 80034c0: 681b ldr r3, [r3, #0] + 80034c2: f023 02f8 bic.w r2, r3, #248 @ 0xf8 + 80034c6: 687b ldr r3, [r7, #4] + 80034c8: 695b ldr r3, [r3, #20] + 80034ca: 00db lsls r3, r3, #3 + 80034cc: 4939 ldr r1, [pc, #228] @ (80035b4 ) + 80034ce: 4313 orrs r3, r2 + 80034d0: 600b str r3, [r1, #0] + if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 80034d2: e03a b.n 800354a + } + } + else + { + /* Check the HSI State */ + if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF) + 80034d4: 687b ldr r3, [r7, #4] + 80034d6: 691b ldr r3, [r3, #16] + 80034d8: 2b00 cmp r3, #0 + 80034da: d020 beq.n 800351e + { + /* Enable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_ENABLE(); + 80034dc: 4b36 ldr r3, [pc, #216] @ (80035b8 ) + 80034de: 2201 movs r2, #1 + 80034e0: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80034e2: f7fd fceb bl 8000ebc + 80034e6: 6138 str r0, [r7, #16] + + /* Wait till HSI is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) + 80034e8: e008 b.n 80034fc + { + if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) + 80034ea: f7fd fce7 bl 8000ebc + 80034ee: 4602 mov r2, r0 + 80034f0: 693b ldr r3, [r7, #16] + 80034f2: 1ad3 subs r3, r2, r3 + 80034f4: 2b02 cmp r3, #2 + 80034f6: d901 bls.n 80034fc + { + return HAL_TIMEOUT; + 80034f8: 2303 movs r3, #3 + 80034fa: e1a1 b.n 8003840 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) + 80034fc: 4b2d ldr r3, [pc, #180] @ (80035b4 ) + 80034fe: 681b ldr r3, [r3, #0] + 8003500: f003 0302 and.w r3, r3, #2 + 8003504: 2b00 cmp r3, #0 + 8003506: d0f0 beq.n 80034ea + } + } + + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 8003508: 4b2a ldr r3, [pc, #168] @ (80035b4 ) + 800350a: 681b ldr r3, [r3, #0] + 800350c: f023 02f8 bic.w r2, r3, #248 @ 0xf8 + 8003510: 687b ldr r3, [r7, #4] + 8003512: 695b ldr r3, [r3, #20] + 8003514: 00db lsls r3, r3, #3 + 8003516: 4927 ldr r1, [pc, #156] @ (80035b4 ) + 8003518: 4313 orrs r3, r2 + 800351a: 600b str r3, [r1, #0] + 800351c: e015 b.n 800354a + } + else + { + /* Disable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_DISABLE(); + 800351e: 4b26 ldr r3, [pc, #152] @ (80035b8 ) + 8003520: 2200 movs r2, #0 + 8003522: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8003524: f7fd fcca bl 8000ebc + 8003528: 6138 str r0, [r7, #16] + + /* Wait till HSI is disabled */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) + 800352a: e008 b.n 800353e + { + if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) + 800352c: f7fd fcc6 bl 8000ebc + 8003530: 4602 mov r2, r0 + 8003532: 693b ldr r3, [r7, #16] + 8003534: 1ad3 subs r3, r2, r3 + 8003536: 2b02 cmp r3, #2 + 8003538: d901 bls.n 800353e + { + return HAL_TIMEOUT; + 800353a: 2303 movs r3, #3 + 800353c: e180 b.n 8003840 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) + 800353e: 4b1d ldr r3, [pc, #116] @ (80035b4 ) + 8003540: 681b ldr r3, [r3, #0] + 8003542: f003 0302 and.w r3, r3, #2 + 8003546: 2b00 cmp r3, #0 + 8003548: d1f0 bne.n 800352c + } + } + } + } + /*------------------------------ LSI Configuration -------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + 800354a: 687b ldr r3, [r7, #4] + 800354c: 681b ldr r3, [r3, #0] + 800354e: f003 0308 and.w r3, r3, #8 + 8003552: 2b00 cmp r3, #0 + 8003554: d03a beq.n 80035cc + { + /* Check the parameters */ + assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + + /* Check the LSI State */ + if (RCC_OscInitStruct->LSIState != RCC_LSI_OFF) + 8003556: 687b ldr r3, [r7, #4] + 8003558: 699b ldr r3, [r3, #24] + 800355a: 2b00 cmp r3, #0 + 800355c: d019 beq.n 8003592 + { + /* Enable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_ENABLE(); + 800355e: 4b17 ldr r3, [pc, #92] @ (80035bc ) + 8003560: 2201 movs r2, #1 + 8003562: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8003564: f7fd fcaa bl 8000ebc + 8003568: 6138 str r0, [r7, #16] + + /* Wait till LSI is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) + 800356a: e008 b.n 800357e + { + if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) + 800356c: f7fd fca6 bl 8000ebc + 8003570: 4602 mov r2, r0 + 8003572: 693b ldr r3, [r7, #16] + 8003574: 1ad3 subs r3, r2, r3 + 8003576: 2b02 cmp r3, #2 + 8003578: d901 bls.n 800357e + { + return HAL_TIMEOUT; + 800357a: 2303 movs r3, #3 + 800357c: e160 b.n 8003840 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) + 800357e: 4b0d ldr r3, [pc, #52] @ (80035b4 ) + 8003580: 6a5b ldr r3, [r3, #36] @ 0x24 + 8003582: f003 0302 and.w r3, r3, #2 + 8003586: 2b00 cmp r3, #0 + 8003588: d0f0 beq.n 800356c + } + } + /* To have a fully stabilized clock in the specified range, a software delay of 1ms + should be added.*/ + RCC_Delay(1); + 800358a: 2001 movs r0, #1 + 800358c: f000 fa9c bl 8003ac8 + 8003590: e01c b.n 80035cc + } + else + { + /* Disable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_DISABLE(); + 8003592: 4b0a ldr r3, [pc, #40] @ (80035bc ) + 8003594: 2200 movs r2, #0 + 8003596: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8003598: f7fd fc90 bl 8000ebc + 800359c: 6138 str r0, [r7, #16] + + /* Wait till LSI is disabled */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) + 800359e: e00f b.n 80035c0 + { + if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) + 80035a0: f7fd fc8c bl 8000ebc + 80035a4: 4602 mov r2, r0 + 80035a6: 693b ldr r3, [r7, #16] + 80035a8: 1ad3 subs r3, r2, r3 + 80035aa: 2b02 cmp r3, #2 + 80035ac: d908 bls.n 80035c0 + { + return HAL_TIMEOUT; + 80035ae: 2303 movs r3, #3 + 80035b0: e146 b.n 8003840 + 80035b2: bf00 nop + 80035b4: 40021000 .word 0x40021000 + 80035b8: 42420000 .word 0x42420000 + 80035bc: 42420480 .word 0x42420480 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) + 80035c0: 4b92 ldr r3, [pc, #584] @ (800380c ) + 80035c2: 6a5b ldr r3, [r3, #36] @ 0x24 + 80035c4: f003 0302 and.w r3, r3, #2 + 80035c8: 2b00 cmp r3, #0 + 80035ca: d1e9 bne.n 80035a0 + } + } + } + } + /*------------------------------ LSE Configuration -------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + 80035cc: 687b ldr r3, [r7, #4] + 80035ce: 681b ldr r3, [r3, #0] + 80035d0: f003 0304 and.w r3, r3, #4 + 80035d4: 2b00 cmp r3, #0 + 80035d6: f000 80a6 beq.w 8003726 + { + FlagStatus pwrclkchanged = RESET; + 80035da: 2300 movs r3, #0 + 80035dc: 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()) + 80035de: 4b8b ldr r3, [pc, #556] @ (800380c ) + 80035e0: 69db ldr r3, [r3, #28] + 80035e2: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80035e6: 2b00 cmp r3, #0 + 80035e8: d10d bne.n 8003606 + { + __HAL_RCC_PWR_CLK_ENABLE(); + 80035ea: 4b88 ldr r3, [pc, #544] @ (800380c ) + 80035ec: 69db ldr r3, [r3, #28] + 80035ee: 4a87 ldr r2, [pc, #540] @ (800380c ) + 80035f0: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 80035f4: 61d3 str r3, [r2, #28] + 80035f6: 4b85 ldr r3, [pc, #532] @ (800380c ) + 80035f8: 69db ldr r3, [r3, #28] + 80035fa: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80035fe: 60bb str r3, [r7, #8] + 8003600: 68bb ldr r3, [r7, #8] + pwrclkchanged = SET; + 8003602: 2301 movs r3, #1 + 8003604: 75fb strb r3, [r7, #23] + } + + if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8003606: 4b82 ldr r3, [pc, #520] @ (8003810 ) + 8003608: 681b ldr r3, [r3, #0] + 800360a: f403 7380 and.w r3, r3, #256 @ 0x100 + 800360e: 2b00 cmp r3, #0 + 8003610: d118 bne.n 8003644 + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 8003612: 4b7f ldr r3, [pc, #508] @ (8003810 ) + 8003614: 681b ldr r3, [r3, #0] + 8003616: 4a7e ldr r2, [pc, #504] @ (8003810 ) + 8003618: f443 7380 orr.w r3, r3, #256 @ 0x100 + 800361c: 6013 str r3, [r2, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 800361e: f7fd fc4d bl 8000ebc + 8003622: 6138 str r0, [r7, #16] + + while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8003624: e008 b.n 8003638 + { + if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 8003626: f7fd fc49 bl 8000ebc + 800362a: 4602 mov r2, r0 + 800362c: 693b ldr r3, [r7, #16] + 800362e: 1ad3 subs r3, r2, r3 + 8003630: 2b64 cmp r3, #100 @ 0x64 + 8003632: d901 bls.n 8003638 + { + return HAL_TIMEOUT; + 8003634: 2303 movs r3, #3 + 8003636: e103 b.n 8003840 + while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8003638: 4b75 ldr r3, [pc, #468] @ (8003810 ) + 800363a: 681b ldr r3, [r3, #0] + 800363c: f403 7380 and.w r3, r3, #256 @ 0x100 + 8003640: 2b00 cmp r3, #0 + 8003642: d0f0 beq.n 8003626 + } + } + } + + /* Set the new LSE configuration -----------------------------------------*/ + __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + 8003644: 687b ldr r3, [r7, #4] + 8003646: 68db ldr r3, [r3, #12] + 8003648: 2b01 cmp r3, #1 + 800364a: d106 bne.n 800365a + 800364c: 4b6f ldr r3, [pc, #444] @ (800380c ) + 800364e: 6a1b ldr r3, [r3, #32] + 8003650: 4a6e ldr r2, [pc, #440] @ (800380c ) + 8003652: f043 0301 orr.w r3, r3, #1 + 8003656: 6213 str r3, [r2, #32] + 8003658: e02d b.n 80036b6 + 800365a: 687b ldr r3, [r7, #4] + 800365c: 68db ldr r3, [r3, #12] + 800365e: 2b00 cmp r3, #0 + 8003660: d10c bne.n 800367c + 8003662: 4b6a ldr r3, [pc, #424] @ (800380c ) + 8003664: 6a1b ldr r3, [r3, #32] + 8003666: 4a69 ldr r2, [pc, #420] @ (800380c ) + 8003668: f023 0301 bic.w r3, r3, #1 + 800366c: 6213 str r3, [r2, #32] + 800366e: 4b67 ldr r3, [pc, #412] @ (800380c ) + 8003670: 6a1b ldr r3, [r3, #32] + 8003672: 4a66 ldr r2, [pc, #408] @ (800380c ) + 8003674: f023 0304 bic.w r3, r3, #4 + 8003678: 6213 str r3, [r2, #32] + 800367a: e01c b.n 80036b6 + 800367c: 687b ldr r3, [r7, #4] + 800367e: 68db ldr r3, [r3, #12] + 8003680: 2b05 cmp r3, #5 + 8003682: d10c bne.n 800369e + 8003684: 4b61 ldr r3, [pc, #388] @ (800380c ) + 8003686: 6a1b ldr r3, [r3, #32] + 8003688: 4a60 ldr r2, [pc, #384] @ (800380c ) + 800368a: f043 0304 orr.w r3, r3, #4 + 800368e: 6213 str r3, [r2, #32] + 8003690: 4b5e ldr r3, [pc, #376] @ (800380c ) + 8003692: 6a1b ldr r3, [r3, #32] + 8003694: 4a5d ldr r2, [pc, #372] @ (800380c ) + 8003696: f043 0301 orr.w r3, r3, #1 + 800369a: 6213 str r3, [r2, #32] + 800369c: e00b b.n 80036b6 + 800369e: 4b5b ldr r3, [pc, #364] @ (800380c ) + 80036a0: 6a1b ldr r3, [r3, #32] + 80036a2: 4a5a ldr r2, [pc, #360] @ (800380c ) + 80036a4: f023 0301 bic.w r3, r3, #1 + 80036a8: 6213 str r3, [r2, #32] + 80036aa: 4b58 ldr r3, [pc, #352] @ (800380c ) + 80036ac: 6a1b ldr r3, [r3, #32] + 80036ae: 4a57 ldr r2, [pc, #348] @ (800380c ) + 80036b0: f023 0304 bic.w r3, r3, #4 + 80036b4: 6213 str r3, [r2, #32] + /* Check the LSE State */ + if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF) + 80036b6: 687b ldr r3, [r7, #4] + 80036b8: 68db ldr r3, [r3, #12] + 80036ba: 2b00 cmp r3, #0 + 80036bc: d015 beq.n 80036ea + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80036be: f7fd fbfd bl 8000ebc + 80036c2: 6138 str r0, [r7, #16] + + /* Wait till LSE is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + 80036c4: e00a b.n 80036dc + { + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + 80036c6: f7fd fbf9 bl 8000ebc + 80036ca: 4602 mov r2, r0 + 80036cc: 693b ldr r3, [r7, #16] + 80036ce: 1ad3 subs r3, r2, r3 + 80036d0: f241 3288 movw r2, #5000 @ 0x1388 + 80036d4: 4293 cmp r3, r2 + 80036d6: d901 bls.n 80036dc + { + return HAL_TIMEOUT; + 80036d8: 2303 movs r3, #3 + 80036da: e0b1 b.n 8003840 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + 80036dc: 4b4b ldr r3, [pc, #300] @ (800380c ) + 80036de: 6a1b ldr r3, [r3, #32] + 80036e0: f003 0302 and.w r3, r3, #2 + 80036e4: 2b00 cmp r3, #0 + 80036e6: d0ee beq.n 80036c6 + 80036e8: e014 b.n 8003714 + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80036ea: f7fd fbe7 bl 8000ebc + 80036ee: 6138 str r0, [r7, #16] + + /* Wait till LSE is disabled */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) + 80036f0: e00a b.n 8003708 + { + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + 80036f2: f7fd fbe3 bl 8000ebc + 80036f6: 4602 mov r2, r0 + 80036f8: 693b ldr r3, [r7, #16] + 80036fa: 1ad3 subs r3, r2, r3 + 80036fc: f241 3288 movw r2, #5000 @ 0x1388 + 8003700: 4293 cmp r3, r2 + 8003702: d901 bls.n 8003708 + { + return HAL_TIMEOUT; + 8003704: 2303 movs r3, #3 + 8003706: e09b b.n 8003840 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) + 8003708: 4b40 ldr r3, [pc, #256] @ (800380c ) + 800370a: 6a1b ldr r3, [r3, #32] + 800370c: f003 0302 and.w r3, r3, #2 + 8003710: 2b00 cmp r3, #0 + 8003712: d1ee bne.n 80036f2 + } + } + } + + /* Require to disable power clock if necessary */ + if (pwrclkchanged == SET) + 8003714: 7dfb ldrb r3, [r7, #23] + 8003716: 2b01 cmp r3, #1 + 8003718: d105 bne.n 8003726 + { + __HAL_RCC_PWR_CLK_DISABLE(); + 800371a: 4b3c ldr r3, [pc, #240] @ (800380c ) + 800371c: 69db ldr r3, [r3, #28] + 800371e: 4a3b ldr r2, [pc, #236] @ (800380c ) + 8003720: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8003724: 61d3 str r3, [r2, #28] + +#endif /* RCC_CR_PLL2ON */ + /*-------------------------------- PLL Configuration -----------------------*/ + /* Check the parameters */ + assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) + 8003726: 687b ldr r3, [r7, #4] + 8003728: 69db ldr r3, [r3, #28] + 800372a: 2b00 cmp r3, #0 + 800372c: f000 8087 beq.w 800383e + { + /* Check if the PLL is used as system clock or not */ + if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8003730: 4b36 ldr r3, [pc, #216] @ (800380c ) + 8003732: 685b ldr r3, [r3, #4] + 8003734: f003 030c and.w r3, r3, #12 + 8003738: 2b08 cmp r3, #8 + 800373a: d061 beq.n 8003800 + { + if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) + 800373c: 687b ldr r3, [r7, #4] + 800373e: 69db ldr r3, [r3, #28] + 8003740: 2b02 cmp r3, #2 + 8003742: d146 bne.n 80037d2 + /* Check the parameters */ + assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); + assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); + + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 8003744: 4b33 ldr r3, [pc, #204] @ (8003814 ) + 8003746: 2200 movs r2, #0 + 8003748: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800374a: f7fd fbb7 bl 8000ebc + 800374e: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) + 8003750: e008 b.n 8003764 + { + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + 8003752: f7fd fbb3 bl 8000ebc + 8003756: 4602 mov r2, r0 + 8003758: 693b ldr r3, [r7, #16] + 800375a: 1ad3 subs r3, r2, r3 + 800375c: 2b02 cmp r3, #2 + 800375e: d901 bls.n 8003764 + { + return HAL_TIMEOUT; + 8003760: 2303 movs r3, #3 + 8003762: e06d b.n 8003840 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) + 8003764: 4b29 ldr r3, [pc, #164] @ (800380c ) + 8003766: 681b ldr r3, [r3, #0] + 8003768: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 800376c: 2b00 cmp r3, #0 + 800376e: d1f0 bne.n 8003752 + } + } + + /* Configure the HSE prediv factor --------------------------------*/ + /* It can be written only when the PLL is disabled. Not used in PLL source is different than HSE */ + if (RCC_OscInitStruct->PLL.PLLSource == RCC_PLLSOURCE_HSE) + 8003770: 687b ldr r3, [r7, #4] + 8003772: 6a1b ldr r3, [r3, #32] + 8003774: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8003778: d108 bne.n 800378c + /* Set PREDIV1 source */ + SET_BIT(RCC->CFGR2, RCC_OscInitStruct->Prediv1Source); +#endif /* RCC_CFGR2_PREDIV1SRC */ + + /* Set PREDIV1 Value */ + __HAL_RCC_HSE_PREDIV_CONFIG(RCC_OscInitStruct->HSEPredivValue); + 800377a: 4b24 ldr r3, [pc, #144] @ (800380c ) + 800377c: 685b ldr r3, [r3, #4] + 800377e: f423 3200 bic.w r2, r3, #131072 @ 0x20000 + 8003782: 687b ldr r3, [r7, #4] + 8003784: 689b ldr r3, [r3, #8] + 8003786: 4921 ldr r1, [pc, #132] @ (800380c ) + 8003788: 4313 orrs r3, r2 + 800378a: 604b str r3, [r1, #4] + } + + /* Configure the main PLL clock source and multiplication factors. */ + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + 800378c: 4b1f ldr r3, [pc, #124] @ (800380c ) + 800378e: 685b ldr r3, [r3, #4] + 8003790: f423 1274 bic.w r2, r3, #3997696 @ 0x3d0000 + 8003794: 687b ldr r3, [r7, #4] + 8003796: 6a19 ldr r1, [r3, #32] + 8003798: 687b ldr r3, [r7, #4] + 800379a: 6a5b ldr r3, [r3, #36] @ 0x24 + 800379c: 430b orrs r3, r1 + 800379e: 491b ldr r1, [pc, #108] @ (800380c ) + 80037a0: 4313 orrs r3, r2 + 80037a2: 604b str r3, [r1, #4] + RCC_OscInitStruct->PLL.PLLMUL); + /* Enable the main PLL. */ + __HAL_RCC_PLL_ENABLE(); + 80037a4: 4b1b ldr r3, [pc, #108] @ (8003814 ) + 80037a6: 2201 movs r2, #1 + 80037a8: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80037aa: f7fd fb87 bl 8000ebc + 80037ae: 6138 str r0, [r7, #16] + + /* Wait till PLL is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) + 80037b0: e008 b.n 80037c4 + { + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + 80037b2: f7fd fb83 bl 8000ebc + 80037b6: 4602 mov r2, r0 + 80037b8: 693b ldr r3, [r7, #16] + 80037ba: 1ad3 subs r3, r2, r3 + 80037bc: 2b02 cmp r3, #2 + 80037be: d901 bls.n 80037c4 + { + return HAL_TIMEOUT; + 80037c0: 2303 movs r3, #3 + 80037c2: e03d b.n 8003840 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) + 80037c4: 4b11 ldr r3, [pc, #68] @ (800380c ) + 80037c6: 681b ldr r3, [r3, #0] + 80037c8: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80037cc: 2b00 cmp r3, #0 + 80037ce: d0f0 beq.n 80037b2 + 80037d0: e035 b.n 800383e + } + } + else + { + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 80037d2: 4b10 ldr r3, [pc, #64] @ (8003814 ) + 80037d4: 2200 movs r2, #0 + 80037d6: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80037d8: f7fd fb70 bl 8000ebc + 80037dc: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) + 80037de: e008 b.n 80037f2 + { + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + 80037e0: f7fd fb6c bl 8000ebc + 80037e4: 4602 mov r2, r0 + 80037e6: 693b ldr r3, [r7, #16] + 80037e8: 1ad3 subs r3, r2, r3 + 80037ea: 2b02 cmp r3, #2 + 80037ec: d901 bls.n 80037f2 + { + return HAL_TIMEOUT; + 80037ee: 2303 movs r3, #3 + 80037f0: e026 b.n 8003840 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) + 80037f2: 4b06 ldr r3, [pc, #24] @ (800380c ) + 80037f4: 681b ldr r3, [r3, #0] + 80037f6: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80037fa: 2b00 cmp r3, #0 + 80037fc: d1f0 bne.n 80037e0 + 80037fe: e01e b.n 800383e + } + } + else + { + /* Check if there is a request to disable the PLL used as System clock source */ + if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) + 8003800: 687b ldr r3, [r7, #4] + 8003802: 69db ldr r3, [r3, #28] + 8003804: 2b01 cmp r3, #1 + 8003806: d107 bne.n 8003818 + { + return HAL_ERROR; + 8003808: 2301 movs r3, #1 + 800380a: e019 b.n 8003840 + 800380c: 40021000 .word 0x40021000 + 8003810: 40007000 .word 0x40007000 + 8003814: 42420060 .word 0x42420060 + } + else + { + /* Do not return HAL_ERROR if request repeats the current configuration */ + pll_config = RCC->CFGR; + 8003818: 4b0b ldr r3, [pc, #44] @ (8003848 ) + 800381a: 685b ldr r3, [r3, #4] + 800381c: 60fb str r3, [r7, #12] + if ((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 800381e: 68fb ldr r3, [r7, #12] + 8003820: f403 3280 and.w r2, r3, #65536 @ 0x10000 + 8003824: 687b ldr r3, [r7, #4] + 8003826: 6a1b ldr r3, [r3, #32] + 8003828: 429a cmp r2, r3 + 800382a: d106 bne.n 800383a + (READ_BIT(pll_config, RCC_CFGR_PLLMULL) != RCC_OscInitStruct->PLL.PLLMUL)) + 800382c: 68fb ldr r3, [r7, #12] + 800382e: f403 1270 and.w r2, r3, #3932160 @ 0x3c0000 + 8003832: 687b ldr r3, [r7, #4] + 8003834: 6a5b ldr r3, [r3, #36] @ 0x24 + if ((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 8003836: 429a cmp r2, r3 + 8003838: d001 beq.n 800383e + { + return HAL_ERROR; + 800383a: 2301 movs r3, #1 + 800383c: e000 b.n 8003840 + } + } + } + } + + return HAL_OK; + 800383e: 2300 movs r3, #0 +} + 8003840: 4618 mov r0, r3 + 8003842: 3718 adds r7, #24 + 8003844: 46bd mov sp, r7 + 8003846: bd80 pop {r7, pc} + 8003848: 40021000 .word 0x40021000 + +0800384c : + * You can use @ref HAL_RCC_GetClockConfig() function to know which clock is + * currently used as system clock source. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) +{ + 800384c: b580 push {r7, lr} + 800384e: b084 sub sp, #16 + 8003850: af00 add r7, sp, #0 + 8003852: 6078 str r0, [r7, #4] + 8003854: 6039 str r1, [r7, #0] + uint32_t tickstart; + + /* Check Null pointer */ + if (RCC_ClkInitStruct == NULL) + 8003856: 687b ldr r3, [r7, #4] + 8003858: 2b00 cmp r3, #0 + 800385a: d101 bne.n 8003860 + { + return HAL_ERROR; + 800385c: 2301 movs r3, #1 + 800385e: e0d0 b.n 8003a02 + must be correctly programmed according to the frequency of the CPU clock + (HCLK) of the device. */ + +#if defined(FLASH_ACR_LATENCY) + /* Increasing the number of wait states because of higher CPU frequency */ + if (FLatency > __HAL_FLASH_GET_LATENCY()) + 8003860: 4b6a ldr r3, [pc, #424] @ (8003a0c ) + 8003862: 681b ldr r3, [r3, #0] + 8003864: f003 0307 and.w r3, r3, #7 + 8003868: 683a ldr r2, [r7, #0] + 800386a: 429a cmp r2, r3 + 800386c: d910 bls.n 8003890 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 800386e: 4b67 ldr r3, [pc, #412] @ (8003a0c ) + 8003870: 681b ldr r3, [r3, #0] + 8003872: f023 0207 bic.w r2, r3, #7 + 8003876: 4965 ldr r1, [pc, #404] @ (8003a0c ) + 8003878: 683b ldr r3, [r7, #0] + 800387a: 4313 orrs r3, r2 + 800387c: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if (__HAL_FLASH_GET_LATENCY() != FLatency) + 800387e: 4b63 ldr r3, [pc, #396] @ (8003a0c ) + 8003880: 681b ldr r3, [r3, #0] + 8003882: f003 0307 and.w r3, r3, #7 + 8003886: 683a ldr r2, [r7, #0] + 8003888: 429a cmp r2, r3 + 800388a: d001 beq.n 8003890 + { + return HAL_ERROR; + 800388c: 2301 movs r3, #1 + 800388e: e0b8 b.n 8003a02 + } +} + +#endif /* FLASH_ACR_LATENCY */ +/*-------------------------- HCLK Configuration --------------------------*/ +if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + 8003890: 687b ldr r3, [r7, #4] + 8003892: 681b ldr r3, [r3, #0] + 8003894: f003 0302 and.w r3, r3, #2 + 8003898: 2b00 cmp r3, #0 + 800389a: d020 beq.n 80038de + { + /* 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) + 800389c: 687b ldr r3, [r7, #4] + 800389e: 681b ldr r3, [r3, #0] + 80038a0: f003 0304 and.w r3, r3, #4 + 80038a4: 2b00 cmp r3, #0 + 80038a6: d005 beq.n 80038b4 + { + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16); + 80038a8: 4b59 ldr r3, [pc, #356] @ (8003a10 ) + 80038aa: 685b ldr r3, [r3, #4] + 80038ac: 4a58 ldr r2, [pc, #352] @ (8003a10 ) + 80038ae: f443 63e0 orr.w r3, r3, #1792 @ 0x700 + 80038b2: 6053 str r3, [r2, #4] + } + + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 80038b4: 687b ldr r3, [r7, #4] + 80038b6: 681b ldr r3, [r3, #0] + 80038b8: f003 0308 and.w r3, r3, #8 + 80038bc: 2b00 cmp r3, #0 + 80038be: d005 beq.n 80038cc + { + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3)); + 80038c0: 4b53 ldr r3, [pc, #332] @ (8003a10 ) + 80038c2: 685b ldr r3, [r3, #4] + 80038c4: 4a52 ldr r2, [pc, #328] @ (8003a10 ) + 80038c6: f443 5360 orr.w r3, r3, #14336 @ 0x3800 + 80038ca: 6053 str r3, [r2, #4] + } + + /* Set the new HCLK clock divider */ + assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + 80038cc: 4b50 ldr r3, [pc, #320] @ (8003a10 ) + 80038ce: 685b ldr r3, [r3, #4] + 80038d0: f023 02f0 bic.w r2, r3, #240 @ 0xf0 + 80038d4: 687b ldr r3, [r7, #4] + 80038d6: 689b ldr r3, [r3, #8] + 80038d8: 494d ldr r1, [pc, #308] @ (8003a10 ) + 80038da: 4313 orrs r3, r2 + 80038dc: 604b str r3, [r1, #4] + } + + /*------------------------- SYSCLK Configuration ---------------------------*/ + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + 80038de: 687b ldr r3, [r7, #4] + 80038e0: 681b ldr r3, [r3, #0] + 80038e2: f003 0301 and.w r3, r3, #1 + 80038e6: 2b00 cmp r3, #0 + 80038e8: d040 beq.n 800396c + { + assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + + /* HSE is selected as System Clock Source */ + if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 80038ea: 687b ldr r3, [r7, #4] + 80038ec: 685b ldr r3, [r3, #4] + 80038ee: 2b01 cmp r3, #1 + 80038f0: d107 bne.n 8003902 + { + /* Check the HSE ready flag */ + if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) + 80038f2: 4b47 ldr r3, [pc, #284] @ (8003a10 ) + 80038f4: 681b ldr r3, [r3, #0] + 80038f6: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80038fa: 2b00 cmp r3, #0 + 80038fc: d115 bne.n 800392a + { + return HAL_ERROR; + 80038fe: 2301 movs r3, #1 + 8003900: e07f b.n 8003a02 + } + } + /* PLL is selected as System Clock Source */ + else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 8003902: 687b ldr r3, [r7, #4] + 8003904: 685b ldr r3, [r3, #4] + 8003906: 2b02 cmp r3, #2 + 8003908: d107 bne.n 800391a + { + /* Check the PLL ready flag */ + if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) + 800390a: 4b41 ldr r3, [pc, #260] @ (8003a10 ) + 800390c: 681b ldr r3, [r3, #0] + 800390e: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8003912: 2b00 cmp r3, #0 + 8003914: d109 bne.n 800392a + { + return HAL_ERROR; + 8003916: 2301 movs r3, #1 + 8003918: e073 b.n 8003a02 + } + /* HSI is selected as System Clock Source */ + else + { + /* Check the HSI ready flag */ + if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) + 800391a: 4b3d ldr r3, [pc, #244] @ (8003a10 ) + 800391c: 681b ldr r3, [r3, #0] + 800391e: f003 0302 and.w r3, r3, #2 + 8003922: 2b00 cmp r3, #0 + 8003924: d101 bne.n 800392a + { + return HAL_ERROR; + 8003926: 2301 movs r3, #1 + 8003928: e06b b.n 8003a02 + } + } + __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); + 800392a: 4b39 ldr r3, [pc, #228] @ (8003a10 ) + 800392c: 685b ldr r3, [r3, #4] + 800392e: f023 0203 bic.w r2, r3, #3 + 8003932: 687b ldr r3, [r7, #4] + 8003934: 685b ldr r3, [r3, #4] + 8003936: 4936 ldr r1, [pc, #216] @ (8003a10 ) + 8003938: 4313 orrs r3, r2 + 800393a: 604b str r3, [r1, #4] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800393c: f7fd fabe bl 8000ebc + 8003940: 60f8 str r0, [r7, #12] + + while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) + 8003942: e00a b.n 800395a + { + if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + 8003944: f7fd faba bl 8000ebc + 8003948: 4602 mov r2, r0 + 800394a: 68fb ldr r3, [r7, #12] + 800394c: 1ad3 subs r3, r2, r3 + 800394e: f241 3288 movw r2, #5000 @ 0x1388 + 8003952: 4293 cmp r3, r2 + 8003954: d901 bls.n 800395a + { + return HAL_TIMEOUT; + 8003956: 2303 movs r3, #3 + 8003958: e053 b.n 8003a02 + while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) + 800395a: 4b2d ldr r3, [pc, #180] @ (8003a10 ) + 800395c: 685b ldr r3, [r3, #4] + 800395e: f003 020c and.w r2, r3, #12 + 8003962: 687b ldr r3, [r7, #4] + 8003964: 685b ldr r3, [r3, #4] + 8003966: 009b lsls r3, r3, #2 + 8003968: 429a cmp r2, r3 + 800396a: d1eb bne.n 8003944 + } + } + +#if defined(FLASH_ACR_LATENCY) + /* Decreasing the number of wait states because of lower CPU frequency */ + if (FLatency < __HAL_FLASH_GET_LATENCY()) + 800396c: 4b27 ldr r3, [pc, #156] @ (8003a0c ) + 800396e: 681b ldr r3, [r3, #0] + 8003970: f003 0307 and.w r3, r3, #7 + 8003974: 683a ldr r2, [r7, #0] + 8003976: 429a cmp r2, r3 + 8003978: d210 bcs.n 800399c + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 800397a: 4b24 ldr r3, [pc, #144] @ (8003a0c ) + 800397c: 681b ldr r3, [r3, #0] + 800397e: f023 0207 bic.w r2, r3, #7 + 8003982: 4922 ldr r1, [pc, #136] @ (8003a0c ) + 8003984: 683b ldr r3, [r7, #0] + 8003986: 4313 orrs r3, r2 + 8003988: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if (__HAL_FLASH_GET_LATENCY() != FLatency) + 800398a: 4b20 ldr r3, [pc, #128] @ (8003a0c ) + 800398c: 681b ldr r3, [r3, #0] + 800398e: f003 0307 and.w r3, r3, #7 + 8003992: 683a ldr r2, [r7, #0] + 8003994: 429a cmp r2, r3 + 8003996: d001 beq.n 800399c + { + return HAL_ERROR; + 8003998: 2301 movs r3, #1 + 800399a: e032 b.n 8003a02 + } +} +#endif /* FLASH_ACR_LATENCY */ + +/*-------------------------- PCLK1 Configuration ---------------------------*/ +if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + 800399c: 687b ldr r3, [r7, #4] + 800399e: 681b ldr r3, [r3, #0] + 80039a0: f003 0304 and.w r3, r3, #4 + 80039a4: 2b00 cmp r3, #0 + 80039a6: d008 beq.n 80039ba + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + 80039a8: 4b19 ldr r3, [pc, #100] @ (8003a10 ) + 80039aa: 685b ldr r3, [r3, #4] + 80039ac: f423 62e0 bic.w r2, r3, #1792 @ 0x700 + 80039b0: 687b ldr r3, [r7, #4] + 80039b2: 68db ldr r3, [r3, #12] + 80039b4: 4916 ldr r1, [pc, #88] @ (8003a10 ) + 80039b6: 4313 orrs r3, r2 + 80039b8: 604b str r3, [r1, #4] + } + + /*-------------------------- PCLK2 Configuration ---------------------------*/ + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 80039ba: 687b ldr r3, [r7, #4] + 80039bc: 681b ldr r3, [r3, #0] + 80039be: f003 0308 and.w r3, r3, #8 + 80039c2: 2b00 cmp r3, #0 + 80039c4: d009 beq.n 80039da + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3)); + 80039c6: 4b12 ldr r3, [pc, #72] @ (8003a10 ) + 80039c8: 685b ldr r3, [r3, #4] + 80039ca: f423 5260 bic.w r2, r3, #14336 @ 0x3800 + 80039ce: 687b ldr r3, [r7, #4] + 80039d0: 691b ldr r3, [r3, #16] + 80039d2: 00db lsls r3, r3, #3 + 80039d4: 490e ldr r1, [pc, #56] @ (8003a10 ) + 80039d6: 4313 orrs r3, r2 + 80039d8: 604b str r3, [r1, #4] + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]; + 80039da: f000 f821 bl 8003a20 + 80039de: 4602 mov r2, r0 + 80039e0: 4b0b ldr r3, [pc, #44] @ (8003a10 ) + 80039e2: 685b ldr r3, [r3, #4] + 80039e4: 091b lsrs r3, r3, #4 + 80039e6: f003 030f and.w r3, r3, #15 + 80039ea: 490a ldr r1, [pc, #40] @ (8003a14 ) + 80039ec: 5ccb ldrb r3, [r1, r3] + 80039ee: fa22 f303 lsr.w r3, r2, r3 + 80039f2: 4a09 ldr r2, [pc, #36] @ (8003a18 ) + 80039f4: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + HAL_InitTick(uwTickPrio); + 80039f6: 4b09 ldr r3, [pc, #36] @ (8003a1c ) + 80039f8: 681b ldr r3, [r3, #0] + 80039fa: 4618 mov r0, r3 + 80039fc: f7fd fa1c bl 8000e38 + + return HAL_OK; + 8003a00: 2300 movs r3, #0 +} + 8003a02: 4618 mov r0, r3 + 8003a04: 3710 adds r7, #16 + 8003a06: 46bd mov sp, r7 + 8003a08: bd80 pop {r7, pc} + 8003a0a: bf00 nop + 8003a0c: 40022000 .word 0x40022000 + 8003a10: 40021000 .word 0x40021000 + 8003a14: 08009ae0 .word 0x08009ae0 + 8003a18: 20000000 .word 0x20000000 + 8003a1c: 20000004 .word 0x20000004 + +08003a20 : + * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * @retval SYSCLK frequency + */ +uint32_t HAL_RCC_GetSysClockFreq(void) +{ + 8003a20: b480 push {r7} + 8003a22: b087 sub sp, #28 + 8003a24: af00 add r7, sp, #0 +#else + static const uint8_t aPredivFactorTable[2U] = {1, 2}; +#endif /*RCC_CFGR2_PREDIV1*/ + +#endif + uint32_t tmpreg = 0U, prediv = 0U, pllclk = 0U, pllmul = 0U; + 8003a26: 2300 movs r3, #0 + 8003a28: 60fb str r3, [r7, #12] + 8003a2a: 2300 movs r3, #0 + 8003a2c: 60bb str r3, [r7, #8] + 8003a2e: 2300 movs r3, #0 + 8003a30: 617b str r3, [r7, #20] + 8003a32: 2300 movs r3, #0 + 8003a34: 607b str r3, [r7, #4] + uint32_t sysclockfreq = 0U; + 8003a36: 2300 movs r3, #0 + 8003a38: 613b str r3, [r7, #16] +#if defined(RCC_CFGR2_PREDIV1SRC) + uint32_t prediv2 = 0U, pll2mul = 0U; +#endif /*RCC_CFGR2_PREDIV1SRC*/ + + tmpreg = RCC->CFGR; + 8003a3a: 4b1e ldr r3, [pc, #120] @ (8003ab4 ) + 8003a3c: 685b ldr r3, [r3, #4] + 8003a3e: 60fb str r3, [r7, #12] + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (tmpreg & RCC_CFGR_SWS) + 8003a40: 68fb ldr r3, [r7, #12] + 8003a42: f003 030c and.w r3, r3, #12 + 8003a46: 2b04 cmp r3, #4 + 8003a48: d002 beq.n 8003a50 + 8003a4a: 2b08 cmp r3, #8 + 8003a4c: d003 beq.n 8003a56 + 8003a4e: e027 b.n 8003aa0 + { + case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ + { + sysclockfreq = HSE_VALUE; + 8003a50: 4b19 ldr r3, [pc, #100] @ (8003ab8 ) + 8003a52: 613b str r3, [r7, #16] + break; + 8003a54: e027 b.n 8003aa6 + } + case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ + { + pllmul = aPLLMULFactorTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMULL) >> RCC_CFGR_PLLMULL_Pos]; + 8003a56: 68fb ldr r3, [r7, #12] + 8003a58: 0c9b lsrs r3, r3, #18 + 8003a5a: f003 030f and.w r3, r3, #15 + 8003a5e: 4a17 ldr r2, [pc, #92] @ (8003abc ) + 8003a60: 5cd3 ldrb r3, [r2, r3] + 8003a62: 607b str r3, [r7, #4] + if ((tmpreg & RCC_CFGR_PLLSRC) != RCC_PLLSOURCE_HSI_DIV2) + 8003a64: 68fb ldr r3, [r7, #12] + 8003a66: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8003a6a: 2b00 cmp r3, #0 + 8003a6c: d010 beq.n 8003a90 + { +#if defined(RCC_CFGR2_PREDIV1) + prediv = aPredivFactorTable[(uint32_t)(RCC->CFGR2 & RCC_CFGR2_PREDIV1) >> RCC_CFGR2_PREDIV1_Pos]; +#else + prediv = aPredivFactorTable[(uint32_t)(RCC->CFGR & RCC_CFGR_PLLXTPRE) >> RCC_CFGR_PLLXTPRE_Pos]; + 8003a6e: 4b11 ldr r3, [pc, #68] @ (8003ab4 ) + 8003a70: 685b ldr r3, [r3, #4] + 8003a72: 0c5b lsrs r3, r3, #17 + 8003a74: f003 0301 and.w r3, r3, #1 + 8003a78: 4a11 ldr r2, [pc, #68] @ (8003ac0 ) + 8003a7a: 5cd3 ldrb r3, [r2, r3] + 8003a7c: 60bb str r3, [r7, #8] + { + pllclk = pllclk / 2; + } +#else + /* HSE used as PLL clock source : PLLCLK = HSE/PREDIV1 * PLLMUL */ + pllclk = (uint32_t)((HSE_VALUE * pllmul) / prediv); + 8003a7e: 687b ldr r3, [r7, #4] + 8003a80: 4a0d ldr r2, [pc, #52] @ (8003ab8 ) + 8003a82: fb03 f202 mul.w r2, r3, r2 + 8003a86: 68bb ldr r3, [r7, #8] + 8003a88: fbb2 f3f3 udiv r3, r2, r3 + 8003a8c: 617b str r3, [r7, #20] + 8003a8e: e004 b.n 8003a9a +#endif /*RCC_CFGR2_PREDIV1SRC*/ + } + else + { + /* HSI used as PLL clock source : PLLCLK = HSI/2 * PLLMUL */ + pllclk = (uint32_t)((HSI_VALUE >> 1) * pllmul); + 8003a90: 687b ldr r3, [r7, #4] + 8003a92: 4a0c ldr r2, [pc, #48] @ (8003ac4 ) + 8003a94: fb02 f303 mul.w r3, r2, r3 + 8003a98: 617b str r3, [r7, #20] + } + sysclockfreq = pllclk; + 8003a9a: 697b ldr r3, [r7, #20] + 8003a9c: 613b str r3, [r7, #16] + break; + 8003a9e: e002 b.n 8003aa6 + } + case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + default: /* HSI used as system clock */ + { + sysclockfreq = HSI_VALUE; + 8003aa0: 4b05 ldr r3, [pc, #20] @ (8003ab8 ) + 8003aa2: 613b str r3, [r7, #16] + break; + 8003aa4: bf00 nop + } + } + return sysclockfreq; + 8003aa6: 693b ldr r3, [r7, #16] +} + 8003aa8: 4618 mov r0, r3 + 8003aaa: 371c adds r7, #28 + 8003aac: 46bd mov sp, r7 + 8003aae: bc80 pop {r7} + 8003ab0: 4770 bx lr + 8003ab2: bf00 nop + 8003ab4: 40021000 .word 0x40021000 + 8003ab8: 007a1200 .word 0x007a1200 + 8003abc: 08009af0 .word 0x08009af0 + 8003ac0: 08009b00 .word 0x08009b00 + 8003ac4: 003d0900 .word 0x003d0900 + +08003ac8 : + * @brief This function provides delay (in milliseconds) based on CPU cycles method. + * @param mdelay: specifies the delay time length, in milliseconds. + * @retval None + */ +static void RCC_Delay(uint32_t mdelay) +{ + 8003ac8: b480 push {r7} + 8003aca: b085 sub sp, #20 + 8003acc: af00 add r7, sp, #0 + 8003ace: 6078 str r0, [r7, #4] + __IO uint32_t Delay = mdelay * (SystemCoreClock / 8U / 1000U); + 8003ad0: 4b0a ldr r3, [pc, #40] @ (8003afc ) + 8003ad2: 681b ldr r3, [r3, #0] + 8003ad4: 4a0a ldr r2, [pc, #40] @ (8003b00 ) + 8003ad6: fba2 2303 umull r2, r3, r2, r3 + 8003ada: 0a5b lsrs r3, r3, #9 + 8003adc: 687a ldr r2, [r7, #4] + 8003ade: fb02 f303 mul.w r3, r2, r3 + 8003ae2: 60fb str r3, [r7, #12] + do + { + __NOP(); + 8003ae4: bf00 nop + } + while (Delay --); + 8003ae6: 68fb ldr r3, [r7, #12] + 8003ae8: 1e5a subs r2, r3, #1 + 8003aea: 60fa str r2, [r7, #12] + 8003aec: 2b00 cmp r3, #0 + 8003aee: d1f9 bne.n 8003ae4 +} + 8003af0: bf00 nop + 8003af2: bf00 nop + 8003af4: 3714 adds r7, #20 + 8003af6: 46bd mov sp, r7 + 8003af8: bc80 pop {r7} + 8003afa: 4770 bx lr + 8003afc: 20000000 .word 0x20000000 + 8003b00: 10624dd3 .word 0x10624dd3 + +08003b04 : + * manually disable it. + * + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) +{ + 8003b04: b580 push {r7, lr} + 8003b06: b086 sub sp, #24 + 8003b08: af00 add r7, sp, #0 + 8003b0a: 6078 str r0, [r7, #4] + uint32_t tickstart = 0U, temp_reg = 0U; + 8003b0c: 2300 movs r3, #0 + 8003b0e: 613b str r3, [r7, #16] + 8003b10: 2300 movs r3, #0 + 8003b12: 60fb str r3, [r7, #12] + + /* Check the parameters */ + assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); + + /*------------------------------- RTC/LCD Configuration ------------------------*/ + if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) + 8003b14: 687b ldr r3, [r7, #4] + 8003b16: 681b ldr r3, [r3, #0] + 8003b18: f003 0301 and.w r3, r3, #1 + 8003b1c: 2b00 cmp r3, #0 + 8003b1e: d07d beq.n 8003c1c + { + FlagStatus pwrclkchanged = RESET; + 8003b20: 2300 movs r3, #0 + 8003b22: 75fb strb r3, [r7, #23] + assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); + + /* As soon as function is called to change RTC clock source, activation of the + power domain is done. */ + /* Requires to enable write access to Backup Domain of necessary */ + if (__HAL_RCC_PWR_IS_CLK_DISABLED()) + 8003b24: 4b4f ldr r3, [pc, #316] @ (8003c64 ) + 8003b26: 69db ldr r3, [r3, #28] + 8003b28: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8003b2c: 2b00 cmp r3, #0 + 8003b2e: d10d bne.n 8003b4c + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8003b30: 4b4c ldr r3, [pc, #304] @ (8003c64 ) + 8003b32: 69db ldr r3, [r3, #28] + 8003b34: 4a4b ldr r2, [pc, #300] @ (8003c64 ) + 8003b36: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8003b3a: 61d3 str r3, [r2, #28] + 8003b3c: 4b49 ldr r3, [pc, #292] @ (8003c64 ) + 8003b3e: 69db ldr r3, [r3, #28] + 8003b40: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8003b44: 60bb str r3, [r7, #8] + 8003b46: 68bb ldr r3, [r7, #8] + pwrclkchanged = SET; + 8003b48: 2301 movs r3, #1 + 8003b4a: 75fb strb r3, [r7, #23] + } + + if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8003b4c: 4b46 ldr r3, [pc, #280] @ (8003c68 ) + 8003b4e: 681b ldr r3, [r3, #0] + 8003b50: f403 7380 and.w r3, r3, #256 @ 0x100 + 8003b54: 2b00 cmp r3, #0 + 8003b56: d118 bne.n 8003b8a + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 8003b58: 4b43 ldr r3, [pc, #268] @ (8003c68 ) + 8003b5a: 681b ldr r3, [r3, #0] + 8003b5c: 4a42 ldr r2, [pc, #264] @ (8003c68 ) + 8003b5e: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8003b62: 6013 str r3, [r2, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 8003b64: f7fd f9aa bl 8000ebc + 8003b68: 6138 str r0, [r7, #16] + + while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8003b6a: e008 b.n 8003b7e + { + if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 8003b6c: f7fd f9a6 bl 8000ebc + 8003b70: 4602 mov r2, r0 + 8003b72: 693b ldr r3, [r7, #16] + 8003b74: 1ad3 subs r3, r2, r3 + 8003b76: 2b64 cmp r3, #100 @ 0x64 + 8003b78: d901 bls.n 8003b7e + { + return HAL_TIMEOUT; + 8003b7a: 2303 movs r3, #3 + 8003b7c: e06d b.n 8003c5a + while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8003b7e: 4b3a ldr r3, [pc, #232] @ (8003c68 ) + 8003b80: 681b ldr r3, [r3, #0] + 8003b82: f403 7380 and.w r3, r3, #256 @ 0x100 + 8003b86: 2b00 cmp r3, #0 + 8003b88: d0f0 beq.n 8003b6c + } + } + } + + /* Reset the Backup domain only if the RTC Clock source selection is modified from reset value */ + temp_reg = (RCC->BDCR & RCC_BDCR_RTCSEL); + 8003b8a: 4b36 ldr r3, [pc, #216] @ (8003c64 ) + 8003b8c: 6a1b ldr r3, [r3, #32] + 8003b8e: f403 7340 and.w r3, r3, #768 @ 0x300 + 8003b92: 60fb str r3, [r7, #12] + if ((temp_reg != 0x00000000U) && (temp_reg != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL))) + 8003b94: 68fb ldr r3, [r7, #12] + 8003b96: 2b00 cmp r3, #0 + 8003b98: d02e beq.n 8003bf8 + 8003b9a: 687b ldr r3, [r7, #4] + 8003b9c: 685b ldr r3, [r3, #4] + 8003b9e: f403 7340 and.w r3, r3, #768 @ 0x300 + 8003ba2: 68fa ldr r2, [r7, #12] + 8003ba4: 429a cmp r2, r3 + 8003ba6: d027 beq.n 8003bf8 + { + /* Store the content of BDCR register before the reset of Backup Domain */ + temp_reg = (RCC->BDCR & ~(RCC_BDCR_RTCSEL)); + 8003ba8: 4b2e ldr r3, [pc, #184] @ (8003c64 ) + 8003baa: 6a1b ldr r3, [r3, #32] + 8003bac: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8003bb0: 60fb str r3, [r7, #12] + /* RTC Clock selection can be changed only if the Backup Domain is reset */ + __HAL_RCC_BACKUPRESET_FORCE(); + 8003bb2: 4b2e ldr r3, [pc, #184] @ (8003c6c ) + 8003bb4: 2201 movs r2, #1 + 8003bb6: 601a str r2, [r3, #0] + __HAL_RCC_BACKUPRESET_RELEASE(); + 8003bb8: 4b2c ldr r3, [pc, #176] @ (8003c6c ) + 8003bba: 2200 movs r2, #0 + 8003bbc: 601a str r2, [r3, #0] + /* Restore the Content of BDCR register */ + RCC->BDCR = temp_reg; + 8003bbe: 4a29 ldr r2, [pc, #164] @ (8003c64 ) + 8003bc0: 68fb ldr r3, [r7, #12] + 8003bc2: 6213 str r3, [r2, #32] + + /* Wait for LSERDY if LSE was enabled */ + if (HAL_IS_BIT_SET(temp_reg, RCC_BDCR_LSEON)) + 8003bc4: 68fb ldr r3, [r7, #12] + 8003bc6: f003 0301 and.w r3, r3, #1 + 8003bca: 2b00 cmp r3, #0 + 8003bcc: d014 beq.n 8003bf8 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8003bce: f7fd f975 bl 8000ebc + 8003bd2: 6138 str r0, [r7, #16] + + /* Wait till LSE is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + 8003bd4: e00a b.n 8003bec + { + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + 8003bd6: f7fd f971 bl 8000ebc + 8003bda: 4602 mov r2, r0 + 8003bdc: 693b ldr r3, [r7, #16] + 8003bde: 1ad3 subs r3, r2, r3 + 8003be0: f241 3288 movw r2, #5000 @ 0x1388 + 8003be4: 4293 cmp r3, r2 + 8003be6: d901 bls.n 8003bec + { + return HAL_TIMEOUT; + 8003be8: 2303 movs r3, #3 + 8003bea: e036 b.n 8003c5a + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + 8003bec: 4b1d ldr r3, [pc, #116] @ (8003c64 ) + 8003bee: 6a1b ldr r3, [r3, #32] + 8003bf0: f003 0302 and.w r3, r3, #2 + 8003bf4: 2b00 cmp r3, #0 + 8003bf6: d0ee beq.n 8003bd6 + } + } + } + } + __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); + 8003bf8: 4b1a ldr r3, [pc, #104] @ (8003c64 ) + 8003bfa: 6a1b ldr r3, [r3, #32] + 8003bfc: f423 7240 bic.w r2, r3, #768 @ 0x300 + 8003c00: 687b ldr r3, [r7, #4] + 8003c02: 685b ldr r3, [r3, #4] + 8003c04: 4917 ldr r1, [pc, #92] @ (8003c64 ) + 8003c06: 4313 orrs r3, r2 + 8003c08: 620b str r3, [r1, #32] + + /* Require to disable power clock if necessary */ + if (pwrclkchanged == SET) + 8003c0a: 7dfb ldrb r3, [r7, #23] + 8003c0c: 2b01 cmp r3, #1 + 8003c0e: d105 bne.n 8003c1c + { + __HAL_RCC_PWR_CLK_DISABLE(); + 8003c10: 4b14 ldr r3, [pc, #80] @ (8003c64 ) + 8003c12: 69db ldr r3, [r3, #28] + 8003c14: 4a13 ldr r2, [pc, #76] @ (8003c64 ) + 8003c16: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8003c1a: 61d3 str r3, [r2, #28] + } + } + + /*------------------------------ ADC clock Configuration ------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) + 8003c1c: 687b ldr r3, [r7, #4] + 8003c1e: 681b ldr r3, [r3, #0] + 8003c20: f003 0302 and.w r3, r3, #2 + 8003c24: 2b00 cmp r3, #0 + 8003c26: d008 beq.n 8003c3a + { + /* Check the parameters */ + assert_param(IS_RCC_ADCPLLCLK_DIV(PeriphClkInit->AdcClockSelection)); + + /* Configure the ADC clock source */ + __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection); + 8003c28: 4b0e ldr r3, [pc, #56] @ (8003c64 ) + 8003c2a: 685b ldr r3, [r3, #4] + 8003c2c: f423 4240 bic.w r2, r3, #49152 @ 0xc000 + 8003c30: 687b ldr r3, [r7, #4] + 8003c32: 689b ldr r3, [r3, #8] + 8003c34: 490b ldr r1, [pc, #44] @ (8003c64 ) + 8003c36: 4313 orrs r3, r2 + 8003c38: 604b str r3, [r1, #4] + +#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\ + || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\ + || defined(STM32F105xC) || defined(STM32F107xC) + /*------------------------------ USB clock Configuration ------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USB) == RCC_PERIPHCLK_USB) + 8003c3a: 687b ldr r3, [r7, #4] + 8003c3c: 681b ldr r3, [r3, #0] + 8003c3e: f003 0310 and.w r3, r3, #16 + 8003c42: 2b00 cmp r3, #0 + 8003c44: d008 beq.n 8003c58 + { + /* Check the parameters */ + assert_param(IS_RCC_USBPLLCLK_DIV(PeriphClkInit->UsbClockSelection)); + + /* Configure the USB clock source */ + __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection); + 8003c46: 4b07 ldr r3, [pc, #28] @ (8003c64 ) + 8003c48: 685b ldr r3, [r3, #4] + 8003c4a: f423 0280 bic.w r2, r3, #4194304 @ 0x400000 + 8003c4e: 687b ldr r3, [r7, #4] + 8003c50: 68db ldr r3, [r3, #12] + 8003c52: 4904 ldr r1, [pc, #16] @ (8003c64 ) + 8003c54: 4313 orrs r3, r2 + 8003c56: 604b str r3, [r1, #4] + } +#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */ + + return HAL_OK; + 8003c58: 2300 movs r3, #0 +} + 8003c5a: 4618 mov r0, r3 + 8003c5c: 3718 adds r7, #24 + 8003c5e: 46bd mov sp, r7 + 8003c60: bd80 pop {r7, pc} + 8003c62: bf00 nop + 8003c64: 40021000 .word 0x40021000 + 8003c68: 40007000 .word 0x40007000 + 8003c6c: 42420440 .word 0x42420440 + +08003c70 : + * 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) +{ + 8003c70: b580 push {r7, lr} + 8003c72: b082 sub sp, #8 + 8003c74: af00 add r7, sp, #0 + 8003c76: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 8003c78: 687b ldr r3, [r7, #4] + 8003c7a: 2b00 cmp r3, #0 + 8003c7c: d101 bne.n 8003c82 + { + return HAL_ERROR; + 8003c7e: 2301 movs r3, #1 + 8003c80: e041 b.n 8003d06 + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 8003c82: 687b ldr r3, [r7, #4] + 8003c84: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8003c88: b2db uxtb r3, r3 + 8003c8a: 2b00 cmp r3, #0 + 8003c8c: d106 bne.n 8003c9c + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 8003c8e: 687b ldr r3, [r7, #4] + 8003c90: 2200 movs r2, #0 + 8003c92: 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); + 8003c96: 6878 ldr r0, [r7, #4] + 8003c98: f7fc ff1a bl 8000ad0 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 8003c9c: 687b ldr r3, [r7, #4] + 8003c9e: 2202 movs r2, #2 + 8003ca0: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Set the Time Base configuration */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 8003ca4: 687b ldr r3, [r7, #4] + 8003ca6: 681a ldr r2, [r3, #0] + 8003ca8: 687b ldr r3, [r7, #4] + 8003caa: 3304 adds r3, #4 + 8003cac: 4619 mov r1, r3 + 8003cae: 4610 mov r0, r2 + 8003cb0: f000 fab2 bl 8004218 + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 8003cb4: 687b ldr r3, [r7, #4] + 8003cb6: 2201 movs r2, #1 + 8003cb8: f883 2046 strb.w r2, [r3, #70] @ 0x46 + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8003cbc: 687b ldr r3, [r7, #4] + 8003cbe: 2201 movs r2, #1 + 8003cc0: f883 203e strb.w r2, [r3, #62] @ 0x3e + 8003cc4: 687b ldr r3, [r7, #4] + 8003cc6: 2201 movs r2, #1 + 8003cc8: f883 203f strb.w r2, [r3, #63] @ 0x3f + 8003ccc: 687b ldr r3, [r7, #4] + 8003cce: 2201 movs r2, #1 + 8003cd0: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 8003cd4: 687b ldr r3, [r7, #4] + 8003cd6: 2201 movs r2, #1 + 8003cd8: f883 2041 strb.w r2, [r3, #65] @ 0x41 + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8003cdc: 687b ldr r3, [r7, #4] + 8003cde: 2201 movs r2, #1 + 8003ce0: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 8003ce4: 687b ldr r3, [r7, #4] + 8003ce6: 2201 movs r2, #1 + 8003ce8: f883 2043 strb.w r2, [r3, #67] @ 0x43 + 8003cec: 687b ldr r3, [r7, #4] + 8003cee: 2201 movs r2, #1 + 8003cf0: f883 2044 strb.w r2, [r3, #68] @ 0x44 + 8003cf4: 687b ldr r3, [r7, #4] + 8003cf6: 2201 movs r2, #1 + 8003cf8: f883 2045 strb.w r2, [r3, #69] @ 0x45 + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 8003cfc: 687b ldr r3, [r7, #4] + 8003cfe: 2201 movs r2, #1 + 8003d00: f883 203d strb.w r2, [r3, #61] @ 0x3d + + return HAL_OK; + 8003d04: 2300 movs r3, #0 +} + 8003d06: 4618 mov r0, r3 + 8003d08: 3708 adds r7, #8 + 8003d0a: 46bd mov sp, r7 + 8003d0c: bd80 pop {r7, pc} + +08003d0e : + * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init() + * @param htim TIM PWM handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim) +{ + 8003d0e: b580 push {r7, lr} + 8003d10: b082 sub sp, #8 + 8003d12: af00 add r7, sp, #0 + 8003d14: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 8003d16: 687b ldr r3, [r7, #4] + 8003d18: 2b00 cmp r3, #0 + 8003d1a: d101 bne.n 8003d20 + { + return HAL_ERROR; + 8003d1c: 2301 movs r3, #1 + 8003d1e: e041 b.n 8003da4 + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 8003d20: 687b ldr r3, [r7, #4] + 8003d22: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8003d26: b2db uxtb r3, r3 + 8003d28: 2b00 cmp r3, #0 + 8003d2a: d106 bne.n 8003d3a + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 8003d2c: 687b ldr r3, [r7, #4] + 8003d2e: 2200 movs r2, #0 + 8003d30: f883 203c strb.w r2, [r3, #60] @ 0x3c + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->PWM_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_PWM_MspInit(htim); + 8003d34: 6878 ldr r0, [r7, #4] + 8003d36: f000 f839 bl 8003dac +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 8003d3a: 687b ldr r3, [r7, #4] + 8003d3c: 2202 movs r2, #2 + 8003d3e: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Init the base time for the PWM */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 8003d42: 687b ldr r3, [r7, #4] + 8003d44: 681a ldr r2, [r3, #0] + 8003d46: 687b ldr r3, [r7, #4] + 8003d48: 3304 adds r3, #4 + 8003d4a: 4619 mov r1, r3 + 8003d4c: 4610 mov r0, r2 + 8003d4e: f000 fa63 bl 8004218 + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 8003d52: 687b ldr r3, [r7, #4] + 8003d54: 2201 movs r2, #1 + 8003d56: f883 2046 strb.w r2, [r3, #70] @ 0x46 + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8003d5a: 687b ldr r3, [r7, #4] + 8003d5c: 2201 movs r2, #1 + 8003d5e: f883 203e strb.w r2, [r3, #62] @ 0x3e + 8003d62: 687b ldr r3, [r7, #4] + 8003d64: 2201 movs r2, #1 + 8003d66: f883 203f strb.w r2, [r3, #63] @ 0x3f + 8003d6a: 687b ldr r3, [r7, #4] + 8003d6c: 2201 movs r2, #1 + 8003d6e: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 8003d72: 687b ldr r3, [r7, #4] + 8003d74: 2201 movs r2, #1 + 8003d76: f883 2041 strb.w r2, [r3, #65] @ 0x41 + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8003d7a: 687b ldr r3, [r7, #4] + 8003d7c: 2201 movs r2, #1 + 8003d7e: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 8003d82: 687b ldr r3, [r7, #4] + 8003d84: 2201 movs r2, #1 + 8003d86: f883 2043 strb.w r2, [r3, #67] @ 0x43 + 8003d8a: 687b ldr r3, [r7, #4] + 8003d8c: 2201 movs r2, #1 + 8003d8e: f883 2044 strb.w r2, [r3, #68] @ 0x44 + 8003d92: 687b ldr r3, [r7, #4] + 8003d94: 2201 movs r2, #1 + 8003d96: f883 2045 strb.w r2, [r3, #69] @ 0x45 + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 8003d9a: 687b ldr r3, [r7, #4] + 8003d9c: 2201 movs r2, #1 + 8003d9e: f883 203d strb.w r2, [r3, #61] @ 0x3d + + return HAL_OK; + 8003da2: 2300 movs r3, #0 +} + 8003da4: 4618 mov r0, r3 + 8003da6: 3708 adds r7, #8 + 8003da8: 46bd mov sp, r7 + 8003daa: bd80 pop {r7, pc} + +08003dac : + * @brief Initializes the TIM PWM MSP. + * @param htim TIM PWM handle + * @retval None + */ +__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) +{ + 8003dac: b480 push {r7} + 8003dae: b083 sub sp, #12 + 8003db0: af00 add r7, sp, #0 + 8003db2: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_MspInit could be implemented in the user file + */ +} + 8003db4: bf00 nop + 8003db6: 370c adds r7, #12 + 8003db8: 46bd mov sp, r7 + 8003dba: bc80 pop {r7} + 8003dbc: 4770 bx lr + ... + +08003dc0 : + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + 8003dc0: b580 push {r7, lr} + 8003dc2: b084 sub sp, #16 + 8003dc4: af00 add r7, sp, #0 + 8003dc6: 6078 str r0, [r7, #4] + 8003dc8: 6039 str r1, [r7, #0] + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + 8003dca: 683b ldr r3, [r7, #0] + 8003dcc: 2b00 cmp r3, #0 + 8003dce: d109 bne.n 8003de4 + 8003dd0: 687b ldr r3, [r7, #4] + 8003dd2: f893 303e ldrb.w r3, [r3, #62] @ 0x3e + 8003dd6: b2db uxtb r3, r3 + 8003dd8: 2b01 cmp r3, #1 + 8003dda: bf14 ite ne + 8003ddc: 2301 movne r3, #1 + 8003dde: 2300 moveq r3, #0 + 8003de0: b2db uxtb r3, r3 + 8003de2: e022 b.n 8003e2a + 8003de4: 683b ldr r3, [r7, #0] + 8003de6: 2b04 cmp r3, #4 + 8003de8: d109 bne.n 8003dfe + 8003dea: 687b ldr r3, [r7, #4] + 8003dec: f893 303f ldrb.w r3, [r3, #63] @ 0x3f + 8003df0: b2db uxtb r3, r3 + 8003df2: 2b01 cmp r3, #1 + 8003df4: bf14 ite ne + 8003df6: 2301 movne r3, #1 + 8003df8: 2300 moveq r3, #0 + 8003dfa: b2db uxtb r3, r3 + 8003dfc: e015 b.n 8003e2a + 8003dfe: 683b ldr r3, [r7, #0] + 8003e00: 2b08 cmp r3, #8 + 8003e02: d109 bne.n 8003e18 + 8003e04: 687b ldr r3, [r7, #4] + 8003e06: f893 3040 ldrb.w r3, [r3, #64] @ 0x40 + 8003e0a: b2db uxtb r3, r3 + 8003e0c: 2b01 cmp r3, #1 + 8003e0e: bf14 ite ne + 8003e10: 2301 movne r3, #1 + 8003e12: 2300 moveq r3, #0 + 8003e14: b2db uxtb r3, r3 + 8003e16: e008 b.n 8003e2a + 8003e18: 687b ldr r3, [r7, #4] + 8003e1a: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 + 8003e1e: b2db uxtb r3, r3 + 8003e20: 2b01 cmp r3, #1 + 8003e22: bf14 ite ne + 8003e24: 2301 movne r3, #1 + 8003e26: 2300 moveq r3, #0 + 8003e28: b2db uxtb r3, r3 + 8003e2a: 2b00 cmp r3, #0 + 8003e2c: d001 beq.n 8003e32 + { + return HAL_ERROR; + 8003e2e: 2301 movs r3, #1 + 8003e30: e05e b.n 8003ef0 + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 8003e32: 683b ldr r3, [r7, #0] + 8003e34: 2b00 cmp r3, #0 + 8003e36: d104 bne.n 8003e42 + 8003e38: 687b ldr r3, [r7, #4] + 8003e3a: 2202 movs r2, #2 + 8003e3c: f883 203e strb.w r2, [r3, #62] @ 0x3e + 8003e40: e013 b.n 8003e6a + 8003e42: 683b ldr r3, [r7, #0] + 8003e44: 2b04 cmp r3, #4 + 8003e46: d104 bne.n 8003e52 + 8003e48: 687b ldr r3, [r7, #4] + 8003e4a: 2202 movs r2, #2 + 8003e4c: f883 203f strb.w r2, [r3, #63] @ 0x3f + 8003e50: e00b b.n 8003e6a + 8003e52: 683b ldr r3, [r7, #0] + 8003e54: 2b08 cmp r3, #8 + 8003e56: d104 bne.n 8003e62 + 8003e58: 687b ldr r3, [r7, #4] + 8003e5a: 2202 movs r2, #2 + 8003e5c: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 8003e60: e003 b.n 8003e6a + 8003e62: 687b ldr r3, [r7, #4] + 8003e64: 2202 movs r2, #2 + 8003e66: f883 2041 strb.w r2, [r3, #65] @ 0x41 + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + 8003e6a: 687b ldr r3, [r7, #4] + 8003e6c: 681b ldr r3, [r3, #0] + 8003e6e: 2201 movs r2, #1 + 8003e70: 6839 ldr r1, [r7, #0] + 8003e72: 4618 mov r0, r3 + 8003e74: f000 fc5c bl 8004730 + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + 8003e78: 687b ldr r3, [r7, #4] + 8003e7a: 681b ldr r3, [r3, #0] + 8003e7c: 4a1e ldr r2, [pc, #120] @ (8003ef8 ) + 8003e7e: 4293 cmp r3, r2 + 8003e80: d107 bne.n 8003e92 + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + 8003e82: 687b ldr r3, [r7, #4] + 8003e84: 681b ldr r3, [r3, #0] + 8003e86: 6c5a ldr r2, [r3, #68] @ 0x44 + 8003e88: 687b ldr r3, [r7, #4] + 8003e8a: 681b ldr r3, [r3, #0] + 8003e8c: f442 4200 orr.w r2, r2, #32768 @ 0x8000 + 8003e90: 645a str r2, [r3, #68] @ 0x44 + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 8003e92: 687b ldr r3, [r7, #4] + 8003e94: 681b ldr r3, [r3, #0] + 8003e96: 4a18 ldr r2, [pc, #96] @ (8003ef8 ) + 8003e98: 4293 cmp r3, r2 + 8003e9a: d00e beq.n 8003eba + 8003e9c: 687b ldr r3, [r7, #4] + 8003e9e: 681b ldr r3, [r3, #0] + 8003ea0: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8003ea4: d009 beq.n 8003eba + 8003ea6: 687b ldr r3, [r7, #4] + 8003ea8: 681b ldr r3, [r3, #0] + 8003eaa: 4a14 ldr r2, [pc, #80] @ (8003efc ) + 8003eac: 4293 cmp r3, r2 + 8003eae: d004 beq.n 8003eba + 8003eb0: 687b ldr r3, [r7, #4] + 8003eb2: 681b ldr r3, [r3, #0] + 8003eb4: 4a12 ldr r2, [pc, #72] @ (8003f00 ) + 8003eb6: 4293 cmp r3, r2 + 8003eb8: d111 bne.n 8003ede + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 8003eba: 687b ldr r3, [r7, #4] + 8003ebc: 681b ldr r3, [r3, #0] + 8003ebe: 689b ldr r3, [r3, #8] + 8003ec0: f003 0307 and.w r3, r3, #7 + 8003ec4: 60fb str r3, [r7, #12] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 8003ec6: 68fb ldr r3, [r7, #12] + 8003ec8: 2b06 cmp r3, #6 + 8003eca: d010 beq.n 8003eee + { + __HAL_TIM_ENABLE(htim); + 8003ecc: 687b ldr r3, [r7, #4] + 8003ece: 681b ldr r3, [r3, #0] + 8003ed0: 681a ldr r2, [r3, #0] + 8003ed2: 687b ldr r3, [r7, #4] + 8003ed4: 681b ldr r3, [r3, #0] + 8003ed6: f042 0201 orr.w r2, r2, #1 + 8003eda: 601a str r2, [r3, #0] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 8003edc: e007 b.n 8003eee + } + } + else + { + __HAL_TIM_ENABLE(htim); + 8003ede: 687b ldr r3, [r7, #4] + 8003ee0: 681b ldr r3, [r3, #0] + 8003ee2: 681a ldr r2, [r3, #0] + 8003ee4: 687b ldr r3, [r7, #4] + 8003ee6: 681b ldr r3, [r3, #0] + 8003ee8: f042 0201 orr.w r2, r2, #1 + 8003eec: 601a str r2, [r3, #0] + } + + /* Return function status */ + return HAL_OK; + 8003eee: 2300 movs r3, #0 +} + 8003ef0: 4618 mov r0, r3 + 8003ef2: 3710 adds r7, #16 + 8003ef4: 46bd mov sp, r7 + 8003ef6: bd80 pop {r7, pc} + 8003ef8: 40012c00 .word 0x40012c00 + 8003efc: 40000400 .word 0x40000400 + 8003f00: 40000800 .word 0x40000800 + +08003f04 : + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, + const TIM_OC_InitTypeDef *sConfig, + uint32_t Channel) +{ + 8003f04: b580 push {r7, lr} + 8003f06: b086 sub sp, #24 + 8003f08: af00 add r7, sp, #0 + 8003f0a: 60f8 str r0, [r7, #12] + 8003f0c: 60b9 str r1, [r7, #8] + 8003f0e: 607a str r2, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 8003f10: 2300 movs r3, #0 + 8003f12: 75fb strb r3, [r7, #23] + assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); + assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); + assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); + + /* Process Locked */ + __HAL_LOCK(htim); + 8003f14: 68fb ldr r3, [r7, #12] + 8003f16: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 8003f1a: 2b01 cmp r3, #1 + 8003f1c: d101 bne.n 8003f22 + 8003f1e: 2302 movs r3, #2 + 8003f20: e0ae b.n 8004080 + 8003f22: 68fb ldr r3, [r7, #12] + 8003f24: 2201 movs r2, #1 + 8003f26: f883 203c strb.w r2, [r3, #60] @ 0x3c + + switch (Channel) + 8003f2a: 687b ldr r3, [r7, #4] + 8003f2c: 2b0c cmp r3, #12 + 8003f2e: f200 809f bhi.w 8004070 + 8003f32: a201 add r2, pc, #4 @ (adr r2, 8003f38 ) + 8003f34: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8003f38: 08003f6d .word 0x08003f6d + 8003f3c: 08004071 .word 0x08004071 + 8003f40: 08004071 .word 0x08004071 + 8003f44: 08004071 .word 0x08004071 + 8003f48: 08003fad .word 0x08003fad + 8003f4c: 08004071 .word 0x08004071 + 8003f50: 08004071 .word 0x08004071 + 8003f54: 08004071 .word 0x08004071 + 8003f58: 08003fef .word 0x08003fef + 8003f5c: 08004071 .word 0x08004071 + 8003f60: 08004071 .word 0x08004071 + 8003f64: 08004071 .word 0x08004071 + 8003f68: 0800402f .word 0x0800402f + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Configure the Channel 1 in PWM mode */ + TIM_OC1_SetConfig(htim->Instance, sConfig); + 8003f6c: 68fb ldr r3, [r7, #12] + 8003f6e: 681b ldr r3, [r3, #0] + 8003f70: 68b9 ldr r1, [r7, #8] + 8003f72: 4618 mov r0, r3 + 8003f74: f000 f9be bl 80042f4 + + /* Set the Preload enable bit for channel1 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; + 8003f78: 68fb ldr r3, [r7, #12] + 8003f7a: 681b ldr r3, [r3, #0] + 8003f7c: 699a ldr r2, [r3, #24] + 8003f7e: 68fb ldr r3, [r7, #12] + 8003f80: 681b ldr r3, [r3, #0] + 8003f82: f042 0208 orr.w r2, r2, #8 + 8003f86: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; + 8003f88: 68fb ldr r3, [r7, #12] + 8003f8a: 681b ldr r3, [r3, #0] + 8003f8c: 699a ldr r2, [r3, #24] + 8003f8e: 68fb ldr r3, [r7, #12] + 8003f90: 681b ldr r3, [r3, #0] + 8003f92: f022 0204 bic.w r2, r2, #4 + 8003f96: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode; + 8003f98: 68fb ldr r3, [r7, #12] + 8003f9a: 681b ldr r3, [r3, #0] + 8003f9c: 6999 ldr r1, [r3, #24] + 8003f9e: 68bb ldr r3, [r7, #8] + 8003fa0: 691a ldr r2, [r3, #16] + 8003fa2: 68fb ldr r3, [r7, #12] + 8003fa4: 681b ldr r3, [r3, #0] + 8003fa6: 430a orrs r2, r1 + 8003fa8: 619a str r2, [r3, #24] + break; + 8003faa: e064 b.n 8004076 + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Configure the Channel 2 in PWM mode */ + TIM_OC2_SetConfig(htim->Instance, sConfig); + 8003fac: 68fb ldr r3, [r7, #12] + 8003fae: 681b ldr r3, [r3, #0] + 8003fb0: 68b9 ldr r1, [r7, #8] + 8003fb2: 4618 mov r0, r3 + 8003fb4: f000 fa04 bl 80043c0 + + /* Set the Preload enable bit for channel2 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; + 8003fb8: 68fb ldr r3, [r7, #12] + 8003fba: 681b ldr r3, [r3, #0] + 8003fbc: 699a ldr r2, [r3, #24] + 8003fbe: 68fb ldr r3, [r7, #12] + 8003fc0: 681b ldr r3, [r3, #0] + 8003fc2: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 8003fc6: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; + 8003fc8: 68fb ldr r3, [r7, #12] + 8003fca: 681b ldr r3, [r3, #0] + 8003fcc: 699a ldr r2, [r3, #24] + 8003fce: 68fb ldr r3, [r7, #12] + 8003fd0: 681b ldr r3, [r3, #0] + 8003fd2: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 8003fd6: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + 8003fd8: 68fb ldr r3, [r7, #12] + 8003fda: 681b ldr r3, [r3, #0] + 8003fdc: 6999 ldr r1, [r3, #24] + 8003fde: 68bb ldr r3, [r7, #8] + 8003fe0: 691b ldr r3, [r3, #16] + 8003fe2: 021a lsls r2, r3, #8 + 8003fe4: 68fb ldr r3, [r7, #12] + 8003fe6: 681b ldr r3, [r3, #0] + 8003fe8: 430a orrs r2, r1 + 8003fea: 619a str r2, [r3, #24] + break; + 8003fec: e043 b.n 8004076 + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Configure the Channel 3 in PWM mode */ + TIM_OC3_SetConfig(htim->Instance, sConfig); + 8003fee: 68fb ldr r3, [r7, #12] + 8003ff0: 681b ldr r3, [r3, #0] + 8003ff2: 68b9 ldr r1, [r7, #8] + 8003ff4: 4618 mov r0, r3 + 8003ff6: f000 fa4d bl 8004494 + + /* Set the Preload enable bit for channel3 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; + 8003ffa: 68fb ldr r3, [r7, #12] + 8003ffc: 681b ldr r3, [r3, #0] + 8003ffe: 69da ldr r2, [r3, #28] + 8004000: 68fb ldr r3, [r7, #12] + 8004002: 681b ldr r3, [r3, #0] + 8004004: f042 0208 orr.w r2, r2, #8 + 8004008: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; + 800400a: 68fb ldr r3, [r7, #12] + 800400c: 681b ldr r3, [r3, #0] + 800400e: 69da ldr r2, [r3, #28] + 8004010: 68fb ldr r3, [r7, #12] + 8004012: 681b ldr r3, [r3, #0] + 8004014: f022 0204 bic.w r2, r2, #4 + 8004018: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode; + 800401a: 68fb ldr r3, [r7, #12] + 800401c: 681b ldr r3, [r3, #0] + 800401e: 69d9 ldr r1, [r3, #28] + 8004020: 68bb ldr r3, [r7, #8] + 8004022: 691a ldr r2, [r3, #16] + 8004024: 68fb ldr r3, [r7, #12] + 8004026: 681b ldr r3, [r3, #0] + 8004028: 430a orrs r2, r1 + 800402a: 61da str r2, [r3, #28] + break; + 800402c: e023 b.n 8004076 + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Configure the Channel 4 in PWM mode */ + TIM_OC4_SetConfig(htim->Instance, sConfig); + 800402e: 68fb ldr r3, [r7, #12] + 8004030: 681b ldr r3, [r3, #0] + 8004032: 68b9 ldr r1, [r7, #8] + 8004034: 4618 mov r0, r3 + 8004036: f000 fa97 bl 8004568 + + /* Set the Preload enable bit for channel4 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; + 800403a: 68fb ldr r3, [r7, #12] + 800403c: 681b ldr r3, [r3, #0] + 800403e: 69da ldr r2, [r3, #28] + 8004040: 68fb ldr r3, [r7, #12] + 8004042: 681b ldr r3, [r3, #0] + 8004044: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 8004048: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; + 800404a: 68fb ldr r3, [r7, #12] + 800404c: 681b ldr r3, [r3, #0] + 800404e: 69da ldr r2, [r3, #28] + 8004050: 68fb ldr r3, [r7, #12] + 8004052: 681b ldr r3, [r3, #0] + 8004054: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 8004058: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + 800405a: 68fb ldr r3, [r7, #12] + 800405c: 681b ldr r3, [r3, #0] + 800405e: 69d9 ldr r1, [r3, #28] + 8004060: 68bb ldr r3, [r7, #8] + 8004062: 691b ldr r3, [r3, #16] + 8004064: 021a lsls r2, r3, #8 + 8004066: 68fb ldr r3, [r7, #12] + 8004068: 681b ldr r3, [r3, #0] + 800406a: 430a orrs r2, r1 + 800406c: 61da str r2, [r3, #28] + break; + 800406e: e002 b.n 8004076 + } + + default: + status = HAL_ERROR; + 8004070: 2301 movs r3, #1 + 8004072: 75fb strb r3, [r7, #23] + break; + 8004074: bf00 nop + } + + __HAL_UNLOCK(htim); + 8004076: 68fb ldr r3, [r7, #12] + 8004078: 2200 movs r2, #0 + 800407a: f883 203c strb.w r2, [r3, #60] @ 0x3c + + return status; + 800407e: 7dfb ldrb r3, [r7, #23] +} + 8004080: 4618 mov r0, r3 + 8004082: 3718 adds r7, #24 + 8004084: 46bd mov sp, r7 + 8004086: bd80 pop {r7, pc} + +08004088 : + * @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) +{ + 8004088: b580 push {r7, lr} + 800408a: b084 sub sp, #16 + 800408c: af00 add r7, sp, #0 + 800408e: 6078 str r0, [r7, #4] + 8004090: 6039 str r1, [r7, #0] + HAL_StatusTypeDef status = HAL_OK; + 8004092: 2300 movs r3, #0 + 8004094: 73fb strb r3, [r7, #15] + uint32_t tmpsmcr; + + /* Process Locked */ + __HAL_LOCK(htim); + 8004096: 687b ldr r3, [r7, #4] + 8004098: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 800409c: 2b01 cmp r3, #1 + 800409e: d101 bne.n 80040a4 + 80040a0: 2302 movs r3, #2 + 80040a2: e0b4 b.n 800420e + 80040a4: 687b ldr r3, [r7, #4] + 80040a6: 2201 movs r2, #1 + 80040a8: f883 203c strb.w r2, [r3, #60] @ 0x3c + + htim->State = HAL_TIM_STATE_BUSY; + 80040ac: 687b ldr r3, [r7, #4] + 80040ae: 2202 movs r2, #2 + 80040b0: 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; + 80040b4: 687b ldr r3, [r7, #4] + 80040b6: 681b ldr r3, [r3, #0] + 80040b8: 689b ldr r3, [r3, #8] + 80040ba: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); + 80040bc: 68bb ldr r3, [r7, #8] + 80040be: f023 0377 bic.w r3, r3, #119 @ 0x77 + 80040c2: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 80040c4: 68bb ldr r3, [r7, #8] + 80040c6: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 80040ca: 60bb str r3, [r7, #8] + htim->Instance->SMCR = tmpsmcr; + 80040cc: 687b ldr r3, [r7, #4] + 80040ce: 681b ldr r3, [r3, #0] + 80040d0: 68ba ldr r2, [r7, #8] + 80040d2: 609a str r2, [r3, #8] + + switch (sClockSourceConfig->ClockSource) + 80040d4: 683b ldr r3, [r7, #0] + 80040d6: 681b ldr r3, [r3, #0] + 80040d8: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 80040dc: d03e beq.n 800415c + 80040de: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 80040e2: f200 8087 bhi.w 80041f4 + 80040e6: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 80040ea: f000 8086 beq.w 80041fa + 80040ee: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 80040f2: d87f bhi.n 80041f4 + 80040f4: 2b70 cmp r3, #112 @ 0x70 + 80040f6: d01a beq.n 800412e + 80040f8: 2b70 cmp r3, #112 @ 0x70 + 80040fa: d87b bhi.n 80041f4 + 80040fc: 2b60 cmp r3, #96 @ 0x60 + 80040fe: d050 beq.n 80041a2 + 8004100: 2b60 cmp r3, #96 @ 0x60 + 8004102: d877 bhi.n 80041f4 + 8004104: 2b50 cmp r3, #80 @ 0x50 + 8004106: d03c beq.n 8004182 + 8004108: 2b50 cmp r3, #80 @ 0x50 + 800410a: d873 bhi.n 80041f4 + 800410c: 2b40 cmp r3, #64 @ 0x40 + 800410e: d058 beq.n 80041c2 + 8004110: 2b40 cmp r3, #64 @ 0x40 + 8004112: d86f bhi.n 80041f4 + 8004114: 2b30 cmp r3, #48 @ 0x30 + 8004116: d064 beq.n 80041e2 + 8004118: 2b30 cmp r3, #48 @ 0x30 + 800411a: d86b bhi.n 80041f4 + 800411c: 2b20 cmp r3, #32 + 800411e: d060 beq.n 80041e2 + 8004120: 2b20 cmp r3, #32 + 8004122: d867 bhi.n 80041f4 + 8004124: 2b00 cmp r3, #0 + 8004126: d05c beq.n 80041e2 + 8004128: 2b10 cmp r3, #16 + 800412a: d05a beq.n 80041e2 + 800412c: e062 b.n 80041f4 + 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, + 800412e: 687b ldr r3, [r7, #4] + 8004130: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 8004132: 683b ldr r3, [r7, #0] + 8004134: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 8004136: 683b ldr r3, [r7, #0] + 8004138: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 800413a: 683b ldr r3, [r7, #0] + 800413c: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 800413e: f000 fad8 bl 80046f2 + + /* Select the External clock mode1 and the ETRF trigger */ + tmpsmcr = htim->Instance->SMCR; + 8004142: 687b ldr r3, [r7, #4] + 8004144: 681b ldr r3, [r3, #0] + 8004146: 689b ldr r3, [r3, #8] + 8004148: 60bb str r3, [r7, #8] + tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); + 800414a: 68bb ldr r3, [r7, #8] + 800414c: f043 0377 orr.w r3, r3, #119 @ 0x77 + 8004150: 60bb str r3, [r7, #8] + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 8004152: 687b ldr r3, [r7, #4] + 8004154: 681b ldr r3, [r3, #0] + 8004156: 68ba ldr r2, [r7, #8] + 8004158: 609a str r2, [r3, #8] + break; + 800415a: e04f b.n 80041fc + 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, + 800415c: 687b ldr r3, [r7, #4] + 800415e: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 8004160: 683b ldr r3, [r7, #0] + 8004162: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 8004164: 683b ldr r3, [r7, #0] + 8004166: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 8004168: 683b ldr r3, [r7, #0] + 800416a: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 800416c: f000 fac1 bl 80046f2 + /* Enable the External clock mode2 */ + htim->Instance->SMCR |= TIM_SMCR_ECE; + 8004170: 687b ldr r3, [r7, #4] + 8004172: 681b ldr r3, [r3, #0] + 8004174: 689a ldr r2, [r3, #8] + 8004176: 687b ldr r3, [r7, #4] + 8004178: 681b ldr r3, [r3, #0] + 800417a: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 800417e: 609a str r2, [r3, #8] + break; + 8004180: e03c b.n 80041fc + + /* 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, + 8004182: 687b ldr r3, [r7, #4] + 8004184: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 8004186: 683b ldr r3, [r7, #0] + 8004188: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 800418a: 683b ldr r3, [r7, #0] + 800418c: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 800418e: 461a mov r2, r3 + 8004190: f000 fa38 bl 8004604 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); + 8004194: 687b ldr r3, [r7, #4] + 8004196: 681b ldr r3, [r3, #0] + 8004198: 2150 movs r1, #80 @ 0x50 + 800419a: 4618 mov r0, r3 + 800419c: f000 fa8f bl 80046be + break; + 80041a0: e02c b.n 80041fc + + /* 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, + 80041a2: 687b ldr r3, [r7, #4] + 80041a4: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 80041a6: 683b ldr r3, [r7, #0] + 80041a8: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 80041aa: 683b ldr r3, [r7, #0] + 80041ac: 68db ldr r3, [r3, #12] + TIM_TI2_ConfigInputStage(htim->Instance, + 80041ae: 461a mov r2, r3 + 80041b0: f000 fa56 bl 8004660 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); + 80041b4: 687b ldr r3, [r7, #4] + 80041b6: 681b ldr r3, [r3, #0] + 80041b8: 2160 movs r1, #96 @ 0x60 + 80041ba: 4618 mov r0, r3 + 80041bc: f000 fa7f bl 80046be + break; + 80041c0: e01c b.n 80041fc + + /* 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, + 80041c2: 687b ldr r3, [r7, #4] + 80041c4: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 80041c6: 683b ldr r3, [r7, #0] + 80041c8: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 80041ca: 683b ldr r3, [r7, #0] + 80041cc: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 80041ce: 461a mov r2, r3 + 80041d0: f000 fa18 bl 8004604 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); + 80041d4: 687b ldr r3, [r7, #4] + 80041d6: 681b ldr r3, [r3, #0] + 80041d8: 2140 movs r1, #64 @ 0x40 + 80041da: 4618 mov r0, r3 + 80041dc: f000 fa6f bl 80046be + break; + 80041e0: e00c b.n 80041fc + 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); + 80041e2: 687b ldr r3, [r7, #4] + 80041e4: 681a ldr r2, [r3, #0] + 80041e6: 683b ldr r3, [r7, #0] + 80041e8: 681b ldr r3, [r3, #0] + 80041ea: 4619 mov r1, r3 + 80041ec: 4610 mov r0, r2 + 80041ee: f000 fa66 bl 80046be + break; + 80041f2: e003 b.n 80041fc + } + + default: + status = HAL_ERROR; + 80041f4: 2301 movs r3, #1 + 80041f6: 73fb strb r3, [r7, #15] + break; + 80041f8: e000 b.n 80041fc + break; + 80041fa: bf00 nop + } + htim->State = HAL_TIM_STATE_READY; + 80041fc: 687b ldr r3, [r7, #4] + 80041fe: 2201 movs r2, #1 + 8004200: f883 203d strb.w r2, [r3, #61] @ 0x3d + + __HAL_UNLOCK(htim); + 8004204: 687b ldr r3, [r7, #4] + 8004206: 2200 movs r2, #0 + 8004208: f883 203c strb.w r2, [r3, #60] @ 0x3c + + return status; + 800420c: 7bfb ldrb r3, [r7, #15] +} + 800420e: 4618 mov r0, r3 + 8004210: 3710 adds r7, #16 + 8004212: 46bd mov sp, r7 + 8004214: bd80 pop {r7, pc} + ... + +08004218 : + * @param TIMx TIM peripheral + * @param Structure TIM Base configuration structure + * @retval None + */ +void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) +{ + 8004218: b480 push {r7} + 800421a: b085 sub sp, #20 + 800421c: af00 add r7, sp, #0 + 800421e: 6078 str r0, [r7, #4] + 8004220: 6039 str r1, [r7, #0] + uint32_t tmpcr1; + tmpcr1 = TIMx->CR1; + 8004222: 687b ldr r3, [r7, #4] + 8004224: 681b ldr r3, [r3, #0] + 8004226: 60fb str r3, [r7, #12] + + /* Set TIM Time Base Unit parameters ---------------------------------------*/ + if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + 8004228: 687b ldr r3, [r7, #4] + 800422a: 4a2f ldr r2, [pc, #188] @ (80042e8 ) + 800422c: 4293 cmp r3, r2 + 800422e: d00b beq.n 8004248 + 8004230: 687b ldr r3, [r7, #4] + 8004232: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8004236: d007 beq.n 8004248 + 8004238: 687b ldr r3, [r7, #4] + 800423a: 4a2c ldr r2, [pc, #176] @ (80042ec ) + 800423c: 4293 cmp r3, r2 + 800423e: d003 beq.n 8004248 + 8004240: 687b ldr r3, [r7, #4] + 8004242: 4a2b ldr r2, [pc, #172] @ (80042f0 ) + 8004244: 4293 cmp r3, r2 + 8004246: d108 bne.n 800425a + { + /* Select the Counter Mode */ + tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); + 8004248: 68fb ldr r3, [r7, #12] + 800424a: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800424e: 60fb str r3, [r7, #12] + tmpcr1 |= Structure->CounterMode; + 8004250: 683b ldr r3, [r7, #0] + 8004252: 685b ldr r3, [r3, #4] + 8004254: 68fa ldr r2, [r7, #12] + 8004256: 4313 orrs r3, r2 + 8004258: 60fb str r3, [r7, #12] + } + + if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + 800425a: 687b ldr r3, [r7, #4] + 800425c: 4a22 ldr r2, [pc, #136] @ (80042e8 ) + 800425e: 4293 cmp r3, r2 + 8004260: d00b beq.n 800427a + 8004262: 687b ldr r3, [r7, #4] + 8004264: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8004268: d007 beq.n 800427a + 800426a: 687b ldr r3, [r7, #4] + 800426c: 4a1f ldr r2, [pc, #124] @ (80042ec ) + 800426e: 4293 cmp r3, r2 + 8004270: d003 beq.n 800427a + 8004272: 687b ldr r3, [r7, #4] + 8004274: 4a1e ldr r2, [pc, #120] @ (80042f0 ) + 8004276: 4293 cmp r3, r2 + 8004278: d108 bne.n 800428c + { + /* Set the clock division */ + tmpcr1 &= ~TIM_CR1_CKD; + 800427a: 68fb ldr r3, [r7, #12] + 800427c: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8004280: 60fb str r3, [r7, #12] + tmpcr1 |= (uint32_t)Structure->ClockDivision; + 8004282: 683b ldr r3, [r7, #0] + 8004284: 68db ldr r3, [r3, #12] + 8004286: 68fa ldr r2, [r7, #12] + 8004288: 4313 orrs r3, r2 + 800428a: 60fb str r3, [r7, #12] + } + + /* Set the auto-reload preload */ + MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); + 800428c: 68fb ldr r3, [r7, #12] + 800428e: f023 0280 bic.w r2, r3, #128 @ 0x80 + 8004292: 683b ldr r3, [r7, #0] + 8004294: 695b ldr r3, [r3, #20] + 8004296: 4313 orrs r3, r2 + 8004298: 60fb str r3, [r7, #12] + + TIMx->CR1 = tmpcr1; + 800429a: 687b ldr r3, [r7, #4] + 800429c: 68fa ldr r2, [r7, #12] + 800429e: 601a str r2, [r3, #0] + + /* Set the Autoreload value */ + TIMx->ARR = (uint32_t)Structure->Period ; + 80042a0: 683b ldr r3, [r7, #0] + 80042a2: 689a ldr r2, [r3, #8] + 80042a4: 687b ldr r3, [r7, #4] + 80042a6: 62da str r2, [r3, #44] @ 0x2c + + /* Set the Prescaler value */ + TIMx->PSC = Structure->Prescaler; + 80042a8: 683b ldr r3, [r7, #0] + 80042aa: 681a ldr r2, [r3, #0] + 80042ac: 687b ldr r3, [r7, #4] + 80042ae: 629a str r2, [r3, #40] @ 0x28 + + if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) + 80042b0: 687b ldr r3, [r7, #4] + 80042b2: 4a0d ldr r2, [pc, #52] @ (80042e8 ) + 80042b4: 4293 cmp r3, r2 + 80042b6: d103 bne.n 80042c0 + { + /* Set the Repetition Counter value */ + TIMx->RCR = Structure->RepetitionCounter; + 80042b8: 683b ldr r3, [r7, #0] + 80042ba: 691a ldr r2, [r3, #16] + 80042bc: 687b ldr r3, [r7, #4] + 80042be: 631a str r2, [r3, #48] @ 0x30 + } + + /* Generate an update event to reload the Prescaler + and the repetition counter (only for advanced timer) value immediately */ + TIMx->EGR = TIM_EGR_UG; + 80042c0: 687b ldr r3, [r7, #4] + 80042c2: 2201 movs r2, #1 + 80042c4: 615a str r2, [r3, #20] + + /* Check if the update flag is set after the Update Generation, if so clear the UIF flag */ + if (HAL_IS_BIT_SET(TIMx->SR, TIM_FLAG_UPDATE)) + 80042c6: 687b ldr r3, [r7, #4] + 80042c8: 691b ldr r3, [r3, #16] + 80042ca: f003 0301 and.w r3, r3, #1 + 80042ce: 2b00 cmp r3, #0 + 80042d0: d005 beq.n 80042de + { + /* Clear the update flag */ + CLEAR_BIT(TIMx->SR, TIM_FLAG_UPDATE); + 80042d2: 687b ldr r3, [r7, #4] + 80042d4: 691b ldr r3, [r3, #16] + 80042d6: f023 0201 bic.w r2, r3, #1 + 80042da: 687b ldr r3, [r7, #4] + 80042dc: 611a str r2, [r3, #16] + } +} + 80042de: bf00 nop + 80042e0: 3714 adds r7, #20 + 80042e2: 46bd mov sp, r7 + 80042e4: bc80 pop {r7} + 80042e6: 4770 bx lr + 80042e8: 40012c00 .word 0x40012c00 + 80042ec: 40000400 .word 0x40000400 + 80042f0: 40000800 .word 0x40000800 + +080042f4 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 80042f4: b480 push {r7} + 80042f6: b087 sub sp, #28 + 80042f8: af00 add r7, sp, #0 + 80042fa: 6078 str r0, [r7, #4] + 80042fc: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 80042fe: 687b ldr r3, [r7, #4] + 8004300: 6a1b ldr r3, [r3, #32] + 8004302: 617b str r3, [r7, #20] + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= ~TIM_CCER_CC1E; + 8004304: 687b ldr r3, [r7, #4] + 8004306: 6a1b ldr r3, [r3, #32] + 8004308: f023 0201 bic.w r2, r3, #1 + 800430c: 687b ldr r3, [r7, #4] + 800430e: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8004310: 687b ldr r3, [r7, #4] + 8004312: 685b ldr r3, [r3, #4] + 8004314: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 8004316: 687b ldr r3, [r7, #4] + 8004318: 699b ldr r3, [r3, #24] + 800431a: 60fb str r3, [r7, #12] + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= ~TIM_CCMR1_OC1M; + 800431c: 68fb ldr r3, [r7, #12] + 800431e: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004322: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC1S; + 8004324: 68fb ldr r3, [r7, #12] + 8004326: f023 0303 bic.w r3, r3, #3 + 800432a: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 800432c: 683b ldr r3, [r7, #0] + 800432e: 681b ldr r3, [r3, #0] + 8004330: 68fa ldr r2, [r7, #12] + 8004332: 4313 orrs r3, r2 + 8004334: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC1P; + 8004336: 697b ldr r3, [r7, #20] + 8004338: f023 0302 bic.w r3, r3, #2 + 800433c: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= OC_Config->OCPolarity; + 800433e: 683b ldr r3, [r7, #0] + 8004340: 689b ldr r3, [r3, #8] + 8004342: 697a ldr r2, [r7, #20] + 8004344: 4313 orrs r3, r2 + 8004346: 617b str r3, [r7, #20] + + if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_1)) + 8004348: 687b ldr r3, [r7, #4] + 800434a: 4a1c ldr r2, [pc, #112] @ (80043bc ) + 800434c: 4293 cmp r3, r2 + 800434e: d10c bne.n 800436a + { + /* Check parameters */ + assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); + + /* Reset the Output N Polarity level */ + tmpccer &= ~TIM_CCER_CC1NP; + 8004350: 697b ldr r3, [r7, #20] + 8004352: f023 0308 bic.w r3, r3, #8 + 8004356: 617b str r3, [r7, #20] + /* Set the Output N Polarity */ + tmpccer |= OC_Config->OCNPolarity; + 8004358: 683b ldr r3, [r7, #0] + 800435a: 68db ldr r3, [r3, #12] + 800435c: 697a ldr r2, [r7, #20] + 800435e: 4313 orrs r3, r2 + 8004360: 617b str r3, [r7, #20] + /* Reset the Output N State */ + tmpccer &= ~TIM_CCER_CC1NE; + 8004362: 697b ldr r3, [r7, #20] + 8004364: f023 0304 bic.w r3, r3, #4 + 8004368: 617b str r3, [r7, #20] + } + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + 800436a: 687b ldr r3, [r7, #4] + 800436c: 4a13 ldr r2, [pc, #76] @ (80043bc ) + 800436e: 4293 cmp r3, r2 + 8004370: d111 bne.n 8004396 + /* Check parameters */ + assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); + assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + + /* Reset the Output Compare and Output Compare N IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS1; + 8004372: 693b ldr r3, [r7, #16] + 8004374: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8004378: 613b str r3, [r7, #16] + tmpcr2 &= ~TIM_CR2_OIS1N; + 800437a: 693b ldr r3, [r7, #16] + 800437c: f423 7300 bic.w r3, r3, #512 @ 0x200 + 8004380: 613b str r3, [r7, #16] + /* Set the Output Idle state */ + tmpcr2 |= OC_Config->OCIdleState; + 8004382: 683b ldr r3, [r7, #0] + 8004384: 695b ldr r3, [r3, #20] + 8004386: 693a ldr r2, [r7, #16] + 8004388: 4313 orrs r3, r2 + 800438a: 613b str r3, [r7, #16] + /* Set the Output N Idle state */ + tmpcr2 |= OC_Config->OCNIdleState; + 800438c: 683b ldr r3, [r7, #0] + 800438e: 699b ldr r3, [r3, #24] + 8004390: 693a ldr r2, [r7, #16] + 8004392: 4313 orrs r3, r2 + 8004394: 613b str r3, [r7, #16] + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8004396: 687b ldr r3, [r7, #4] + 8004398: 693a ldr r2, [r7, #16] + 800439a: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 800439c: 687b ldr r3, [r7, #4] + 800439e: 68fa ldr r2, [r7, #12] + 80043a0: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR1 = OC_Config->Pulse; + 80043a2: 683b ldr r3, [r7, #0] + 80043a4: 685a ldr r2, [r3, #4] + 80043a6: 687b ldr r3, [r7, #4] + 80043a8: 635a str r2, [r3, #52] @ 0x34 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 80043aa: 687b ldr r3, [r7, #4] + 80043ac: 697a ldr r2, [r7, #20] + 80043ae: 621a str r2, [r3, #32] +} + 80043b0: bf00 nop + 80043b2: 371c adds r7, #28 + 80043b4: 46bd mov sp, r7 + 80043b6: bc80 pop {r7} + 80043b8: 4770 bx lr + 80043ba: bf00 nop + 80043bc: 40012c00 .word 0x40012c00 + +080043c0 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 80043c0: b480 push {r7} + 80043c2: b087 sub sp, #28 + 80043c4: af00 add r7, sp, #0 + 80043c6: 6078 str r0, [r7, #4] + 80043c8: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 80043ca: 687b ldr r3, [r7, #4] + 80043cc: 6a1b ldr r3, [r3, #32] + 80043ce: 617b str r3, [r7, #20] + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + 80043d0: 687b ldr r3, [r7, #4] + 80043d2: 6a1b ldr r3, [r3, #32] + 80043d4: f023 0210 bic.w r2, r3, #16 + 80043d8: 687b ldr r3, [r7, #4] + 80043da: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 80043dc: 687b ldr r3, [r7, #4] + 80043de: 685b ldr r3, [r3, #4] + 80043e0: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 80043e2: 687b ldr r3, [r7, #4] + 80043e4: 699b ldr r3, [r3, #24] + 80043e6: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR1_OC2M; + 80043e8: 68fb ldr r3, [r7, #12] + 80043ea: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80043ee: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC2S; + 80043f0: 68fb ldr r3, [r7, #12] + 80043f2: f423 7340 bic.w r3, r3, #768 @ 0x300 + 80043f6: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 80043f8: 683b ldr r3, [r7, #0] + 80043fa: 681b ldr r3, [r3, #0] + 80043fc: 021b lsls r3, r3, #8 + 80043fe: 68fa ldr r2, [r7, #12] + 8004400: 4313 orrs r3, r2 + 8004402: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC2P; + 8004404: 697b ldr r3, [r7, #20] + 8004406: f023 0320 bic.w r3, r3, #32 + 800440a: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 4U); + 800440c: 683b ldr r3, [r7, #0] + 800440e: 689b ldr r3, [r3, #8] + 8004410: 011b lsls r3, r3, #4 + 8004412: 697a ldr r2, [r7, #20] + 8004414: 4313 orrs r3, r2 + 8004416: 617b str r3, [r7, #20] + + if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_2)) + 8004418: 687b ldr r3, [r7, #4] + 800441a: 4a1d ldr r2, [pc, #116] @ (8004490 ) + 800441c: 4293 cmp r3, r2 + 800441e: d10d bne.n 800443c + { + assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); + + /* Reset the Output N Polarity level */ + tmpccer &= ~TIM_CCER_CC2NP; + 8004420: 697b ldr r3, [r7, #20] + 8004422: f023 0380 bic.w r3, r3, #128 @ 0x80 + 8004426: 617b str r3, [r7, #20] + /* Set the Output N Polarity */ + tmpccer |= (OC_Config->OCNPolarity << 4U); + 8004428: 683b ldr r3, [r7, #0] + 800442a: 68db ldr r3, [r3, #12] + 800442c: 011b lsls r3, r3, #4 + 800442e: 697a ldr r2, [r7, #20] + 8004430: 4313 orrs r3, r2 + 8004432: 617b str r3, [r7, #20] + /* Reset the Output N State */ + tmpccer &= ~TIM_CCER_CC2NE; + 8004434: 697b ldr r3, [r7, #20] + 8004436: f023 0340 bic.w r3, r3, #64 @ 0x40 + 800443a: 617b str r3, [r7, #20] + } + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + 800443c: 687b ldr r3, [r7, #4] + 800443e: 4a14 ldr r2, [pc, #80] @ (8004490 ) + 8004440: 4293 cmp r3, r2 + 8004442: d113 bne.n 800446c + /* Check parameters */ + assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); + assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + + /* Reset the Output Compare and Output Compare N IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS2; + 8004444: 693b ldr r3, [r7, #16] + 8004446: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 800444a: 613b str r3, [r7, #16] + tmpcr2 &= ~TIM_CR2_OIS2N; + 800444c: 693b ldr r3, [r7, #16] + 800444e: f423 6300 bic.w r3, r3, #2048 @ 0x800 + 8004452: 613b str r3, [r7, #16] + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 2U); + 8004454: 683b ldr r3, [r7, #0] + 8004456: 695b ldr r3, [r3, #20] + 8004458: 009b lsls r3, r3, #2 + 800445a: 693a ldr r2, [r7, #16] + 800445c: 4313 orrs r3, r2 + 800445e: 613b str r3, [r7, #16] + /* Set the Output N Idle state */ + tmpcr2 |= (OC_Config->OCNIdleState << 2U); + 8004460: 683b ldr r3, [r7, #0] + 8004462: 699b ldr r3, [r3, #24] + 8004464: 009b lsls r3, r3, #2 + 8004466: 693a ldr r2, [r7, #16] + 8004468: 4313 orrs r3, r2 + 800446a: 613b str r3, [r7, #16] + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 800446c: 687b ldr r3, [r7, #4] + 800446e: 693a ldr r2, [r7, #16] + 8004470: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 8004472: 687b ldr r3, [r7, #4] + 8004474: 68fa ldr r2, [r7, #12] + 8004476: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR2 = OC_Config->Pulse; + 8004478: 683b ldr r3, [r7, #0] + 800447a: 685a ldr r2, [r3, #4] + 800447c: 687b ldr r3, [r7, #4] + 800447e: 639a str r2, [r3, #56] @ 0x38 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8004480: 687b ldr r3, [r7, #4] + 8004482: 697a ldr r2, [r7, #20] + 8004484: 621a str r2, [r3, #32] +} + 8004486: bf00 nop + 8004488: 371c adds r7, #28 + 800448a: 46bd mov sp, r7 + 800448c: bc80 pop {r7} + 800448e: 4770 bx lr + 8004490: 40012c00 .word 0x40012c00 + +08004494 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8004494: b480 push {r7} + 8004496: b087 sub sp, #28 + 8004498: af00 add r7, sp, #0 + 800449a: 6078 str r0, [r7, #4] + 800449c: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 800449e: 687b ldr r3, [r7, #4] + 80044a0: 6a1b ldr r3, [r3, #32] + 80044a2: 617b str r3, [r7, #20] + + /* Disable the Channel 3: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC3E; + 80044a4: 687b ldr r3, [r7, #4] + 80044a6: 6a1b ldr r3, [r3, #32] + 80044a8: f423 7280 bic.w r2, r3, #256 @ 0x100 + 80044ac: 687b ldr r3, [r7, #4] + 80044ae: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 80044b0: 687b ldr r3, [r7, #4] + 80044b2: 685b ldr r3, [r3, #4] + 80044b4: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 80044b6: 687b ldr r3, [r7, #4] + 80044b8: 69db ldr r3, [r3, #28] + 80044ba: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC3M; + 80044bc: 68fb ldr r3, [r7, #12] + 80044be: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80044c2: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC3S; + 80044c4: 68fb ldr r3, [r7, #12] + 80044c6: f023 0303 bic.w r3, r3, #3 + 80044ca: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 80044cc: 683b ldr r3, [r7, #0] + 80044ce: 681b ldr r3, [r3, #0] + 80044d0: 68fa ldr r2, [r7, #12] + 80044d2: 4313 orrs r3, r2 + 80044d4: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC3P; + 80044d6: 697b ldr r3, [r7, #20] + 80044d8: f423 7300 bic.w r3, r3, #512 @ 0x200 + 80044dc: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 8U); + 80044de: 683b ldr r3, [r7, #0] + 80044e0: 689b ldr r3, [r3, #8] + 80044e2: 021b lsls r3, r3, #8 + 80044e4: 697a ldr r2, [r7, #20] + 80044e6: 4313 orrs r3, r2 + 80044e8: 617b str r3, [r7, #20] + + if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_3)) + 80044ea: 687b ldr r3, [r7, #4] + 80044ec: 4a1d ldr r2, [pc, #116] @ (8004564 ) + 80044ee: 4293 cmp r3, r2 + 80044f0: d10d bne.n 800450e + { + assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); + + /* Reset the Output N Polarity level */ + tmpccer &= ~TIM_CCER_CC3NP; + 80044f2: 697b ldr r3, [r7, #20] + 80044f4: f423 6300 bic.w r3, r3, #2048 @ 0x800 + 80044f8: 617b str r3, [r7, #20] + /* Set the Output N Polarity */ + tmpccer |= (OC_Config->OCNPolarity << 8U); + 80044fa: 683b ldr r3, [r7, #0] + 80044fc: 68db ldr r3, [r3, #12] + 80044fe: 021b lsls r3, r3, #8 + 8004500: 697a ldr r2, [r7, #20] + 8004502: 4313 orrs r3, r2 + 8004504: 617b str r3, [r7, #20] + /* Reset the Output N State */ + tmpccer &= ~TIM_CCER_CC3NE; + 8004506: 697b ldr r3, [r7, #20] + 8004508: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 800450c: 617b str r3, [r7, #20] + } + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + 800450e: 687b ldr r3, [r7, #4] + 8004510: 4a14 ldr r2, [pc, #80] @ (8004564 ) + 8004512: 4293 cmp r3, r2 + 8004514: d113 bne.n 800453e + /* Check parameters */ + assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); + assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + + /* Reset the Output Compare and Output Compare N IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS3; + 8004516: 693b ldr r3, [r7, #16] + 8004518: f423 5380 bic.w r3, r3, #4096 @ 0x1000 + 800451c: 613b str r3, [r7, #16] + tmpcr2 &= ~TIM_CR2_OIS3N; + 800451e: 693b ldr r3, [r7, #16] + 8004520: f423 5300 bic.w r3, r3, #8192 @ 0x2000 + 8004524: 613b str r3, [r7, #16] + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 4U); + 8004526: 683b ldr r3, [r7, #0] + 8004528: 695b ldr r3, [r3, #20] + 800452a: 011b lsls r3, r3, #4 + 800452c: 693a ldr r2, [r7, #16] + 800452e: 4313 orrs r3, r2 + 8004530: 613b str r3, [r7, #16] + /* Set the Output N Idle state */ + tmpcr2 |= (OC_Config->OCNIdleState << 4U); + 8004532: 683b ldr r3, [r7, #0] + 8004534: 699b ldr r3, [r3, #24] + 8004536: 011b lsls r3, r3, #4 + 8004538: 693a ldr r2, [r7, #16] + 800453a: 4313 orrs r3, r2 + 800453c: 613b str r3, [r7, #16] + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 800453e: 687b ldr r3, [r7, #4] + 8004540: 693a ldr r2, [r7, #16] + 8004542: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 8004544: 687b ldr r3, [r7, #4] + 8004546: 68fa ldr r2, [r7, #12] + 8004548: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR3 = OC_Config->Pulse; + 800454a: 683b ldr r3, [r7, #0] + 800454c: 685a ldr r2, [r3, #4] + 800454e: 687b ldr r3, [r7, #4] + 8004550: 63da str r2, [r3, #60] @ 0x3c + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8004552: 687b ldr r3, [r7, #4] + 8004554: 697a ldr r2, [r7, #20] + 8004556: 621a str r2, [r3, #32] +} + 8004558: bf00 nop + 800455a: 371c adds r7, #28 + 800455c: 46bd mov sp, r7 + 800455e: bc80 pop {r7} + 8004560: 4770 bx lr + 8004562: bf00 nop + 8004564: 40012c00 .word 0x40012c00 + +08004568 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8004568: b480 push {r7} + 800456a: b087 sub sp, #28 + 800456c: af00 add r7, sp, #0 + 800456e: 6078 str r0, [r7, #4] + 8004570: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8004572: 687b ldr r3, [r7, #4] + 8004574: 6a1b ldr r3, [r3, #32] + 8004576: 613b str r3, [r7, #16] + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= ~TIM_CCER_CC4E; + 8004578: 687b ldr r3, [r7, #4] + 800457a: 6a1b ldr r3, [r3, #32] + 800457c: f423 5280 bic.w r2, r3, #4096 @ 0x1000 + 8004580: 687b ldr r3, [r7, #4] + 8004582: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8004584: 687b ldr r3, [r7, #4] + 8004586: 685b ldr r3, [r3, #4] + 8004588: 617b str r3, [r7, #20] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 800458a: 687b ldr r3, [r7, #4] + 800458c: 69db ldr r3, [r3, #28] + 800458e: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC4M; + 8004590: 68fb ldr r3, [r7, #12] + 8004592: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004596: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC4S; + 8004598: 68fb ldr r3, [r7, #12] + 800459a: f423 7340 bic.w r3, r3, #768 @ 0x300 + 800459e: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 80045a0: 683b ldr r3, [r7, #0] + 80045a2: 681b ldr r3, [r3, #0] + 80045a4: 021b lsls r3, r3, #8 + 80045a6: 68fa ldr r2, [r7, #12] + 80045a8: 4313 orrs r3, r2 + 80045aa: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC4P; + 80045ac: 693b ldr r3, [r7, #16] + 80045ae: f423 5300 bic.w r3, r3, #8192 @ 0x2000 + 80045b2: 613b str r3, [r7, #16] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 12U); + 80045b4: 683b ldr r3, [r7, #0] + 80045b6: 689b ldr r3, [r3, #8] + 80045b8: 031b lsls r3, r3, #12 + 80045ba: 693a ldr r2, [r7, #16] + 80045bc: 4313 orrs r3, r2 + 80045be: 613b str r3, [r7, #16] + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + 80045c0: 687b ldr r3, [r7, #4] + 80045c2: 4a0f ldr r2, [pc, #60] @ (8004600 ) + 80045c4: 4293 cmp r3, r2 + 80045c6: d109 bne.n 80045dc + { + /* Check parameters */ + assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + + /* Reset the Output Compare IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS4; + 80045c8: 697b ldr r3, [r7, #20] + 80045ca: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 80045ce: 617b str r3, [r7, #20] + + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 6U); + 80045d0: 683b ldr r3, [r7, #0] + 80045d2: 695b ldr r3, [r3, #20] + 80045d4: 019b lsls r3, r3, #6 + 80045d6: 697a ldr r2, [r7, #20] + 80045d8: 4313 orrs r3, r2 + 80045da: 617b str r3, [r7, #20] + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 80045dc: 687b ldr r3, [r7, #4] + 80045de: 697a ldr r2, [r7, #20] + 80045e0: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 80045e2: 687b ldr r3, [r7, #4] + 80045e4: 68fa ldr r2, [r7, #12] + 80045e6: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR4 = OC_Config->Pulse; + 80045e8: 683b ldr r3, [r7, #0] + 80045ea: 685a ldr r2, [r3, #4] + 80045ec: 687b ldr r3, [r7, #4] + 80045ee: 641a str r2, [r3, #64] @ 0x40 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 80045f0: 687b ldr r3, [r7, #4] + 80045f2: 693a ldr r2, [r7, #16] + 80045f4: 621a str r2, [r3, #32] +} + 80045f6: bf00 nop + 80045f8: 371c adds r7, #28 + 80045fa: 46bd mov sp, r7 + 80045fc: bc80 pop {r7} + 80045fe: 4770 bx lr + 8004600: 40012c00 .word 0x40012c00 + +08004604 : + * @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) +{ + 8004604: b480 push {r7} + 8004606: b087 sub sp, #28 + 8004608: af00 add r7, sp, #0 + 800460a: 60f8 str r0, [r7, #12] + 800460c: 60b9 str r1, [r7, #8] + 800460e: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = TIMx->CCER; + 8004610: 68fb ldr r3, [r7, #12] + 8004612: 6a1b ldr r3, [r3, #32] + 8004614: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC1E; + 8004616: 68fb ldr r3, [r7, #12] + 8004618: 6a1b ldr r3, [r3, #32] + 800461a: f023 0201 bic.w r2, r3, #1 + 800461e: 68fb ldr r3, [r7, #12] + 8004620: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 8004622: 68fb ldr r3, [r7, #12] + 8004624: 699b ldr r3, [r3, #24] + 8004626: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + 8004628: 693b ldr r3, [r7, #16] + 800462a: f023 03f0 bic.w r3, r3, #240 @ 0xf0 + 800462e: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 4U); + 8004630: 687b ldr r3, [r7, #4] + 8004632: 011b lsls r3, r3, #4 + 8004634: 693a ldr r2, [r7, #16] + 8004636: 4313 orrs r3, r2 + 8004638: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + 800463a: 697b ldr r3, [r7, #20] + 800463c: f023 030a bic.w r3, r3, #10 + 8004640: 617b str r3, [r7, #20] + tmpccer |= TIM_ICPolarity; + 8004642: 697a ldr r2, [r7, #20] + 8004644: 68bb ldr r3, [r7, #8] + 8004646: 4313 orrs r3, r2 + 8004648: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + 800464a: 68fb ldr r3, [r7, #12] + 800464c: 693a ldr r2, [r7, #16] + 800464e: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 8004650: 68fb ldr r3, [r7, #12] + 8004652: 697a ldr r2, [r7, #20] + 8004654: 621a str r2, [r3, #32] +} + 8004656: bf00 nop + 8004658: 371c adds r7, #28 + 800465a: 46bd mov sp, r7 + 800465c: bc80 pop {r7} + 800465e: 4770 bx lr + +08004660 : + * @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) +{ + 8004660: b480 push {r7} + 8004662: b087 sub sp, #28 + 8004664: af00 add r7, sp, #0 + 8004666: 60f8 str r0, [r7, #12] + 8004668: 60b9 str r1, [r7, #8] + 800466a: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 2: Reset the CC2E Bit */ + tmpccer = TIMx->CCER; + 800466c: 68fb ldr r3, [r7, #12] + 800466e: 6a1b ldr r3, [r3, #32] + 8004670: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC2E; + 8004672: 68fb ldr r3, [r7, #12] + 8004674: 6a1b ldr r3, [r3, #32] + 8004676: f023 0210 bic.w r2, r3, #16 + 800467a: 68fb ldr r3, [r7, #12] + 800467c: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 800467e: 68fb ldr r3, [r7, #12] + 8004680: 699b ldr r3, [r3, #24] + 8004682: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC2F; + 8004684: 693b ldr r3, [r7, #16] + 8004686: f423 4370 bic.w r3, r3, #61440 @ 0xf000 + 800468a: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 12U); + 800468c: 687b ldr r3, [r7, #4] + 800468e: 031b lsls r3, r3, #12 + 8004690: 693a ldr r2, [r7, #16] + 8004692: 4313 orrs r3, r2 + 8004694: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + 8004696: 697b ldr r3, [r7, #20] + 8004698: f023 03a0 bic.w r3, r3, #160 @ 0xa0 + 800469c: 617b str r3, [r7, #20] + tmpccer |= (TIM_ICPolarity << 4U); + 800469e: 68bb ldr r3, [r7, #8] + 80046a0: 011b lsls r3, r3, #4 + 80046a2: 697a ldr r2, [r7, #20] + 80046a4: 4313 orrs r3, r2 + 80046a6: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + 80046a8: 68fb ldr r3, [r7, #12] + 80046aa: 693a ldr r2, [r7, #16] + 80046ac: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 80046ae: 68fb ldr r3, [r7, #12] + 80046b0: 697a ldr r2, [r7, #20] + 80046b2: 621a str r2, [r3, #32] +} + 80046b4: bf00 nop + 80046b6: 371c adds r7, #28 + 80046b8: 46bd mov sp, r7 + 80046ba: bc80 pop {r7} + 80046bc: 4770 bx lr + +080046be : + * @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) +{ + 80046be: b480 push {r7} + 80046c0: b085 sub sp, #20 + 80046c2: af00 add r7, sp, #0 + 80046c4: 6078 str r0, [r7, #4] + 80046c6: 6039 str r1, [r7, #0] + uint32_t tmpsmcr; + + /* Get the TIMx SMCR register value */ + tmpsmcr = TIMx->SMCR; + 80046c8: 687b ldr r3, [r7, #4] + 80046ca: 689b ldr r3, [r3, #8] + 80046cc: 60fb str r3, [r7, #12] + /* Reset the TS Bits */ + tmpsmcr &= ~TIM_SMCR_TS; + 80046ce: 68fb ldr r3, [r7, #12] + 80046d0: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80046d4: 60fb str r3, [r7, #12] + /* Set the Input Trigger source and the slave mode*/ + tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); + 80046d6: 683a ldr r2, [r7, #0] + 80046d8: 68fb ldr r3, [r7, #12] + 80046da: 4313 orrs r3, r2 + 80046dc: f043 0307 orr.w r3, r3, #7 + 80046e0: 60fb str r3, [r7, #12] + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 80046e2: 687b ldr r3, [r7, #4] + 80046e4: 68fa ldr r2, [r7, #12] + 80046e6: 609a str r2, [r3, #8] +} + 80046e8: bf00 nop + 80046ea: 3714 adds r7, #20 + 80046ec: 46bd mov sp, r7 + 80046ee: bc80 pop {r7} + 80046f0: 4770 bx lr + +080046f2 : + * 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) +{ + 80046f2: b480 push {r7} + 80046f4: b087 sub sp, #28 + 80046f6: af00 add r7, sp, #0 + 80046f8: 60f8 str r0, [r7, #12] + 80046fa: 60b9 str r1, [r7, #8] + 80046fc: 607a str r2, [r7, #4] + 80046fe: 603b str r3, [r7, #0] + uint32_t tmpsmcr; + + tmpsmcr = TIMx->SMCR; + 8004700: 68fb ldr r3, [r7, #12] + 8004702: 689b ldr r3, [r3, #8] + 8004704: 617b str r3, [r7, #20] + + /* Reset the ETR Bits */ + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 8004706: 697b ldr r3, [r7, #20] + 8004708: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 800470c: 617b str r3, [r7, #20] + + /* Set the Prescaler, the Filter value and the Polarity */ + tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); + 800470e: 683b ldr r3, [r7, #0] + 8004710: 021a lsls r2, r3, #8 + 8004712: 687b ldr r3, [r7, #4] + 8004714: 431a orrs r2, r3 + 8004716: 68bb ldr r3, [r7, #8] + 8004718: 4313 orrs r3, r2 + 800471a: 697a ldr r2, [r7, #20] + 800471c: 4313 orrs r3, r2 + 800471e: 617b str r3, [r7, #20] + + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 8004720: 68fb ldr r3, [r7, #12] + 8004722: 697a ldr r2, [r7, #20] + 8004724: 609a str r2, [r3, #8] +} + 8004726: bf00 nop + 8004728: 371c adds r7, #28 + 800472a: 46bd mov sp, r7 + 800472c: bc80 pop {r7} + 800472e: 4770 bx lr + +08004730 : + * @param ChannelState specifies the TIM Channel CCxE bit new state. + * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE. + * @retval None + */ +void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState) +{ + 8004730: b480 push {r7} + 8004732: b087 sub sp, #28 + 8004734: af00 add r7, sp, #0 + 8004736: 60f8 str r0, [r7, #12] + 8004738: 60b9 str r1, [r7, #8] + 800473a: 607a str r2, [r7, #4] + + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + assert_param(IS_TIM_CHANNELS(Channel)); + + tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */ + 800473c: 68bb ldr r3, [r7, #8] + 800473e: f003 031f and.w r3, r3, #31 + 8004742: 2201 movs r2, #1 + 8004744: fa02 f303 lsl.w r3, r2, r3 + 8004748: 617b str r3, [r7, #20] + + /* Reset the CCxE Bit */ + TIMx->CCER &= ~tmp; + 800474a: 68fb ldr r3, [r7, #12] + 800474c: 6a1a ldr r2, [r3, #32] + 800474e: 697b ldr r3, [r7, #20] + 8004750: 43db mvns r3, r3 + 8004752: 401a ands r2, r3 + 8004754: 68fb ldr r3, [r7, #12] + 8004756: 621a str r2, [r3, #32] + + /* Set or reset the CCxE Bit */ + TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ + 8004758: 68fb ldr r3, [r7, #12] + 800475a: 6a1a ldr r2, [r3, #32] + 800475c: 68bb ldr r3, [r7, #8] + 800475e: f003 031f and.w r3, r3, #31 + 8004762: 6879 ldr r1, [r7, #4] + 8004764: fa01 f303 lsl.w r3, r1, r3 + 8004768: 431a orrs r2, r3 + 800476a: 68fb ldr r3, [r7, #12] + 800476c: 621a str r2, [r3, #32] +} + 800476e: bf00 nop + 8004770: 371c adds r7, #28 + 8004772: 46bd mov sp, r7 + 8004774: bc80 pop {r7} + 8004776: 4770 bx lr + +08004778 : + * mode. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, + const TIM_MasterConfigTypeDef *sMasterConfig) +{ + 8004778: b480 push {r7} + 800477a: b085 sub sp, #20 + 800477c: af00 add r7, sp, #0 + 800477e: 6078 str r0, [r7, #4] + 8004780: 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); + 8004782: 687b ldr r3, [r7, #4] + 8004784: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 8004788: 2b01 cmp r3, #1 + 800478a: d101 bne.n 8004790 + 800478c: 2302 movs r3, #2 + 800478e: e046 b.n 800481e + 8004790: 687b ldr r3, [r7, #4] + 8004792: 2201 movs r2, #1 + 8004794: f883 203c strb.w r2, [r3, #60] @ 0x3c + + /* Change the handler state */ + htim->State = HAL_TIM_STATE_BUSY; + 8004798: 687b ldr r3, [r7, #4] + 800479a: 2202 movs r2, #2 + 800479c: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Get the TIMx CR2 register value */ + tmpcr2 = htim->Instance->CR2; + 80047a0: 687b ldr r3, [r7, #4] + 80047a2: 681b ldr r3, [r3, #0] + 80047a4: 685b ldr r3, [r3, #4] + 80047a6: 60fb str r3, [r7, #12] + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + 80047a8: 687b ldr r3, [r7, #4] + 80047aa: 681b ldr r3, [r3, #0] + 80047ac: 689b ldr r3, [r3, #8] + 80047ae: 60bb str r3, [r7, #8] + + /* Reset the MMS Bits */ + tmpcr2 &= ~TIM_CR2_MMS; + 80047b0: 68fb ldr r3, [r7, #12] + 80047b2: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80047b6: 60fb str r3, [r7, #12] + /* Select the TRGO source */ + tmpcr2 |= sMasterConfig->MasterOutputTrigger; + 80047b8: 683b ldr r3, [r7, #0] + 80047ba: 681b ldr r3, [r3, #0] + 80047bc: 68fa ldr r2, [r7, #12] + 80047be: 4313 orrs r3, r2 + 80047c0: 60fb str r3, [r7, #12] + + /* Update TIMx CR2 */ + htim->Instance->CR2 = tmpcr2; + 80047c2: 687b ldr r3, [r7, #4] + 80047c4: 681b ldr r3, [r3, #0] + 80047c6: 68fa ldr r2, [r7, #12] + 80047c8: 605a str r2, [r3, #4] + + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 80047ca: 687b ldr r3, [r7, #4] + 80047cc: 681b ldr r3, [r3, #0] + 80047ce: 4a16 ldr r2, [pc, #88] @ (8004828 ) + 80047d0: 4293 cmp r3, r2 + 80047d2: d00e beq.n 80047f2 + 80047d4: 687b ldr r3, [r7, #4] + 80047d6: 681b ldr r3, [r3, #0] + 80047d8: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80047dc: d009 beq.n 80047f2 + 80047de: 687b ldr r3, [r7, #4] + 80047e0: 681b ldr r3, [r3, #0] + 80047e2: 4a12 ldr r2, [pc, #72] @ (800482c ) + 80047e4: 4293 cmp r3, r2 + 80047e6: d004 beq.n 80047f2 + 80047e8: 687b ldr r3, [r7, #4] + 80047ea: 681b ldr r3, [r3, #0] + 80047ec: 4a10 ldr r2, [pc, #64] @ (8004830 ) + 80047ee: 4293 cmp r3, r2 + 80047f0: d10c bne.n 800480c + { + /* Reset the MSM Bit */ + tmpsmcr &= ~TIM_SMCR_MSM; + 80047f2: 68bb ldr r3, [r7, #8] + 80047f4: f023 0380 bic.w r3, r3, #128 @ 0x80 + 80047f8: 60bb str r3, [r7, #8] + /* Set master mode */ + tmpsmcr |= sMasterConfig->MasterSlaveMode; + 80047fa: 683b ldr r3, [r7, #0] + 80047fc: 685b ldr r3, [r3, #4] + 80047fe: 68ba ldr r2, [r7, #8] + 8004800: 4313 orrs r3, r2 + 8004802: 60bb str r3, [r7, #8] + + /* Update TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 8004804: 687b ldr r3, [r7, #4] + 8004806: 681b ldr r3, [r3, #0] + 8004808: 68ba ldr r2, [r7, #8] + 800480a: 609a str r2, [r3, #8] + } + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + 800480c: 687b ldr r3, [r7, #4] + 800480e: 2201 movs r2, #1 + 8004810: f883 203d strb.w r2, [r3, #61] @ 0x3d + + __HAL_UNLOCK(htim); + 8004814: 687b ldr r3, [r7, #4] + 8004816: 2200 movs r2, #0 + 8004818: f883 203c strb.w r2, [r3, #60] @ 0x3c + + return HAL_OK; + 800481c: 2300 movs r3, #0 +} + 800481e: 4618 mov r0, r3 + 8004820: 3714 adds r7, #20 + 8004822: 46bd mov sp, r7 + 8004824: bc80 pop {r7} + 8004826: 4770 bx lr + 8004828: 40012c00 .word 0x40012c00 + 800482c: 40000400 .word 0x40000400 + 8004830: 40000800 .word 0x40000800 + +08004834 : + * interrupt can be enabled by calling the @ref __HAL_TIM_ENABLE_IT macro. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim, + const TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig) +{ + 8004834: b480 push {r7} + 8004836: b085 sub sp, #20 + 8004838: af00 add r7, sp, #0 + 800483a: 6078 str r0, [r7, #4] + 800483c: 6039 str r1, [r7, #0] + /* Keep this variable initialized to 0 as it is used to configure BDTR register */ + uint32_t tmpbdtr = 0U; + 800483e: 2300 movs r3, #0 + 8004840: 60fb str r3, [r7, #12] + assert_param(IS_TIM_BREAK_STATE(sBreakDeadTimeConfig->BreakState)); + assert_param(IS_TIM_BREAK_POLARITY(sBreakDeadTimeConfig->BreakPolarity)); + assert_param(IS_TIM_AUTOMATIC_OUTPUT_STATE(sBreakDeadTimeConfig->AutomaticOutput)); + + /* Check input state */ + __HAL_LOCK(htim); + 8004842: 687b ldr r3, [r7, #4] + 8004844: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 8004848: 2b01 cmp r3, #1 + 800484a: d101 bne.n 8004850 + 800484c: 2302 movs r3, #2 + 800484e: e03d b.n 80048cc + 8004850: 687b ldr r3, [r7, #4] + 8004852: 2201 movs r2, #1 + 8004854: f883 203c strb.w r2, [r3, #60] @ 0x3c + + /* Set the Lock level, the Break enable Bit and the Polarity, the OSSR State, + the OSSI State, the dead time value and the Automatic Output Enable Bit */ + + /* Set the BDTR bits */ + MODIFY_REG(tmpbdtr, TIM_BDTR_DTG, sBreakDeadTimeConfig->DeadTime); + 8004858: 68fb ldr r3, [r7, #12] + 800485a: f023 02ff bic.w r2, r3, #255 @ 0xff + 800485e: 683b ldr r3, [r7, #0] + 8004860: 68db ldr r3, [r3, #12] + 8004862: 4313 orrs r3, r2 + 8004864: 60fb str r3, [r7, #12] + MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, sBreakDeadTimeConfig->LockLevel); + 8004866: 68fb ldr r3, [r7, #12] + 8004868: f423 7240 bic.w r2, r3, #768 @ 0x300 + 800486c: 683b ldr r3, [r7, #0] + 800486e: 689b ldr r3, [r3, #8] + 8004870: 4313 orrs r3, r2 + 8004872: 60fb str r3, [r7, #12] + MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, sBreakDeadTimeConfig->OffStateIDLEMode); + 8004874: 68fb ldr r3, [r7, #12] + 8004876: f423 6280 bic.w r2, r3, #1024 @ 0x400 + 800487a: 683b ldr r3, [r7, #0] + 800487c: 685b ldr r3, [r3, #4] + 800487e: 4313 orrs r3, r2 + 8004880: 60fb str r3, [r7, #12] + MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, sBreakDeadTimeConfig->OffStateRunMode); + 8004882: 68fb ldr r3, [r7, #12] + 8004884: f423 6200 bic.w r2, r3, #2048 @ 0x800 + 8004888: 683b ldr r3, [r7, #0] + 800488a: 681b ldr r3, [r3, #0] + 800488c: 4313 orrs r3, r2 + 800488e: 60fb str r3, [r7, #12] + MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, sBreakDeadTimeConfig->BreakState); + 8004890: 68fb ldr r3, [r7, #12] + 8004892: f423 5280 bic.w r2, r3, #4096 @ 0x1000 + 8004896: 683b ldr r3, [r7, #0] + 8004898: 691b ldr r3, [r3, #16] + 800489a: 4313 orrs r3, r2 + 800489c: 60fb str r3, [r7, #12] + MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, sBreakDeadTimeConfig->BreakPolarity); + 800489e: 68fb ldr r3, [r7, #12] + 80048a0: f423 5200 bic.w r2, r3, #8192 @ 0x2000 + 80048a4: 683b ldr r3, [r7, #0] + 80048a6: 695b ldr r3, [r3, #20] + 80048a8: 4313 orrs r3, r2 + 80048aa: 60fb str r3, [r7, #12] + MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, sBreakDeadTimeConfig->AutomaticOutput); + 80048ac: 68fb ldr r3, [r7, #12] + 80048ae: f423 4280 bic.w r2, r3, #16384 @ 0x4000 + 80048b2: 683b ldr r3, [r7, #0] + 80048b4: 69db ldr r3, [r3, #28] + 80048b6: 4313 orrs r3, r2 + 80048b8: 60fb str r3, [r7, #12] + + + /* Set TIMx_BDTR */ + htim->Instance->BDTR = tmpbdtr; + 80048ba: 687b ldr r3, [r7, #4] + 80048bc: 681b ldr r3, [r3, #0] + 80048be: 68fa ldr r2, [r7, #12] + 80048c0: 645a str r2, [r3, #68] @ 0x44 + + __HAL_UNLOCK(htim); + 80048c2: 687b ldr r3, [r7, #4] + 80048c4: 2200 movs r2, #0 + 80048c6: f883 203c strb.w r2, [r3, #60] @ 0x3c + + return HAL_OK; + 80048ca: 2300 movs r3, #0 +} + 80048cc: 4618 mov r0, r3 + 80048ce: 3714 adds r7, #20 + 80048d0: 46bd mov sp, r7 + 80048d2: bc80 pop {r7} + 80048d4: 4770 bx lr + +080048d6 : + * @param cfg pointer to a USB_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_CoreInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg) +{ + 80048d6: b480 push {r7} + 80048d8: b085 sub sp, #20 + 80048da: af00 add r7, sp, #0 + 80048dc: 60f8 str r0, [r7, #12] + 80048de: 4638 mov r0, r7 + 80048e0: e880 000e stmia.w r0, {r1, r2, r3} + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; + 80048e4: 2300 movs r3, #0 +} + 80048e6: 4618 mov r0, r3 + 80048e8: 3714 adds r7, #20 + 80048ea: 46bd mov sp, r7 + 80048ec: bc80 pop {r7} + 80048ee: 4770 bx lr + +080048f0 : + * Enables the controller's Global Int in the AHB Config reg + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_EnableGlobalInt(USB_TypeDef *USBx) +{ + 80048f0: b480 push {r7} + 80048f2: b085 sub sp, #20 + 80048f4: af00 add r7, sp, #0 + 80048f6: 6078 str r0, [r7, #4] + uint32_t winterruptmask; + + /* Clear pending interrupts */ + USBx->ISTR = 0U; + 80048f8: 687b ldr r3, [r7, #4] + 80048fa: 2200 movs r2, #0 + 80048fc: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + /* Set winterruptmask variable */ + winterruptmask = USB_CNTR_CTRM | USB_CNTR_WKUPM | + 8004900: f44f 433f mov.w r3, #48896 @ 0xbf00 + 8004904: 60fb str r3, [r7, #12] + USB_CNTR_SUSPM | USB_CNTR_ERRM | + USB_CNTR_SOFM | USB_CNTR_ESOFM | + USB_CNTR_RESETM; + + /* Set interrupt mask */ + USBx->CNTR = (uint16_t)winterruptmask; + 8004906: 68fb ldr r3, [r7, #12] + 8004908: b29a uxth r2, r3 + 800490a: 687b ldr r3, [r7, #4] + 800490c: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + + return HAL_OK; + 8004910: 2300 movs r3, #0 +} + 8004912: 4618 mov r0, r3 + 8004914: 3714 adds r7, #20 + 8004916: 46bd mov sp, r7 + 8004918: bc80 pop {r7} + 800491a: 4770 bx lr + +0800491c : + * Disable the controller's Global Int in the AHB Config reg + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DisableGlobalInt(USB_TypeDef *USBx) +{ + 800491c: b480 push {r7} + 800491e: b085 sub sp, #20 + 8004920: af00 add r7, sp, #0 + 8004922: 6078 str r0, [r7, #4] + uint32_t winterruptmask; + + /* Set winterruptmask variable */ + winterruptmask = USB_CNTR_CTRM | USB_CNTR_WKUPM | + 8004924: f44f 433f mov.w r3, #48896 @ 0xbf00 + 8004928: 60fb str r3, [r7, #12] + USB_CNTR_SUSPM | USB_CNTR_ERRM | + USB_CNTR_SOFM | USB_CNTR_ESOFM | + USB_CNTR_RESETM; + + /* Clear interrupt mask */ + USBx->CNTR &= (uint16_t)(~winterruptmask); + 800492a: 687b ldr r3, [r7, #4] + 800492c: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 8004930: b29a uxth r2, r3 + 8004932: 68fb ldr r3, [r7, #12] + 8004934: b29b uxth r3, r3 + 8004936: 43db mvns r3, r3 + 8004938: b29b uxth r3, r3 + 800493a: 4013 ands r3, r2 + 800493c: b29a uxth r2, r3 + 800493e: 687b ldr r3, [r7, #4] + 8004940: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + + return HAL_OK; + 8004944: 2300 movs r3, #0 +} + 8004946: 4618 mov r0, r3 + 8004948: 3714 adds r7, #20 + 800494a: 46bd mov sp, r7 + 800494c: bc80 pop {r7} + 800494e: 4770 bx lr + +08004950 : + * This parameter can be one of the these values: + * @arg USB_DEVICE_MODE Peripheral mode + * @retval HAL status + */ +HAL_StatusTypeDef USB_SetCurrentMode(USB_TypeDef *USBx, USB_ModeTypeDef mode) +{ + 8004950: b480 push {r7} + 8004952: b083 sub sp, #12 + 8004954: af00 add r7, sp, #0 + 8004956: 6078 str r0, [r7, #4] + 8004958: 460b mov r3, r1 + 800495a: 70fb strb r3, [r7, #3] + + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return HAL_OK; + 800495c: 2300 movs r3, #0 +} + 800495e: 4618 mov r0, r3 + 8004960: 370c adds r7, #12 + 8004962: 46bd mov sp, r7 + 8004964: bc80 pop {r7} + 8004966: 4770 bx lr + +08004968 : + * @param cfg pointer to a USB_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg) +{ + 8004968: b480 push {r7} + 800496a: b085 sub sp, #20 + 800496c: af00 add r7, sp, #0 + 800496e: 60f8 str r0, [r7, #12] + 8004970: 4638 mov r0, r7 + 8004972: e880 000e stmia.w r0, {r1, r2, r3} + /* Prevent unused argument(s) compilation warning */ + UNUSED(cfg); + + /* Init Device */ + /* CNTR_FRES = 1 */ + USBx->CNTR = (uint16_t)USB_CNTR_FRES; + 8004976: 68fb ldr r3, [r7, #12] + 8004978: 2201 movs r2, #1 + 800497a: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + + /* CNTR_FRES = 0 */ + USBx->CNTR = 0U; + 800497e: 68fb ldr r3, [r7, #12] + 8004980: 2200 movs r2, #0 + 8004982: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + + /* Clear pending interrupts */ + USBx->ISTR = 0U; + 8004986: 68fb ldr r3, [r7, #12] + 8004988: 2200 movs r2, #0 + 800498a: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + /*Set Btable Address*/ + USBx->BTABLE = BTABLE_ADDRESS; + 800498e: 68fb ldr r3, [r7, #12] + 8004990: 2200 movs r2, #0 + 8004992: f8a3 2050 strh.w r2, [r3, #80] @ 0x50 + + return HAL_OK; + 8004996: 2300 movs r3, #0 +} + 8004998: 4618 mov r0, r3 + 800499a: 3714 adds r7, #20 + 800499c: 46bd mov sp, r7 + 800499e: bc80 pop {r7} + 80049a0: 4770 bx lr + ... + +080049a4 : + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_ActivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + 80049a4: b480 push {r7} + 80049a6: b09d sub sp, #116 @ 0x74 + 80049a8: af00 add r7, sp, #0 + 80049aa: 6078 str r0, [r7, #4] + 80049ac: 6039 str r1, [r7, #0] + HAL_StatusTypeDef ret = HAL_OK; + 80049ae: 2300 movs r3, #0 + 80049b0: f887 306f strb.w r3, [r7, #111] @ 0x6f + uint16_t wEpRegVal; + + wEpRegVal = PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_T_MASK; + 80049b4: 687a ldr r2, [r7, #4] + 80049b6: 683b ldr r3, [r7, #0] + 80049b8: 781b ldrb r3, [r3, #0] + 80049ba: 009b lsls r3, r3, #2 + 80049bc: 4413 add r3, r2 + 80049be: 881b ldrh r3, [r3, #0] + 80049c0: b29b uxth r3, r3 + 80049c2: f423 43ec bic.w r3, r3, #30208 @ 0x7600 + 80049c6: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80049ca: f8a7 306c strh.w r3, [r7, #108] @ 0x6c + + /* initialize Endpoint */ + switch (ep->type) + 80049ce: 683b ldr r3, [r7, #0] + 80049d0: 78db ldrb r3, [r3, #3] + 80049d2: 2b03 cmp r3, #3 + 80049d4: d81f bhi.n 8004a16 + 80049d6: a201 add r2, pc, #4 @ (adr r2, 80049dc ) + 80049d8: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 80049dc: 080049ed .word 0x080049ed + 80049e0: 08004a09 .word 0x08004a09 + 80049e4: 08004a1f .word 0x08004a1f + 80049e8: 080049fb .word 0x080049fb + { + case EP_TYPE_CTRL: + wEpRegVal |= USB_EP_CONTROL; + 80049ec: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c + 80049f0: f443 7300 orr.w r3, r3, #512 @ 0x200 + 80049f4: f8a7 306c strh.w r3, [r7, #108] @ 0x6c + break; + 80049f8: e012 b.n 8004a20 + case EP_TYPE_BULK: + wEpRegVal |= USB_EP_BULK; + break; + + case EP_TYPE_INTR: + wEpRegVal |= USB_EP_INTERRUPT; + 80049fa: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c + 80049fe: f443 63c0 orr.w r3, r3, #1536 @ 0x600 + 8004a02: f8a7 306c strh.w r3, [r7, #108] @ 0x6c + break; + 8004a06: e00b b.n 8004a20 + + case EP_TYPE_ISOC: + wEpRegVal |= USB_EP_ISOCHRONOUS; + 8004a08: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c + 8004a0c: f443 6380 orr.w r3, r3, #1024 @ 0x400 + 8004a10: f8a7 306c strh.w r3, [r7, #108] @ 0x6c + break; + 8004a14: e004 b.n 8004a20 + + default: + ret = HAL_ERROR; + 8004a16: 2301 movs r3, #1 + 8004a18: f887 306f strb.w r3, [r7, #111] @ 0x6f + break; + 8004a1c: e000 b.n 8004a20 + break; + 8004a1e: bf00 nop + } + + PCD_SET_ENDPOINT(USBx, ep->num, (wEpRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); + 8004a20: 687a ldr r2, [r7, #4] + 8004a22: 683b ldr r3, [r7, #0] + 8004a24: 781b ldrb r3, [r3, #0] + 8004a26: 009b lsls r3, r3, #2 + 8004a28: 441a add r2, r3 + 8004a2a: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c + 8004a2e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004a32: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004a36: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004a3a: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004a3e: b29b uxth r3, r3 + 8004a40: 8013 strh r3, [r2, #0] + + PCD_SET_EP_ADDRESS(USBx, ep->num, ep->num); + 8004a42: 687a ldr r2, [r7, #4] + 8004a44: 683b ldr r3, [r7, #0] + 8004a46: 781b ldrb r3, [r3, #0] + 8004a48: 009b lsls r3, r3, #2 + 8004a4a: 4413 add r3, r2 + 8004a4c: 881b ldrh r3, [r3, #0] + 8004a4e: b29b uxth r3, r3 + 8004a50: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004a54: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004a58: b29b uxth r3, r3 + 8004a5a: 683a ldr r2, [r7, #0] + 8004a5c: 7812 ldrb r2, [r2, #0] + 8004a5e: 4313 orrs r3, r2 + 8004a60: f8a7 3066 strh.w r3, [r7, #102] @ 0x66 + 8004a64: 687a ldr r2, [r7, #4] + 8004a66: 683b ldr r3, [r7, #0] + 8004a68: 781b ldrb r3, [r3, #0] + 8004a6a: 009b lsls r3, r3, #2 + 8004a6c: 441a add r2, r3 + 8004a6e: f8b7 3066 ldrh.w r3, [r7, #102] @ 0x66 + 8004a72: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004a76: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004a7a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004a7e: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004a82: b29b uxth r3, r3 + 8004a84: 8013 strh r3, [r2, #0] + + if (ep->doublebuffer == 0U) + 8004a86: 683b ldr r3, [r7, #0] + 8004a88: 7b1b ldrb r3, [r3, #12] + 8004a8a: 2b00 cmp r3, #0 + 8004a8c: f040 8178 bne.w 8004d80 + { + if (ep->is_in != 0U) + 8004a90: 683b ldr r3, [r7, #0] + 8004a92: 785b ldrb r3, [r3, #1] + 8004a94: 2b00 cmp r3, #0 + 8004a96: f000 8084 beq.w 8004ba2 + { + /*Set the endpoint Transmit buffer address */ + PCD_SET_EP_TX_ADDRESS(USBx, ep->num, ep->pmaadress); + 8004a9a: 687b ldr r3, [r7, #4] + 8004a9c: 61bb str r3, [r7, #24] + 8004a9e: 687b ldr r3, [r7, #4] + 8004aa0: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8004aa4: b29b uxth r3, r3 + 8004aa6: 461a mov r2, r3 + 8004aa8: 69bb ldr r3, [r7, #24] + 8004aaa: 4413 add r3, r2 + 8004aac: 61bb str r3, [r7, #24] + 8004aae: 683b ldr r3, [r7, #0] + 8004ab0: 781b ldrb r3, [r3, #0] + 8004ab2: 011a lsls r2, r3, #4 + 8004ab4: 69bb ldr r3, [r7, #24] + 8004ab6: 4413 add r3, r2 + 8004ab8: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8004abc: 617b str r3, [r7, #20] + 8004abe: 683b ldr r3, [r7, #0] + 8004ac0: 88db ldrh r3, [r3, #6] + 8004ac2: 085b lsrs r3, r3, #1 + 8004ac4: b29b uxth r3, r3 + 8004ac6: 005b lsls r3, r3, #1 + 8004ac8: b29a uxth r2, r3 + 8004aca: 697b ldr r3, [r7, #20] + 8004acc: 801a strh r2, [r3, #0] + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 8004ace: 687a ldr r2, [r7, #4] + 8004ad0: 683b ldr r3, [r7, #0] + 8004ad2: 781b ldrb r3, [r3, #0] + 8004ad4: 009b lsls r3, r3, #2 + 8004ad6: 4413 add r3, r2 + 8004ad8: 881b ldrh r3, [r3, #0] + 8004ada: 827b strh r3, [r7, #18] + 8004adc: 8a7b ldrh r3, [r7, #18] + 8004ade: f003 0340 and.w r3, r3, #64 @ 0x40 + 8004ae2: 2b00 cmp r3, #0 + 8004ae4: d01b beq.n 8004b1e + 8004ae6: 687a ldr r2, [r7, #4] + 8004ae8: 683b ldr r3, [r7, #0] + 8004aea: 781b ldrb r3, [r3, #0] + 8004aec: 009b lsls r3, r3, #2 + 8004aee: 4413 add r3, r2 + 8004af0: 881b ldrh r3, [r3, #0] + 8004af2: b29b uxth r3, r3 + 8004af4: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004af8: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004afc: 823b strh r3, [r7, #16] + 8004afe: 687a ldr r2, [r7, #4] + 8004b00: 683b ldr r3, [r7, #0] + 8004b02: 781b ldrb r3, [r3, #0] + 8004b04: 009b lsls r3, r3, #2 + 8004b06: 441a add r2, r3 + 8004b08: 8a3b ldrh r3, [r7, #16] + 8004b0a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004b0e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004b12: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004b16: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 8004b1a: b29b uxth r3, r3 + 8004b1c: 8013 strh r3, [r2, #0] + + if (ep->type != EP_TYPE_ISOC) + 8004b1e: 683b ldr r3, [r7, #0] + 8004b20: 78db ldrb r3, [r3, #3] + 8004b22: 2b01 cmp r3, #1 + 8004b24: d020 beq.n 8004b68 + { + /* Configure NAK status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); + 8004b26: 687a ldr r2, [r7, #4] + 8004b28: 683b ldr r3, [r7, #0] + 8004b2a: 781b ldrb r3, [r3, #0] + 8004b2c: 009b lsls r3, r3, #2 + 8004b2e: 4413 add r3, r2 + 8004b30: 881b ldrh r3, [r3, #0] + 8004b32: b29b uxth r3, r3 + 8004b34: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004b38: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8004b3c: 81bb strh r3, [r7, #12] + 8004b3e: 89bb ldrh r3, [r7, #12] + 8004b40: f083 0320 eor.w r3, r3, #32 + 8004b44: 81bb strh r3, [r7, #12] + 8004b46: 687a ldr r2, [r7, #4] + 8004b48: 683b ldr r3, [r7, #0] + 8004b4a: 781b ldrb r3, [r3, #0] + 8004b4c: 009b lsls r3, r3, #2 + 8004b4e: 441a add r2, r3 + 8004b50: 89bb ldrh r3, [r7, #12] + 8004b52: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004b56: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004b5a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004b5e: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004b62: b29b uxth r3, r3 + 8004b64: 8013 strh r3, [r2, #0] + 8004b66: e2d5 b.n 8005114 + } + else + { + /* Configure TX Endpoint to disabled state */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + 8004b68: 687a ldr r2, [r7, #4] + 8004b6a: 683b ldr r3, [r7, #0] + 8004b6c: 781b ldrb r3, [r3, #0] + 8004b6e: 009b lsls r3, r3, #2 + 8004b70: 4413 add r3, r2 + 8004b72: 881b ldrh r3, [r3, #0] + 8004b74: b29b uxth r3, r3 + 8004b76: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004b7a: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8004b7e: 81fb strh r3, [r7, #14] + 8004b80: 687a ldr r2, [r7, #4] + 8004b82: 683b ldr r3, [r7, #0] + 8004b84: 781b ldrb r3, [r3, #0] + 8004b86: 009b lsls r3, r3, #2 + 8004b88: 441a add r2, r3 + 8004b8a: 89fb ldrh r3, [r7, #14] + 8004b8c: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004b90: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004b94: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004b98: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004b9c: b29b uxth r3, r3 + 8004b9e: 8013 strh r3, [r2, #0] + 8004ba0: e2b8 b.n 8005114 + } + } + else + { + /* Set the endpoint Receive buffer address */ + PCD_SET_EP_RX_ADDRESS(USBx, ep->num, ep->pmaadress); + 8004ba2: 687b ldr r3, [r7, #4] + 8004ba4: 633b str r3, [r7, #48] @ 0x30 + 8004ba6: 687b ldr r3, [r7, #4] + 8004ba8: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8004bac: b29b uxth r3, r3 + 8004bae: 461a mov r2, r3 + 8004bb0: 6b3b ldr r3, [r7, #48] @ 0x30 + 8004bb2: 4413 add r3, r2 + 8004bb4: 633b str r3, [r7, #48] @ 0x30 + 8004bb6: 683b ldr r3, [r7, #0] + 8004bb8: 781b ldrb r3, [r3, #0] + 8004bba: 011a lsls r2, r3, #4 + 8004bbc: 6b3b ldr r3, [r7, #48] @ 0x30 + 8004bbe: 4413 add r3, r2 + 8004bc0: f503 6381 add.w r3, r3, #1032 @ 0x408 + 8004bc4: 62fb str r3, [r7, #44] @ 0x2c + 8004bc6: 683b ldr r3, [r7, #0] + 8004bc8: 88db ldrh r3, [r3, #6] + 8004bca: 085b lsrs r3, r3, #1 + 8004bcc: b29b uxth r3, r3 + 8004bce: 005b lsls r3, r3, #1 + 8004bd0: b29a uxth r2, r3 + 8004bd2: 6afb ldr r3, [r7, #44] @ 0x2c + 8004bd4: 801a strh r2, [r3, #0] + + /* Set the endpoint Receive buffer counter */ + PCD_SET_EP_RX_CNT(USBx, ep->num, ep->maxpacket); + 8004bd6: 687b ldr r3, [r7, #4] + 8004bd8: 62bb str r3, [r7, #40] @ 0x28 + 8004bda: 687b ldr r3, [r7, #4] + 8004bdc: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8004be0: b29b uxth r3, r3 + 8004be2: 461a mov r2, r3 + 8004be4: 6abb ldr r3, [r7, #40] @ 0x28 + 8004be6: 4413 add r3, r2 + 8004be8: 62bb str r3, [r7, #40] @ 0x28 + 8004bea: 683b ldr r3, [r7, #0] + 8004bec: 781b ldrb r3, [r3, #0] + 8004bee: 011a lsls r2, r3, #4 + 8004bf0: 6abb ldr r3, [r7, #40] @ 0x28 + 8004bf2: 4413 add r3, r2 + 8004bf4: f203 430c addw r3, r3, #1036 @ 0x40c + 8004bf8: 627b str r3, [r7, #36] @ 0x24 + 8004bfa: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004bfc: 881b ldrh r3, [r3, #0] + 8004bfe: b29b uxth r3, r3 + 8004c00: f3c3 0309 ubfx r3, r3, #0, #10 + 8004c04: b29a uxth r2, r3 + 8004c06: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004c08: 801a strh r2, [r3, #0] + 8004c0a: 683b ldr r3, [r7, #0] + 8004c0c: 691b ldr r3, [r3, #16] + 8004c0e: 2b3e cmp r3, #62 @ 0x3e + 8004c10: d91d bls.n 8004c4e + 8004c12: 683b ldr r3, [r7, #0] + 8004c14: 691b ldr r3, [r3, #16] + 8004c16: 095b lsrs r3, r3, #5 + 8004c18: 66bb str r3, [r7, #104] @ 0x68 + 8004c1a: 683b ldr r3, [r7, #0] + 8004c1c: 691b ldr r3, [r3, #16] + 8004c1e: f003 031f and.w r3, r3, #31 + 8004c22: 2b00 cmp r3, #0 + 8004c24: d102 bne.n 8004c2c + 8004c26: 6ebb ldr r3, [r7, #104] @ 0x68 + 8004c28: 3b01 subs r3, #1 + 8004c2a: 66bb str r3, [r7, #104] @ 0x68 + 8004c2c: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004c2e: 881b ldrh r3, [r3, #0] + 8004c30: b29a uxth r2, r3 + 8004c32: 6ebb ldr r3, [r7, #104] @ 0x68 + 8004c34: b29b uxth r3, r3 + 8004c36: 029b lsls r3, r3, #10 + 8004c38: b29b uxth r3, r3 + 8004c3a: 4313 orrs r3, r2 + 8004c3c: b29b uxth r3, r3 + 8004c3e: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004c42: ea6f 4353 mvn.w r3, r3, lsr #17 + 8004c46: b29a uxth r2, r3 + 8004c48: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004c4a: 801a strh r2, [r3, #0] + 8004c4c: e026 b.n 8004c9c + 8004c4e: 683b ldr r3, [r7, #0] + 8004c50: 691b ldr r3, [r3, #16] + 8004c52: 2b00 cmp r3, #0 + 8004c54: d10a bne.n 8004c6c + 8004c56: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004c58: 881b ldrh r3, [r3, #0] + 8004c5a: b29b uxth r3, r3 + 8004c5c: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004c60: ea6f 4353 mvn.w r3, r3, lsr #17 + 8004c64: b29a uxth r2, r3 + 8004c66: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004c68: 801a strh r2, [r3, #0] + 8004c6a: e017 b.n 8004c9c + 8004c6c: 683b ldr r3, [r7, #0] + 8004c6e: 691b ldr r3, [r3, #16] + 8004c70: 085b lsrs r3, r3, #1 + 8004c72: 66bb str r3, [r7, #104] @ 0x68 + 8004c74: 683b ldr r3, [r7, #0] + 8004c76: 691b ldr r3, [r3, #16] + 8004c78: f003 0301 and.w r3, r3, #1 + 8004c7c: 2b00 cmp r3, #0 + 8004c7e: d002 beq.n 8004c86 + 8004c80: 6ebb ldr r3, [r7, #104] @ 0x68 + 8004c82: 3301 adds r3, #1 + 8004c84: 66bb str r3, [r7, #104] @ 0x68 + 8004c86: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004c88: 881b ldrh r3, [r3, #0] + 8004c8a: b29a uxth r2, r3 + 8004c8c: 6ebb ldr r3, [r7, #104] @ 0x68 + 8004c8e: b29b uxth r3, r3 + 8004c90: 029b lsls r3, r3, #10 + 8004c92: b29b uxth r3, r3 + 8004c94: 4313 orrs r3, r2 + 8004c96: b29a uxth r2, r3 + 8004c98: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004c9a: 801a strh r2, [r3, #0] + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 8004c9c: 687a ldr r2, [r7, #4] + 8004c9e: 683b ldr r3, [r7, #0] + 8004ca0: 781b ldrb r3, [r3, #0] + 8004ca2: 009b lsls r3, r3, #2 + 8004ca4: 4413 add r3, r2 + 8004ca6: 881b ldrh r3, [r3, #0] + 8004ca8: 847b strh r3, [r7, #34] @ 0x22 + 8004caa: 8c7b ldrh r3, [r7, #34] @ 0x22 + 8004cac: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8004cb0: 2b00 cmp r3, #0 + 8004cb2: d01b beq.n 8004cec + 8004cb4: 687a ldr r2, [r7, #4] + 8004cb6: 683b ldr r3, [r7, #0] + 8004cb8: 781b ldrb r3, [r3, #0] + 8004cba: 009b lsls r3, r3, #2 + 8004cbc: 4413 add r3, r2 + 8004cbe: 881b ldrh r3, [r3, #0] + 8004cc0: b29b uxth r3, r3 + 8004cc2: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004cc6: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004cca: 843b strh r3, [r7, #32] + 8004ccc: 687a ldr r2, [r7, #4] + 8004cce: 683b ldr r3, [r7, #0] + 8004cd0: 781b ldrb r3, [r3, #0] + 8004cd2: 009b lsls r3, r3, #2 + 8004cd4: 441a add r2, r3 + 8004cd6: 8c3b ldrh r3, [r7, #32] + 8004cd8: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004cdc: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004ce0: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8004ce4: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004ce8: b29b uxth r3, r3 + 8004cea: 8013 strh r3, [r2, #0] + + if (ep->num == 0U) + 8004cec: 683b ldr r3, [r7, #0] + 8004cee: 781b ldrb r3, [r3, #0] + 8004cf0: 2b00 cmp r3, #0 + 8004cf2: d124 bne.n 8004d3e + { + /* Configure VALID status for EP0 */ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + 8004cf4: 687a ldr r2, [r7, #4] + 8004cf6: 683b ldr r3, [r7, #0] + 8004cf8: 781b ldrb r3, [r3, #0] + 8004cfa: 009b lsls r3, r3, #2 + 8004cfc: 4413 add r3, r2 + 8004cfe: 881b ldrh r3, [r3, #0] + 8004d00: b29b uxth r3, r3 + 8004d02: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8004d06: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004d0a: 83bb strh r3, [r7, #28] + 8004d0c: 8bbb ldrh r3, [r7, #28] + 8004d0e: f483 5380 eor.w r3, r3, #4096 @ 0x1000 + 8004d12: 83bb strh r3, [r7, #28] + 8004d14: 8bbb ldrh r3, [r7, #28] + 8004d16: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 8004d1a: 83bb strh r3, [r7, #28] + 8004d1c: 687a ldr r2, [r7, #4] + 8004d1e: 683b ldr r3, [r7, #0] + 8004d20: 781b ldrb r3, [r3, #0] + 8004d22: 009b lsls r3, r3, #2 + 8004d24: 441a add r2, r3 + 8004d26: 8bbb ldrh r3, [r7, #28] + 8004d28: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004d2c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004d30: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004d34: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004d38: b29b uxth r3, r3 + 8004d3a: 8013 strh r3, [r2, #0] + 8004d3c: e1ea b.n 8005114 + } + else + { + /* Configure NAK status for OUT Endpoint */ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_NAK); + 8004d3e: 687a ldr r2, [r7, #4] + 8004d40: 683b ldr r3, [r7, #0] + 8004d42: 781b ldrb r3, [r3, #0] + 8004d44: 009b lsls r3, r3, #2 + 8004d46: 4413 add r3, r2 + 8004d48: 881b ldrh r3, [r3, #0] + 8004d4a: b29b uxth r3, r3 + 8004d4c: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8004d50: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004d54: 83fb strh r3, [r7, #30] + 8004d56: 8bfb ldrh r3, [r7, #30] + 8004d58: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 8004d5c: 83fb strh r3, [r7, #30] + 8004d5e: 687a ldr r2, [r7, #4] + 8004d60: 683b ldr r3, [r7, #0] + 8004d62: 781b ldrb r3, [r3, #0] + 8004d64: 009b lsls r3, r3, #2 + 8004d66: 441a add r2, r3 + 8004d68: 8bfb ldrh r3, [r7, #30] + 8004d6a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004d6e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004d72: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004d76: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004d7a: b29b uxth r3, r3 + 8004d7c: 8013 strh r3, [r2, #0] + 8004d7e: e1c9 b.n 8005114 + } +#if (USE_USB_DOUBLE_BUFFER == 1U) + /* Double Buffer */ + else + { + if (ep->type == EP_TYPE_BULK) + 8004d80: 683b ldr r3, [r7, #0] + 8004d82: 78db ldrb r3, [r3, #3] + 8004d84: 2b02 cmp r3, #2 + 8004d86: d11e bne.n 8004dc6 + { + /* Set bulk endpoint as double buffered */ + PCD_SET_BULK_EP_DBUF(USBx, ep->num); + 8004d88: 687a ldr r2, [r7, #4] + 8004d8a: 683b ldr r3, [r7, #0] + 8004d8c: 781b ldrb r3, [r3, #0] + 8004d8e: 009b lsls r3, r3, #2 + 8004d90: 4413 add r3, r2 + 8004d92: 881b ldrh r3, [r3, #0] + 8004d94: b29b uxth r3, r3 + 8004d96: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004d9a: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004d9e: f8a7 3062 strh.w r3, [r7, #98] @ 0x62 + 8004da2: 687a ldr r2, [r7, #4] + 8004da4: 683b ldr r3, [r7, #0] + 8004da6: 781b ldrb r3, [r3, #0] + 8004da8: 009b lsls r3, r3, #2 + 8004daa: 441a add r2, r3 + 8004dac: f8b7 3062 ldrh.w r3, [r7, #98] @ 0x62 + 8004db0: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004db4: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004db8: f443 4301 orr.w r3, r3, #33024 @ 0x8100 + 8004dbc: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004dc0: b29b uxth r3, r3 + 8004dc2: 8013 strh r3, [r2, #0] + 8004dc4: e01d b.n 8004e02 + } + else + { + /* Set the ISOC endpoint in double buffer mode */ + PCD_CLEAR_EP_KIND(USBx, ep->num); + 8004dc6: 687a ldr r2, [r7, #4] + 8004dc8: 683b ldr r3, [r7, #0] + 8004dca: 781b ldrb r3, [r3, #0] + 8004dcc: 009b lsls r3, r3, #2 + 8004dce: 4413 add r3, r2 + 8004dd0: 881b ldrh r3, [r3, #0] + 8004dd2: b29b uxth r3, r3 + 8004dd4: f423 43e2 bic.w r3, r3, #28928 @ 0x7100 + 8004dd8: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004ddc: f8a7 3064 strh.w r3, [r7, #100] @ 0x64 + 8004de0: 687a ldr r2, [r7, #4] + 8004de2: 683b ldr r3, [r7, #0] + 8004de4: 781b ldrb r3, [r3, #0] + 8004de6: 009b lsls r3, r3, #2 + 8004de8: 441a add r2, r3 + 8004dea: f8b7 3064 ldrh.w r3, [r7, #100] @ 0x64 + 8004dee: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004df2: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004df6: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004dfa: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004dfe: b29b uxth r3, r3 + 8004e00: 8013 strh r3, [r2, #0] + } + + /* Set buffer address for double buffered mode */ + PCD_SET_EP_DBUF_ADDR(USBx, ep->num, ep->pmaaddr0, ep->pmaaddr1); + 8004e02: 687b ldr r3, [r7, #4] + 8004e04: 65fb str r3, [r7, #92] @ 0x5c + 8004e06: 687b ldr r3, [r7, #4] + 8004e08: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8004e0c: b29b uxth r3, r3 + 8004e0e: 461a mov r2, r3 + 8004e10: 6dfb ldr r3, [r7, #92] @ 0x5c + 8004e12: 4413 add r3, r2 + 8004e14: 65fb str r3, [r7, #92] @ 0x5c + 8004e16: 683b ldr r3, [r7, #0] + 8004e18: 781b ldrb r3, [r3, #0] + 8004e1a: 011a lsls r2, r3, #4 + 8004e1c: 6dfb ldr r3, [r7, #92] @ 0x5c + 8004e1e: 4413 add r3, r2 + 8004e20: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8004e24: 65bb str r3, [r7, #88] @ 0x58 + 8004e26: 683b ldr r3, [r7, #0] + 8004e28: 891b ldrh r3, [r3, #8] + 8004e2a: 085b lsrs r3, r3, #1 + 8004e2c: b29b uxth r3, r3 + 8004e2e: 005b lsls r3, r3, #1 + 8004e30: b29a uxth r2, r3 + 8004e32: 6dbb ldr r3, [r7, #88] @ 0x58 + 8004e34: 801a strh r2, [r3, #0] + 8004e36: 687b ldr r3, [r7, #4] + 8004e38: 657b str r3, [r7, #84] @ 0x54 + 8004e3a: 687b ldr r3, [r7, #4] + 8004e3c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8004e40: b29b uxth r3, r3 + 8004e42: 461a mov r2, r3 + 8004e44: 6d7b ldr r3, [r7, #84] @ 0x54 + 8004e46: 4413 add r3, r2 + 8004e48: 657b str r3, [r7, #84] @ 0x54 + 8004e4a: 683b ldr r3, [r7, #0] + 8004e4c: 781b ldrb r3, [r3, #0] + 8004e4e: 011a lsls r2, r3, #4 + 8004e50: 6d7b ldr r3, [r7, #84] @ 0x54 + 8004e52: 4413 add r3, r2 + 8004e54: f503 6381 add.w r3, r3, #1032 @ 0x408 + 8004e58: 653b str r3, [r7, #80] @ 0x50 + 8004e5a: 683b ldr r3, [r7, #0] + 8004e5c: 895b ldrh r3, [r3, #10] + 8004e5e: 085b lsrs r3, r3, #1 + 8004e60: b29b uxth r3, r3 + 8004e62: 005b lsls r3, r3, #1 + 8004e64: b29a uxth r2, r3 + 8004e66: 6d3b ldr r3, [r7, #80] @ 0x50 + 8004e68: 801a strh r2, [r3, #0] + + if (ep->is_in == 0U) + 8004e6a: 683b ldr r3, [r7, #0] + 8004e6c: 785b ldrb r3, [r3, #1] + 8004e6e: 2b00 cmp r3, #0 + 8004e70: f040 8093 bne.w 8004f9a + { + /* Clear the data toggle bits for the endpoint IN/OUT */ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 8004e74: 687a ldr r2, [r7, #4] + 8004e76: 683b ldr r3, [r7, #0] + 8004e78: 781b ldrb r3, [r3, #0] + 8004e7a: 009b lsls r3, r3, #2 + 8004e7c: 4413 add r3, r2 + 8004e7e: 881b ldrh r3, [r3, #0] + 8004e80: f8a7 3040 strh.w r3, [r7, #64] @ 0x40 + 8004e84: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 + 8004e88: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8004e8c: 2b00 cmp r3, #0 + 8004e8e: d01b beq.n 8004ec8 + 8004e90: 687a ldr r2, [r7, #4] + 8004e92: 683b ldr r3, [r7, #0] + 8004e94: 781b ldrb r3, [r3, #0] + 8004e96: 009b lsls r3, r3, #2 + 8004e98: 4413 add r3, r2 + 8004e9a: 881b ldrh r3, [r3, #0] + 8004e9c: b29b uxth r3, r3 + 8004e9e: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004ea2: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004ea6: 87fb strh r3, [r7, #62] @ 0x3e + 8004ea8: 687a ldr r2, [r7, #4] + 8004eaa: 683b ldr r3, [r7, #0] + 8004eac: 781b ldrb r3, [r3, #0] + 8004eae: 009b lsls r3, r3, #2 + 8004eb0: 441a add r2, r3 + 8004eb2: 8ffb ldrh r3, [r7, #62] @ 0x3e + 8004eb4: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004eb8: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004ebc: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8004ec0: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004ec4: b29b uxth r3, r3 + 8004ec6: 8013 strh r3, [r2, #0] + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 8004ec8: 687a ldr r2, [r7, #4] + 8004eca: 683b ldr r3, [r7, #0] + 8004ecc: 781b ldrb r3, [r3, #0] + 8004ece: 009b lsls r3, r3, #2 + 8004ed0: 4413 add r3, r2 + 8004ed2: 881b ldrh r3, [r3, #0] + 8004ed4: 87bb strh r3, [r7, #60] @ 0x3c + 8004ed6: 8fbb ldrh r3, [r7, #60] @ 0x3c + 8004ed8: f003 0340 and.w r3, r3, #64 @ 0x40 + 8004edc: 2b00 cmp r3, #0 + 8004ede: d01b beq.n 8004f18 + 8004ee0: 687a ldr r2, [r7, #4] + 8004ee2: 683b ldr r3, [r7, #0] + 8004ee4: 781b ldrb r3, [r3, #0] + 8004ee6: 009b lsls r3, r3, #2 + 8004ee8: 4413 add r3, r2 + 8004eea: 881b ldrh r3, [r3, #0] + 8004eec: b29b uxth r3, r3 + 8004eee: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004ef2: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004ef6: 877b strh r3, [r7, #58] @ 0x3a + 8004ef8: 687a ldr r2, [r7, #4] + 8004efa: 683b ldr r3, [r7, #0] + 8004efc: 781b ldrb r3, [r3, #0] + 8004efe: 009b lsls r3, r3, #2 + 8004f00: 441a add r2, r3 + 8004f02: 8f7b ldrh r3, [r7, #58] @ 0x3a + 8004f04: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004f08: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004f0c: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004f10: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 8004f14: b29b uxth r3, r3 + 8004f16: 8013 strh r3, [r2, #0] + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + 8004f18: 687a ldr r2, [r7, #4] + 8004f1a: 683b ldr r3, [r7, #0] + 8004f1c: 781b ldrb r3, [r3, #0] + 8004f1e: 009b lsls r3, r3, #2 + 8004f20: 4413 add r3, r2 + 8004f22: 881b ldrh r3, [r3, #0] + 8004f24: b29b uxth r3, r3 + 8004f26: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8004f2a: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004f2e: 873b strh r3, [r7, #56] @ 0x38 + 8004f30: 8f3b ldrh r3, [r7, #56] @ 0x38 + 8004f32: f483 5380 eor.w r3, r3, #4096 @ 0x1000 + 8004f36: 873b strh r3, [r7, #56] @ 0x38 + 8004f38: 8f3b ldrh r3, [r7, #56] @ 0x38 + 8004f3a: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 8004f3e: 873b strh r3, [r7, #56] @ 0x38 + 8004f40: 687a ldr r2, [r7, #4] + 8004f42: 683b ldr r3, [r7, #0] + 8004f44: 781b ldrb r3, [r3, #0] + 8004f46: 009b lsls r3, r3, #2 + 8004f48: 441a add r2, r3 + 8004f4a: 8f3b ldrh r3, [r7, #56] @ 0x38 + 8004f4c: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004f50: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004f54: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004f58: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004f5c: b29b uxth r3, r3 + 8004f5e: 8013 strh r3, [r2, #0] + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + 8004f60: 687a ldr r2, [r7, #4] + 8004f62: 683b ldr r3, [r7, #0] + 8004f64: 781b ldrb r3, [r3, #0] + 8004f66: 009b lsls r3, r3, #2 + 8004f68: 4413 add r3, r2 + 8004f6a: 881b ldrh r3, [r3, #0] + 8004f6c: b29b uxth r3, r3 + 8004f6e: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004f72: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8004f76: 86fb strh r3, [r7, #54] @ 0x36 + 8004f78: 687a ldr r2, [r7, #4] + 8004f7a: 683b ldr r3, [r7, #0] + 8004f7c: 781b ldrb r3, [r3, #0] + 8004f7e: 009b lsls r3, r3, #2 + 8004f80: 441a add r2, r3 + 8004f82: 8efb ldrh r3, [r7, #54] @ 0x36 + 8004f84: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004f88: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004f8c: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004f90: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004f94: b29b uxth r3, r3 + 8004f96: 8013 strh r3, [r2, #0] + 8004f98: e0bc b.n 8005114 + } + else + { + /* Clear the data toggle bits for the endpoint IN/OUT */ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 8004f9a: 687a ldr r2, [r7, #4] + 8004f9c: 683b ldr r3, [r7, #0] + 8004f9e: 781b ldrb r3, [r3, #0] + 8004fa0: 009b lsls r3, r3, #2 + 8004fa2: 4413 add r3, r2 + 8004fa4: 881b ldrh r3, [r3, #0] + 8004fa6: f8a7 304e strh.w r3, [r7, #78] @ 0x4e + 8004faa: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e + 8004fae: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8004fb2: 2b00 cmp r3, #0 + 8004fb4: d01d beq.n 8004ff2 + 8004fb6: 687a ldr r2, [r7, #4] + 8004fb8: 683b ldr r3, [r7, #0] + 8004fba: 781b ldrb r3, [r3, #0] + 8004fbc: 009b lsls r3, r3, #2 + 8004fbe: 4413 add r3, r2 + 8004fc0: 881b ldrh r3, [r3, #0] + 8004fc2: b29b uxth r3, r3 + 8004fc4: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004fc8: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004fcc: f8a7 304c strh.w r3, [r7, #76] @ 0x4c + 8004fd0: 687a ldr r2, [r7, #4] + 8004fd2: 683b ldr r3, [r7, #0] + 8004fd4: 781b ldrb r3, [r3, #0] + 8004fd6: 009b lsls r3, r3, #2 + 8004fd8: 441a add r2, r3 + 8004fda: f8b7 304c ldrh.w r3, [r7, #76] @ 0x4c + 8004fde: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004fe2: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004fe6: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8004fea: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004fee: b29b uxth r3, r3 + 8004ff0: 8013 strh r3, [r2, #0] + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 8004ff2: 687a ldr r2, [r7, #4] + 8004ff4: 683b ldr r3, [r7, #0] + 8004ff6: 781b ldrb r3, [r3, #0] + 8004ff8: 009b lsls r3, r3, #2 + 8004ffa: 4413 add r3, r2 + 8004ffc: 881b ldrh r3, [r3, #0] + 8004ffe: f8a7 304a strh.w r3, [r7, #74] @ 0x4a + 8005002: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 8005006: f003 0340 and.w r3, r3, #64 @ 0x40 + 800500a: 2b00 cmp r3, #0 + 800500c: d01d beq.n 800504a + 800500e: 687a ldr r2, [r7, #4] + 8005010: 683b ldr r3, [r7, #0] + 8005012: 781b ldrb r3, [r3, #0] + 8005014: 009b lsls r3, r3, #2 + 8005016: 4413 add r3, r2 + 8005018: 881b ldrh r3, [r3, #0] + 800501a: b29b uxth r3, r3 + 800501c: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8005020: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8005024: f8a7 3048 strh.w r3, [r7, #72] @ 0x48 + 8005028: 687a ldr r2, [r7, #4] + 800502a: 683b ldr r3, [r7, #0] + 800502c: 781b ldrb r3, [r3, #0] + 800502e: 009b lsls r3, r3, #2 + 8005030: 441a add r2, r3 + 8005032: f8b7 3048 ldrh.w r3, [r7, #72] @ 0x48 + 8005036: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800503a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800503e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8005042: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 8005046: b29b uxth r3, r3 + 8005048: 8013 strh r3, [r2, #0] + + if (ep->type != EP_TYPE_ISOC) + 800504a: 683b ldr r3, [r7, #0] + 800504c: 78db ldrb r3, [r3, #3] + 800504e: 2b01 cmp r3, #1 + 8005050: d024 beq.n 800509c + { + /* Configure NAK status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); + 8005052: 687a ldr r2, [r7, #4] + 8005054: 683b ldr r3, [r7, #0] + 8005056: 781b ldrb r3, [r3, #0] + 8005058: 009b lsls r3, r3, #2 + 800505a: 4413 add r3, r2 + 800505c: 881b ldrh r3, [r3, #0] + 800505e: b29b uxth r3, r3 + 8005060: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8005064: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8005068: f8a7 3044 strh.w r3, [r7, #68] @ 0x44 + 800506c: f8b7 3044 ldrh.w r3, [r7, #68] @ 0x44 + 8005070: f083 0320 eor.w r3, r3, #32 + 8005074: f8a7 3044 strh.w r3, [r7, #68] @ 0x44 + 8005078: 687a ldr r2, [r7, #4] + 800507a: 683b ldr r3, [r7, #0] + 800507c: 781b ldrb r3, [r3, #0] + 800507e: 009b lsls r3, r3, #2 + 8005080: 441a add r2, r3 + 8005082: f8b7 3044 ldrh.w r3, [r7, #68] @ 0x44 + 8005086: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800508a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800508e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8005092: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8005096: b29b uxth r3, r3 + 8005098: 8013 strh r3, [r2, #0] + 800509a: e01d b.n 80050d8 + } + else + { + /* Configure TX Endpoint to disabled state */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + 800509c: 687a ldr r2, [r7, #4] + 800509e: 683b ldr r3, [r7, #0] + 80050a0: 781b ldrb r3, [r3, #0] + 80050a2: 009b lsls r3, r3, #2 + 80050a4: 4413 add r3, r2 + 80050a6: 881b ldrh r3, [r3, #0] + 80050a8: b29b uxth r3, r3 + 80050aa: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80050ae: f023 0340 bic.w r3, r3, #64 @ 0x40 + 80050b2: f8a7 3046 strh.w r3, [r7, #70] @ 0x46 + 80050b6: 687a ldr r2, [r7, #4] + 80050b8: 683b ldr r3, [r7, #0] + 80050ba: 781b ldrb r3, [r3, #0] + 80050bc: 009b lsls r3, r3, #2 + 80050be: 441a add r2, r3 + 80050c0: f8b7 3046 ldrh.w r3, [r7, #70] @ 0x46 + 80050c4: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80050c8: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80050cc: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 80050d0: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80050d4: b29b uxth r3, r3 + 80050d6: 8013 strh r3, [r2, #0] + } + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + 80050d8: 687a ldr r2, [r7, #4] + 80050da: 683b ldr r3, [r7, #0] + 80050dc: 781b ldrb r3, [r3, #0] + 80050de: 009b lsls r3, r3, #2 + 80050e0: 4413 add r3, r2 + 80050e2: 881b ldrh r3, [r3, #0] + 80050e4: b29b uxth r3, r3 + 80050e6: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 80050ea: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80050ee: f8a7 3042 strh.w r3, [r7, #66] @ 0x42 + 80050f2: 687a ldr r2, [r7, #4] + 80050f4: 683b ldr r3, [r7, #0] + 80050f6: 781b ldrb r3, [r3, #0] + 80050f8: 009b lsls r3, r3, #2 + 80050fa: 441a add r2, r3 + 80050fc: f8b7 3042 ldrh.w r3, [r7, #66] @ 0x42 + 8005100: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8005104: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8005108: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800510c: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8005110: b29b uxth r3, r3 + 8005112: 8013 strh r3, [r2, #0] + } + } +#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ + + return ret; + 8005114: f897 306f ldrb.w r3, [r7, #111] @ 0x6f +} + 8005118: 4618 mov r0, r3 + 800511a: 3774 adds r7, #116 @ 0x74 + 800511c: 46bd mov sp, r7 + 800511e: bc80 pop {r7} + 8005120: 4770 bx lr + 8005122: bf00 nop + +08005124 : + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_DeactivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + 8005124: b480 push {r7} + 8005126: b08d sub sp, #52 @ 0x34 + 8005128: af00 add r7, sp, #0 + 800512a: 6078 str r0, [r7, #4] + 800512c: 6039 str r1, [r7, #0] + if (ep->doublebuffer == 0U) + 800512e: 683b ldr r3, [r7, #0] + 8005130: 7b1b ldrb r3, [r3, #12] + 8005132: 2b00 cmp r3, #0 + 8005134: f040 808e bne.w 8005254 + { + if (ep->is_in != 0U) + 8005138: 683b ldr r3, [r7, #0] + 800513a: 785b ldrb r3, [r3, #1] + 800513c: 2b00 cmp r3, #0 + 800513e: d044 beq.n 80051ca + { + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 8005140: 687a ldr r2, [r7, #4] + 8005142: 683b ldr r3, [r7, #0] + 8005144: 781b ldrb r3, [r3, #0] + 8005146: 009b lsls r3, r3, #2 + 8005148: 4413 add r3, r2 + 800514a: 881b ldrh r3, [r3, #0] + 800514c: 81bb strh r3, [r7, #12] + 800514e: 89bb ldrh r3, [r7, #12] + 8005150: f003 0340 and.w r3, r3, #64 @ 0x40 + 8005154: 2b00 cmp r3, #0 + 8005156: d01b beq.n 8005190 + 8005158: 687a ldr r2, [r7, #4] + 800515a: 683b ldr r3, [r7, #0] + 800515c: 781b ldrb r3, [r3, #0] + 800515e: 009b lsls r3, r3, #2 + 8005160: 4413 add r3, r2 + 8005162: 881b ldrh r3, [r3, #0] + 8005164: b29b uxth r3, r3 + 8005166: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800516a: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800516e: 817b strh r3, [r7, #10] + 8005170: 687a ldr r2, [r7, #4] + 8005172: 683b ldr r3, [r7, #0] + 8005174: 781b ldrb r3, [r3, #0] + 8005176: 009b lsls r3, r3, #2 + 8005178: 441a add r2, r3 + 800517a: 897b ldrh r3, [r7, #10] + 800517c: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8005180: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8005184: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8005188: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 800518c: b29b uxth r3, r3 + 800518e: 8013 strh r3, [r2, #0] + + /* Configure DISABLE status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + 8005190: 687a ldr r2, [r7, #4] + 8005192: 683b ldr r3, [r7, #0] + 8005194: 781b ldrb r3, [r3, #0] + 8005196: 009b lsls r3, r3, #2 + 8005198: 4413 add r3, r2 + 800519a: 881b ldrh r3, [r3, #0] + 800519c: b29b uxth r3, r3 + 800519e: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80051a2: f023 0340 bic.w r3, r3, #64 @ 0x40 + 80051a6: 813b strh r3, [r7, #8] + 80051a8: 687a ldr r2, [r7, #4] + 80051aa: 683b ldr r3, [r7, #0] + 80051ac: 781b ldrb r3, [r3, #0] + 80051ae: 009b lsls r3, r3, #2 + 80051b0: 441a add r2, r3 + 80051b2: 893b ldrh r3, [r7, #8] + 80051b4: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80051b8: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80051bc: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 80051c0: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80051c4: b29b uxth r3, r3 + 80051c6: 8013 strh r3, [r2, #0] + 80051c8: e192 b.n 80054f0 + } + + else + { + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 80051ca: 687a ldr r2, [r7, #4] + 80051cc: 683b ldr r3, [r7, #0] + 80051ce: 781b ldrb r3, [r3, #0] + 80051d0: 009b lsls r3, r3, #2 + 80051d2: 4413 add r3, r2 + 80051d4: 881b ldrh r3, [r3, #0] + 80051d6: 827b strh r3, [r7, #18] + 80051d8: 8a7b ldrh r3, [r7, #18] + 80051da: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 80051de: 2b00 cmp r3, #0 + 80051e0: d01b beq.n 800521a + 80051e2: 687a ldr r2, [r7, #4] + 80051e4: 683b ldr r3, [r7, #0] + 80051e6: 781b ldrb r3, [r3, #0] + 80051e8: 009b lsls r3, r3, #2 + 80051ea: 4413 add r3, r2 + 80051ec: 881b ldrh r3, [r3, #0] + 80051ee: b29b uxth r3, r3 + 80051f0: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80051f4: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80051f8: 823b strh r3, [r7, #16] + 80051fa: 687a ldr r2, [r7, #4] + 80051fc: 683b ldr r3, [r7, #0] + 80051fe: 781b ldrb r3, [r3, #0] + 8005200: 009b lsls r3, r3, #2 + 8005202: 441a add r2, r3 + 8005204: 8a3b ldrh r3, [r7, #16] + 8005206: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800520a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800520e: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8005212: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8005216: b29b uxth r3, r3 + 8005218: 8013 strh r3, [r2, #0] + + /* Configure DISABLE status for the Endpoint */ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + 800521a: 687a ldr r2, [r7, #4] + 800521c: 683b ldr r3, [r7, #0] + 800521e: 781b ldrb r3, [r3, #0] + 8005220: 009b lsls r3, r3, #2 + 8005222: 4413 add r3, r2 + 8005224: 881b ldrh r3, [r3, #0] + 8005226: b29b uxth r3, r3 + 8005228: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 800522c: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8005230: 81fb strh r3, [r7, #14] + 8005232: 687a ldr r2, [r7, #4] + 8005234: 683b ldr r3, [r7, #0] + 8005236: 781b ldrb r3, [r3, #0] + 8005238: 009b lsls r3, r3, #2 + 800523a: 441a add r2, r3 + 800523c: 89fb ldrh r3, [r7, #14] + 800523e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8005242: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8005246: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800524a: f043 0380 orr.w r3, r3, #128 @ 0x80 + 800524e: b29b uxth r3, r3 + 8005250: 8013 strh r3, [r2, #0] + 8005252: e14d b.n 80054f0 + } +#if (USE_USB_DOUBLE_BUFFER == 1U) + /* Double Buffer */ + else + { + if (ep->is_in == 0U) + 8005254: 683b ldr r3, [r7, #0] + 8005256: 785b ldrb r3, [r3, #1] + 8005258: 2b00 cmp r3, #0 + 800525a: f040 80a5 bne.w 80053a8 + { + /* Clear the data toggle bits for the endpoint IN/OUT*/ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 800525e: 687a ldr r2, [r7, #4] + 8005260: 683b ldr r3, [r7, #0] + 8005262: 781b ldrb r3, [r3, #0] + 8005264: 009b lsls r3, r3, #2 + 8005266: 4413 add r3, r2 + 8005268: 881b ldrh r3, [r3, #0] + 800526a: 843b strh r3, [r7, #32] + 800526c: 8c3b ldrh r3, [r7, #32] + 800526e: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8005272: 2b00 cmp r3, #0 + 8005274: d01b beq.n 80052ae + 8005276: 687a ldr r2, [r7, #4] + 8005278: 683b ldr r3, [r7, #0] + 800527a: 781b ldrb r3, [r3, #0] + 800527c: 009b lsls r3, r3, #2 + 800527e: 4413 add r3, r2 + 8005280: 881b ldrh r3, [r3, #0] + 8005282: b29b uxth r3, r3 + 8005284: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8005288: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800528c: 83fb strh r3, [r7, #30] + 800528e: 687a ldr r2, [r7, #4] + 8005290: 683b ldr r3, [r7, #0] + 8005292: 781b ldrb r3, [r3, #0] + 8005294: 009b lsls r3, r3, #2 + 8005296: 441a add r2, r3 + 8005298: 8bfb ldrh r3, [r7, #30] + 800529a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800529e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80052a2: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 80052a6: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80052aa: b29b uxth r3, r3 + 80052ac: 8013 strh r3, [r2, #0] + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 80052ae: 687a ldr r2, [r7, #4] + 80052b0: 683b ldr r3, [r7, #0] + 80052b2: 781b ldrb r3, [r3, #0] + 80052b4: 009b lsls r3, r3, #2 + 80052b6: 4413 add r3, r2 + 80052b8: 881b ldrh r3, [r3, #0] + 80052ba: 83bb strh r3, [r7, #28] + 80052bc: 8bbb ldrh r3, [r7, #28] + 80052be: f003 0340 and.w r3, r3, #64 @ 0x40 + 80052c2: 2b00 cmp r3, #0 + 80052c4: d01b beq.n 80052fe + 80052c6: 687a ldr r2, [r7, #4] + 80052c8: 683b ldr r3, [r7, #0] + 80052ca: 781b ldrb r3, [r3, #0] + 80052cc: 009b lsls r3, r3, #2 + 80052ce: 4413 add r3, r2 + 80052d0: 881b ldrh r3, [r3, #0] + 80052d2: b29b uxth r3, r3 + 80052d4: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80052d8: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80052dc: 837b strh r3, [r7, #26] + 80052de: 687a ldr r2, [r7, #4] + 80052e0: 683b ldr r3, [r7, #0] + 80052e2: 781b ldrb r3, [r3, #0] + 80052e4: 009b lsls r3, r3, #2 + 80052e6: 441a add r2, r3 + 80052e8: 8b7b ldrh r3, [r7, #26] + 80052ea: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80052ee: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80052f2: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 80052f6: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 80052fa: b29b uxth r3, r3 + 80052fc: 8013 strh r3, [r2, #0] + + /* Reset value of the data toggle bits for the endpoint out*/ + PCD_TX_DTOG(USBx, ep->num); + 80052fe: 687a ldr r2, [r7, #4] + 8005300: 683b ldr r3, [r7, #0] + 8005302: 781b ldrb r3, [r3, #0] + 8005304: 009b lsls r3, r3, #2 + 8005306: 4413 add r3, r2 + 8005308: 881b ldrh r3, [r3, #0] + 800530a: b29b uxth r3, r3 + 800530c: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8005310: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8005314: 833b strh r3, [r7, #24] + 8005316: 687a ldr r2, [r7, #4] + 8005318: 683b ldr r3, [r7, #0] + 800531a: 781b ldrb r3, [r3, #0] + 800531c: 009b lsls r3, r3, #2 + 800531e: 441a add r2, r3 + 8005320: 8b3b ldrh r3, [r7, #24] + 8005322: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8005326: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800532a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800532e: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 8005332: b29b uxth r3, r3 + 8005334: 8013 strh r3, [r2, #0] + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + 8005336: 687a ldr r2, [r7, #4] + 8005338: 683b ldr r3, [r7, #0] + 800533a: 781b ldrb r3, [r3, #0] + 800533c: 009b lsls r3, r3, #2 + 800533e: 4413 add r3, r2 + 8005340: 881b ldrh r3, [r3, #0] + 8005342: b29b uxth r3, r3 + 8005344: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8005348: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800534c: 82fb strh r3, [r7, #22] + 800534e: 687a ldr r2, [r7, #4] + 8005350: 683b ldr r3, [r7, #0] + 8005352: 781b ldrb r3, [r3, #0] + 8005354: 009b lsls r3, r3, #2 + 8005356: 441a add r2, r3 + 8005358: 8afb ldrh r3, [r7, #22] + 800535a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800535e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8005362: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8005366: f043 0380 orr.w r3, r3, #128 @ 0x80 + 800536a: b29b uxth r3, r3 + 800536c: 8013 strh r3, [r2, #0] + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + 800536e: 687a ldr r2, [r7, #4] + 8005370: 683b ldr r3, [r7, #0] + 8005372: 781b ldrb r3, [r3, #0] + 8005374: 009b lsls r3, r3, #2 + 8005376: 4413 add r3, r2 + 8005378: 881b ldrh r3, [r3, #0] + 800537a: b29b uxth r3, r3 + 800537c: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8005380: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8005384: 82bb strh r3, [r7, #20] + 8005386: 687a ldr r2, [r7, #4] + 8005388: 683b ldr r3, [r7, #0] + 800538a: 781b ldrb r3, [r3, #0] + 800538c: 009b lsls r3, r3, #2 + 800538e: 441a add r2, r3 + 8005390: 8abb ldrh r3, [r7, #20] + 8005392: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8005396: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800539a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800539e: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80053a2: b29b uxth r3, r3 + 80053a4: 8013 strh r3, [r2, #0] + 80053a6: e0a3 b.n 80054f0 + } + else + { + /* Clear the data toggle bits for the endpoint IN/OUT*/ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 80053a8: 687a ldr r2, [r7, #4] + 80053aa: 683b ldr r3, [r7, #0] + 80053ac: 781b ldrb r3, [r3, #0] + 80053ae: 009b lsls r3, r3, #2 + 80053b0: 4413 add r3, r2 + 80053b2: 881b ldrh r3, [r3, #0] + 80053b4: 85fb strh r3, [r7, #46] @ 0x2e + 80053b6: 8dfb ldrh r3, [r7, #46] @ 0x2e + 80053b8: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 80053bc: 2b00 cmp r3, #0 + 80053be: d01b beq.n 80053f8 + 80053c0: 687a ldr r2, [r7, #4] + 80053c2: 683b ldr r3, [r7, #0] + 80053c4: 781b ldrb r3, [r3, #0] + 80053c6: 009b lsls r3, r3, #2 + 80053c8: 4413 add r3, r2 + 80053ca: 881b ldrh r3, [r3, #0] + 80053cc: b29b uxth r3, r3 + 80053ce: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80053d2: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80053d6: 85bb strh r3, [r7, #44] @ 0x2c + 80053d8: 687a ldr r2, [r7, #4] + 80053da: 683b ldr r3, [r7, #0] + 80053dc: 781b ldrb r3, [r3, #0] + 80053de: 009b lsls r3, r3, #2 + 80053e0: 441a add r2, r3 + 80053e2: 8dbb ldrh r3, [r7, #44] @ 0x2c + 80053e4: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80053e8: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80053ec: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 80053f0: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80053f4: b29b uxth r3, r3 + 80053f6: 8013 strh r3, [r2, #0] + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 80053f8: 687a ldr r2, [r7, #4] + 80053fa: 683b ldr r3, [r7, #0] + 80053fc: 781b ldrb r3, [r3, #0] + 80053fe: 009b lsls r3, r3, #2 + 8005400: 4413 add r3, r2 + 8005402: 881b ldrh r3, [r3, #0] + 8005404: 857b strh r3, [r7, #42] @ 0x2a + 8005406: 8d7b ldrh r3, [r7, #42] @ 0x2a + 8005408: f003 0340 and.w r3, r3, #64 @ 0x40 + 800540c: 2b00 cmp r3, #0 + 800540e: d01b beq.n 8005448 + 8005410: 687a ldr r2, [r7, #4] + 8005412: 683b ldr r3, [r7, #0] + 8005414: 781b ldrb r3, [r3, #0] + 8005416: 009b lsls r3, r3, #2 + 8005418: 4413 add r3, r2 + 800541a: 881b ldrh r3, [r3, #0] + 800541c: b29b uxth r3, r3 + 800541e: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8005422: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8005426: 853b strh r3, [r7, #40] @ 0x28 + 8005428: 687a ldr r2, [r7, #4] + 800542a: 683b ldr r3, [r7, #0] + 800542c: 781b ldrb r3, [r3, #0] + 800542e: 009b lsls r3, r3, #2 + 8005430: 441a add r2, r3 + 8005432: 8d3b ldrh r3, [r7, #40] @ 0x28 + 8005434: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8005438: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800543c: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8005440: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 8005444: b29b uxth r3, r3 + 8005446: 8013 strh r3, [r2, #0] + PCD_RX_DTOG(USBx, ep->num); + 8005448: 687a ldr r2, [r7, #4] + 800544a: 683b ldr r3, [r7, #0] + 800544c: 781b ldrb r3, [r3, #0] + 800544e: 009b lsls r3, r3, #2 + 8005450: 4413 add r3, r2 + 8005452: 881b ldrh r3, [r3, #0] + 8005454: b29b uxth r3, r3 + 8005456: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800545a: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800545e: 84fb strh r3, [r7, #38] @ 0x26 + 8005460: 687a ldr r2, [r7, #4] + 8005462: 683b ldr r3, [r7, #0] + 8005464: 781b ldrb r3, [r3, #0] + 8005466: 009b lsls r3, r3, #2 + 8005468: 441a add r2, r3 + 800546a: 8cfb ldrh r3, [r7, #38] @ 0x26 + 800546c: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8005470: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8005474: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8005478: f043 0380 orr.w r3, r3, #128 @ 0x80 + 800547c: b29b uxth r3, r3 + 800547e: 8013 strh r3, [r2, #0] + + /* Configure DISABLE status for the Endpoint*/ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + 8005480: 687a ldr r2, [r7, #4] + 8005482: 683b ldr r3, [r7, #0] + 8005484: 781b ldrb r3, [r3, #0] + 8005486: 009b lsls r3, r3, #2 + 8005488: 4413 add r3, r2 + 800548a: 881b ldrh r3, [r3, #0] + 800548c: b29b uxth r3, r3 + 800548e: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8005492: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8005496: 84bb strh r3, [r7, #36] @ 0x24 + 8005498: 687a ldr r2, [r7, #4] + 800549a: 683b ldr r3, [r7, #0] + 800549c: 781b ldrb r3, [r3, #0] + 800549e: 009b lsls r3, r3, #2 + 80054a0: 441a add r2, r3 + 80054a2: 8cbb ldrh r3, [r7, #36] @ 0x24 + 80054a4: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80054a8: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80054ac: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 80054b0: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80054b4: b29b uxth r3, r3 + 80054b6: 8013 strh r3, [r2, #0] + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + 80054b8: 687a ldr r2, [r7, #4] + 80054ba: 683b ldr r3, [r7, #0] + 80054bc: 781b ldrb r3, [r3, #0] + 80054be: 009b lsls r3, r3, #2 + 80054c0: 4413 add r3, r2 + 80054c2: 881b ldrh r3, [r3, #0] + 80054c4: b29b uxth r3, r3 + 80054c6: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 80054ca: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80054ce: 847b strh r3, [r7, #34] @ 0x22 + 80054d0: 687a ldr r2, [r7, #4] + 80054d2: 683b ldr r3, [r7, #0] + 80054d4: 781b ldrb r3, [r3, #0] + 80054d6: 009b lsls r3, r3, #2 + 80054d8: 441a add r2, r3 + 80054da: 8c7b ldrh r3, [r7, #34] @ 0x22 + 80054dc: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80054e0: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80054e4: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 80054e8: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80054ec: b29b uxth r3, r3 + 80054ee: 8013 strh r3, [r2, #0] + } + } +#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ + + return HAL_OK; + 80054f0: 2300 movs r3, #0 +} + 80054f2: 4618 mov r0, r3 + 80054f4: 3734 adds r7, #52 @ 0x34 + 80054f6: 46bd mov sp, r7 + 80054f8: bc80 pop {r7} + 80054fa: 4770 bx lr + +080054fc : + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + 80054fc: b580 push {r7, lr} + 80054fe: b0c2 sub sp, #264 @ 0x108 + 8005500: af00 add r7, sp, #0 + 8005502: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005506: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 800550a: 6018 str r0, [r3, #0] + 800550c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005510: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005514: 6019 str r1, [r3, #0] + uint16_t pmabuffer; + uint16_t wEPVal; +#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ + + /* IN endpoint */ + if (ep->is_in == 1U) + 8005516: f507 7384 add.w r3, r7, #264 @ 0x108 + 800551a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800551e: 681b ldr r3, [r3, #0] + 8005520: 785b ldrb r3, [r3, #1] + 8005522: 2b01 cmp r3, #1 + 8005524: f040 86b7 bne.w 8006296 + { + /*Multi packet transfer*/ + if (ep->xfer_len > ep->maxpacket) + 8005528: f507 7384 add.w r3, r7, #264 @ 0x108 + 800552c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005530: 681b ldr r3, [r3, #0] + 8005532: 699a ldr r2, [r3, #24] + 8005534: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005538: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800553c: 681b ldr r3, [r3, #0] + 800553e: 691b ldr r3, [r3, #16] + 8005540: 429a cmp r2, r3 + 8005542: d908 bls.n 8005556 + { + len = ep->maxpacket; + 8005544: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005548: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800554c: 681b ldr r3, [r3, #0] + 800554e: 691b ldr r3, [r3, #16] + 8005550: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + 8005554: e007 b.n 8005566 + } + else + { + len = ep->xfer_len; + 8005556: f507 7384 add.w r3, r7, #264 @ 0x108 + 800555a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800555e: 681b ldr r3, [r3, #0] + 8005560: 699b ldr r3, [r3, #24] + 8005562: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + } + + /* configure and validate Tx endpoint */ + if (ep->doublebuffer == 0U) + 8005566: f507 7384 add.w r3, r7, #264 @ 0x108 + 800556a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800556e: 681b ldr r3, [r3, #0] + 8005570: 7b1b ldrb r3, [r3, #12] + 8005572: 2b00 cmp r3, #0 + 8005574: d13a bne.n 80055ec + { + USB_WritePMA(USBx, ep->xfer_buff, ep->pmaadress, (uint16_t)len); + 8005576: f507 7384 add.w r3, r7, #264 @ 0x108 + 800557a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800557e: 681b ldr r3, [r3, #0] + 8005580: 6959 ldr r1, [r3, #20] + 8005582: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005586: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800558a: 681b ldr r3, [r3, #0] + 800558c: 88da ldrh r2, [r3, #6] + 800558e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005592: b29b uxth r3, r3 + 8005594: f507 7084 add.w r0, r7, #264 @ 0x108 + 8005598: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 800559c: 6800 ldr r0, [r0, #0] + 800559e: f001 fc9c bl 8006eda + PCD_SET_EP_TX_CNT(USBx, ep->num, len); + 80055a2: f507 7384 add.w r3, r7, #264 @ 0x108 + 80055a6: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80055aa: 681b ldr r3, [r3, #0] + 80055ac: 613b str r3, [r7, #16] + 80055ae: f507 7384 add.w r3, r7, #264 @ 0x108 + 80055b2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80055b6: 681b ldr r3, [r3, #0] + 80055b8: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80055bc: b29b uxth r3, r3 + 80055be: 461a mov r2, r3 + 80055c0: 693b ldr r3, [r7, #16] + 80055c2: 4413 add r3, r2 + 80055c4: 613b str r3, [r7, #16] + 80055c6: f507 7384 add.w r3, r7, #264 @ 0x108 + 80055ca: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80055ce: 681b ldr r3, [r3, #0] + 80055d0: 781b ldrb r3, [r3, #0] + 80055d2: 011a lsls r2, r3, #4 + 80055d4: 693b ldr r3, [r7, #16] + 80055d6: 4413 add r3, r2 + 80055d8: f203 4304 addw r3, r3, #1028 @ 0x404 + 80055dc: 60fb str r3, [r7, #12] + 80055de: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80055e2: b29a uxth r2, r3 + 80055e4: 68fb ldr r3, [r7, #12] + 80055e6: 801a strh r2, [r3, #0] + 80055e8: f000 be1f b.w 800622a + } +#if (USE_USB_DOUBLE_BUFFER == 1U) + else + { + /* double buffer bulk management */ + if (ep->type == EP_TYPE_BULK) + 80055ec: f507 7384 add.w r3, r7, #264 @ 0x108 + 80055f0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80055f4: 681b ldr r3, [r3, #0] + 80055f6: 78db ldrb r3, [r3, #3] + 80055f8: 2b02 cmp r3, #2 + 80055fa: f040 8462 bne.w 8005ec2 + { + if (ep->xfer_len_db > ep->maxpacket) + 80055fe: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005602: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005606: 681b ldr r3, [r3, #0] + 8005608: 6a1a ldr r2, [r3, #32] + 800560a: f507 7384 add.w r3, r7, #264 @ 0x108 + 800560e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005612: 681b ldr r3, [r3, #0] + 8005614: 691b ldr r3, [r3, #16] + 8005616: 429a cmp r2, r3 + 8005618: f240 83df bls.w 8005dda + { + /* enable double buffer */ + PCD_SET_BULK_EP_DBUF(USBx, ep->num); + 800561c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005620: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005624: 681a ldr r2, [r3, #0] + 8005626: f507 7384 add.w r3, r7, #264 @ 0x108 + 800562a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800562e: 681b ldr r3, [r3, #0] + 8005630: 781b ldrb r3, [r3, #0] + 8005632: 009b lsls r3, r3, #2 + 8005634: 4413 add r3, r2 + 8005636: 881b ldrh r3, [r3, #0] + 8005638: b29b uxth r3, r3 + 800563a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800563e: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8005642: f8a7 3056 strh.w r3, [r7, #86] @ 0x56 + 8005646: f507 7384 add.w r3, r7, #264 @ 0x108 + 800564a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 800564e: 681a ldr r2, [r3, #0] + 8005650: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005654: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005658: 681b ldr r3, [r3, #0] + 800565a: 781b ldrb r3, [r3, #0] + 800565c: 009b lsls r3, r3, #2 + 800565e: 441a add r2, r3 + 8005660: f8b7 3056 ldrh.w r3, [r7, #86] @ 0x56 + 8005664: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8005668: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800566c: f443 4301 orr.w r3, r3, #33024 @ 0x8100 + 8005670: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8005674: b29b uxth r3, r3 + 8005676: 8013 strh r3, [r2, #0] + + /* each Time to write in PMA xfer_len_db will */ + ep->xfer_len_db -= len; + 8005678: f507 7384 add.w r3, r7, #264 @ 0x108 + 800567c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005680: 681b ldr r3, [r3, #0] + 8005682: 6a1a ldr r2, [r3, #32] + 8005684: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005688: 1ad2 subs r2, r2, r3 + 800568a: f507 7384 add.w r3, r7, #264 @ 0x108 + 800568e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005692: 681b ldr r3, [r3, #0] + 8005694: 621a str r2, [r3, #32] + + /* Fill the two first buffer in the Buffer0 & Buffer1 */ + if ((PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_DTOG_TX) != 0U) + 8005696: f507 7384 add.w r3, r7, #264 @ 0x108 + 800569a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 800569e: 681a ldr r2, [r3, #0] + 80056a0: f507 7384 add.w r3, r7, #264 @ 0x108 + 80056a4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80056a8: 681b ldr r3, [r3, #0] + 80056aa: 781b ldrb r3, [r3, #0] + 80056ac: 009b lsls r3, r3, #2 + 80056ae: 4413 add r3, r2 + 80056b0: 881b ldrh r3, [r3, #0] + 80056b2: b29b uxth r3, r3 + 80056b4: f003 0340 and.w r3, r3, #64 @ 0x40 + 80056b8: 2b00 cmp r3, #0 + 80056ba: f000 81c7 beq.w 8005a4c + { + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); + 80056be: f507 7384 add.w r3, r7, #264 @ 0x108 + 80056c2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80056c6: 681b ldr r3, [r3, #0] + 80056c8: 633b str r3, [r7, #48] @ 0x30 + 80056ca: f507 7384 add.w r3, r7, #264 @ 0x108 + 80056ce: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80056d2: 681b ldr r3, [r3, #0] + 80056d4: 785b ldrb r3, [r3, #1] + 80056d6: 2b00 cmp r3, #0 + 80056d8: d177 bne.n 80057ca + 80056da: f507 7384 add.w r3, r7, #264 @ 0x108 + 80056de: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80056e2: 681b ldr r3, [r3, #0] + 80056e4: 62bb str r3, [r7, #40] @ 0x28 + 80056e6: f507 7384 add.w r3, r7, #264 @ 0x108 + 80056ea: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80056ee: 681b ldr r3, [r3, #0] + 80056f0: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80056f4: b29b uxth r3, r3 + 80056f6: 461a mov r2, r3 + 80056f8: 6abb ldr r3, [r7, #40] @ 0x28 + 80056fa: 4413 add r3, r2 + 80056fc: 62bb str r3, [r7, #40] @ 0x28 + 80056fe: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005702: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005706: 681b ldr r3, [r3, #0] + 8005708: 781b ldrb r3, [r3, #0] + 800570a: 011a lsls r2, r3, #4 + 800570c: 6abb ldr r3, [r7, #40] @ 0x28 + 800570e: 4413 add r3, r2 + 8005710: f203 430c addw r3, r3, #1036 @ 0x40c + 8005714: 627b str r3, [r7, #36] @ 0x24 + 8005716: 6a7b ldr r3, [r7, #36] @ 0x24 + 8005718: 881b ldrh r3, [r3, #0] + 800571a: b29b uxth r3, r3 + 800571c: f3c3 0309 ubfx r3, r3, #0, #10 + 8005720: b29a uxth r2, r3 + 8005722: 6a7b ldr r3, [r7, #36] @ 0x24 + 8005724: 801a strh r2, [r3, #0] + 8005726: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800572a: 2b3e cmp r3, #62 @ 0x3e + 800572c: d921 bls.n 8005772 + 800572e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005732: 095b lsrs r3, r3, #5 + 8005734: f8c7 3100 str.w r3, [r7, #256] @ 0x100 + 8005738: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800573c: f003 031f and.w r3, r3, #31 + 8005740: 2b00 cmp r3, #0 + 8005742: d104 bne.n 800574e + 8005744: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 + 8005748: 3b01 subs r3, #1 + 800574a: f8c7 3100 str.w r3, [r7, #256] @ 0x100 + 800574e: 6a7b ldr r3, [r7, #36] @ 0x24 + 8005750: 881b ldrh r3, [r3, #0] + 8005752: b29a uxth r2, r3 + 8005754: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 + 8005758: b29b uxth r3, r3 + 800575a: 029b lsls r3, r3, #10 + 800575c: b29b uxth r3, r3 + 800575e: 4313 orrs r3, r2 + 8005760: b29b uxth r3, r3 + 8005762: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005766: ea6f 4353 mvn.w r3, r3, lsr #17 + 800576a: b29a uxth r2, r3 + 800576c: 6a7b ldr r3, [r7, #36] @ 0x24 + 800576e: 801a strh r2, [r3, #0] + 8005770: e050 b.n 8005814 + 8005772: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005776: 2b00 cmp r3, #0 + 8005778: d10a bne.n 8005790 + 800577a: 6a7b ldr r3, [r7, #36] @ 0x24 + 800577c: 881b ldrh r3, [r3, #0] + 800577e: b29b uxth r3, r3 + 8005780: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005784: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005788: b29a uxth r2, r3 + 800578a: 6a7b ldr r3, [r7, #36] @ 0x24 + 800578c: 801a strh r2, [r3, #0] + 800578e: e041 b.n 8005814 + 8005790: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005794: 085b lsrs r3, r3, #1 + 8005796: f8c7 3100 str.w r3, [r7, #256] @ 0x100 + 800579a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800579e: f003 0301 and.w r3, r3, #1 + 80057a2: 2b00 cmp r3, #0 + 80057a4: d004 beq.n 80057b0 + 80057a6: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 + 80057aa: 3301 adds r3, #1 + 80057ac: f8c7 3100 str.w r3, [r7, #256] @ 0x100 + 80057b0: 6a7b ldr r3, [r7, #36] @ 0x24 + 80057b2: 881b ldrh r3, [r3, #0] + 80057b4: b29a uxth r2, r3 + 80057b6: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 + 80057ba: b29b uxth r3, r3 + 80057bc: 029b lsls r3, r3, #10 + 80057be: b29b uxth r3, r3 + 80057c0: 4313 orrs r3, r2 + 80057c2: b29a uxth r2, r3 + 80057c4: 6a7b ldr r3, [r7, #36] @ 0x24 + 80057c6: 801a strh r2, [r3, #0] + 80057c8: e024 b.n 8005814 + 80057ca: f507 7384 add.w r3, r7, #264 @ 0x108 + 80057ce: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80057d2: 681b ldr r3, [r3, #0] + 80057d4: 785b ldrb r3, [r3, #1] + 80057d6: 2b01 cmp r3, #1 + 80057d8: d11c bne.n 8005814 + 80057da: f507 7384 add.w r3, r7, #264 @ 0x108 + 80057de: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80057e2: 681b ldr r3, [r3, #0] + 80057e4: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80057e8: b29b uxth r3, r3 + 80057ea: 461a mov r2, r3 + 80057ec: 6b3b ldr r3, [r7, #48] @ 0x30 + 80057ee: 4413 add r3, r2 + 80057f0: 633b str r3, [r7, #48] @ 0x30 + 80057f2: f507 7384 add.w r3, r7, #264 @ 0x108 + 80057f6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80057fa: 681b ldr r3, [r3, #0] + 80057fc: 781b ldrb r3, [r3, #0] + 80057fe: 011a lsls r2, r3, #4 + 8005800: 6b3b ldr r3, [r7, #48] @ 0x30 + 8005802: 4413 add r3, r2 + 8005804: f203 430c addw r3, r3, #1036 @ 0x40c + 8005808: 62fb str r3, [r7, #44] @ 0x2c + 800580a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800580e: b29a uxth r2, r3 + 8005810: 6afb ldr r3, [r7, #44] @ 0x2c + 8005812: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr1; + 8005814: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005818: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800581c: 681b ldr r3, [r3, #0] + 800581e: 895b ldrh r3, [r3, #10] + 8005820: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 8005824: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005828: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800582c: 681b ldr r3, [r3, #0] + 800582e: 6959 ldr r1, [r3, #20] + 8005830: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005834: b29b uxth r3, r3 + 8005836: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 + 800583a: f507 7084 add.w r0, r7, #264 @ 0x108 + 800583e: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 8005842: 6800 ldr r0, [r0, #0] + 8005844: f001 fb49 bl 8006eda + ep->xfer_buff += len; + 8005848: f507 7384 add.w r3, r7, #264 @ 0x108 + 800584c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005850: 681b ldr r3, [r3, #0] + 8005852: 695a ldr r2, [r3, #20] + 8005854: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005858: 441a add r2, r3 + 800585a: f507 7384 add.w r3, r7, #264 @ 0x108 + 800585e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005862: 681b ldr r3, [r3, #0] + 8005864: 615a str r2, [r3, #20] + + if (ep->xfer_len_db > ep->maxpacket) + 8005866: f507 7384 add.w r3, r7, #264 @ 0x108 + 800586a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800586e: 681b ldr r3, [r3, #0] + 8005870: 6a1a ldr r2, [r3, #32] + 8005872: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005876: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800587a: 681b ldr r3, [r3, #0] + 800587c: 691b ldr r3, [r3, #16] + 800587e: 429a cmp r2, r3 + 8005880: d90f bls.n 80058a2 + { + ep->xfer_len_db -= len; + 8005882: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005886: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800588a: 681b ldr r3, [r3, #0] + 800588c: 6a1a ldr r2, [r3, #32] + 800588e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005892: 1ad2 subs r2, r2, r3 + 8005894: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005898: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800589c: 681b ldr r3, [r3, #0] + 800589e: 621a str r2, [r3, #32] + 80058a0: e00e b.n 80058c0 + } + else + { + len = ep->xfer_len_db; + 80058a2: f507 7384 add.w r3, r7, #264 @ 0x108 + 80058a6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80058aa: 681b ldr r3, [r3, #0] + 80058ac: 6a1b ldr r3, [r3, #32] + 80058ae: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + ep->xfer_len_db = 0U; + 80058b2: f507 7384 add.w r3, r7, #264 @ 0x108 + 80058b6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80058ba: 681b ldr r3, [r3, #0] + 80058bc: 2200 movs r2, #0 + 80058be: 621a str r2, [r3, #32] + } + + /* Set the Double buffer counter for pmabuffer0 */ + PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); + 80058c0: f507 7384 add.w r3, r7, #264 @ 0x108 + 80058c4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80058c8: 681b ldr r3, [r3, #0] + 80058ca: 785b ldrb r3, [r3, #1] + 80058cc: 2b00 cmp r3, #0 + 80058ce: d177 bne.n 80059c0 + 80058d0: f507 7384 add.w r3, r7, #264 @ 0x108 + 80058d4: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80058d8: 681b ldr r3, [r3, #0] + 80058da: 61bb str r3, [r7, #24] + 80058dc: f507 7384 add.w r3, r7, #264 @ 0x108 + 80058e0: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80058e4: 681b ldr r3, [r3, #0] + 80058e6: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80058ea: b29b uxth r3, r3 + 80058ec: 461a mov r2, r3 + 80058ee: 69bb ldr r3, [r7, #24] + 80058f0: 4413 add r3, r2 + 80058f2: 61bb str r3, [r7, #24] + 80058f4: f507 7384 add.w r3, r7, #264 @ 0x108 + 80058f8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80058fc: 681b ldr r3, [r3, #0] + 80058fe: 781b ldrb r3, [r3, #0] + 8005900: 011a lsls r2, r3, #4 + 8005902: 69bb ldr r3, [r7, #24] + 8005904: 4413 add r3, r2 + 8005906: f203 4304 addw r3, r3, #1028 @ 0x404 + 800590a: 617b str r3, [r7, #20] + 800590c: 697b ldr r3, [r7, #20] + 800590e: 881b ldrh r3, [r3, #0] + 8005910: b29b uxth r3, r3 + 8005912: f3c3 0309 ubfx r3, r3, #0, #10 + 8005916: b29a uxth r2, r3 + 8005918: 697b ldr r3, [r7, #20] + 800591a: 801a strh r2, [r3, #0] + 800591c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005920: 2b3e cmp r3, #62 @ 0x3e + 8005922: d921 bls.n 8005968 + 8005924: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005928: 095b lsrs r3, r3, #5 + 800592a: f8c7 30fc str.w r3, [r7, #252] @ 0xfc + 800592e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005932: f003 031f and.w r3, r3, #31 + 8005936: 2b00 cmp r3, #0 + 8005938: d104 bne.n 8005944 + 800593a: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 800593e: 3b01 subs r3, #1 + 8005940: f8c7 30fc str.w r3, [r7, #252] @ 0xfc + 8005944: 697b ldr r3, [r7, #20] + 8005946: 881b ldrh r3, [r3, #0] + 8005948: b29a uxth r2, r3 + 800594a: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 800594e: b29b uxth r3, r3 + 8005950: 029b lsls r3, r3, #10 + 8005952: b29b uxth r3, r3 + 8005954: 4313 orrs r3, r2 + 8005956: b29b uxth r3, r3 + 8005958: ea6f 4343 mvn.w r3, r3, lsl #17 + 800595c: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005960: b29a uxth r2, r3 + 8005962: 697b ldr r3, [r7, #20] + 8005964: 801a strh r2, [r3, #0] + 8005966: e056 b.n 8005a16 + 8005968: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800596c: 2b00 cmp r3, #0 + 800596e: d10a bne.n 8005986 + 8005970: 697b ldr r3, [r7, #20] + 8005972: 881b ldrh r3, [r3, #0] + 8005974: b29b uxth r3, r3 + 8005976: ea6f 4343 mvn.w r3, r3, lsl #17 + 800597a: ea6f 4353 mvn.w r3, r3, lsr #17 + 800597e: b29a uxth r2, r3 + 8005980: 697b ldr r3, [r7, #20] + 8005982: 801a strh r2, [r3, #0] + 8005984: e047 b.n 8005a16 + 8005986: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800598a: 085b lsrs r3, r3, #1 + 800598c: f8c7 30fc str.w r3, [r7, #252] @ 0xfc + 8005990: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005994: f003 0301 and.w r3, r3, #1 + 8005998: 2b00 cmp r3, #0 + 800599a: d004 beq.n 80059a6 + 800599c: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 80059a0: 3301 adds r3, #1 + 80059a2: f8c7 30fc str.w r3, [r7, #252] @ 0xfc + 80059a6: 697b ldr r3, [r7, #20] + 80059a8: 881b ldrh r3, [r3, #0] + 80059aa: b29a uxth r2, r3 + 80059ac: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 80059b0: b29b uxth r3, r3 + 80059b2: 029b lsls r3, r3, #10 + 80059b4: b29b uxth r3, r3 + 80059b6: 4313 orrs r3, r2 + 80059b8: b29a uxth r2, r3 + 80059ba: 697b ldr r3, [r7, #20] + 80059bc: 801a strh r2, [r3, #0] + 80059be: e02a b.n 8005a16 + 80059c0: f507 7384 add.w r3, r7, #264 @ 0x108 + 80059c4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80059c8: 681b ldr r3, [r3, #0] + 80059ca: 785b ldrb r3, [r3, #1] + 80059cc: 2b01 cmp r3, #1 + 80059ce: d122 bne.n 8005a16 + 80059d0: f507 7384 add.w r3, r7, #264 @ 0x108 + 80059d4: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80059d8: 681b ldr r3, [r3, #0] + 80059da: 623b str r3, [r7, #32] + 80059dc: f507 7384 add.w r3, r7, #264 @ 0x108 + 80059e0: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80059e4: 681b ldr r3, [r3, #0] + 80059e6: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80059ea: b29b uxth r3, r3 + 80059ec: 461a mov r2, r3 + 80059ee: 6a3b ldr r3, [r7, #32] + 80059f0: 4413 add r3, r2 + 80059f2: 623b str r3, [r7, #32] + 80059f4: f507 7384 add.w r3, r7, #264 @ 0x108 + 80059f8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80059fc: 681b ldr r3, [r3, #0] + 80059fe: 781b ldrb r3, [r3, #0] + 8005a00: 011a lsls r2, r3, #4 + 8005a02: 6a3b ldr r3, [r7, #32] + 8005a04: 4413 add r3, r2 + 8005a06: f203 4304 addw r3, r3, #1028 @ 0x404 + 8005a0a: 61fb str r3, [r7, #28] + 8005a0c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005a10: b29a uxth r2, r3 + 8005a12: 69fb ldr r3, [r7, #28] + 8005a14: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr0; + 8005a16: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005a1a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005a1e: 681b ldr r3, [r3, #0] + 8005a20: 891b ldrh r3, [r3, #8] + 8005a22: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 8005a26: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005a2a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005a2e: 681b ldr r3, [r3, #0] + 8005a30: 6959 ldr r1, [r3, #20] + 8005a32: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005a36: b29b uxth r3, r3 + 8005a38: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 + 8005a3c: f507 7084 add.w r0, r7, #264 @ 0x108 + 8005a40: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 8005a44: 6800 ldr r0, [r0, #0] + 8005a46: f001 fa48 bl 8006eda + 8005a4a: e3ee b.n 800622a + } + else + { + /* Set the Double buffer counter for pmabuffer0 */ + PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); + 8005a4c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005a50: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005a54: 681b ldr r3, [r3, #0] + 8005a56: 785b ldrb r3, [r3, #1] + 8005a58: 2b00 cmp r3, #0 + 8005a5a: d177 bne.n 8005b4c + 8005a5c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005a60: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005a64: 681b ldr r3, [r3, #0] + 8005a66: 64bb str r3, [r7, #72] @ 0x48 + 8005a68: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005a6c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005a70: 681b ldr r3, [r3, #0] + 8005a72: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8005a76: b29b uxth r3, r3 + 8005a78: 461a mov r2, r3 + 8005a7a: 6cbb ldr r3, [r7, #72] @ 0x48 + 8005a7c: 4413 add r3, r2 + 8005a7e: 64bb str r3, [r7, #72] @ 0x48 + 8005a80: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005a84: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005a88: 681b ldr r3, [r3, #0] + 8005a8a: 781b ldrb r3, [r3, #0] + 8005a8c: 011a lsls r2, r3, #4 + 8005a8e: 6cbb ldr r3, [r7, #72] @ 0x48 + 8005a90: 4413 add r3, r2 + 8005a92: f203 4304 addw r3, r3, #1028 @ 0x404 + 8005a96: 647b str r3, [r7, #68] @ 0x44 + 8005a98: 6c7b ldr r3, [r7, #68] @ 0x44 + 8005a9a: 881b ldrh r3, [r3, #0] + 8005a9c: b29b uxth r3, r3 + 8005a9e: f3c3 0309 ubfx r3, r3, #0, #10 + 8005aa2: b29a uxth r2, r3 + 8005aa4: 6c7b ldr r3, [r7, #68] @ 0x44 + 8005aa6: 801a strh r2, [r3, #0] + 8005aa8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005aac: 2b3e cmp r3, #62 @ 0x3e + 8005aae: d921 bls.n 8005af4 + 8005ab0: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005ab4: 095b lsrs r3, r3, #5 + 8005ab6: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 + 8005aba: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005abe: f003 031f and.w r3, r3, #31 + 8005ac2: 2b00 cmp r3, #0 + 8005ac4: d104 bne.n 8005ad0 + 8005ac6: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 + 8005aca: 3b01 subs r3, #1 + 8005acc: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 + 8005ad0: 6c7b ldr r3, [r7, #68] @ 0x44 + 8005ad2: 881b ldrh r3, [r3, #0] + 8005ad4: b29a uxth r2, r3 + 8005ad6: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 + 8005ada: b29b uxth r3, r3 + 8005adc: 029b lsls r3, r3, #10 + 8005ade: b29b uxth r3, r3 + 8005ae0: 4313 orrs r3, r2 + 8005ae2: b29b uxth r3, r3 + 8005ae4: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005ae8: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005aec: b29a uxth r2, r3 + 8005aee: 6c7b ldr r3, [r7, #68] @ 0x44 + 8005af0: 801a strh r2, [r3, #0] + 8005af2: e056 b.n 8005ba2 + 8005af4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005af8: 2b00 cmp r3, #0 + 8005afa: d10a bne.n 8005b12 + 8005afc: 6c7b ldr r3, [r7, #68] @ 0x44 + 8005afe: 881b ldrh r3, [r3, #0] + 8005b00: b29b uxth r3, r3 + 8005b02: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005b06: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005b0a: b29a uxth r2, r3 + 8005b0c: 6c7b ldr r3, [r7, #68] @ 0x44 + 8005b0e: 801a strh r2, [r3, #0] + 8005b10: e047 b.n 8005ba2 + 8005b12: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005b16: 085b lsrs r3, r3, #1 + 8005b18: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 + 8005b1c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005b20: f003 0301 and.w r3, r3, #1 + 8005b24: 2b00 cmp r3, #0 + 8005b26: d004 beq.n 8005b32 + 8005b28: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 + 8005b2c: 3301 adds r3, #1 + 8005b2e: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 + 8005b32: 6c7b ldr r3, [r7, #68] @ 0x44 + 8005b34: 881b ldrh r3, [r3, #0] + 8005b36: b29a uxth r2, r3 + 8005b38: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 + 8005b3c: b29b uxth r3, r3 + 8005b3e: 029b lsls r3, r3, #10 + 8005b40: b29b uxth r3, r3 + 8005b42: 4313 orrs r3, r2 + 8005b44: b29a uxth r2, r3 + 8005b46: 6c7b ldr r3, [r7, #68] @ 0x44 + 8005b48: 801a strh r2, [r3, #0] + 8005b4a: e02a b.n 8005ba2 + 8005b4c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005b50: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005b54: 681b ldr r3, [r3, #0] + 8005b56: 785b ldrb r3, [r3, #1] + 8005b58: 2b01 cmp r3, #1 + 8005b5a: d122 bne.n 8005ba2 + 8005b5c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005b60: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005b64: 681b ldr r3, [r3, #0] + 8005b66: 653b str r3, [r7, #80] @ 0x50 + 8005b68: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005b6c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005b70: 681b ldr r3, [r3, #0] + 8005b72: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8005b76: b29b uxth r3, r3 + 8005b78: 461a mov r2, r3 + 8005b7a: 6d3b ldr r3, [r7, #80] @ 0x50 + 8005b7c: 4413 add r3, r2 + 8005b7e: 653b str r3, [r7, #80] @ 0x50 + 8005b80: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005b84: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005b88: 681b ldr r3, [r3, #0] + 8005b8a: 781b ldrb r3, [r3, #0] + 8005b8c: 011a lsls r2, r3, #4 + 8005b8e: 6d3b ldr r3, [r7, #80] @ 0x50 + 8005b90: 4413 add r3, r2 + 8005b92: f203 4304 addw r3, r3, #1028 @ 0x404 + 8005b96: 64fb str r3, [r7, #76] @ 0x4c + 8005b98: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005b9c: b29a uxth r2, r3 + 8005b9e: 6cfb ldr r3, [r7, #76] @ 0x4c + 8005ba0: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr0; + 8005ba2: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005ba6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005baa: 681b ldr r3, [r3, #0] + 8005bac: 891b ldrh r3, [r3, #8] + 8005bae: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 8005bb2: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005bb6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005bba: 681b ldr r3, [r3, #0] + 8005bbc: 6959 ldr r1, [r3, #20] + 8005bbe: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005bc2: b29b uxth r3, r3 + 8005bc4: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 + 8005bc8: f507 7084 add.w r0, r7, #264 @ 0x108 + 8005bcc: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 8005bd0: 6800 ldr r0, [r0, #0] + 8005bd2: f001 f982 bl 8006eda + ep->xfer_buff += len; + 8005bd6: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005bda: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005bde: 681b ldr r3, [r3, #0] + 8005be0: 695a ldr r2, [r3, #20] + 8005be2: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005be6: 441a add r2, r3 + 8005be8: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005bec: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005bf0: 681b ldr r3, [r3, #0] + 8005bf2: 615a str r2, [r3, #20] + + if (ep->xfer_len_db > ep->maxpacket) + 8005bf4: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005bf8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005bfc: 681b ldr r3, [r3, #0] + 8005bfe: 6a1a ldr r2, [r3, #32] + 8005c00: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005c04: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005c08: 681b ldr r3, [r3, #0] + 8005c0a: 691b ldr r3, [r3, #16] + 8005c0c: 429a cmp r2, r3 + 8005c0e: d90f bls.n 8005c30 + { + ep->xfer_len_db -= len; + 8005c10: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005c14: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005c18: 681b ldr r3, [r3, #0] + 8005c1a: 6a1a ldr r2, [r3, #32] + 8005c1c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005c20: 1ad2 subs r2, r2, r3 + 8005c22: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005c26: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005c2a: 681b ldr r3, [r3, #0] + 8005c2c: 621a str r2, [r3, #32] + 8005c2e: e00e b.n 8005c4e + } + else + { + len = ep->xfer_len_db; + 8005c30: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005c34: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005c38: 681b ldr r3, [r3, #0] + 8005c3a: 6a1b ldr r3, [r3, #32] + 8005c3c: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + ep->xfer_len_db = 0U; + 8005c40: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005c44: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005c48: 681b ldr r3, [r3, #0] + 8005c4a: 2200 movs r2, #0 + 8005c4c: 621a str r2, [r3, #32] + } + + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); + 8005c4e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005c52: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005c56: 681b ldr r3, [r3, #0] + 8005c58: 643b str r3, [r7, #64] @ 0x40 + 8005c5a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005c5e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005c62: 681b ldr r3, [r3, #0] + 8005c64: 785b ldrb r3, [r3, #1] + 8005c66: 2b00 cmp r3, #0 + 8005c68: d177 bne.n 8005d5a + 8005c6a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005c6e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005c72: 681b ldr r3, [r3, #0] + 8005c74: 63bb str r3, [r7, #56] @ 0x38 + 8005c76: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005c7a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005c7e: 681b ldr r3, [r3, #0] + 8005c80: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8005c84: b29b uxth r3, r3 + 8005c86: 461a mov r2, r3 + 8005c88: 6bbb ldr r3, [r7, #56] @ 0x38 + 8005c8a: 4413 add r3, r2 + 8005c8c: 63bb str r3, [r7, #56] @ 0x38 + 8005c8e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005c92: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005c96: 681b ldr r3, [r3, #0] + 8005c98: 781b ldrb r3, [r3, #0] + 8005c9a: 011a lsls r2, r3, #4 + 8005c9c: 6bbb ldr r3, [r7, #56] @ 0x38 + 8005c9e: 4413 add r3, r2 + 8005ca0: f203 430c addw r3, r3, #1036 @ 0x40c + 8005ca4: 637b str r3, [r7, #52] @ 0x34 + 8005ca6: 6b7b ldr r3, [r7, #52] @ 0x34 + 8005ca8: 881b ldrh r3, [r3, #0] + 8005caa: b29b uxth r3, r3 + 8005cac: f3c3 0309 ubfx r3, r3, #0, #10 + 8005cb0: b29a uxth r2, r3 + 8005cb2: 6b7b ldr r3, [r7, #52] @ 0x34 + 8005cb4: 801a strh r2, [r3, #0] + 8005cb6: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005cba: 2b3e cmp r3, #62 @ 0x3e + 8005cbc: d921 bls.n 8005d02 + 8005cbe: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005cc2: 095b lsrs r3, r3, #5 + 8005cc4: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 + 8005cc8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005ccc: f003 031f and.w r3, r3, #31 + 8005cd0: 2b00 cmp r3, #0 + 8005cd2: d104 bne.n 8005cde + 8005cd4: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005cd8: 3b01 subs r3, #1 + 8005cda: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 + 8005cde: 6b7b ldr r3, [r7, #52] @ 0x34 + 8005ce0: 881b ldrh r3, [r3, #0] + 8005ce2: b29a uxth r2, r3 + 8005ce4: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005ce8: b29b uxth r3, r3 + 8005cea: 029b lsls r3, r3, #10 + 8005cec: b29b uxth r3, r3 + 8005cee: 4313 orrs r3, r2 + 8005cf0: b29b uxth r3, r3 + 8005cf2: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005cf6: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005cfa: b29a uxth r2, r3 + 8005cfc: 6b7b ldr r3, [r7, #52] @ 0x34 + 8005cfe: 801a strh r2, [r3, #0] + 8005d00: e050 b.n 8005da4 + 8005d02: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005d06: 2b00 cmp r3, #0 + 8005d08: d10a bne.n 8005d20 + 8005d0a: 6b7b ldr r3, [r7, #52] @ 0x34 + 8005d0c: 881b ldrh r3, [r3, #0] + 8005d0e: b29b uxth r3, r3 + 8005d10: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005d14: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005d18: b29a uxth r2, r3 + 8005d1a: 6b7b ldr r3, [r7, #52] @ 0x34 + 8005d1c: 801a strh r2, [r3, #0] + 8005d1e: e041 b.n 8005da4 + 8005d20: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005d24: 085b lsrs r3, r3, #1 + 8005d26: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 + 8005d2a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005d2e: f003 0301 and.w r3, r3, #1 + 8005d32: 2b00 cmp r3, #0 + 8005d34: d004 beq.n 8005d40 + 8005d36: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005d3a: 3301 adds r3, #1 + 8005d3c: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 + 8005d40: 6b7b ldr r3, [r7, #52] @ 0x34 + 8005d42: 881b ldrh r3, [r3, #0] + 8005d44: b29a uxth r2, r3 + 8005d46: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 8005d4a: b29b uxth r3, r3 + 8005d4c: 029b lsls r3, r3, #10 + 8005d4e: b29b uxth r3, r3 + 8005d50: 4313 orrs r3, r2 + 8005d52: b29a uxth r2, r3 + 8005d54: 6b7b ldr r3, [r7, #52] @ 0x34 + 8005d56: 801a strh r2, [r3, #0] + 8005d58: e024 b.n 8005da4 + 8005d5a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005d5e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005d62: 681b ldr r3, [r3, #0] + 8005d64: 785b ldrb r3, [r3, #1] + 8005d66: 2b01 cmp r3, #1 + 8005d68: d11c bne.n 8005da4 + 8005d6a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005d6e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005d72: 681b ldr r3, [r3, #0] + 8005d74: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8005d78: b29b uxth r3, r3 + 8005d7a: 461a mov r2, r3 + 8005d7c: 6c3b ldr r3, [r7, #64] @ 0x40 + 8005d7e: 4413 add r3, r2 + 8005d80: 643b str r3, [r7, #64] @ 0x40 + 8005d82: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005d86: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005d8a: 681b ldr r3, [r3, #0] + 8005d8c: 781b ldrb r3, [r3, #0] + 8005d8e: 011a lsls r2, r3, #4 + 8005d90: 6c3b ldr r3, [r7, #64] @ 0x40 + 8005d92: 4413 add r3, r2 + 8005d94: f203 430c addw r3, r3, #1036 @ 0x40c + 8005d98: 63fb str r3, [r7, #60] @ 0x3c + 8005d9a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005d9e: b29a uxth r2, r3 + 8005da0: 6bfb ldr r3, [r7, #60] @ 0x3c + 8005da2: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr1; + 8005da4: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005da8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005dac: 681b ldr r3, [r3, #0] + 8005dae: 895b ldrh r3, [r3, #10] + 8005db0: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 8005db4: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005db8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005dbc: 681b ldr r3, [r3, #0] + 8005dbe: 6959 ldr r1, [r3, #20] + 8005dc0: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005dc4: b29b uxth r3, r3 + 8005dc6: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 + 8005dca: f507 7084 add.w r0, r7, #264 @ 0x108 + 8005dce: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 8005dd2: 6800 ldr r0, [r0, #0] + 8005dd4: f001 f881 bl 8006eda + 8005dd8: e227 b.n 800622a + } + } + /* auto Switch to single buffer mode when transfer xfer_len_db; + 8005dda: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005dde: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005de2: 681b ldr r3, [r3, #0] + 8005de4: 6a1b ldr r3, [r3, #32] + 8005de6: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + + /* disable double buffer mode for Bulk endpoint */ + PCD_CLEAR_BULK_EP_DBUF(USBx, ep->num); + 8005dea: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005dee: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005df2: 681a ldr r2, [r3, #0] + 8005df4: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005df8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005dfc: 681b ldr r3, [r3, #0] + 8005dfe: 781b ldrb r3, [r3, #0] + 8005e00: 009b lsls r3, r3, #2 + 8005e02: 4413 add r3, r2 + 8005e04: 881b ldrh r3, [r3, #0] + 8005e06: b29b uxth r3, r3 + 8005e08: f423 43e2 bic.w r3, r3, #28928 @ 0x7100 + 8005e0c: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8005e10: f8a7 3062 strh.w r3, [r7, #98] @ 0x62 + 8005e14: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005e18: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005e1c: 681a ldr r2, [r3, #0] + 8005e1e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005e22: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005e26: 681b ldr r3, [r3, #0] + 8005e28: 781b ldrb r3, [r3, #0] + 8005e2a: 009b lsls r3, r3, #2 + 8005e2c: 441a add r2, r3 + 8005e2e: f8b7 3062 ldrh.w r3, [r7, #98] @ 0x62 + 8005e32: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8005e36: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8005e3a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8005e3e: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8005e42: b29b uxth r3, r3 + 8005e44: 8013 strh r3, [r2, #0] + + /* Set Tx count with nbre of byte to be transmitted */ + PCD_SET_EP_TX_CNT(USBx, ep->num, len); + 8005e46: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005e4a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005e4e: 681b ldr r3, [r3, #0] + 8005e50: 65fb str r3, [r7, #92] @ 0x5c + 8005e52: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005e56: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005e5a: 681b ldr r3, [r3, #0] + 8005e5c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8005e60: b29b uxth r3, r3 + 8005e62: 461a mov r2, r3 + 8005e64: 6dfb ldr r3, [r7, #92] @ 0x5c + 8005e66: 4413 add r3, r2 + 8005e68: 65fb str r3, [r7, #92] @ 0x5c + 8005e6a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005e6e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005e72: 681b ldr r3, [r3, #0] + 8005e74: 781b ldrb r3, [r3, #0] + 8005e76: 011a lsls r2, r3, #4 + 8005e78: 6dfb ldr r3, [r7, #92] @ 0x5c + 8005e7a: 4413 add r3, r2 + 8005e7c: f203 4304 addw r3, r3, #1028 @ 0x404 + 8005e80: 65bb str r3, [r7, #88] @ 0x58 + 8005e82: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005e86: b29a uxth r2, r3 + 8005e88: 6dbb ldr r3, [r7, #88] @ 0x58 + 8005e8a: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr0; + 8005e8c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005e90: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005e94: 681b ldr r3, [r3, #0] + 8005e96: 891b ldrh r3, [r3, #8] + 8005e98: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 8005e9c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005ea0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005ea4: 681b ldr r3, [r3, #0] + 8005ea6: 6959 ldr r1, [r3, #20] + 8005ea8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005eac: b29b uxth r3, r3 + 8005eae: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 + 8005eb2: f507 7084 add.w r0, r7, #264 @ 0x108 + 8005eb6: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 8005eba: 6800 ldr r0, [r0, #0] + 8005ebc: f001 f80d bl 8006eda + 8005ec0: e1b3 b.n 800622a + } + } + else /* manage isochronous double buffer IN mode */ + { + /* each Time to write in PMA xfer_len_db will */ + ep->xfer_len_db -= len; + 8005ec2: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005ec6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005eca: 681b ldr r3, [r3, #0] + 8005ecc: 6a1a ldr r2, [r3, #32] + 8005ece: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005ed2: 1ad2 subs r2, r2, r3 + 8005ed4: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005ed8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005edc: 681b ldr r3, [r3, #0] + 8005ede: 621a str r2, [r3, #32] + + /* Fill the data buffer */ + if ((PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_DTOG_TX) != 0U) + 8005ee0: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005ee4: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005ee8: 681a ldr r2, [r3, #0] + 8005eea: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005eee: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005ef2: 681b ldr r3, [r3, #0] + 8005ef4: 781b ldrb r3, [r3, #0] + 8005ef6: 009b lsls r3, r3, #2 + 8005ef8: 4413 add r3, r2 + 8005efa: 881b ldrh r3, [r3, #0] + 8005efc: b29b uxth r3, r3 + 8005efe: f003 0340 and.w r3, r3, #64 @ 0x40 + 8005f02: 2b00 cmp r3, #0 + 8005f04: f000 80c6 beq.w 8006094 + { + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); + 8005f08: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005f0c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005f10: 681b ldr r3, [r3, #0] + 8005f12: 673b str r3, [r7, #112] @ 0x70 + 8005f14: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005f18: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005f1c: 681b ldr r3, [r3, #0] + 8005f1e: 785b ldrb r3, [r3, #1] + 8005f20: 2b00 cmp r3, #0 + 8005f22: d177 bne.n 8006014 + 8005f24: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005f28: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005f2c: 681b ldr r3, [r3, #0] + 8005f2e: 66bb str r3, [r7, #104] @ 0x68 + 8005f30: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005f34: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005f38: 681b ldr r3, [r3, #0] + 8005f3a: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8005f3e: b29b uxth r3, r3 + 8005f40: 461a mov r2, r3 + 8005f42: 6ebb ldr r3, [r7, #104] @ 0x68 + 8005f44: 4413 add r3, r2 + 8005f46: 66bb str r3, [r7, #104] @ 0x68 + 8005f48: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005f4c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005f50: 681b ldr r3, [r3, #0] + 8005f52: 781b ldrb r3, [r3, #0] + 8005f54: 011a lsls r2, r3, #4 + 8005f56: 6ebb ldr r3, [r7, #104] @ 0x68 + 8005f58: 4413 add r3, r2 + 8005f5a: f203 430c addw r3, r3, #1036 @ 0x40c + 8005f5e: 667b str r3, [r7, #100] @ 0x64 + 8005f60: 6e7b ldr r3, [r7, #100] @ 0x64 + 8005f62: 881b ldrh r3, [r3, #0] + 8005f64: b29b uxth r3, r3 + 8005f66: f3c3 0309 ubfx r3, r3, #0, #10 + 8005f6a: b29a uxth r2, r3 + 8005f6c: 6e7b ldr r3, [r7, #100] @ 0x64 + 8005f6e: 801a strh r2, [r3, #0] + 8005f70: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005f74: 2b3e cmp r3, #62 @ 0x3e + 8005f76: d921 bls.n 8005fbc + 8005f78: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005f7c: 095b lsrs r3, r3, #5 + 8005f7e: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 + 8005f82: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005f86: f003 031f and.w r3, r3, #31 + 8005f8a: 2b00 cmp r3, #0 + 8005f8c: d104 bne.n 8005f98 + 8005f8e: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 + 8005f92: 3b01 subs r3, #1 + 8005f94: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 + 8005f98: 6e7b ldr r3, [r7, #100] @ 0x64 + 8005f9a: 881b ldrh r3, [r3, #0] + 8005f9c: b29a uxth r2, r3 + 8005f9e: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 + 8005fa2: b29b uxth r3, r3 + 8005fa4: 029b lsls r3, r3, #10 + 8005fa6: b29b uxth r3, r3 + 8005fa8: 4313 orrs r3, r2 + 8005faa: b29b uxth r3, r3 + 8005fac: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005fb0: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005fb4: b29a uxth r2, r3 + 8005fb6: 6e7b ldr r3, [r7, #100] @ 0x64 + 8005fb8: 801a strh r2, [r3, #0] + 8005fba: e050 b.n 800605e + 8005fbc: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005fc0: 2b00 cmp r3, #0 + 8005fc2: d10a bne.n 8005fda + 8005fc4: 6e7b ldr r3, [r7, #100] @ 0x64 + 8005fc6: 881b ldrh r3, [r3, #0] + 8005fc8: b29b uxth r3, r3 + 8005fca: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005fce: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005fd2: b29a uxth r2, r3 + 8005fd4: 6e7b ldr r3, [r7, #100] @ 0x64 + 8005fd6: 801a strh r2, [r3, #0] + 8005fd8: e041 b.n 800605e + 8005fda: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005fde: 085b lsrs r3, r3, #1 + 8005fe0: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 + 8005fe4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005fe8: f003 0301 and.w r3, r3, #1 + 8005fec: 2b00 cmp r3, #0 + 8005fee: d004 beq.n 8005ffa + 8005ff0: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 + 8005ff4: 3301 adds r3, #1 + 8005ff6: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 + 8005ffa: 6e7b ldr r3, [r7, #100] @ 0x64 + 8005ffc: 881b ldrh r3, [r3, #0] + 8005ffe: b29a uxth r2, r3 + 8006000: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 + 8006004: b29b uxth r3, r3 + 8006006: 029b lsls r3, r3, #10 + 8006008: b29b uxth r3, r3 + 800600a: 4313 orrs r3, r2 + 800600c: b29a uxth r2, r3 + 800600e: 6e7b ldr r3, [r7, #100] @ 0x64 + 8006010: 801a strh r2, [r3, #0] + 8006012: e024 b.n 800605e + 8006014: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006018: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800601c: 681b ldr r3, [r3, #0] + 800601e: 785b ldrb r3, [r3, #1] + 8006020: 2b01 cmp r3, #1 + 8006022: d11c bne.n 800605e + 8006024: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006028: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 800602c: 681b ldr r3, [r3, #0] + 800602e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8006032: b29b uxth r3, r3 + 8006034: 461a mov r2, r3 + 8006036: 6f3b ldr r3, [r7, #112] @ 0x70 + 8006038: 4413 add r3, r2 + 800603a: 673b str r3, [r7, #112] @ 0x70 + 800603c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006040: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006044: 681b ldr r3, [r3, #0] + 8006046: 781b ldrb r3, [r3, #0] + 8006048: 011a lsls r2, r3, #4 + 800604a: 6f3b ldr r3, [r7, #112] @ 0x70 + 800604c: 4413 add r3, r2 + 800604e: f203 430c addw r3, r3, #1036 @ 0x40c + 8006052: 66fb str r3, [r7, #108] @ 0x6c + 8006054: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006058: b29a uxth r2, r3 + 800605a: 6efb ldr r3, [r7, #108] @ 0x6c + 800605c: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr1; + 800605e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006062: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006066: 681b ldr r3, [r3, #0] + 8006068: 895b ldrh r3, [r3, #10] + 800606a: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 800606e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006072: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006076: 681b ldr r3, [r3, #0] + 8006078: 6959 ldr r1, [r3, #20] + 800607a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800607e: b29b uxth r3, r3 + 8006080: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 + 8006084: f507 7084 add.w r0, r7, #264 @ 0x108 + 8006088: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 800608c: 6800 ldr r0, [r0, #0] + 800608e: f000 ff24 bl 8006eda + 8006092: e0ca b.n 800622a + } + else + { + /* Set the Double buffer counter for pmabuffer0 */ + PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); + 8006094: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006098: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800609c: 681b ldr r3, [r3, #0] + 800609e: 785b ldrb r3, [r3, #1] + 80060a0: 2b00 cmp r3, #0 + 80060a2: d177 bne.n 8006194 + 80060a4: f507 7384 add.w r3, r7, #264 @ 0x108 + 80060a8: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80060ac: 681b ldr r3, [r3, #0] + 80060ae: 67fb str r3, [r7, #124] @ 0x7c + 80060b0: f507 7384 add.w r3, r7, #264 @ 0x108 + 80060b4: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80060b8: 681b ldr r3, [r3, #0] + 80060ba: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80060be: b29b uxth r3, r3 + 80060c0: 461a mov r2, r3 + 80060c2: 6ffb ldr r3, [r7, #124] @ 0x7c + 80060c4: 4413 add r3, r2 + 80060c6: 67fb str r3, [r7, #124] @ 0x7c + 80060c8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80060cc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80060d0: 681b ldr r3, [r3, #0] + 80060d2: 781b ldrb r3, [r3, #0] + 80060d4: 011a lsls r2, r3, #4 + 80060d6: 6ffb ldr r3, [r7, #124] @ 0x7c + 80060d8: 4413 add r3, r2 + 80060da: f203 4304 addw r3, r3, #1028 @ 0x404 + 80060de: 67bb str r3, [r7, #120] @ 0x78 + 80060e0: 6fbb ldr r3, [r7, #120] @ 0x78 + 80060e2: 881b ldrh r3, [r3, #0] + 80060e4: b29b uxth r3, r3 + 80060e6: f3c3 0309 ubfx r3, r3, #0, #10 + 80060ea: b29a uxth r2, r3 + 80060ec: 6fbb ldr r3, [r7, #120] @ 0x78 + 80060ee: 801a strh r2, [r3, #0] + 80060f0: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80060f4: 2b3e cmp r3, #62 @ 0x3e + 80060f6: d921 bls.n 800613c + 80060f8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80060fc: 095b lsrs r3, r3, #5 + 80060fe: f8c7 30ec str.w r3, [r7, #236] @ 0xec + 8006102: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006106: f003 031f and.w r3, r3, #31 + 800610a: 2b00 cmp r3, #0 + 800610c: d104 bne.n 8006118 + 800610e: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec + 8006112: 3b01 subs r3, #1 + 8006114: f8c7 30ec str.w r3, [r7, #236] @ 0xec + 8006118: 6fbb ldr r3, [r7, #120] @ 0x78 + 800611a: 881b ldrh r3, [r3, #0] + 800611c: b29a uxth r2, r3 + 800611e: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec + 8006122: b29b uxth r3, r3 + 8006124: 029b lsls r3, r3, #10 + 8006126: b29b uxth r3, r3 + 8006128: 4313 orrs r3, r2 + 800612a: b29b uxth r3, r3 + 800612c: ea6f 4343 mvn.w r3, r3, lsl #17 + 8006130: ea6f 4353 mvn.w r3, r3, lsr #17 + 8006134: b29a uxth r2, r3 + 8006136: 6fbb ldr r3, [r7, #120] @ 0x78 + 8006138: 801a strh r2, [r3, #0] + 800613a: e05c b.n 80061f6 + 800613c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006140: 2b00 cmp r3, #0 + 8006142: d10a bne.n 800615a + 8006144: 6fbb ldr r3, [r7, #120] @ 0x78 + 8006146: 881b ldrh r3, [r3, #0] + 8006148: b29b uxth r3, r3 + 800614a: ea6f 4343 mvn.w r3, r3, lsl #17 + 800614e: ea6f 4353 mvn.w r3, r3, lsr #17 + 8006152: b29a uxth r2, r3 + 8006154: 6fbb ldr r3, [r7, #120] @ 0x78 + 8006156: 801a strh r2, [r3, #0] + 8006158: e04d b.n 80061f6 + 800615a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800615e: 085b lsrs r3, r3, #1 + 8006160: f8c7 30ec str.w r3, [r7, #236] @ 0xec + 8006164: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006168: f003 0301 and.w r3, r3, #1 + 800616c: 2b00 cmp r3, #0 + 800616e: d004 beq.n 800617a + 8006170: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec + 8006174: 3301 adds r3, #1 + 8006176: f8c7 30ec str.w r3, [r7, #236] @ 0xec + 800617a: 6fbb ldr r3, [r7, #120] @ 0x78 + 800617c: 881b ldrh r3, [r3, #0] + 800617e: b29a uxth r2, r3 + 8006180: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec + 8006184: b29b uxth r3, r3 + 8006186: 029b lsls r3, r3, #10 + 8006188: b29b uxth r3, r3 + 800618a: 4313 orrs r3, r2 + 800618c: b29a uxth r2, r3 + 800618e: 6fbb ldr r3, [r7, #120] @ 0x78 + 8006190: 801a strh r2, [r3, #0] + 8006192: e030 b.n 80061f6 + 8006194: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006198: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800619c: 681b ldr r3, [r3, #0] + 800619e: 785b ldrb r3, [r3, #1] + 80061a0: 2b01 cmp r3, #1 + 80061a2: d128 bne.n 80061f6 + 80061a4: f507 7384 add.w r3, r7, #264 @ 0x108 + 80061a8: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80061ac: 681b ldr r3, [r3, #0] + 80061ae: f8c7 3084 str.w r3, [r7, #132] @ 0x84 + 80061b2: f507 7384 add.w r3, r7, #264 @ 0x108 + 80061b6: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80061ba: 681b ldr r3, [r3, #0] + 80061bc: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80061c0: b29b uxth r3, r3 + 80061c2: 461a mov r2, r3 + 80061c4: f8d7 3084 ldr.w r3, [r7, #132] @ 0x84 + 80061c8: 4413 add r3, r2 + 80061ca: f8c7 3084 str.w r3, [r7, #132] @ 0x84 + 80061ce: f507 7384 add.w r3, r7, #264 @ 0x108 + 80061d2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80061d6: 681b ldr r3, [r3, #0] + 80061d8: 781b ldrb r3, [r3, #0] + 80061da: 011a lsls r2, r3, #4 + 80061dc: f8d7 3084 ldr.w r3, [r7, #132] @ 0x84 + 80061e0: 4413 add r3, r2 + 80061e2: f203 4304 addw r3, r3, #1028 @ 0x404 + 80061e6: f8c7 3080 str.w r3, [r7, #128] @ 0x80 + 80061ea: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80061ee: b29a uxth r2, r3 + 80061f0: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 + 80061f4: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr0; + 80061f6: f507 7384 add.w r3, r7, #264 @ 0x108 + 80061fa: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80061fe: 681b ldr r3, [r3, #0] + 8006200: 891b ldrh r3, [r3, #8] + 8006202: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 8006206: f507 7384 add.w r3, r7, #264 @ 0x108 + 800620a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800620e: 681b ldr r3, [r3, #0] + 8006210: 6959 ldr r1, [r3, #20] + 8006212: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006216: b29b uxth r3, r3 + 8006218: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 + 800621c: f507 7084 add.w r0, r7, #264 @ 0x108 + 8006220: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 8006224: 6800 ldr r0, [r0, #0] + 8006226: f000 fe58 bl 8006eda + } + } + } +#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ + + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_VALID); + 800622a: f507 7384 add.w r3, r7, #264 @ 0x108 + 800622e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006232: 681a ldr r2, [r3, #0] + 8006234: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006238: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800623c: 681b ldr r3, [r3, #0] + 800623e: 781b ldrb r3, [r3, #0] + 8006240: 009b lsls r3, r3, #2 + 8006242: 4413 add r3, r2 + 8006244: 881b ldrh r3, [r3, #0] + 8006246: b29b uxth r3, r3 + 8006248: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800624c: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8006250: 817b strh r3, [r7, #10] + 8006252: 897b ldrh r3, [r7, #10] + 8006254: f083 0310 eor.w r3, r3, #16 + 8006258: 817b strh r3, [r7, #10] + 800625a: 897b ldrh r3, [r7, #10] + 800625c: f083 0320 eor.w r3, r3, #32 + 8006260: 817b strh r3, [r7, #10] + 8006262: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006266: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 800626a: 681a ldr r2, [r3, #0] + 800626c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006270: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006274: 681b ldr r3, [r3, #0] + 8006276: 781b ldrb r3, [r3, #0] + 8006278: 009b lsls r3, r3, #2 + 800627a: 441a add r2, r3 + 800627c: 897b ldrh r3, [r7, #10] + 800627e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8006282: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8006286: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800628a: f043 0380 orr.w r3, r3, #128 @ 0x80 + 800628e: b29b uxth r3, r3 + 8006290: 8013 strh r3, [r2, #0] + 8006292: f000 bcde b.w 8006c52 + } + else /* OUT endpoint */ + { + if (ep->doublebuffer == 0U) + 8006296: f507 7384 add.w r3, r7, #264 @ 0x108 + 800629a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800629e: 681b ldr r3, [r3, #0] + 80062a0: 7b1b ldrb r3, [r3, #12] + 80062a2: 2b00 cmp r3, #0 + 80062a4: f040 80bb bne.w 800641e + { + /* Multi packet transfer */ + if (ep->xfer_len > ep->maxpacket) + 80062a8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80062ac: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80062b0: 681b ldr r3, [r3, #0] + 80062b2: 699a ldr r2, [r3, #24] + 80062b4: f507 7384 add.w r3, r7, #264 @ 0x108 + 80062b8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80062bc: 681b ldr r3, [r3, #0] + 80062be: 691b ldr r3, [r3, #16] + 80062c0: 429a cmp r2, r3 + 80062c2: d917 bls.n 80062f4 + { + len = ep->maxpacket; + 80062c4: f507 7384 add.w r3, r7, #264 @ 0x108 + 80062c8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80062cc: 681b ldr r3, [r3, #0] + 80062ce: 691b ldr r3, [r3, #16] + 80062d0: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + ep->xfer_len -= len; + 80062d4: f507 7384 add.w r3, r7, #264 @ 0x108 + 80062d8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80062dc: 681b ldr r3, [r3, #0] + 80062de: 699a ldr r2, [r3, #24] + 80062e0: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80062e4: 1ad2 subs r2, r2, r3 + 80062e6: f507 7384 add.w r3, r7, #264 @ 0x108 + 80062ea: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80062ee: 681b ldr r3, [r3, #0] + 80062f0: 619a str r2, [r3, #24] + 80062f2: e00e b.n 8006312 + } + else + { + len = ep->xfer_len; + 80062f4: f507 7384 add.w r3, r7, #264 @ 0x108 + 80062f8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80062fc: 681b ldr r3, [r3, #0] + 80062fe: 699b ldr r3, [r3, #24] + 8006300: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + ep->xfer_len = 0U; + 8006304: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006308: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800630c: 681b ldr r3, [r3, #0] + 800630e: 2200 movs r2, #0 + 8006310: 619a str r2, [r3, #24] + } + /* configure and validate Rx endpoint */ + PCD_SET_EP_RX_CNT(USBx, ep->num, len); + 8006312: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006316: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 800631a: 681b ldr r3, [r3, #0] + 800631c: f8c7 3090 str.w r3, [r7, #144] @ 0x90 + 8006320: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006324: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006328: 681b ldr r3, [r3, #0] + 800632a: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800632e: b29b uxth r3, r3 + 8006330: 461a mov r2, r3 + 8006332: f8d7 3090 ldr.w r3, [r7, #144] @ 0x90 + 8006336: 4413 add r3, r2 + 8006338: f8c7 3090 str.w r3, [r7, #144] @ 0x90 + 800633c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006340: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006344: 681b ldr r3, [r3, #0] + 8006346: 781b ldrb r3, [r3, #0] + 8006348: 011a lsls r2, r3, #4 + 800634a: f8d7 3090 ldr.w r3, [r7, #144] @ 0x90 + 800634e: 4413 add r3, r2 + 8006350: f203 430c addw r3, r3, #1036 @ 0x40c + 8006354: f8c7 308c str.w r3, [r7, #140] @ 0x8c + 8006358: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 800635c: 881b ldrh r3, [r3, #0] + 800635e: b29b uxth r3, r3 + 8006360: f3c3 0309 ubfx r3, r3, #0, #10 + 8006364: b29a uxth r2, r3 + 8006366: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 800636a: 801a strh r2, [r3, #0] + 800636c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006370: 2b3e cmp r3, #62 @ 0x3e + 8006372: d924 bls.n 80063be + 8006374: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006378: 095b lsrs r3, r3, #5 + 800637a: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 + 800637e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006382: f003 031f and.w r3, r3, #31 + 8006386: 2b00 cmp r3, #0 + 8006388: d104 bne.n 8006394 + 800638a: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 + 800638e: 3b01 subs r3, #1 + 8006390: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 + 8006394: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8006398: 881b ldrh r3, [r3, #0] + 800639a: b29a uxth r2, r3 + 800639c: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 + 80063a0: b29b uxth r3, r3 + 80063a2: 029b lsls r3, r3, #10 + 80063a4: b29b uxth r3, r3 + 80063a6: 4313 orrs r3, r2 + 80063a8: b29b uxth r3, r3 + 80063aa: ea6f 4343 mvn.w r3, r3, lsl #17 + 80063ae: ea6f 4353 mvn.w r3, r3, lsr #17 + 80063b2: b29a uxth r2, r3 + 80063b4: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 80063b8: 801a strh r2, [r3, #0] + 80063ba: f000 bc10 b.w 8006bde + 80063be: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80063c2: 2b00 cmp r3, #0 + 80063c4: d10c bne.n 80063e0 + 80063c6: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 80063ca: 881b ldrh r3, [r3, #0] + 80063cc: b29b uxth r3, r3 + 80063ce: ea6f 4343 mvn.w r3, r3, lsl #17 + 80063d2: ea6f 4353 mvn.w r3, r3, lsr #17 + 80063d6: b29a uxth r2, r3 + 80063d8: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 80063dc: 801a strh r2, [r3, #0] + 80063de: e3fe b.n 8006bde + 80063e0: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80063e4: 085b lsrs r3, r3, #1 + 80063e6: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 + 80063ea: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80063ee: f003 0301 and.w r3, r3, #1 + 80063f2: 2b00 cmp r3, #0 + 80063f4: d004 beq.n 8006400 + 80063f6: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 + 80063fa: 3301 adds r3, #1 + 80063fc: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 + 8006400: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8006404: 881b ldrh r3, [r3, #0] + 8006406: b29a uxth r2, r3 + 8006408: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 + 800640c: b29b uxth r3, r3 + 800640e: 029b lsls r3, r3, #10 + 8006410: b29b uxth r3, r3 + 8006412: 4313 orrs r3, r2 + 8006414: b29a uxth r2, r3 + 8006416: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 800641a: 801a strh r2, [r3, #0] + 800641c: e3df b.n 8006bde +#if (USE_USB_DOUBLE_BUFFER == 1U) + else + { + /* First Transfer Coming From HAL_PCD_EP_Receive & From ISR */ + /* Set the Double buffer counter */ + if (ep->type == EP_TYPE_BULK) + 800641e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006422: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006426: 681b ldr r3, [r3, #0] + 8006428: 78db ldrb r3, [r3, #3] + 800642a: 2b02 cmp r3, #2 + 800642c: f040 8218 bne.w 8006860 + { + PCD_SET_EP_DBUF_CNT(USBx, ep->num, ep->is_in, ep->maxpacket); + 8006430: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006434: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006438: 681b ldr r3, [r3, #0] + 800643a: 785b ldrb r3, [r3, #1] + 800643c: 2b00 cmp r3, #0 + 800643e: f040 809d bne.w 800657c + 8006442: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006446: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 800644a: 681b ldr r3, [r3, #0] + 800644c: f8c7 30ac str.w r3, [r7, #172] @ 0xac + 8006450: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006454: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006458: 681b ldr r3, [r3, #0] + 800645a: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800645e: b29b uxth r3, r3 + 8006460: 461a mov r2, r3 + 8006462: f8d7 30ac ldr.w r3, [r7, #172] @ 0xac + 8006466: 4413 add r3, r2 + 8006468: f8c7 30ac str.w r3, [r7, #172] @ 0xac + 800646c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006470: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006474: 681b ldr r3, [r3, #0] + 8006476: 781b ldrb r3, [r3, #0] + 8006478: 011a lsls r2, r3, #4 + 800647a: f8d7 30ac ldr.w r3, [r7, #172] @ 0xac + 800647e: 4413 add r3, r2 + 8006480: f203 4304 addw r3, r3, #1028 @ 0x404 + 8006484: f8c7 30a8 str.w r3, [r7, #168] @ 0xa8 + 8006488: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 800648c: 881b ldrh r3, [r3, #0] + 800648e: b29b uxth r3, r3 + 8006490: f3c3 0309 ubfx r3, r3, #0, #10 + 8006494: b29a uxth r2, r3 + 8006496: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 800649a: 801a strh r2, [r3, #0] + 800649c: f507 7384 add.w r3, r7, #264 @ 0x108 + 80064a0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80064a4: 681b ldr r3, [r3, #0] + 80064a6: 691b ldr r3, [r3, #16] + 80064a8: 2b3e cmp r3, #62 @ 0x3e + 80064aa: d92b bls.n 8006504 + 80064ac: f507 7384 add.w r3, r7, #264 @ 0x108 + 80064b0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80064b4: 681b ldr r3, [r3, #0] + 80064b6: 691b ldr r3, [r3, #16] + 80064b8: 095b lsrs r3, r3, #5 + 80064ba: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 + 80064be: f507 7384 add.w r3, r7, #264 @ 0x108 + 80064c2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80064c6: 681b ldr r3, [r3, #0] + 80064c8: 691b ldr r3, [r3, #16] + 80064ca: f003 031f and.w r3, r3, #31 + 80064ce: 2b00 cmp r3, #0 + 80064d0: d104 bne.n 80064dc + 80064d2: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 80064d6: 3b01 subs r3, #1 + 80064d8: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 + 80064dc: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 80064e0: 881b ldrh r3, [r3, #0] + 80064e2: b29a uxth r2, r3 + 80064e4: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 80064e8: b29b uxth r3, r3 + 80064ea: 029b lsls r3, r3, #10 + 80064ec: b29b uxth r3, r3 + 80064ee: 4313 orrs r3, r2 + 80064f0: b29b uxth r3, r3 + 80064f2: ea6f 4343 mvn.w r3, r3, lsl #17 + 80064f6: ea6f 4353 mvn.w r3, r3, lsr #17 + 80064fa: b29a uxth r2, r3 + 80064fc: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 8006500: 801a strh r2, [r3, #0] + 8006502: e070 b.n 80065e6 + 8006504: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006508: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800650c: 681b ldr r3, [r3, #0] + 800650e: 691b ldr r3, [r3, #16] + 8006510: 2b00 cmp r3, #0 + 8006512: d10c bne.n 800652e + 8006514: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 8006518: 881b ldrh r3, [r3, #0] + 800651a: b29b uxth r3, r3 + 800651c: ea6f 4343 mvn.w r3, r3, lsl #17 + 8006520: ea6f 4353 mvn.w r3, r3, lsr #17 + 8006524: b29a uxth r2, r3 + 8006526: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 800652a: 801a strh r2, [r3, #0] + 800652c: e05b b.n 80065e6 + 800652e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006532: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006536: 681b ldr r3, [r3, #0] + 8006538: 691b ldr r3, [r3, #16] + 800653a: 085b lsrs r3, r3, #1 + 800653c: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 + 8006540: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006544: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006548: 681b ldr r3, [r3, #0] + 800654a: 691b ldr r3, [r3, #16] + 800654c: f003 0301 and.w r3, r3, #1 + 8006550: 2b00 cmp r3, #0 + 8006552: d004 beq.n 800655e + 8006554: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 8006558: 3301 adds r3, #1 + 800655a: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 + 800655e: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 8006562: 881b ldrh r3, [r3, #0] + 8006564: b29a uxth r2, r3 + 8006566: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 800656a: b29b uxth r3, r3 + 800656c: 029b lsls r3, r3, #10 + 800656e: b29b uxth r3, r3 + 8006570: 4313 orrs r3, r2 + 8006572: b29a uxth r2, r3 + 8006574: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 8006578: 801a strh r2, [r3, #0] + 800657a: e034 b.n 80065e6 + 800657c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006580: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006584: 681b ldr r3, [r3, #0] + 8006586: 785b ldrb r3, [r3, #1] + 8006588: 2b01 cmp r3, #1 + 800658a: d12c bne.n 80065e6 + 800658c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006590: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006594: 681b ldr r3, [r3, #0] + 8006596: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 + 800659a: f507 7384 add.w r3, r7, #264 @ 0x108 + 800659e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80065a2: 681b ldr r3, [r3, #0] + 80065a4: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80065a8: b29b uxth r3, r3 + 80065aa: 461a mov r2, r3 + 80065ac: f8d7 30b4 ldr.w r3, [r7, #180] @ 0xb4 + 80065b0: 4413 add r3, r2 + 80065b2: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 + 80065b6: f507 7384 add.w r3, r7, #264 @ 0x108 + 80065ba: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80065be: 681b ldr r3, [r3, #0] + 80065c0: 781b ldrb r3, [r3, #0] + 80065c2: 011a lsls r2, r3, #4 + 80065c4: f8d7 30b4 ldr.w r3, [r7, #180] @ 0xb4 + 80065c8: 4413 add r3, r2 + 80065ca: f203 4304 addw r3, r3, #1028 @ 0x404 + 80065ce: f8c7 30b0 str.w r3, [r7, #176] @ 0xb0 + 80065d2: f507 7384 add.w r3, r7, #264 @ 0x108 + 80065d6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80065da: 681b ldr r3, [r3, #0] + 80065dc: 691b ldr r3, [r3, #16] + 80065de: b29a uxth r2, r3 + 80065e0: f8d7 30b0 ldr.w r3, [r7, #176] @ 0xb0 + 80065e4: 801a strh r2, [r3, #0] + 80065e6: f507 7384 add.w r3, r7, #264 @ 0x108 + 80065ea: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80065ee: 681b ldr r3, [r3, #0] + 80065f0: f8c7 30a4 str.w r3, [r7, #164] @ 0xa4 + 80065f4: f507 7384 add.w r3, r7, #264 @ 0x108 + 80065f8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80065fc: 681b ldr r3, [r3, #0] + 80065fe: 785b ldrb r3, [r3, #1] + 8006600: 2b00 cmp r3, #0 + 8006602: f040 809d bne.w 8006740 + 8006606: f507 7384 add.w r3, r7, #264 @ 0x108 + 800660a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 800660e: 681b ldr r3, [r3, #0] + 8006610: f8c7 309c str.w r3, [r7, #156] @ 0x9c + 8006614: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006618: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 800661c: 681b ldr r3, [r3, #0] + 800661e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8006622: b29b uxth r3, r3 + 8006624: 461a mov r2, r3 + 8006626: f8d7 309c ldr.w r3, [r7, #156] @ 0x9c + 800662a: 4413 add r3, r2 + 800662c: f8c7 309c str.w r3, [r7, #156] @ 0x9c + 8006630: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006634: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006638: 681b ldr r3, [r3, #0] + 800663a: 781b ldrb r3, [r3, #0] + 800663c: 011a lsls r2, r3, #4 + 800663e: f8d7 309c ldr.w r3, [r7, #156] @ 0x9c + 8006642: 4413 add r3, r2 + 8006644: f203 430c addw r3, r3, #1036 @ 0x40c + 8006648: f8c7 3098 str.w r3, [r7, #152] @ 0x98 + 800664c: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 8006650: 881b ldrh r3, [r3, #0] + 8006652: b29b uxth r3, r3 + 8006654: f3c3 0309 ubfx r3, r3, #0, #10 + 8006658: b29a uxth r2, r3 + 800665a: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 800665e: 801a strh r2, [r3, #0] + 8006660: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006664: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006668: 681b ldr r3, [r3, #0] + 800666a: 691b ldr r3, [r3, #16] + 800666c: 2b3e cmp r3, #62 @ 0x3e + 800666e: d92b bls.n 80066c8 + 8006670: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006674: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006678: 681b ldr r3, [r3, #0] + 800667a: 691b ldr r3, [r3, #16] + 800667c: 095b lsrs r3, r3, #5 + 800667e: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 + 8006682: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006686: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800668a: 681b ldr r3, [r3, #0] + 800668c: 691b ldr r3, [r3, #16] + 800668e: f003 031f and.w r3, r3, #31 + 8006692: 2b00 cmp r3, #0 + 8006694: d104 bne.n 80066a0 + 8006696: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 800669a: 3b01 subs r3, #1 + 800669c: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 + 80066a0: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 80066a4: 881b ldrh r3, [r3, #0] + 80066a6: b29a uxth r2, r3 + 80066a8: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 80066ac: b29b uxth r3, r3 + 80066ae: 029b lsls r3, r3, #10 + 80066b0: b29b uxth r3, r3 + 80066b2: 4313 orrs r3, r2 + 80066b4: b29b uxth r3, r3 + 80066b6: ea6f 4343 mvn.w r3, r3, lsl #17 + 80066ba: ea6f 4353 mvn.w r3, r3, lsr #17 + 80066be: b29a uxth r2, r3 + 80066c0: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 80066c4: 801a strh r2, [r3, #0] + 80066c6: e069 b.n 800679c + 80066c8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80066cc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80066d0: 681b ldr r3, [r3, #0] + 80066d2: 691b ldr r3, [r3, #16] + 80066d4: 2b00 cmp r3, #0 + 80066d6: d10c bne.n 80066f2 + 80066d8: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 80066dc: 881b ldrh r3, [r3, #0] + 80066de: b29b uxth r3, r3 + 80066e0: ea6f 4343 mvn.w r3, r3, lsl #17 + 80066e4: ea6f 4353 mvn.w r3, r3, lsr #17 + 80066e8: b29a uxth r2, r3 + 80066ea: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 80066ee: 801a strh r2, [r3, #0] + 80066f0: e054 b.n 800679c + 80066f2: f507 7384 add.w r3, r7, #264 @ 0x108 + 80066f6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80066fa: 681b ldr r3, [r3, #0] + 80066fc: 691b ldr r3, [r3, #16] + 80066fe: 085b lsrs r3, r3, #1 + 8006700: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 + 8006704: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006708: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800670c: 681b ldr r3, [r3, #0] + 800670e: 691b ldr r3, [r3, #16] + 8006710: f003 0301 and.w r3, r3, #1 + 8006714: 2b00 cmp r3, #0 + 8006716: d004 beq.n 8006722 + 8006718: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 800671c: 3301 adds r3, #1 + 800671e: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 + 8006722: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 8006726: 881b ldrh r3, [r3, #0] + 8006728: b29a uxth r2, r3 + 800672a: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 800672e: b29b uxth r3, r3 + 8006730: 029b lsls r3, r3, #10 + 8006732: b29b uxth r3, r3 + 8006734: 4313 orrs r3, r2 + 8006736: b29a uxth r2, r3 + 8006738: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 800673c: 801a strh r2, [r3, #0] + 800673e: e02d b.n 800679c + 8006740: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006744: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006748: 681b ldr r3, [r3, #0] + 800674a: 785b ldrb r3, [r3, #1] + 800674c: 2b01 cmp r3, #1 + 800674e: d125 bne.n 800679c + 8006750: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006754: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006758: 681b ldr r3, [r3, #0] + 800675a: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800675e: b29b uxth r3, r3 + 8006760: 461a mov r2, r3 + 8006762: f8d7 30a4 ldr.w r3, [r7, #164] @ 0xa4 + 8006766: 4413 add r3, r2 + 8006768: f8c7 30a4 str.w r3, [r7, #164] @ 0xa4 + 800676c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006770: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006774: 681b ldr r3, [r3, #0] + 8006776: 781b ldrb r3, [r3, #0] + 8006778: 011a lsls r2, r3, #4 + 800677a: f8d7 30a4 ldr.w r3, [r7, #164] @ 0xa4 + 800677e: 4413 add r3, r2 + 8006780: f203 430c addw r3, r3, #1036 @ 0x40c + 8006784: f8c7 30a0 str.w r3, [r7, #160] @ 0xa0 + 8006788: f507 7384 add.w r3, r7, #264 @ 0x108 + 800678c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006790: 681b ldr r3, [r3, #0] + 8006792: 691b ldr r3, [r3, #16] + 8006794: b29a uxth r2, r3 + 8006796: f8d7 30a0 ldr.w r3, [r7, #160] @ 0xa0 + 800679a: 801a strh r2, [r3, #0] + + /* Coming from ISR */ + if (ep->xfer_count != 0U) + 800679c: f507 7384 add.w r3, r7, #264 @ 0x108 + 80067a0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80067a4: 681b ldr r3, [r3, #0] + 80067a6: 69db ldr r3, [r3, #28] + 80067a8: 2b00 cmp r3, #0 + 80067aa: f000 8218 beq.w 8006bde + { + /* update last value to check if there is blocking state */ + wEPVal = PCD_GET_ENDPOINT(USBx, ep->num); + 80067ae: f507 7384 add.w r3, r7, #264 @ 0x108 + 80067b2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80067b6: 681a ldr r2, [r3, #0] + 80067b8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80067bc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80067c0: 681b ldr r3, [r3, #0] + 80067c2: 781b ldrb r3, [r3, #0] + 80067c4: 009b lsls r3, r3, #2 + 80067c6: 4413 add r3, r2 + 80067c8: 881b ldrh r3, [r3, #0] + 80067ca: f8a7 3096 strh.w r3, [r7, #150] @ 0x96 + + /*Blocking State */ + if ((((wEPVal & USB_EP_DTOG_RX) != 0U) && ((wEPVal & USB_EP_DTOG_TX) != 0U)) || + 80067ce: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 + 80067d2: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 80067d6: 2b00 cmp r3, #0 + 80067d8: d005 beq.n 80067e6 + 80067da: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 + 80067de: f003 0340 and.w r3, r3, #64 @ 0x40 + 80067e2: 2b00 cmp r3, #0 + 80067e4: d10d bne.n 8006802 + (((wEPVal & USB_EP_DTOG_RX) == 0U) && ((wEPVal & USB_EP_DTOG_TX) == 0U))) + 80067e6: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 + 80067ea: f403 4380 and.w r3, r3, #16384 @ 0x4000 + if ((((wEPVal & USB_EP_DTOG_RX) != 0U) && ((wEPVal & USB_EP_DTOG_TX) != 0U)) || + 80067ee: 2b00 cmp r3, #0 + 80067f0: f040 81f5 bne.w 8006bde + (((wEPVal & USB_EP_DTOG_RX) == 0U) && ((wEPVal & USB_EP_DTOG_TX) == 0U))) + 80067f4: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 + 80067f8: f003 0340 and.w r3, r3, #64 @ 0x40 + 80067fc: 2b00 cmp r3, #0 + 80067fe: f040 81ee bne.w 8006bde + { + PCD_FREE_USER_BUFFER(USBx, ep->num, 0U); + 8006802: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006806: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 800680a: 681a ldr r2, [r3, #0] + 800680c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006810: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006814: 681b ldr r3, [r3, #0] + 8006816: 781b ldrb r3, [r3, #0] + 8006818: 009b lsls r3, r3, #2 + 800681a: 4413 add r3, r2 + 800681c: 881b ldrh r3, [r3, #0] + 800681e: b29b uxth r3, r3 + 8006820: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8006824: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8006828: f8a7 3094 strh.w r3, [r7, #148] @ 0x94 + 800682c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006830: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006834: 681a ldr r2, [r3, #0] + 8006836: f507 7384 add.w r3, r7, #264 @ 0x108 + 800683a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800683e: 681b ldr r3, [r3, #0] + 8006840: 781b ldrb r3, [r3, #0] + 8006842: 009b lsls r3, r3, #2 + 8006844: 441a add r2, r3 + 8006846: f8b7 3094 ldrh.w r3, [r7, #148] @ 0x94 + 800684a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800684e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8006852: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8006856: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 800685a: b29b uxth r3, r3 + 800685c: 8013 strh r3, [r2, #0] + 800685e: e1be b.n 8006bde + } + } + } + /* iso out double */ + else if (ep->type == EP_TYPE_ISOC) + 8006860: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006864: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006868: 681b ldr r3, [r3, #0] + 800686a: 78db ldrb r3, [r3, #3] + 800686c: 2b01 cmp r3, #1 + 800686e: f040 81b4 bne.w 8006bda + { + /* Multi packet transfer */ + if (ep->xfer_len > ep->maxpacket) + 8006872: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006876: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800687a: 681b ldr r3, [r3, #0] + 800687c: 699a ldr r2, [r3, #24] + 800687e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006882: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006886: 681b ldr r3, [r3, #0] + 8006888: 691b ldr r3, [r3, #16] + 800688a: 429a cmp r2, r3 + 800688c: d917 bls.n 80068be + { + len = ep->maxpacket; + 800688e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006892: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006896: 681b ldr r3, [r3, #0] + 8006898: 691b ldr r3, [r3, #16] + 800689a: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + ep->xfer_len -= len; + 800689e: f507 7384 add.w r3, r7, #264 @ 0x108 + 80068a2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80068a6: 681b ldr r3, [r3, #0] + 80068a8: 699a ldr r2, [r3, #24] + 80068aa: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80068ae: 1ad2 subs r2, r2, r3 + 80068b0: f507 7384 add.w r3, r7, #264 @ 0x108 + 80068b4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80068b8: 681b ldr r3, [r3, #0] + 80068ba: 619a str r2, [r3, #24] + 80068bc: e00e b.n 80068dc + } + else + { + len = ep->xfer_len; + 80068be: f507 7384 add.w r3, r7, #264 @ 0x108 + 80068c2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80068c6: 681b ldr r3, [r3, #0] + 80068c8: 699b ldr r3, [r3, #24] + 80068ca: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + ep->xfer_len = 0U; + 80068ce: f507 7384 add.w r3, r7, #264 @ 0x108 + 80068d2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80068d6: 681b ldr r3, [r3, #0] + 80068d8: 2200 movs r2, #0 + 80068da: 619a str r2, [r3, #24] + } + PCD_SET_EP_DBUF_CNT(USBx, ep->num, ep->is_in, len); + 80068dc: f507 7384 add.w r3, r7, #264 @ 0x108 + 80068e0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80068e4: 681b ldr r3, [r3, #0] + 80068e6: 785b ldrb r3, [r3, #1] + 80068e8: 2b00 cmp r3, #0 + 80068ea: f040 8085 bne.w 80069f8 + 80068ee: f507 7384 add.w r3, r7, #264 @ 0x108 + 80068f2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80068f6: 681b ldr r3, [r3, #0] + 80068f8: f8c7 30cc str.w r3, [r7, #204] @ 0xcc + 80068fc: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006900: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006904: 681b ldr r3, [r3, #0] + 8006906: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800690a: b29b uxth r3, r3 + 800690c: 461a mov r2, r3 + 800690e: f8d7 30cc ldr.w r3, [r7, #204] @ 0xcc + 8006912: 4413 add r3, r2 + 8006914: f8c7 30cc str.w r3, [r7, #204] @ 0xcc + 8006918: f507 7384 add.w r3, r7, #264 @ 0x108 + 800691c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006920: 681b ldr r3, [r3, #0] + 8006922: 781b ldrb r3, [r3, #0] + 8006924: 011a lsls r2, r3, #4 + 8006926: f8d7 30cc ldr.w r3, [r7, #204] @ 0xcc + 800692a: 4413 add r3, r2 + 800692c: f203 4304 addw r3, r3, #1028 @ 0x404 + 8006930: f8c7 30c8 str.w r3, [r7, #200] @ 0xc8 + 8006934: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 8006938: 881b ldrh r3, [r3, #0] + 800693a: b29b uxth r3, r3 + 800693c: f3c3 0309 ubfx r3, r3, #0, #10 + 8006940: b29a uxth r2, r3 + 8006942: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 8006946: 801a strh r2, [r3, #0] + 8006948: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800694c: 2b3e cmp r3, #62 @ 0x3e + 800694e: d923 bls.n 8006998 + 8006950: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006954: 095b lsrs r3, r3, #5 + 8006956: f8c7 30dc str.w r3, [r7, #220] @ 0xdc + 800695a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800695e: f003 031f and.w r3, r3, #31 + 8006962: 2b00 cmp r3, #0 + 8006964: d104 bne.n 8006970 + 8006966: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 800696a: 3b01 subs r3, #1 + 800696c: f8c7 30dc str.w r3, [r7, #220] @ 0xdc + 8006970: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 8006974: 881b ldrh r3, [r3, #0] + 8006976: b29a uxth r2, r3 + 8006978: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 800697c: b29b uxth r3, r3 + 800697e: 029b lsls r3, r3, #10 + 8006980: b29b uxth r3, r3 + 8006982: 4313 orrs r3, r2 + 8006984: b29b uxth r3, r3 + 8006986: ea6f 4343 mvn.w r3, r3, lsl #17 + 800698a: ea6f 4353 mvn.w r3, r3, lsr #17 + 800698e: b29a uxth r2, r3 + 8006990: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 8006994: 801a strh r2, [r3, #0] + 8006996: e060 b.n 8006a5a + 8006998: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800699c: 2b00 cmp r3, #0 + 800699e: d10c bne.n 80069ba + 80069a0: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 80069a4: 881b ldrh r3, [r3, #0] + 80069a6: b29b uxth r3, r3 + 80069a8: ea6f 4343 mvn.w r3, r3, lsl #17 + 80069ac: ea6f 4353 mvn.w r3, r3, lsr #17 + 80069b0: b29a uxth r2, r3 + 80069b2: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 80069b6: 801a strh r2, [r3, #0] + 80069b8: e04f b.n 8006a5a + 80069ba: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80069be: 085b lsrs r3, r3, #1 + 80069c0: f8c7 30dc str.w r3, [r7, #220] @ 0xdc + 80069c4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80069c8: f003 0301 and.w r3, r3, #1 + 80069cc: 2b00 cmp r3, #0 + 80069ce: d004 beq.n 80069da + 80069d0: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 80069d4: 3301 adds r3, #1 + 80069d6: f8c7 30dc str.w r3, [r7, #220] @ 0xdc + 80069da: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 80069de: 881b ldrh r3, [r3, #0] + 80069e0: b29a uxth r2, r3 + 80069e2: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 80069e6: b29b uxth r3, r3 + 80069e8: 029b lsls r3, r3, #10 + 80069ea: b29b uxth r3, r3 + 80069ec: 4313 orrs r3, r2 + 80069ee: b29a uxth r2, r3 + 80069f0: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 80069f4: 801a strh r2, [r3, #0] + 80069f6: e030 b.n 8006a5a + 80069f8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80069fc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006a00: 681b ldr r3, [r3, #0] + 8006a02: 785b ldrb r3, [r3, #1] + 8006a04: 2b01 cmp r3, #1 + 8006a06: d128 bne.n 8006a5a + 8006a08: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006a0c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006a10: 681b ldr r3, [r3, #0] + 8006a12: f8c7 30d4 str.w r3, [r7, #212] @ 0xd4 + 8006a16: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006a1a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006a1e: 681b ldr r3, [r3, #0] + 8006a20: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8006a24: b29b uxth r3, r3 + 8006a26: 461a mov r2, r3 + 8006a28: f8d7 30d4 ldr.w r3, [r7, #212] @ 0xd4 + 8006a2c: 4413 add r3, r2 + 8006a2e: f8c7 30d4 str.w r3, [r7, #212] @ 0xd4 + 8006a32: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006a36: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006a3a: 681b ldr r3, [r3, #0] + 8006a3c: 781b ldrb r3, [r3, #0] + 8006a3e: 011a lsls r2, r3, #4 + 8006a40: f8d7 30d4 ldr.w r3, [r7, #212] @ 0xd4 + 8006a44: 4413 add r3, r2 + 8006a46: f203 4304 addw r3, r3, #1028 @ 0x404 + 8006a4a: f8c7 30d0 str.w r3, [r7, #208] @ 0xd0 + 8006a4e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006a52: b29a uxth r2, r3 + 8006a54: f8d7 30d0 ldr.w r3, [r7, #208] @ 0xd0 + 8006a58: 801a strh r2, [r3, #0] + 8006a5a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006a5e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006a62: 681b ldr r3, [r3, #0] + 8006a64: f8c7 30c4 str.w r3, [r7, #196] @ 0xc4 + 8006a68: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006a6c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006a70: 681b ldr r3, [r3, #0] + 8006a72: 785b ldrb r3, [r3, #1] + 8006a74: 2b00 cmp r3, #0 + 8006a76: f040 8085 bne.w 8006b84 + 8006a7a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006a7e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006a82: 681b ldr r3, [r3, #0] + 8006a84: f8c7 30bc str.w r3, [r7, #188] @ 0xbc + 8006a88: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006a8c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006a90: 681b ldr r3, [r3, #0] + 8006a92: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8006a96: b29b uxth r3, r3 + 8006a98: 461a mov r2, r3 + 8006a9a: f8d7 30bc ldr.w r3, [r7, #188] @ 0xbc + 8006a9e: 4413 add r3, r2 + 8006aa0: f8c7 30bc str.w r3, [r7, #188] @ 0xbc + 8006aa4: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006aa8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006aac: 681b ldr r3, [r3, #0] + 8006aae: 781b ldrb r3, [r3, #0] + 8006ab0: 011a lsls r2, r3, #4 + 8006ab2: f8d7 30bc ldr.w r3, [r7, #188] @ 0xbc + 8006ab6: 4413 add r3, r2 + 8006ab8: f203 430c addw r3, r3, #1036 @ 0x40c + 8006abc: f8c7 30b8 str.w r3, [r7, #184] @ 0xb8 + 8006ac0: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 8006ac4: 881b ldrh r3, [r3, #0] + 8006ac6: b29b uxth r3, r3 + 8006ac8: f3c3 0309 ubfx r3, r3, #0, #10 + 8006acc: b29a uxth r2, r3 + 8006ace: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 8006ad2: 801a strh r2, [r3, #0] + 8006ad4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006ad8: 2b3e cmp r3, #62 @ 0x3e + 8006ada: d923 bls.n 8006b24 + 8006adc: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006ae0: 095b lsrs r3, r3, #5 + 8006ae2: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 + 8006ae6: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006aea: f003 031f and.w r3, r3, #31 + 8006aee: 2b00 cmp r3, #0 + 8006af0: d104 bne.n 8006afc + 8006af2: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 + 8006af6: 3b01 subs r3, #1 + 8006af8: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 + 8006afc: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 8006b00: 881b ldrh r3, [r3, #0] + 8006b02: b29a uxth r2, r3 + 8006b04: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 + 8006b08: b29b uxth r3, r3 + 8006b0a: 029b lsls r3, r3, #10 + 8006b0c: b29b uxth r3, r3 + 8006b0e: 4313 orrs r3, r2 + 8006b10: b29b uxth r3, r3 + 8006b12: ea6f 4343 mvn.w r3, r3, lsl #17 + 8006b16: ea6f 4353 mvn.w r3, r3, lsr #17 + 8006b1a: b29a uxth r2, r3 + 8006b1c: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 8006b20: 801a strh r2, [r3, #0] + 8006b22: e05c b.n 8006bde + 8006b24: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006b28: 2b00 cmp r3, #0 + 8006b2a: d10c bne.n 8006b46 + 8006b2c: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 8006b30: 881b ldrh r3, [r3, #0] + 8006b32: b29b uxth r3, r3 + 8006b34: ea6f 4343 mvn.w r3, r3, lsl #17 + 8006b38: ea6f 4353 mvn.w r3, r3, lsr #17 + 8006b3c: b29a uxth r2, r3 + 8006b3e: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 8006b42: 801a strh r2, [r3, #0] + 8006b44: e04b b.n 8006bde + 8006b46: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006b4a: 085b lsrs r3, r3, #1 + 8006b4c: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 + 8006b50: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006b54: f003 0301 and.w r3, r3, #1 + 8006b58: 2b00 cmp r3, #0 + 8006b5a: d004 beq.n 8006b66 + 8006b5c: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 + 8006b60: 3301 adds r3, #1 + 8006b62: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 + 8006b66: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 8006b6a: 881b ldrh r3, [r3, #0] + 8006b6c: b29a uxth r2, r3 + 8006b6e: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 + 8006b72: b29b uxth r3, r3 + 8006b74: 029b lsls r3, r3, #10 + 8006b76: b29b uxth r3, r3 + 8006b78: 4313 orrs r3, r2 + 8006b7a: b29a uxth r2, r3 + 8006b7c: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 8006b80: 801a strh r2, [r3, #0] + 8006b82: e02c b.n 8006bde + 8006b84: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006b88: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006b8c: 681b ldr r3, [r3, #0] + 8006b8e: 785b ldrb r3, [r3, #1] + 8006b90: 2b01 cmp r3, #1 + 8006b92: d124 bne.n 8006bde + 8006b94: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006b98: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006b9c: 681b ldr r3, [r3, #0] + 8006b9e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8006ba2: b29b uxth r3, r3 + 8006ba4: 461a mov r2, r3 + 8006ba6: f8d7 30c4 ldr.w r3, [r7, #196] @ 0xc4 + 8006baa: 4413 add r3, r2 + 8006bac: f8c7 30c4 str.w r3, [r7, #196] @ 0xc4 + 8006bb0: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006bb4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006bb8: 681b ldr r3, [r3, #0] + 8006bba: 781b ldrb r3, [r3, #0] + 8006bbc: 011a lsls r2, r3, #4 + 8006bbe: f8d7 30c4 ldr.w r3, [r7, #196] @ 0xc4 + 8006bc2: 4413 add r3, r2 + 8006bc4: f203 430c addw r3, r3, #1036 @ 0x40c + 8006bc8: f8c7 30c0 str.w r3, [r7, #192] @ 0xc0 + 8006bcc: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006bd0: b29a uxth r2, r3 + 8006bd2: f8d7 30c0 ldr.w r3, [r7, #192] @ 0xc0 + 8006bd6: 801a strh r2, [r3, #0] + 8006bd8: e001 b.n 8006bde + } + else + { + return HAL_ERROR; + 8006bda: 2301 movs r3, #1 + 8006bdc: e03a b.n 8006c54 + } + } +#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + 8006bde: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006be2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006be6: 681a ldr r2, [r3, #0] + 8006be8: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006bec: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006bf0: 681b ldr r3, [r3, #0] + 8006bf2: 781b ldrb r3, [r3, #0] + 8006bf4: 009b lsls r3, r3, #2 + 8006bf6: 4413 add r3, r2 + 8006bf8: 881b ldrh r3, [r3, #0] + 8006bfa: b29b uxth r3, r3 + 8006bfc: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8006c00: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8006c04: f8a7 308a strh.w r3, [r7, #138] @ 0x8a + 8006c08: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a + 8006c0c: f483 5380 eor.w r3, r3, #4096 @ 0x1000 + 8006c10: f8a7 308a strh.w r3, [r7, #138] @ 0x8a + 8006c14: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a + 8006c18: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 8006c1c: f8a7 308a strh.w r3, [r7, #138] @ 0x8a + 8006c20: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006c24: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006c28: 681a ldr r2, [r3, #0] + 8006c2a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006c2e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006c32: 681b ldr r3, [r3, #0] + 8006c34: 781b ldrb r3, [r3, #0] + 8006c36: 009b lsls r3, r3, #2 + 8006c38: 441a add r2, r3 + 8006c3a: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a + 8006c3e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8006c42: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8006c46: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8006c4a: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8006c4e: b29b uxth r3, r3 + 8006c50: 8013 strh r3, [r2, #0] + } + + return HAL_OK; + 8006c52: 2300 movs r3, #0 +} + 8006c54: 4618 mov r0, r3 + 8006c56: f507 7784 add.w r7, r7, #264 @ 0x108 + 8006c5a: 46bd mov sp, r7 + 8006c5c: bd80 pop {r7, pc} + +08006c5e : + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPSetStall(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + 8006c5e: b480 push {r7} + 8006c60: b085 sub sp, #20 + 8006c62: af00 add r7, sp, #0 + 8006c64: 6078 str r0, [r7, #4] + 8006c66: 6039 str r1, [r7, #0] + if (ep->is_in != 0U) + 8006c68: 683b ldr r3, [r7, #0] + 8006c6a: 785b ldrb r3, [r3, #1] + 8006c6c: 2b00 cmp r3, #0 + 8006c6e: d020 beq.n 8006cb2 + { + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_STALL); + 8006c70: 687a ldr r2, [r7, #4] + 8006c72: 683b ldr r3, [r7, #0] + 8006c74: 781b ldrb r3, [r3, #0] + 8006c76: 009b lsls r3, r3, #2 + 8006c78: 4413 add r3, r2 + 8006c7a: 881b ldrh r3, [r3, #0] + 8006c7c: b29b uxth r3, r3 + 8006c7e: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8006c82: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8006c86: 81bb strh r3, [r7, #12] + 8006c88: 89bb ldrh r3, [r7, #12] + 8006c8a: f083 0310 eor.w r3, r3, #16 + 8006c8e: 81bb strh r3, [r7, #12] + 8006c90: 687a ldr r2, [r7, #4] + 8006c92: 683b ldr r3, [r7, #0] + 8006c94: 781b ldrb r3, [r3, #0] + 8006c96: 009b lsls r3, r3, #2 + 8006c98: 441a add r2, r3 + 8006c9a: 89bb ldrh r3, [r7, #12] + 8006c9c: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8006ca0: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8006ca4: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8006ca8: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8006cac: b29b uxth r3, r3 + 8006cae: 8013 strh r3, [r2, #0] + 8006cb0: e01f b.n 8006cf2 + } + else + { + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_STALL); + 8006cb2: 687a ldr r2, [r7, #4] + 8006cb4: 683b ldr r3, [r7, #0] + 8006cb6: 781b ldrb r3, [r3, #0] + 8006cb8: 009b lsls r3, r3, #2 + 8006cba: 4413 add r3, r2 + 8006cbc: 881b ldrh r3, [r3, #0] + 8006cbe: b29b uxth r3, r3 + 8006cc0: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8006cc4: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8006cc8: 81fb strh r3, [r7, #14] + 8006cca: 89fb ldrh r3, [r7, #14] + 8006ccc: f483 5380 eor.w r3, r3, #4096 @ 0x1000 + 8006cd0: 81fb strh r3, [r7, #14] + 8006cd2: 687a ldr r2, [r7, #4] + 8006cd4: 683b ldr r3, [r7, #0] + 8006cd6: 781b ldrb r3, [r3, #0] + 8006cd8: 009b lsls r3, r3, #2 + 8006cda: 441a add r2, r3 + 8006cdc: 89fb ldrh r3, [r7, #14] + 8006cde: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8006ce2: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8006ce6: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8006cea: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8006cee: b29b uxth r3, r3 + 8006cf0: 8013 strh r3, [r2, #0] + } + + return HAL_OK; + 8006cf2: 2300 movs r3, #0 +} + 8006cf4: 4618 mov r0, r3 + 8006cf6: 3714 adds r7, #20 + 8006cf8: 46bd mov sp, r7 + 8006cfa: bc80 pop {r7} + 8006cfc: 4770 bx lr + +08006cfe : + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPClearStall(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + 8006cfe: b480 push {r7} + 8006d00: b087 sub sp, #28 + 8006d02: af00 add r7, sp, #0 + 8006d04: 6078 str r0, [r7, #4] + 8006d06: 6039 str r1, [r7, #0] + if (ep->doublebuffer == 0U) + 8006d08: 683b ldr r3, [r7, #0] + 8006d0a: 7b1b ldrb r3, [r3, #12] + 8006d0c: 2b00 cmp r3, #0 + 8006d0e: f040 809d bne.w 8006e4c + { + if (ep->is_in != 0U) + 8006d12: 683b ldr r3, [r7, #0] + 8006d14: 785b ldrb r3, [r3, #1] + 8006d16: 2b00 cmp r3, #0 + 8006d18: d04c beq.n 8006db4 + { + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 8006d1a: 687a ldr r2, [r7, #4] + 8006d1c: 683b ldr r3, [r7, #0] + 8006d1e: 781b ldrb r3, [r3, #0] + 8006d20: 009b lsls r3, r3, #2 + 8006d22: 4413 add r3, r2 + 8006d24: 881b ldrh r3, [r3, #0] + 8006d26: 823b strh r3, [r7, #16] + 8006d28: 8a3b ldrh r3, [r7, #16] + 8006d2a: f003 0340 and.w r3, r3, #64 @ 0x40 + 8006d2e: 2b00 cmp r3, #0 + 8006d30: d01b beq.n 8006d6a + 8006d32: 687a ldr r2, [r7, #4] + 8006d34: 683b ldr r3, [r7, #0] + 8006d36: 781b ldrb r3, [r3, #0] + 8006d38: 009b lsls r3, r3, #2 + 8006d3a: 4413 add r3, r2 + 8006d3c: 881b ldrh r3, [r3, #0] + 8006d3e: b29b uxth r3, r3 + 8006d40: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8006d44: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8006d48: 81fb strh r3, [r7, #14] + 8006d4a: 687a ldr r2, [r7, #4] + 8006d4c: 683b ldr r3, [r7, #0] + 8006d4e: 781b ldrb r3, [r3, #0] + 8006d50: 009b lsls r3, r3, #2 + 8006d52: 441a add r2, r3 + 8006d54: 89fb ldrh r3, [r7, #14] + 8006d56: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8006d5a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8006d5e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8006d62: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 8006d66: b29b uxth r3, r3 + 8006d68: 8013 strh r3, [r2, #0] + + if (ep->type != EP_TYPE_ISOC) + 8006d6a: 683b ldr r3, [r7, #0] + 8006d6c: 78db ldrb r3, [r3, #3] + 8006d6e: 2b01 cmp r3, #1 + 8006d70: d06c beq.n 8006e4c + { + /* Configure NAK status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); + 8006d72: 687a ldr r2, [r7, #4] + 8006d74: 683b ldr r3, [r7, #0] + 8006d76: 781b ldrb r3, [r3, #0] + 8006d78: 009b lsls r3, r3, #2 + 8006d7a: 4413 add r3, r2 + 8006d7c: 881b ldrh r3, [r3, #0] + 8006d7e: b29b uxth r3, r3 + 8006d80: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8006d84: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8006d88: 81bb strh r3, [r7, #12] + 8006d8a: 89bb ldrh r3, [r7, #12] + 8006d8c: f083 0320 eor.w r3, r3, #32 + 8006d90: 81bb strh r3, [r7, #12] + 8006d92: 687a ldr r2, [r7, #4] + 8006d94: 683b ldr r3, [r7, #0] + 8006d96: 781b ldrb r3, [r3, #0] + 8006d98: 009b lsls r3, r3, #2 + 8006d9a: 441a add r2, r3 + 8006d9c: 89bb ldrh r3, [r7, #12] + 8006d9e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8006da2: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8006da6: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8006daa: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8006dae: b29b uxth r3, r3 + 8006db0: 8013 strh r3, [r2, #0] + 8006db2: e04b b.n 8006e4c + } + } + else + { + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 8006db4: 687a ldr r2, [r7, #4] + 8006db6: 683b ldr r3, [r7, #0] + 8006db8: 781b ldrb r3, [r3, #0] + 8006dba: 009b lsls r3, r3, #2 + 8006dbc: 4413 add r3, r2 + 8006dbe: 881b ldrh r3, [r3, #0] + 8006dc0: 82fb strh r3, [r7, #22] + 8006dc2: 8afb ldrh r3, [r7, #22] + 8006dc4: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8006dc8: 2b00 cmp r3, #0 + 8006dca: d01b beq.n 8006e04 + 8006dcc: 687a ldr r2, [r7, #4] + 8006dce: 683b ldr r3, [r7, #0] + 8006dd0: 781b ldrb r3, [r3, #0] + 8006dd2: 009b lsls r3, r3, #2 + 8006dd4: 4413 add r3, r2 + 8006dd6: 881b ldrh r3, [r3, #0] + 8006dd8: b29b uxth r3, r3 + 8006dda: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8006dde: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8006de2: 82bb strh r3, [r7, #20] + 8006de4: 687a ldr r2, [r7, #4] + 8006de6: 683b ldr r3, [r7, #0] + 8006de8: 781b ldrb r3, [r3, #0] + 8006dea: 009b lsls r3, r3, #2 + 8006dec: 441a add r2, r3 + 8006dee: 8abb ldrh r3, [r7, #20] + 8006df0: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8006df4: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8006df8: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8006dfc: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8006e00: b29b uxth r3, r3 + 8006e02: 8013 strh r3, [r2, #0] + + /* Configure VALID status for the Endpoint */ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + 8006e04: 687a ldr r2, [r7, #4] + 8006e06: 683b ldr r3, [r7, #0] + 8006e08: 781b ldrb r3, [r3, #0] + 8006e0a: 009b lsls r3, r3, #2 + 8006e0c: 4413 add r3, r2 + 8006e0e: 881b ldrh r3, [r3, #0] + 8006e10: b29b uxth r3, r3 + 8006e12: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8006e16: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8006e1a: 827b strh r3, [r7, #18] + 8006e1c: 8a7b ldrh r3, [r7, #18] + 8006e1e: f483 5380 eor.w r3, r3, #4096 @ 0x1000 + 8006e22: 827b strh r3, [r7, #18] + 8006e24: 8a7b ldrh r3, [r7, #18] + 8006e26: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 8006e2a: 827b strh r3, [r7, #18] + 8006e2c: 687a ldr r2, [r7, #4] + 8006e2e: 683b ldr r3, [r7, #0] + 8006e30: 781b ldrb r3, [r3, #0] + 8006e32: 009b lsls r3, r3, #2 + 8006e34: 441a add r2, r3 + 8006e36: 8a7b ldrh r3, [r7, #18] + 8006e38: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8006e3c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8006e40: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8006e44: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8006e48: b29b uxth r3, r3 + 8006e4a: 8013 strh r3, [r2, #0] + } + } + + return HAL_OK; + 8006e4c: 2300 movs r3, #0 +} + 8006e4e: 4618 mov r0, r3 + 8006e50: 371c adds r7, #28 + 8006e52: 46bd mov sp, r7 + 8006e54: bc80 pop {r7} + 8006e56: 4770 bx lr + +08006e58 : + * @param address new device address to be assigned + * This parameter can be a value from 0 to 255 + * @retval HAL status + */ +HAL_StatusTypeDef USB_SetDevAddress(USB_TypeDef *USBx, uint8_t address) +{ + 8006e58: b480 push {r7} + 8006e5a: b083 sub sp, #12 + 8006e5c: af00 add r7, sp, #0 + 8006e5e: 6078 str r0, [r7, #4] + 8006e60: 460b mov r3, r1 + 8006e62: 70fb strb r3, [r7, #3] + if (address == 0U) + 8006e64: 78fb ldrb r3, [r7, #3] + 8006e66: 2b00 cmp r3, #0 + 8006e68: d103 bne.n 8006e72 + { + /* set device address and enable function */ + USBx->DADDR = (uint16_t)USB_DADDR_EF; + 8006e6a: 687b ldr r3, [r7, #4] + 8006e6c: 2280 movs r2, #128 @ 0x80 + 8006e6e: f8a3 204c strh.w r2, [r3, #76] @ 0x4c + } + + return HAL_OK; + 8006e72: 2300 movs r3, #0 +} + 8006e74: 4618 mov r0, r3 + 8006e76: 370c adds r7, #12 + 8006e78: 46bd mov sp, r7 + 8006e7a: bc80 pop {r7} + 8006e7c: 4770 bx lr + +08006e7e : + * @brief USB_DevConnect Connect the USB device by enabling the pull-up/pull-down + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevConnect(USB_TypeDef *USBx) +{ + 8006e7e: b480 push {r7} + 8006e80: b083 sub sp, #12 + 8006e82: af00 add r7, sp, #0 + 8006e84: 6078 str r0, [r7, #4] + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; + 8006e86: 2300 movs r3, #0 +} + 8006e88: 4618 mov r0, r3 + 8006e8a: 370c adds r7, #12 + 8006e8c: 46bd mov sp, r7 + 8006e8e: bc80 pop {r7} + 8006e90: 4770 bx lr + +08006e92 : + * @brief USB_DevDisconnect Disconnect the USB device by disabling the pull-up/pull-down + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevDisconnect(USB_TypeDef *USBx) +{ + 8006e92: b480 push {r7} + 8006e94: b083 sub sp, #12 + 8006e96: af00 add r7, sp, #0 + 8006e98: 6078 str r0, [r7, #4] + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; + 8006e9a: 2300 movs r3, #0 +} + 8006e9c: 4618 mov r0, r3 + 8006e9e: 370c adds r7, #12 + 8006ea0: 46bd mov sp, r7 + 8006ea2: bc80 pop {r7} + 8006ea4: 4770 bx lr + +08006ea6 : + * @brief USB_ReadInterrupts return the global USB interrupt status + * @param USBx Selected device + * @retval USB Global Interrupt status + */ +uint32_t USB_ReadInterrupts(USB_TypeDef const *USBx) +{ + 8006ea6: b480 push {r7} + 8006ea8: b085 sub sp, #20 + 8006eaa: af00 add r7, sp, #0 + 8006eac: 6078 str r0, [r7, #4] + uint32_t tmpreg; + + tmpreg = USBx->ISTR; + 8006eae: 687b ldr r3, [r7, #4] + 8006eb0: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 8006eb4: b29b uxth r3, r3 + 8006eb6: 60fb str r3, [r7, #12] + return tmpreg; + 8006eb8: 68fb ldr r3, [r7, #12] +} + 8006eba: 4618 mov r0, r3 + 8006ebc: 3714 adds r7, #20 + 8006ebe: 46bd mov sp, r7 + 8006ec0: bc80 pop {r7} + 8006ec2: 4770 bx lr + +08006ec4 : + * @param USBx Selected device + * @param psetup pointer to setup packet + * @retval HAL status + */ +HAL_StatusTypeDef USB_EP0_OutStart(USB_TypeDef *USBx, uint8_t *psetup) +{ + 8006ec4: b480 push {r7} + 8006ec6: b083 sub sp, #12 + 8006ec8: af00 add r7, sp, #0 + 8006eca: 6078 str r0, [r7, #4] + 8006ecc: 6039 str r1, [r7, #0] + UNUSED(psetup); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return HAL_OK; + 8006ece: 2300 movs r3, #0 +} + 8006ed0: 4618 mov r0, r3 + 8006ed2: 370c adds r7, #12 + 8006ed4: 46bd mov sp, r7 + 8006ed6: bc80 pop {r7} + 8006ed8: 4770 bx lr + +08006eda : + * @param wPMABufAddr address into PMA. + * @param wNBytes no. of bytes to be copied. + * @retval None + */ +void USB_WritePMA(USB_TypeDef const *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) +{ + 8006eda: b480 push {r7} + 8006edc: b08b sub sp, #44 @ 0x2c + 8006ede: af00 add r7, sp, #0 + 8006ee0: 60f8 str r0, [r7, #12] + 8006ee2: 60b9 str r1, [r7, #8] + 8006ee4: 4611 mov r1, r2 + 8006ee6: 461a mov r2, r3 + 8006ee8: 460b mov r3, r1 + 8006eea: 80fb strh r3, [r7, #6] + 8006eec: 4613 mov r3, r2 + 8006eee: 80bb strh r3, [r7, #4] + uint32_t n = ((uint32_t)wNBytes + 1U) >> 1; + 8006ef0: 88bb ldrh r3, [r7, #4] + 8006ef2: 3301 adds r3, #1 + 8006ef4: 085b lsrs r3, r3, #1 + 8006ef6: 61bb str r3, [r7, #24] + uint32_t BaseAddr = (uint32_t)USBx; + 8006ef8: 68fb ldr r3, [r7, #12] + 8006efa: 617b str r3, [r7, #20] + uint32_t count; + uint16_t WrVal; + __IO uint16_t *pdwVal; + uint8_t *pBuf = pbUsrBuf; + 8006efc: 68bb ldr r3, [r7, #8] + 8006efe: 61fb str r3, [r7, #28] + + pdwVal = (__IO uint16_t *)(BaseAddr + 0x400U + ((uint32_t)wPMABufAddr * PMA_ACCESS)); + 8006f00: 88fb ldrh r3, [r7, #6] + 8006f02: 005a lsls r2, r3, #1 + 8006f04: 697b ldr r3, [r7, #20] + 8006f06: 4413 add r3, r2 + 8006f08: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8006f0c: 623b str r3, [r7, #32] + + for (count = n; count != 0U; count--) + 8006f0e: 69bb ldr r3, [r7, #24] + 8006f10: 627b str r3, [r7, #36] @ 0x24 + 8006f12: e01f b.n 8006f54 + { + WrVal = pBuf[0]; + 8006f14: 69fb ldr r3, [r7, #28] + 8006f16: 781b ldrb r3, [r3, #0] + 8006f18: 827b strh r3, [r7, #18] + WrVal |= (uint16_t)pBuf[1] << 8; + 8006f1a: 69fb ldr r3, [r7, #28] + 8006f1c: 3301 adds r3, #1 + 8006f1e: 781b ldrb r3, [r3, #0] + 8006f20: b21b sxth r3, r3 + 8006f22: 021b lsls r3, r3, #8 + 8006f24: b21a sxth r2, r3 + 8006f26: f9b7 3012 ldrsh.w r3, [r7, #18] + 8006f2a: 4313 orrs r3, r2 + 8006f2c: b21b sxth r3, r3 + 8006f2e: 827b strh r3, [r7, #18] + *pdwVal = (WrVal & 0xFFFFU); + 8006f30: 6a3b ldr r3, [r7, #32] + 8006f32: 8a7a ldrh r2, [r7, #18] + 8006f34: 801a strh r2, [r3, #0] + pdwVal++; + 8006f36: 6a3b ldr r3, [r7, #32] + 8006f38: 3302 adds r3, #2 + 8006f3a: 623b str r3, [r7, #32] + +#if PMA_ACCESS > 1U + pdwVal++; + 8006f3c: 6a3b ldr r3, [r7, #32] + 8006f3e: 3302 adds r3, #2 + 8006f40: 623b str r3, [r7, #32] +#endif /* PMA_ACCESS */ + + pBuf++; + 8006f42: 69fb ldr r3, [r7, #28] + 8006f44: 3301 adds r3, #1 + 8006f46: 61fb str r3, [r7, #28] + pBuf++; + 8006f48: 69fb ldr r3, [r7, #28] + 8006f4a: 3301 adds r3, #1 + 8006f4c: 61fb str r3, [r7, #28] + for (count = n; count != 0U; count--) + 8006f4e: 6a7b ldr r3, [r7, #36] @ 0x24 + 8006f50: 3b01 subs r3, #1 + 8006f52: 627b str r3, [r7, #36] @ 0x24 + 8006f54: 6a7b ldr r3, [r7, #36] @ 0x24 + 8006f56: 2b00 cmp r3, #0 + 8006f58: d1dc bne.n 8006f14 + } +} + 8006f5a: bf00 nop + 8006f5c: bf00 nop + 8006f5e: 372c adds r7, #44 @ 0x2c + 8006f60: 46bd mov sp, r7 + 8006f62: bc80 pop {r7} + 8006f64: 4770 bx lr + +08006f66 : + * @param wPMABufAddr address into PMA. + * @param wNBytes no. of bytes to be copied. + * @retval None + */ +void USB_ReadPMA(USB_TypeDef const *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) +{ + 8006f66: b480 push {r7} + 8006f68: b08b sub sp, #44 @ 0x2c + 8006f6a: af00 add r7, sp, #0 + 8006f6c: 60f8 str r0, [r7, #12] + 8006f6e: 60b9 str r1, [r7, #8] + 8006f70: 4611 mov r1, r2 + 8006f72: 461a mov r2, r3 + 8006f74: 460b mov r3, r1 + 8006f76: 80fb strh r3, [r7, #6] + 8006f78: 4613 mov r3, r2 + 8006f7a: 80bb strh r3, [r7, #4] + uint32_t n = (uint32_t)wNBytes >> 1; + 8006f7c: 88bb ldrh r3, [r7, #4] + 8006f7e: 085b lsrs r3, r3, #1 + 8006f80: b29b uxth r3, r3 + 8006f82: 61bb str r3, [r7, #24] + uint32_t BaseAddr = (uint32_t)USBx; + 8006f84: 68fb ldr r3, [r7, #12] + 8006f86: 617b str r3, [r7, #20] + uint32_t count; + uint32_t RdVal; + __IO uint16_t *pdwVal; + uint8_t *pBuf = pbUsrBuf; + 8006f88: 68bb ldr r3, [r7, #8] + 8006f8a: 61fb str r3, [r7, #28] + + pdwVal = (__IO uint16_t *)(BaseAddr + 0x400U + ((uint32_t)wPMABufAddr * PMA_ACCESS)); + 8006f8c: 88fb ldrh r3, [r7, #6] + 8006f8e: 005a lsls r2, r3, #1 + 8006f90: 697b ldr r3, [r7, #20] + 8006f92: 4413 add r3, r2 + 8006f94: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8006f98: 623b str r3, [r7, #32] + + for (count = n; count != 0U; count--) + 8006f9a: 69bb ldr r3, [r7, #24] + 8006f9c: 627b str r3, [r7, #36] @ 0x24 + 8006f9e: e01b b.n 8006fd8 + { + RdVal = *(__IO uint16_t *)pdwVal; + 8006fa0: 6a3b ldr r3, [r7, #32] + 8006fa2: 881b ldrh r3, [r3, #0] + 8006fa4: b29b uxth r3, r3 + 8006fa6: 613b str r3, [r7, #16] + pdwVal++; + 8006fa8: 6a3b ldr r3, [r7, #32] + 8006faa: 3302 adds r3, #2 + 8006fac: 623b str r3, [r7, #32] + *pBuf = (uint8_t)((RdVal >> 0) & 0xFFU); + 8006fae: 693b ldr r3, [r7, #16] + 8006fb0: b2da uxtb r2, r3 + 8006fb2: 69fb ldr r3, [r7, #28] + 8006fb4: 701a strb r2, [r3, #0] + pBuf++; + 8006fb6: 69fb ldr r3, [r7, #28] + 8006fb8: 3301 adds r3, #1 + 8006fba: 61fb str r3, [r7, #28] + *pBuf = (uint8_t)((RdVal >> 8) & 0xFFU); + 8006fbc: 693b ldr r3, [r7, #16] + 8006fbe: 0a1b lsrs r3, r3, #8 + 8006fc0: b2da uxtb r2, r3 + 8006fc2: 69fb ldr r3, [r7, #28] + 8006fc4: 701a strb r2, [r3, #0] + pBuf++; + 8006fc6: 69fb ldr r3, [r7, #28] + 8006fc8: 3301 adds r3, #1 + 8006fca: 61fb str r3, [r7, #28] + +#if PMA_ACCESS > 1U + pdwVal++; + 8006fcc: 6a3b ldr r3, [r7, #32] + 8006fce: 3302 adds r3, #2 + 8006fd0: 623b str r3, [r7, #32] + for (count = n; count != 0U; count--) + 8006fd2: 6a7b ldr r3, [r7, #36] @ 0x24 + 8006fd4: 3b01 subs r3, #1 + 8006fd6: 627b str r3, [r7, #36] @ 0x24 + 8006fd8: 6a7b ldr r3, [r7, #36] @ 0x24 + 8006fda: 2b00 cmp r3, #0 + 8006fdc: d1e0 bne.n 8006fa0 +#endif /* PMA_ACCESS */ + } + + if ((wNBytes % 2U) != 0U) + 8006fde: 88bb ldrh r3, [r7, #4] + 8006fe0: f003 0301 and.w r3, r3, #1 + 8006fe4: b29b uxth r3, r3 + 8006fe6: 2b00 cmp r3, #0 + 8006fe8: d007 beq.n 8006ffa + { + RdVal = *pdwVal; + 8006fea: 6a3b ldr r3, [r7, #32] + 8006fec: 881b ldrh r3, [r3, #0] + 8006fee: b29b uxth r3, r3 + 8006ff0: 613b str r3, [r7, #16] + *pBuf = (uint8_t)((RdVal >> 0) & 0xFFU); + 8006ff2: 693b ldr r3, [r7, #16] + 8006ff4: b2da uxtb r2, r3 + 8006ff6: 69fb ldr r3, [r7, #28] + 8006ff8: 701a strb r2, [r3, #0] + } +} + 8006ffa: bf00 nop + 8006ffc: 372c adds r7, #44 @ 0x2c + 8006ffe: 46bd mov sp, r7 + 8007000: bc80 pop {r7} + 8007002: 4770 bx lr + +08007004 : + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_CDC_Init(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + 8007004: b580 push {r7, lr} + 8007006: b084 sub sp, #16 + 8007008: af00 add r7, sp, #0 + 800700a: 6078 str r0, [r7, #4] + 800700c: 460b mov r3, r1 + 800700e: 70fb strb r3, [r7, #3] + uint8_t ret = 0U; + 8007010: 2300 movs r3, #0 + 8007012: 73fb strb r3, [r7, #15] + USBD_CDC_HandleTypeDef *hcdc; + + if (pdev->dev_speed == USBD_SPEED_HIGH) + 8007014: 687b ldr r3, [r7, #4] + 8007016: 7c1b ldrb r3, [r3, #16] + 8007018: 2b00 cmp r3, #0 + 800701a: d115 bne.n 8007048 + { + /* Open EP IN */ + USBD_LL_OpenEP(pdev, CDC_IN_EP, USBD_EP_TYPE_BULK, + 800701c: f44f 7300 mov.w r3, #512 @ 0x200 + 8007020: 2202 movs r2, #2 + 8007022: 2181 movs r1, #129 @ 0x81 + 8007024: 6878 ldr r0, [r7, #4] + 8007026: f001 ff00 bl 8008e2a + CDC_DATA_HS_IN_PACKET_SIZE); + + pdev->ep_in[CDC_IN_EP & 0xFU].is_used = 1U; + 800702a: 687b ldr r3, [r7, #4] + 800702c: 2201 movs r2, #1 + 800702e: 62da str r2, [r3, #44] @ 0x2c + + /* Open EP OUT */ + USBD_LL_OpenEP(pdev, CDC_OUT_EP, USBD_EP_TYPE_BULK, + 8007030: f44f 7300 mov.w r3, #512 @ 0x200 + 8007034: 2202 movs r2, #2 + 8007036: 2101 movs r1, #1 + 8007038: 6878 ldr r0, [r7, #4] + 800703a: f001 fef6 bl 8008e2a + CDC_DATA_HS_OUT_PACKET_SIZE); + + pdev->ep_out[CDC_OUT_EP & 0xFU].is_used = 1U; + 800703e: 687b ldr r3, [r7, #4] + 8007040: 2201 movs r2, #1 + 8007042: f8c3 216c str.w r2, [r3, #364] @ 0x16c + 8007046: e012 b.n 800706e + + } + else + { + /* Open EP IN */ + USBD_LL_OpenEP(pdev, CDC_IN_EP, USBD_EP_TYPE_BULK, + 8007048: 2340 movs r3, #64 @ 0x40 + 800704a: 2202 movs r2, #2 + 800704c: 2181 movs r1, #129 @ 0x81 + 800704e: 6878 ldr r0, [r7, #4] + 8007050: f001 feeb bl 8008e2a + CDC_DATA_FS_IN_PACKET_SIZE); + + pdev->ep_in[CDC_IN_EP & 0xFU].is_used = 1U; + 8007054: 687b ldr r3, [r7, #4] + 8007056: 2201 movs r2, #1 + 8007058: 62da str r2, [r3, #44] @ 0x2c + + /* Open EP OUT */ + USBD_LL_OpenEP(pdev, CDC_OUT_EP, USBD_EP_TYPE_BULK, + 800705a: 2340 movs r3, #64 @ 0x40 + 800705c: 2202 movs r2, #2 + 800705e: 2101 movs r1, #1 + 8007060: 6878 ldr r0, [r7, #4] + 8007062: f001 fee2 bl 8008e2a + CDC_DATA_FS_OUT_PACKET_SIZE); + + pdev->ep_out[CDC_OUT_EP & 0xFU].is_used = 1U; + 8007066: 687b ldr r3, [r7, #4] + 8007068: 2201 movs r2, #1 + 800706a: f8c3 216c str.w r2, [r3, #364] @ 0x16c + } + /* Open Command IN EP */ + USBD_LL_OpenEP(pdev, CDC_CMD_EP, USBD_EP_TYPE_INTR, CDC_CMD_PACKET_SIZE); + 800706e: 2308 movs r3, #8 + 8007070: 2203 movs r2, #3 + 8007072: 2182 movs r1, #130 @ 0x82 + 8007074: 6878 ldr r0, [r7, #4] + 8007076: f001 fed8 bl 8008e2a + pdev->ep_in[CDC_CMD_EP & 0xFU].is_used = 1U; + 800707a: 687b ldr r3, [r7, #4] + 800707c: 2201 movs r2, #1 + 800707e: 641a str r2, [r3, #64] @ 0x40 + + pdev->pClassData = USBD_malloc(sizeof(USBD_CDC_HandleTypeDef)); + 8007080: f44f 7007 mov.w r0, #540 @ 0x21c + 8007084: f001 fff8 bl 8009078 + 8007088: 4602 mov r2, r0 + 800708a: 687b ldr r3, [r7, #4] + 800708c: f8c3 22b8 str.w r2, [r3, #696] @ 0x2b8 + + if (pdev->pClassData == NULL) + 8007090: 687b ldr r3, [r7, #4] + 8007092: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8007096: 2b00 cmp r3, #0 + 8007098: d102 bne.n 80070a0 + { + ret = 1U; + 800709a: 2301 movs r3, #1 + 800709c: 73fb strb r3, [r7, #15] + 800709e: e026 b.n 80070ee + } + else + { + hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 80070a0: 687b ldr r3, [r7, #4] + 80070a2: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 80070a6: 60bb str r3, [r7, #8] + + /* Init physical Interface components */ + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Init(); + 80070a8: 687b ldr r3, [r7, #4] + 80070aa: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc + 80070ae: 681b ldr r3, [r3, #0] + 80070b0: 4798 blx r3 + + /* Init Xfer states */ + hcdc->TxState = 0U; + 80070b2: 68bb ldr r3, [r7, #8] + 80070b4: 2200 movs r2, #0 + 80070b6: f8c3 2214 str.w r2, [r3, #532] @ 0x214 + hcdc->RxState = 0U; + 80070ba: 68bb ldr r3, [r7, #8] + 80070bc: 2200 movs r2, #0 + 80070be: f8c3 2218 str.w r2, [r3, #536] @ 0x218 + + if (pdev->dev_speed == USBD_SPEED_HIGH) + 80070c2: 687b ldr r3, [r7, #4] + 80070c4: 7c1b ldrb r3, [r3, #16] + 80070c6: 2b00 cmp r3, #0 + 80070c8: d109 bne.n 80070de + { + /* Prepare Out endpoint to receive next packet */ + USBD_LL_PrepareReceive(pdev, CDC_OUT_EP, hcdc->RxBuffer, + 80070ca: 68bb ldr r3, [r7, #8] + 80070cc: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 + 80070d0: f44f 7300 mov.w r3, #512 @ 0x200 + 80070d4: 2101 movs r1, #1 + 80070d6: 6878 ldr r0, [r7, #4] + 80070d8: f001 ff97 bl 800900a + 80070dc: e007 b.n 80070ee + CDC_DATA_HS_OUT_PACKET_SIZE); + } + else + { + /* Prepare Out endpoint to receive next packet */ + USBD_LL_PrepareReceive(pdev, CDC_OUT_EP, hcdc->RxBuffer, + 80070de: 68bb ldr r3, [r7, #8] + 80070e0: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 + 80070e4: 2340 movs r3, #64 @ 0x40 + 80070e6: 2101 movs r1, #1 + 80070e8: 6878 ldr r0, [r7, #4] + 80070ea: f001 ff8e bl 800900a + CDC_DATA_FS_OUT_PACKET_SIZE); + } + } + return ret; + 80070ee: 7bfb ldrb r3, [r7, #15] +} + 80070f0: 4618 mov r0, r3 + 80070f2: 3710 adds r7, #16 + 80070f4: 46bd mov sp, r7 + 80070f6: bd80 pop {r7, pc} + +080070f8 : + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_CDC_DeInit(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + 80070f8: b580 push {r7, lr} + 80070fa: b084 sub sp, #16 + 80070fc: af00 add r7, sp, #0 + 80070fe: 6078 str r0, [r7, #4] + 8007100: 460b mov r3, r1 + 8007102: 70fb strb r3, [r7, #3] + uint8_t ret = 0U; + 8007104: 2300 movs r3, #0 + 8007106: 73fb strb r3, [r7, #15] + + /* Close EP IN */ + USBD_LL_CloseEP(pdev, CDC_IN_EP); + 8007108: 2181 movs r1, #129 @ 0x81 + 800710a: 6878 ldr r0, [r7, #4] + 800710c: f001 feb3 bl 8008e76 + pdev->ep_in[CDC_IN_EP & 0xFU].is_used = 0U; + 8007110: 687b ldr r3, [r7, #4] + 8007112: 2200 movs r2, #0 + 8007114: 62da str r2, [r3, #44] @ 0x2c + + /* Close EP OUT */ + USBD_LL_CloseEP(pdev, CDC_OUT_EP); + 8007116: 2101 movs r1, #1 + 8007118: 6878 ldr r0, [r7, #4] + 800711a: f001 feac bl 8008e76 + pdev->ep_out[CDC_OUT_EP & 0xFU].is_used = 0U; + 800711e: 687b ldr r3, [r7, #4] + 8007120: 2200 movs r2, #0 + 8007122: f8c3 216c str.w r2, [r3, #364] @ 0x16c + + /* Close Command IN EP */ + USBD_LL_CloseEP(pdev, CDC_CMD_EP); + 8007126: 2182 movs r1, #130 @ 0x82 + 8007128: 6878 ldr r0, [r7, #4] + 800712a: f001 fea4 bl 8008e76 + pdev->ep_in[CDC_CMD_EP & 0xFU].is_used = 0U; + 800712e: 687b ldr r3, [r7, #4] + 8007130: 2200 movs r2, #0 + 8007132: 641a str r2, [r3, #64] @ 0x40 + + /* DeInit physical Interface components */ + if (pdev->pClassData != NULL) + 8007134: 687b ldr r3, [r7, #4] + 8007136: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 800713a: 2b00 cmp r3, #0 + 800713c: d00e beq.n 800715c + { + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->DeInit(); + 800713e: 687b ldr r3, [r7, #4] + 8007140: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc + 8007144: 685b ldr r3, [r3, #4] + 8007146: 4798 blx r3 + USBD_free(pdev->pClassData); + 8007148: 687b ldr r3, [r7, #4] + 800714a: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 800714e: 4618 mov r0, r3 + 8007150: f001 ff9e bl 8009090 + pdev->pClassData = NULL; + 8007154: 687b ldr r3, [r7, #4] + 8007156: 2200 movs r2, #0 + 8007158: f8c3 22b8 str.w r2, [r3, #696] @ 0x2b8 + } + + return ret; + 800715c: 7bfb ldrb r3, [r7, #15] +} + 800715e: 4618 mov r0, r3 + 8007160: 3710 adds r7, #16 + 8007162: 46bd mov sp, r7 + 8007164: bd80 pop {r7, pc} + +08007166 : + * @param req: usb requests + * @retval status + */ +static uint8_t USBD_CDC_Setup(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8007166: b580 push {r7, lr} + 8007168: b086 sub sp, #24 + 800716a: af00 add r7, sp, #0 + 800716c: 6078 str r0, [r7, #4] + 800716e: 6039 str r1, [r7, #0] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 8007170: 687b ldr r3, [r7, #4] + 8007172: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8007176: 613b str r3, [r7, #16] + uint8_t ifalt = 0U; + 8007178: 2300 movs r3, #0 + 800717a: 73fb strb r3, [r7, #15] + uint16_t status_info = 0U; + 800717c: 2300 movs r3, #0 + 800717e: 81bb strh r3, [r7, #12] + uint8_t ret = USBD_OK; + 8007180: 2300 movs r3, #0 + 8007182: 75fb strb r3, [r7, #23] + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + 8007184: 683b ldr r3, [r7, #0] + 8007186: 781b ldrb r3, [r3, #0] + 8007188: f003 0360 and.w r3, r3, #96 @ 0x60 + 800718c: 2b00 cmp r3, #0 + 800718e: d039 beq.n 8007204 + 8007190: 2b20 cmp r3, #32 + 8007192: d17f bne.n 8007294 + { + case USB_REQ_TYPE_CLASS : + if (req->wLength) + 8007194: 683b ldr r3, [r7, #0] + 8007196: 88db ldrh r3, [r3, #6] + 8007198: 2b00 cmp r3, #0 + 800719a: d029 beq.n 80071f0 + { + if (req->bmRequest & 0x80U) + 800719c: 683b ldr r3, [r7, #0] + 800719e: 781b ldrb r3, [r3, #0] + 80071a0: b25b sxtb r3, r3 + 80071a2: 2b00 cmp r3, #0 + 80071a4: da11 bge.n 80071ca + { + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, + 80071a6: 687b ldr r3, [r7, #4] + 80071a8: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc + 80071ac: 689b ldr r3, [r3, #8] + 80071ae: 683a ldr r2, [r7, #0] + 80071b0: 7850 ldrb r0, [r2, #1] + (uint8_t *)(void *)hcdc->data, + 80071b2: 6939 ldr r1, [r7, #16] + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, + 80071b4: 683a ldr r2, [r7, #0] + 80071b6: 88d2 ldrh r2, [r2, #6] + 80071b8: 4798 blx r3 + req->wLength); + + USBD_CtlSendData(pdev, (uint8_t *)(void *)hcdc->data, req->wLength); + 80071ba: 6939 ldr r1, [r7, #16] + 80071bc: 683b ldr r3, [r7, #0] + 80071be: 88db ldrh r3, [r3, #6] + 80071c0: 461a mov r2, r3 + 80071c2: 6878 ldr r0, [r7, #4] + 80071c4: f001 fa06 bl 80085d4 + else + { + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, + (uint8_t *)(void *)req, 0U); + } + break; + 80071c8: e06b b.n 80072a2 + hcdc->CmdOpCode = req->bRequest; + 80071ca: 683b ldr r3, [r7, #0] + 80071cc: 785a ldrb r2, [r3, #1] + 80071ce: 693b ldr r3, [r7, #16] + 80071d0: f883 2200 strb.w r2, [r3, #512] @ 0x200 + hcdc->CmdLength = (uint8_t)req->wLength; + 80071d4: 683b ldr r3, [r7, #0] + 80071d6: 88db ldrh r3, [r3, #6] + 80071d8: b2da uxtb r2, r3 + 80071da: 693b ldr r3, [r7, #16] + 80071dc: f883 2201 strb.w r2, [r3, #513] @ 0x201 + USBD_CtlPrepareRx(pdev, (uint8_t *)(void *)hcdc->data, req->wLength); + 80071e0: 6939 ldr r1, [r7, #16] + 80071e2: 683b ldr r3, [r7, #0] + 80071e4: 88db ldrh r3, [r3, #6] + 80071e6: 461a mov r2, r3 + 80071e8: 6878 ldr r0, [r7, #4] + 80071ea: f001 fa21 bl 8008630 + break; + 80071ee: e058 b.n 80072a2 + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, + 80071f0: 687b ldr r3, [r7, #4] + 80071f2: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc + 80071f6: 689b ldr r3, [r3, #8] + 80071f8: 683a ldr r2, [r7, #0] + 80071fa: 7850 ldrb r0, [r2, #1] + 80071fc: 2200 movs r2, #0 + 80071fe: 6839 ldr r1, [r7, #0] + 8007200: 4798 blx r3 + break; + 8007202: e04e b.n 80072a2 + + case USB_REQ_TYPE_STANDARD: + switch (req->bRequest) + 8007204: 683b ldr r3, [r7, #0] + 8007206: 785b ldrb r3, [r3, #1] + 8007208: 2b0b cmp r3, #11 + 800720a: d02e beq.n 800726a + 800720c: 2b0b cmp r3, #11 + 800720e: dc38 bgt.n 8007282 + 8007210: 2b00 cmp r3, #0 + 8007212: d002 beq.n 800721a + 8007214: 2b0a cmp r3, #10 + 8007216: d014 beq.n 8007242 + 8007218: e033 b.n 8007282 + { + case USB_REQ_GET_STATUS: + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 800721a: 687b ldr r3, [r7, #4] + 800721c: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007220: 2b03 cmp r3, #3 + 8007222: d107 bne.n 8007234 + { + USBD_CtlSendData(pdev, (uint8_t *)(void *)&status_info, 2U); + 8007224: f107 030c add.w r3, r7, #12 + 8007228: 2202 movs r2, #2 + 800722a: 4619 mov r1, r3 + 800722c: 6878 ldr r0, [r7, #4] + 800722e: f001 f9d1 bl 80085d4 + else + { + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + } + break; + 8007232: e02e b.n 8007292 + USBD_CtlError(pdev, req); + 8007234: 6839 ldr r1, [r7, #0] + 8007236: 6878 ldr r0, [r7, #4] + 8007238: f001 f962 bl 8008500 + ret = USBD_FAIL; + 800723c: 2302 movs r3, #2 + 800723e: 75fb strb r3, [r7, #23] + break; + 8007240: e027 b.n 8007292 + + case USB_REQ_GET_INTERFACE: + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 8007242: 687b ldr r3, [r7, #4] + 8007244: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007248: 2b03 cmp r3, #3 + 800724a: d107 bne.n 800725c + { + USBD_CtlSendData(pdev, &ifalt, 1U); + 800724c: f107 030f add.w r3, r7, #15 + 8007250: 2201 movs r2, #1 + 8007252: 4619 mov r1, r3 + 8007254: 6878 ldr r0, [r7, #4] + 8007256: f001 f9bd bl 80085d4 + else + { + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + } + break; + 800725a: e01a b.n 8007292 + USBD_CtlError(pdev, req); + 800725c: 6839 ldr r1, [r7, #0] + 800725e: 6878 ldr r0, [r7, #4] + 8007260: f001 f94e bl 8008500 + ret = USBD_FAIL; + 8007264: 2302 movs r3, #2 + 8007266: 75fb strb r3, [r7, #23] + break; + 8007268: e013 b.n 8007292 + + case USB_REQ_SET_INTERFACE: + if (pdev->dev_state != USBD_STATE_CONFIGURED) + 800726a: 687b ldr r3, [r7, #4] + 800726c: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007270: 2b03 cmp r3, #3 + 8007272: d00d beq.n 8007290 + { + USBD_CtlError(pdev, req); + 8007274: 6839 ldr r1, [r7, #0] + 8007276: 6878 ldr r0, [r7, #4] + 8007278: f001 f942 bl 8008500 + ret = USBD_FAIL; + 800727c: 2302 movs r3, #2 + 800727e: 75fb strb r3, [r7, #23] + } + break; + 8007280: e006 b.n 8007290 + + default: + USBD_CtlError(pdev, req); + 8007282: 6839 ldr r1, [r7, #0] + 8007284: 6878 ldr r0, [r7, #4] + 8007286: f001 f93b bl 8008500 + ret = USBD_FAIL; + 800728a: 2302 movs r3, #2 + 800728c: 75fb strb r3, [r7, #23] + break; + 800728e: e000 b.n 8007292 + break; + 8007290: bf00 nop + } + break; + 8007292: e006 b.n 80072a2 + + default: + USBD_CtlError(pdev, req); + 8007294: 6839 ldr r1, [r7, #0] + 8007296: 6878 ldr r0, [r7, #4] + 8007298: f001 f932 bl 8008500 + ret = USBD_FAIL; + 800729c: 2302 movs r3, #2 + 800729e: 75fb strb r3, [r7, #23] + break; + 80072a0: bf00 nop + } + + return ret; + 80072a2: 7dfb ldrb r3, [r7, #23] +} + 80072a4: 4618 mov r0, r3 + 80072a6: 3718 adds r7, #24 + 80072a8: 46bd mov sp, r7 + 80072aa: bd80 pop {r7, pc} + +080072ac : + * @param pdev: device instance + * @param epnum: endpoint number + * @retval status + */ +static uint8_t USBD_CDC_DataIn(USBD_HandleTypeDef *pdev, uint8_t epnum) +{ + 80072ac: b580 push {r7, lr} + 80072ae: b084 sub sp, #16 + 80072b0: af00 add r7, sp, #0 + 80072b2: 6078 str r0, [r7, #4] + 80072b4: 460b mov r3, r1 + 80072b6: 70fb strb r3, [r7, #3] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *)pdev->pClassData; + 80072b8: 687b ldr r3, [r7, #4] + 80072ba: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 80072be: 60fb str r3, [r7, #12] + PCD_HandleTypeDef *hpcd = pdev->pData; + 80072c0: 687b ldr r3, [r7, #4] + 80072c2: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 80072c6: 60bb str r3, [r7, #8] + + if (pdev->pClassData != NULL) + 80072c8: 687b ldr r3, [r7, #4] + 80072ca: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 80072ce: 2b00 cmp r3, #0 + 80072d0: d03a beq.n 8007348 + { + if ((pdev->ep_in[epnum].total_length > 0U) && ((pdev->ep_in[epnum].total_length % hpcd->IN_ep[epnum].maxpacket) == 0U)) + 80072d2: 78fa ldrb r2, [r7, #3] + 80072d4: 6879 ldr r1, [r7, #4] + 80072d6: 4613 mov r3, r2 + 80072d8: 009b lsls r3, r3, #2 + 80072da: 4413 add r3, r2 + 80072dc: 009b lsls r3, r3, #2 + 80072de: 440b add r3, r1 + 80072e0: 331c adds r3, #28 + 80072e2: 681b ldr r3, [r3, #0] + 80072e4: 2b00 cmp r3, #0 + 80072e6: d029 beq.n 800733c + 80072e8: 78fa ldrb r2, [r7, #3] + 80072ea: 6879 ldr r1, [r7, #4] + 80072ec: 4613 mov r3, r2 + 80072ee: 009b lsls r3, r3, #2 + 80072f0: 4413 add r3, r2 + 80072f2: 009b lsls r3, r3, #2 + 80072f4: 440b add r3, r1 + 80072f6: 331c adds r3, #28 + 80072f8: 681a ldr r2, [r3, #0] + 80072fa: 78f9 ldrb r1, [r7, #3] + 80072fc: 68b8 ldr r0, [r7, #8] + 80072fe: 460b mov r3, r1 + 8007300: 009b lsls r3, r3, #2 + 8007302: 440b add r3, r1 + 8007304: 00db lsls r3, r3, #3 + 8007306: 4403 add r3, r0 + 8007308: 3320 adds r3, #32 + 800730a: 681b ldr r3, [r3, #0] + 800730c: fbb2 f1f3 udiv r1, r2, r3 + 8007310: fb01 f303 mul.w r3, r1, r3 + 8007314: 1ad3 subs r3, r2, r3 + 8007316: 2b00 cmp r3, #0 + 8007318: d110 bne.n 800733c + { + /* Update the packet total length */ + pdev->ep_in[epnum].total_length = 0U; + 800731a: 78fa ldrb r2, [r7, #3] + 800731c: 6879 ldr r1, [r7, #4] + 800731e: 4613 mov r3, r2 + 8007320: 009b lsls r3, r3, #2 + 8007322: 4413 add r3, r2 + 8007324: 009b lsls r3, r3, #2 + 8007326: 440b add r3, r1 + 8007328: 331c adds r3, #28 + 800732a: 2200 movs r2, #0 + 800732c: 601a str r2, [r3, #0] + + /* Send ZLP */ + USBD_LL_Transmit(pdev, epnum, NULL, 0U); + 800732e: 78f9 ldrb r1, [r7, #3] + 8007330: 2300 movs r3, #0 + 8007332: 2200 movs r2, #0 + 8007334: 6878 ldr r0, [r7, #4] + 8007336: f001 fe45 bl 8008fc4 + 800733a: e003 b.n 8007344 + } + else + { + hcdc->TxState = 0U; + 800733c: 68fb ldr r3, [r7, #12] + 800733e: 2200 movs r2, #0 + 8007340: f8c3 2214 str.w r2, [r3, #532] @ 0x214 + } + return USBD_OK; + 8007344: 2300 movs r3, #0 + 8007346: e000 b.n 800734a + } + else + { + return USBD_FAIL; + 8007348: 2302 movs r3, #2 + } +} + 800734a: 4618 mov r0, r3 + 800734c: 3710 adds r7, #16 + 800734e: 46bd mov sp, r7 + 8007350: bd80 pop {r7, pc} + +08007352 : + * @param pdev: device instance + * @param epnum: endpoint number + * @retval status + */ +static uint8_t USBD_CDC_DataOut(USBD_HandleTypeDef *pdev, uint8_t epnum) +{ + 8007352: b580 push {r7, lr} + 8007354: b084 sub sp, #16 + 8007356: af00 add r7, sp, #0 + 8007358: 6078 str r0, [r7, #4] + 800735a: 460b mov r3, r1 + 800735c: 70fb strb r3, [r7, #3] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 800735e: 687b ldr r3, [r7, #4] + 8007360: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8007364: 60fb str r3, [r7, #12] + + /* Get the received data length */ + hcdc->RxLength = USBD_LL_GetRxDataSize(pdev, epnum); + 8007366: 78fb ldrb r3, [r7, #3] + 8007368: 4619 mov r1, r3 + 800736a: 6878 ldr r0, [r7, #4] + 800736c: f001 fe70 bl 8009050 + 8007370: 4602 mov r2, r0 + 8007372: 68fb ldr r3, [r7, #12] + 8007374: f8c3 220c str.w r2, [r3, #524] @ 0x20c + + /* USB data will be immediately processed, this allow next USB traffic being + NAKed till the end of the application Xfer */ + if (pdev->pClassData != NULL) + 8007378: 687b ldr r3, [r7, #4] + 800737a: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 800737e: 2b00 cmp r3, #0 + 8007380: d00d beq.n 800739e + { + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Receive(hcdc->RxBuffer, &hcdc->RxLength); + 8007382: 687b ldr r3, [r7, #4] + 8007384: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc + 8007388: 68db ldr r3, [r3, #12] + 800738a: 68fa ldr r2, [r7, #12] + 800738c: f8d2 0204 ldr.w r0, [r2, #516] @ 0x204 + 8007390: 68fa ldr r2, [r7, #12] + 8007392: f502 7203 add.w r2, r2, #524 @ 0x20c + 8007396: 4611 mov r1, r2 + 8007398: 4798 blx r3 + + return USBD_OK; + 800739a: 2300 movs r3, #0 + 800739c: e000 b.n 80073a0 + } + else + { + return USBD_FAIL; + 800739e: 2302 movs r3, #2 + } +} + 80073a0: 4618 mov r0, r3 + 80073a2: 3710 adds r7, #16 + 80073a4: 46bd mov sp, r7 + 80073a6: bd80 pop {r7, pc} + +080073a8 : + * Handle EP0 Rx Ready event + * @param pdev: device instance + * @retval status + */ +static uint8_t USBD_CDC_EP0_RxReady(USBD_HandleTypeDef *pdev) +{ + 80073a8: b580 push {r7, lr} + 80073aa: b084 sub sp, #16 + 80073ac: af00 add r7, sp, #0 + 80073ae: 6078 str r0, [r7, #4] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 80073b0: 687b ldr r3, [r7, #4] + 80073b2: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 80073b6: 60fb str r3, [r7, #12] + + if ((pdev->pUserData != NULL) && (hcdc->CmdOpCode != 0xFFU)) + 80073b8: 687b ldr r3, [r7, #4] + 80073ba: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc + 80073be: 2b00 cmp r3, #0 + 80073c0: d014 beq.n 80073ec + 80073c2: 68fb ldr r3, [r7, #12] + 80073c4: f893 3200 ldrb.w r3, [r3, #512] @ 0x200 + 80073c8: 2bff cmp r3, #255 @ 0xff + 80073ca: d00f beq.n 80073ec + { + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(hcdc->CmdOpCode, + 80073cc: 687b ldr r3, [r7, #4] + 80073ce: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc + 80073d2: 689b ldr r3, [r3, #8] + 80073d4: 68fa ldr r2, [r7, #12] + 80073d6: f892 0200 ldrb.w r0, [r2, #512] @ 0x200 + (uint8_t *)(void *)hcdc->data, + 80073da: 68f9 ldr r1, [r7, #12] + (uint16_t)hcdc->CmdLength); + 80073dc: 68fa ldr r2, [r7, #12] + 80073de: f892 2201 ldrb.w r2, [r2, #513] @ 0x201 + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(hcdc->CmdOpCode, + 80073e2: 4798 blx r3 + hcdc->CmdOpCode = 0xFFU; + 80073e4: 68fb ldr r3, [r7, #12] + 80073e6: 22ff movs r2, #255 @ 0xff + 80073e8: f883 2200 strb.w r2, [r3, #512] @ 0x200 + + } + return USBD_OK; + 80073ec: 2300 movs r3, #0 +} + 80073ee: 4618 mov r0, r3 + 80073f0: 3710 adds r7, #16 + 80073f2: 46bd mov sp, r7 + 80073f4: bd80 pop {r7, pc} + ... + +080073f8 : + * @param speed : current device speed + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +static uint8_t *USBD_CDC_GetFSCfgDesc(uint16_t *length) +{ + 80073f8: b480 push {r7} + 80073fa: b083 sub sp, #12 + 80073fc: af00 add r7, sp, #0 + 80073fe: 6078 str r0, [r7, #4] + *length = sizeof(USBD_CDC_CfgFSDesc); + 8007400: 687b ldr r3, [r7, #4] + 8007402: 2243 movs r2, #67 @ 0x43 + 8007404: 801a strh r2, [r3, #0] + return USBD_CDC_CfgFSDesc; + 8007406: 4b03 ldr r3, [pc, #12] @ (8007414 ) +} + 8007408: 4618 mov r0, r3 + 800740a: 370c adds r7, #12 + 800740c: 46bd mov sp, r7 + 800740e: bc80 pop {r7} + 8007410: 4770 bx lr + 8007412: bf00 nop + 8007414: 20000094 .word 0x20000094 + +08007418 : + * @param speed : current device speed + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +static uint8_t *USBD_CDC_GetHSCfgDesc(uint16_t *length) +{ + 8007418: b480 push {r7} + 800741a: b083 sub sp, #12 + 800741c: af00 add r7, sp, #0 + 800741e: 6078 str r0, [r7, #4] + *length = sizeof(USBD_CDC_CfgHSDesc); + 8007420: 687b ldr r3, [r7, #4] + 8007422: 2243 movs r2, #67 @ 0x43 + 8007424: 801a strh r2, [r3, #0] + return USBD_CDC_CfgHSDesc; + 8007426: 4b03 ldr r3, [pc, #12] @ (8007434 ) +} + 8007428: 4618 mov r0, r3 + 800742a: 370c adds r7, #12 + 800742c: 46bd mov sp, r7 + 800742e: bc80 pop {r7} + 8007430: 4770 bx lr + 8007432: bf00 nop + 8007434: 20000050 .word 0x20000050 + +08007438 : + * @param speed : current device speed + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +static uint8_t *USBD_CDC_GetOtherSpeedCfgDesc(uint16_t *length) +{ + 8007438: b480 push {r7} + 800743a: b083 sub sp, #12 + 800743c: af00 add r7, sp, #0 + 800743e: 6078 str r0, [r7, #4] + *length = sizeof(USBD_CDC_OtherSpeedCfgDesc); + 8007440: 687b ldr r3, [r7, #4] + 8007442: 2243 movs r2, #67 @ 0x43 + 8007444: 801a strh r2, [r3, #0] + return USBD_CDC_OtherSpeedCfgDesc; + 8007446: 4b03 ldr r3, [pc, #12] @ (8007454 ) +} + 8007448: 4618 mov r0, r3 + 800744a: 370c adds r7, #12 + 800744c: 46bd mov sp, r7 + 800744e: bc80 pop {r7} + 8007450: 4770 bx lr + 8007452: bf00 nop + 8007454: 200000d8 .word 0x200000d8 + +08007458 : +* return Device Qualifier descriptor +* @param length : pointer data length +* @retval pointer to descriptor buffer +*/ +uint8_t *USBD_CDC_GetDeviceQualifierDescriptor(uint16_t *length) +{ + 8007458: b480 push {r7} + 800745a: b083 sub sp, #12 + 800745c: af00 add r7, sp, #0 + 800745e: 6078 str r0, [r7, #4] + *length = sizeof(USBD_CDC_DeviceQualifierDesc); + 8007460: 687b ldr r3, [r7, #4] + 8007462: 220a movs r2, #10 + 8007464: 801a strh r2, [r3, #0] + return USBD_CDC_DeviceQualifierDesc; + 8007466: 4b03 ldr r3, [pc, #12] @ (8007474 ) +} + 8007468: 4618 mov r0, r3 + 800746a: 370c adds r7, #12 + 800746c: 46bd mov sp, r7 + 800746e: bc80 pop {r7} + 8007470: 4770 bx lr + 8007472: bf00 nop + 8007474: 2000000c .word 0x2000000c + +08007478 : + * @param fops: CD Interface callback + * @retval status + */ +uint8_t USBD_CDC_RegisterInterface(USBD_HandleTypeDef *pdev, + USBD_CDC_ItfTypeDef *fops) +{ + 8007478: b480 push {r7} + 800747a: b085 sub sp, #20 + 800747c: af00 add r7, sp, #0 + 800747e: 6078 str r0, [r7, #4] + 8007480: 6039 str r1, [r7, #0] + uint8_t ret = USBD_FAIL; + 8007482: 2302 movs r3, #2 + 8007484: 73fb strb r3, [r7, #15] + + if (fops != NULL) + 8007486: 683b ldr r3, [r7, #0] + 8007488: 2b00 cmp r3, #0 + 800748a: d005 beq.n 8007498 + { + pdev->pUserData = fops; + 800748c: 687b ldr r3, [r7, #4] + 800748e: 683a ldr r2, [r7, #0] + 8007490: f8c3 22bc str.w r2, [r3, #700] @ 0x2bc + ret = USBD_OK; + 8007494: 2300 movs r3, #0 + 8007496: 73fb strb r3, [r7, #15] + } + + return ret; + 8007498: 7bfb ldrb r3, [r7, #15] +} + 800749a: 4618 mov r0, r3 + 800749c: 3714 adds r7, #20 + 800749e: 46bd mov sp, r7 + 80074a0: bc80 pop {r7} + 80074a2: 4770 bx lr + +080074a4 : + * @retval status + */ +uint8_t USBD_CDC_SetTxBuffer(USBD_HandleTypeDef *pdev, + uint8_t *pbuff, + uint16_t length) +{ + 80074a4: b480 push {r7} + 80074a6: b087 sub sp, #28 + 80074a8: af00 add r7, sp, #0 + 80074aa: 60f8 str r0, [r7, #12] + 80074ac: 60b9 str r1, [r7, #8] + 80074ae: 4613 mov r3, r2 + 80074b0: 80fb strh r3, [r7, #6] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 80074b2: 68fb ldr r3, [r7, #12] + 80074b4: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 80074b8: 617b str r3, [r7, #20] + + hcdc->TxBuffer = pbuff; + 80074ba: 697b ldr r3, [r7, #20] + 80074bc: 68ba ldr r2, [r7, #8] + 80074be: f8c3 2208 str.w r2, [r3, #520] @ 0x208 + hcdc->TxLength = length; + 80074c2: 88fa ldrh r2, [r7, #6] + 80074c4: 697b ldr r3, [r7, #20] + 80074c6: f8c3 2210 str.w r2, [r3, #528] @ 0x210 + + return USBD_OK; + 80074ca: 2300 movs r3, #0 +} + 80074cc: 4618 mov r0, r3 + 80074ce: 371c adds r7, #28 + 80074d0: 46bd mov sp, r7 + 80074d2: bc80 pop {r7} + 80074d4: 4770 bx lr + +080074d6 : + * @param pbuff: Rx Buffer + * @retval status + */ +uint8_t USBD_CDC_SetRxBuffer(USBD_HandleTypeDef *pdev, + uint8_t *pbuff) +{ + 80074d6: b480 push {r7} + 80074d8: b085 sub sp, #20 + 80074da: af00 add r7, sp, #0 + 80074dc: 6078 str r0, [r7, #4] + 80074de: 6039 str r1, [r7, #0] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 80074e0: 687b ldr r3, [r7, #4] + 80074e2: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 80074e6: 60fb str r3, [r7, #12] + + hcdc->RxBuffer = pbuff; + 80074e8: 68fb ldr r3, [r7, #12] + 80074ea: 683a ldr r2, [r7, #0] + 80074ec: f8c3 2204 str.w r2, [r3, #516] @ 0x204 + + return USBD_OK; + 80074f0: 2300 movs r3, #0 +} + 80074f2: 4618 mov r0, r3 + 80074f4: 3714 adds r7, #20 + 80074f6: 46bd mov sp, r7 + 80074f8: bc80 pop {r7} + 80074fa: 4770 bx lr + +080074fc : + * Transmit packet on IN endpoint + * @param pdev: device instance + * @retval status + */ +uint8_t USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev) +{ + 80074fc: b580 push {r7, lr} + 80074fe: b084 sub sp, #16 + 8007500: af00 add r7, sp, #0 + 8007502: 6078 str r0, [r7, #4] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 8007504: 687b ldr r3, [r7, #4] + 8007506: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 800750a: 60fb str r3, [r7, #12] + + if (pdev->pClassData != NULL) + 800750c: 687b ldr r3, [r7, #4] + 800750e: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8007512: 2b00 cmp r3, #0 + 8007514: d01c beq.n 8007550 + { + if (hcdc->TxState == 0U) + 8007516: 68fb ldr r3, [r7, #12] + 8007518: f8d3 3214 ldr.w r3, [r3, #532] @ 0x214 + 800751c: 2b00 cmp r3, #0 + 800751e: d115 bne.n 800754c + { + /* Tx Transfer in progress */ + hcdc->TxState = 1U; + 8007520: 68fb ldr r3, [r7, #12] + 8007522: 2201 movs r2, #1 + 8007524: f8c3 2214 str.w r2, [r3, #532] @ 0x214 + + /* Update the packet total length */ + pdev->ep_in[CDC_IN_EP & 0xFU].total_length = hcdc->TxLength; + 8007528: 68fb ldr r3, [r7, #12] + 800752a: f8d3 2210 ldr.w r2, [r3, #528] @ 0x210 + 800752e: 687b ldr r3, [r7, #4] + 8007530: 631a str r2, [r3, #48] @ 0x30 + + /* Transmit next packet */ + USBD_LL_Transmit(pdev, CDC_IN_EP, hcdc->TxBuffer, + 8007532: 68fb ldr r3, [r7, #12] + 8007534: f8d3 2208 ldr.w r2, [r3, #520] @ 0x208 + (uint16_t)hcdc->TxLength); + 8007538: 68fb ldr r3, [r7, #12] + 800753a: f8d3 3210 ldr.w r3, [r3, #528] @ 0x210 + USBD_LL_Transmit(pdev, CDC_IN_EP, hcdc->TxBuffer, + 800753e: b29b uxth r3, r3 + 8007540: 2181 movs r1, #129 @ 0x81 + 8007542: 6878 ldr r0, [r7, #4] + 8007544: f001 fd3e bl 8008fc4 + + return USBD_OK; + 8007548: 2300 movs r3, #0 + 800754a: e002 b.n 8007552 + } + else + { + return USBD_BUSY; + 800754c: 2301 movs r3, #1 + 800754e: e000 b.n 8007552 + } + } + else + { + return USBD_FAIL; + 8007550: 2302 movs r3, #2 + } +} + 8007552: 4618 mov r0, r3 + 8007554: 3710 adds r7, #16 + 8007556: 46bd mov sp, r7 + 8007558: bd80 pop {r7, pc} + +0800755a : + * prepare OUT Endpoint for reception + * @param pdev: device instance + * @retval status + */ +uint8_t USBD_CDC_ReceivePacket(USBD_HandleTypeDef *pdev) +{ + 800755a: b580 push {r7, lr} + 800755c: b084 sub sp, #16 + 800755e: af00 add r7, sp, #0 + 8007560: 6078 str r0, [r7, #4] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 8007562: 687b ldr r3, [r7, #4] + 8007564: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8007568: 60fb str r3, [r7, #12] + + /* Suspend or Resume USB Out process */ + if (pdev->pClassData != NULL) + 800756a: 687b ldr r3, [r7, #4] + 800756c: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8007570: 2b00 cmp r3, #0 + 8007572: d017 beq.n 80075a4 + { + if (pdev->dev_speed == USBD_SPEED_HIGH) + 8007574: 687b ldr r3, [r7, #4] + 8007576: 7c1b ldrb r3, [r3, #16] + 8007578: 2b00 cmp r3, #0 + 800757a: d109 bne.n 8007590 + { + /* Prepare Out endpoint to receive next packet */ + USBD_LL_PrepareReceive(pdev, + 800757c: 68fb ldr r3, [r7, #12] + 800757e: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 + 8007582: f44f 7300 mov.w r3, #512 @ 0x200 + 8007586: 2101 movs r1, #1 + 8007588: 6878 ldr r0, [r7, #4] + 800758a: f001 fd3e bl 800900a + 800758e: e007 b.n 80075a0 + CDC_DATA_HS_OUT_PACKET_SIZE); + } + else + { + /* Prepare Out endpoint to receive next packet */ + USBD_LL_PrepareReceive(pdev, + 8007590: 68fb ldr r3, [r7, #12] + 8007592: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 + 8007596: 2340 movs r3, #64 @ 0x40 + 8007598: 2101 movs r1, #1 + 800759a: 6878 ldr r0, [r7, #4] + 800759c: f001 fd35 bl 800900a + CDC_OUT_EP, + hcdc->RxBuffer, + CDC_DATA_FS_OUT_PACKET_SIZE); + } + return USBD_OK; + 80075a0: 2300 movs r3, #0 + 80075a2: e000 b.n 80075a6 + } + else + { + return USBD_FAIL; + 80075a4: 2302 movs r3, #2 + } +} + 80075a6: 4618 mov r0, r3 + 80075a8: 3710 adds r7, #16 + 80075aa: 46bd mov sp, r7 + 80075ac: bd80 pop {r7, pc} + +080075ae : +* @param id: Low level core index +* @retval None +*/ +USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, + USBD_DescriptorsTypeDef *pdesc, uint8_t id) +{ + 80075ae: b580 push {r7, lr} + 80075b0: b084 sub sp, #16 + 80075b2: af00 add r7, sp, #0 + 80075b4: 60f8 str r0, [r7, #12] + 80075b6: 60b9 str r1, [r7, #8] + 80075b8: 4613 mov r3, r2 + 80075ba: 71fb strb r3, [r7, #7] + /* Check whether the USB Host handle is valid */ + if (pdev == NULL) + 80075bc: 68fb ldr r3, [r7, #12] + 80075be: 2b00 cmp r3, #0 + 80075c0: d101 bne.n 80075c6 + { +#if (USBD_DEBUG_LEVEL > 1U) + USBD_ErrLog("Invalid Device handle"); +#endif + return USBD_FAIL; + 80075c2: 2302 movs r3, #2 + 80075c4: e01a b.n 80075fc + } + + /* Unlink previous class*/ + if (pdev->pClass != NULL) + 80075c6: 68fb ldr r3, [r7, #12] + 80075c8: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 80075cc: 2b00 cmp r3, #0 + 80075ce: d003 beq.n 80075d8 + { + pdev->pClass = NULL; + 80075d0: 68fb ldr r3, [r7, #12] + 80075d2: 2200 movs r2, #0 + 80075d4: f8c3 22b4 str.w r2, [r3, #692] @ 0x2b4 + } + + /* Assign USBD Descriptors */ + if (pdesc != NULL) + 80075d8: 68bb ldr r3, [r7, #8] + 80075da: 2b00 cmp r3, #0 + 80075dc: d003 beq.n 80075e6 + { + pdev->pDesc = pdesc; + 80075de: 68fb ldr r3, [r7, #12] + 80075e0: 68ba ldr r2, [r7, #8] + 80075e2: f8c3 22b0 str.w r2, [r3, #688] @ 0x2b0 + } + + /* Set Device initial State */ + pdev->dev_state = USBD_STATE_DEFAULT; + 80075e6: 68fb ldr r3, [r7, #12] + 80075e8: 2201 movs r2, #1 + 80075ea: f883 229c strb.w r2, [r3, #668] @ 0x29c + pdev->id = id; + 80075ee: 68fb ldr r3, [r7, #12] + 80075f0: 79fa ldrb r2, [r7, #7] + 80075f2: 701a strb r2, [r3, #0] + /* Initialize low level driver */ + USBD_LL_Init(pdev); + 80075f4: 68f8 ldr r0, [r7, #12] + 80075f6: f001 fba3 bl 8008d40 + + return USBD_OK; + 80075fa: 2300 movs r3, #0 +} + 80075fc: 4618 mov r0, r3 + 80075fe: 3710 adds r7, #16 + 8007600: 46bd mov sp, r7 + 8007602: bd80 pop {r7, pc} + +08007604 : + * @param pDevice : Device Handle + * @param pclass: Class handle + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass) +{ + 8007604: b480 push {r7} + 8007606: b085 sub sp, #20 + 8007608: af00 add r7, sp, #0 + 800760a: 6078 str r0, [r7, #4] + 800760c: 6039 str r1, [r7, #0] + USBD_StatusTypeDef status = USBD_OK; + 800760e: 2300 movs r3, #0 + 8007610: 73fb strb r3, [r7, #15] + if (pclass != NULL) + 8007612: 683b ldr r3, [r7, #0] + 8007614: 2b00 cmp r3, #0 + 8007616: d006 beq.n 8007626 + { + /* link the class to the USB Device handle */ + pdev->pClass = pclass; + 8007618: 687b ldr r3, [r7, #4] + 800761a: 683a ldr r2, [r7, #0] + 800761c: f8c3 22b4 str.w r2, [r3, #692] @ 0x2b4 + status = USBD_OK; + 8007620: 2300 movs r3, #0 + 8007622: 73fb strb r3, [r7, #15] + 8007624: e001 b.n 800762a + else + { +#if (USBD_DEBUG_LEVEL > 1U) + USBD_ErrLog("Invalid Class handle"); +#endif + status = USBD_FAIL; + 8007626: 2302 movs r3, #2 + 8007628: 73fb strb r3, [r7, #15] + } + + return status; + 800762a: 7bfb ldrb r3, [r7, #15] +} + 800762c: 4618 mov r0, r3 + 800762e: 3714 adds r7, #20 + 8007630: 46bd mov sp, r7 + 8007632: bc80 pop {r7} + 8007634: 4770 bx lr + +08007636 : + * Start the USB Device Core. + * @param pdev: Device Handle + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev) +{ + 8007636: b580 push {r7, lr} + 8007638: b082 sub sp, #8 + 800763a: af00 add r7, sp, #0 + 800763c: 6078 str r0, [r7, #4] + /* Start the low level driver */ + USBD_LL_Start(pdev); + 800763e: 6878 ldr r0, [r7, #4] + 8007640: f001 fbd8 bl 8008df4 + + return USBD_OK; + 8007644: 2300 movs r3, #0 +} + 8007646: 4618 mov r0, r3 + 8007648: 3708 adds r7, #8 + 800764a: 46bd mov sp, r7 + 800764c: bd80 pop {r7, pc} + +0800764e : +* Launch test mode process +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev) +{ + 800764e: b480 push {r7} + 8007650: b083 sub sp, #12 + 8007652: af00 add r7, sp, #0 + 8007654: 6078 str r0, [r7, #4] + /* Prevent unused argument compilation warning */ + UNUSED(pdev); + + return USBD_OK; + 8007656: 2300 movs r3, #0 +} + 8007658: 4618 mov r0, r3 + 800765a: 370c adds r7, #12 + 800765c: 46bd mov sp, r7 + 800765e: bc80 pop {r7} + 8007660: 4770 bx lr + +08007662 : +* @param cfgidx: configuration index +* @retval status +*/ + +USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + 8007662: b580 push {r7, lr} + 8007664: b084 sub sp, #16 + 8007666: af00 add r7, sp, #0 + 8007668: 6078 str r0, [r7, #4] + 800766a: 460b mov r3, r1 + 800766c: 70fb strb r3, [r7, #3] + USBD_StatusTypeDef ret = USBD_FAIL; + 800766e: 2302 movs r3, #2 + 8007670: 73fb strb r3, [r7, #15] + + if (pdev->pClass != NULL) + 8007672: 687b ldr r3, [r7, #4] + 8007674: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007678: 2b00 cmp r3, #0 + 800767a: d00c beq.n 8007696 + { + /* Set configuration and Start the Class*/ + if (pdev->pClass->Init(pdev, cfgidx) == 0U) + 800767c: 687b ldr r3, [r7, #4] + 800767e: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007682: 681b ldr r3, [r3, #0] + 8007684: 78fa ldrb r2, [r7, #3] + 8007686: 4611 mov r1, r2 + 8007688: 6878 ldr r0, [r7, #4] + 800768a: 4798 blx r3 + 800768c: 4603 mov r3, r0 + 800768e: 2b00 cmp r3, #0 + 8007690: d101 bne.n 8007696 + { + ret = USBD_OK; + 8007692: 2300 movs r3, #0 + 8007694: 73fb strb r3, [r7, #15] + } + } + + return ret; + 8007696: 7bfb ldrb r3, [r7, #15] +} + 8007698: 4618 mov r0, r3 + 800769a: 3710 adds r7, #16 + 800769c: 46bd mov sp, r7 + 800769e: bd80 pop {r7, pc} + +080076a0 : +* @param pdev: device instance +* @param cfgidx: configuration index +* @retval status: USBD_StatusTypeDef +*/ +USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + 80076a0: b580 push {r7, lr} + 80076a2: b082 sub sp, #8 + 80076a4: af00 add r7, sp, #0 + 80076a6: 6078 str r0, [r7, #4] + 80076a8: 460b mov r3, r1 + 80076aa: 70fb strb r3, [r7, #3] + /* Clear configuration and De-initialize the Class process*/ + pdev->pClass->DeInit(pdev, cfgidx); + 80076ac: 687b ldr r3, [r7, #4] + 80076ae: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 80076b2: 685b ldr r3, [r3, #4] + 80076b4: 78fa ldrb r2, [r7, #3] + 80076b6: 4611 mov r1, r2 + 80076b8: 6878 ldr r0, [r7, #4] + 80076ba: 4798 blx r3 + + return USBD_OK; + 80076bc: 2300 movs r3, #0 +} + 80076be: 4618 mov r0, r3 + 80076c0: 3708 adds r7, #8 + 80076c2: 46bd mov sp, r7 + 80076c4: bd80 pop {r7, pc} + +080076c6 : +* Handle the setup stage +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup) +{ + 80076c6: b580 push {r7, lr} + 80076c8: b082 sub sp, #8 + 80076ca: af00 add r7, sp, #0 + 80076cc: 6078 str r0, [r7, #4] + 80076ce: 6039 str r1, [r7, #0] + USBD_ParseSetupRequest(&pdev->request, psetup); + 80076d0: 687b ldr r3, [r7, #4] + 80076d2: f503 732a add.w r3, r3, #680 @ 0x2a8 + 80076d6: 6839 ldr r1, [r7, #0] + 80076d8: 4618 mov r0, r3 + 80076da: f000 fed8 bl 800848e + + pdev->ep0_state = USBD_EP0_SETUP; + 80076de: 687b ldr r3, [r7, #4] + 80076e0: 2201 movs r2, #1 + 80076e2: f8c3 2294 str.w r2, [r3, #660] @ 0x294 + + pdev->ep0_data_len = pdev->request.wLength; + 80076e6: 687b ldr r3, [r7, #4] + 80076e8: f8b3 32ae ldrh.w r3, [r3, #686] @ 0x2ae + 80076ec: 461a mov r2, r3 + 80076ee: 687b ldr r3, [r7, #4] + 80076f0: f8c3 2298 str.w r2, [r3, #664] @ 0x298 + + switch (pdev->request.bmRequest & 0x1FU) + 80076f4: 687b ldr r3, [r7, #4] + 80076f6: f893 32a8 ldrb.w r3, [r3, #680] @ 0x2a8 + 80076fa: f003 031f and.w r3, r3, #31 + 80076fe: 2b02 cmp r3, #2 + 8007700: d016 beq.n 8007730 + 8007702: 2b02 cmp r3, #2 + 8007704: d81c bhi.n 8007740 + 8007706: 2b00 cmp r3, #0 + 8007708: d002 beq.n 8007710 + 800770a: 2b01 cmp r3, #1 + 800770c: d008 beq.n 8007720 + 800770e: e017 b.n 8007740 + { + case USB_REQ_RECIPIENT_DEVICE: + USBD_StdDevReq(pdev, &pdev->request); + 8007710: 687b ldr r3, [r7, #4] + 8007712: f503 732a add.w r3, r3, #680 @ 0x2a8 + 8007716: 4619 mov r1, r3 + 8007718: 6878 ldr r0, [r7, #4] + 800771a: f000 f9cb bl 8007ab4 + break; + 800771e: e01a b.n 8007756 + + case USB_REQ_RECIPIENT_INTERFACE: + USBD_StdItfReq(pdev, &pdev->request); + 8007720: 687b ldr r3, [r7, #4] + 8007722: f503 732a add.w r3, r3, #680 @ 0x2a8 + 8007726: 4619 mov r1, r3 + 8007728: 6878 ldr r0, [r7, #4] + 800772a: f000 fa2d bl 8007b88 + break; + 800772e: e012 b.n 8007756 + + case USB_REQ_RECIPIENT_ENDPOINT: + USBD_StdEPReq(pdev, &pdev->request); + 8007730: 687b ldr r3, [r7, #4] + 8007732: f503 732a add.w r3, r3, #680 @ 0x2a8 + 8007736: 4619 mov r1, r3 + 8007738: 6878 ldr r0, [r7, #4] + 800773a: f000 fa6d bl 8007c18 + break; + 800773e: e00a b.n 8007756 + + default: + USBD_LL_StallEP(pdev, (pdev->request.bmRequest & 0x80U)); + 8007740: 687b ldr r3, [r7, #4] + 8007742: f893 32a8 ldrb.w r3, [r3, #680] @ 0x2a8 + 8007746: f023 037f bic.w r3, r3, #127 @ 0x7f + 800774a: b2db uxtb r3, r3 + 800774c: 4619 mov r1, r3 + 800774e: 6878 ldr r0, [r7, #4] + 8007750: f001 fbb0 bl 8008eb4 + break; + 8007754: bf00 nop + } + + return USBD_OK; + 8007756: 2300 movs r3, #0 +} + 8007758: 4618 mov r0, r3 + 800775a: 3708 adds r7, #8 + 800775c: 46bd mov sp, r7 + 800775e: bd80 pop {r7, pc} + +08007760 : +* @param epnum: endpoint index +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, + uint8_t epnum, uint8_t *pdata) +{ + 8007760: b580 push {r7, lr} + 8007762: b086 sub sp, #24 + 8007764: af00 add r7, sp, #0 + 8007766: 60f8 str r0, [r7, #12] + 8007768: 460b mov r3, r1 + 800776a: 607a str r2, [r7, #4] + 800776c: 72fb strb r3, [r7, #11] + USBD_EndpointTypeDef *pep; + + if (epnum == 0U) + 800776e: 7afb ldrb r3, [r7, #11] + 8007770: 2b00 cmp r3, #0 + 8007772: d14b bne.n 800780c + { + pep = &pdev->ep_out[0]; + 8007774: 68fb ldr r3, [r7, #12] + 8007776: f503 73aa add.w r3, r3, #340 @ 0x154 + 800777a: 617b str r3, [r7, #20] + + if (pdev->ep0_state == USBD_EP0_DATA_OUT) + 800777c: 68fb ldr r3, [r7, #12] + 800777e: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 + 8007782: 2b03 cmp r3, #3 + 8007784: d134 bne.n 80077f0 + { + if (pep->rem_length > pep->maxpacket) + 8007786: 697b ldr r3, [r7, #20] + 8007788: 68da ldr r2, [r3, #12] + 800778a: 697b ldr r3, [r7, #20] + 800778c: 691b ldr r3, [r3, #16] + 800778e: 429a cmp r2, r3 + 8007790: d919 bls.n 80077c6 + { + pep->rem_length -= pep->maxpacket; + 8007792: 697b ldr r3, [r7, #20] + 8007794: 68da ldr r2, [r3, #12] + 8007796: 697b ldr r3, [r7, #20] + 8007798: 691b ldr r3, [r3, #16] + 800779a: 1ad2 subs r2, r2, r3 + 800779c: 697b ldr r3, [r7, #20] + 800779e: 60da str r2, [r3, #12] + + USBD_CtlContinueRx(pdev, pdata, + (uint16_t)MIN(pep->rem_length, pep->maxpacket)); + 80077a0: 697b ldr r3, [r7, #20] + 80077a2: 68da ldr r2, [r3, #12] + 80077a4: 697b ldr r3, [r7, #20] + 80077a6: 691b ldr r3, [r3, #16] + USBD_CtlContinueRx(pdev, pdata, + 80077a8: 429a cmp r2, r3 + 80077aa: d203 bcs.n 80077b4 + (uint16_t)MIN(pep->rem_length, pep->maxpacket)); + 80077ac: 697b ldr r3, [r7, #20] + 80077ae: 68db ldr r3, [r3, #12] + USBD_CtlContinueRx(pdev, pdata, + 80077b0: b29b uxth r3, r3 + 80077b2: e002 b.n 80077ba + (uint16_t)MIN(pep->rem_length, pep->maxpacket)); + 80077b4: 697b ldr r3, [r7, #20] + 80077b6: 691b ldr r3, [r3, #16] + USBD_CtlContinueRx(pdev, pdata, + 80077b8: b29b uxth r3, r3 + 80077ba: 461a mov r2, r3 + 80077bc: 6879 ldr r1, [r7, #4] + 80077be: 68f8 ldr r0, [r7, #12] + 80077c0: f000 ff54 bl 800866c + 80077c4: e038 b.n 8007838 + } + else + { + if ((pdev->pClass->EP0_RxReady != NULL) && + 80077c6: 68fb ldr r3, [r7, #12] + 80077c8: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 80077cc: 691b ldr r3, [r3, #16] + 80077ce: 2b00 cmp r3, #0 + 80077d0: d00a beq.n 80077e8 + (pdev->dev_state == USBD_STATE_CONFIGURED)) + 80077d2: 68fb ldr r3, [r7, #12] + 80077d4: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + if ((pdev->pClass->EP0_RxReady != NULL) && + 80077d8: 2b03 cmp r3, #3 + 80077da: d105 bne.n 80077e8 + { + pdev->pClass->EP0_RxReady(pdev); + 80077dc: 68fb ldr r3, [r7, #12] + 80077de: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 80077e2: 691b ldr r3, [r3, #16] + 80077e4: 68f8 ldr r0, [r7, #12] + 80077e6: 4798 blx r3 + } + USBD_CtlSendStatus(pdev); + 80077e8: 68f8 ldr r0, [r7, #12] + 80077ea: f000 ff51 bl 8008690 + 80077ee: e023 b.n 8007838 + } + } + else + { + if (pdev->ep0_state == USBD_EP0_STATUS_OUT) + 80077f0: 68fb ldr r3, [r7, #12] + 80077f2: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 + 80077f6: 2b05 cmp r3, #5 + 80077f8: d11e bne.n 8007838 + { + /* + * STATUS PHASE completed, update ep0_state to idle + */ + pdev->ep0_state = USBD_EP0_IDLE; + 80077fa: 68fb ldr r3, [r7, #12] + 80077fc: 2200 movs r2, #0 + 80077fe: f8c3 2294 str.w r2, [r3, #660] @ 0x294 + USBD_LL_StallEP(pdev, 0U); + 8007802: 2100 movs r1, #0 + 8007804: 68f8 ldr r0, [r7, #12] + 8007806: f001 fb55 bl 8008eb4 + 800780a: e015 b.n 8007838 + } + } + } + else if ((pdev->pClass->DataOut != NULL) && + 800780c: 68fb ldr r3, [r7, #12] + 800780e: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007812: 699b ldr r3, [r3, #24] + 8007814: 2b00 cmp r3, #0 + 8007816: d00d beq.n 8007834 + (pdev->dev_state == USBD_STATE_CONFIGURED)) + 8007818: 68fb ldr r3, [r7, #12] + 800781a: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + else if ((pdev->pClass->DataOut != NULL) && + 800781e: 2b03 cmp r3, #3 + 8007820: d108 bne.n 8007834 + { + pdev->pClass->DataOut(pdev, epnum); + 8007822: 68fb ldr r3, [r7, #12] + 8007824: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007828: 699b ldr r3, [r3, #24] + 800782a: 7afa ldrb r2, [r7, #11] + 800782c: 4611 mov r1, r2 + 800782e: 68f8 ldr r0, [r7, #12] + 8007830: 4798 blx r3 + 8007832: e001 b.n 8007838 + } + else + { + /* should never be in this condition */ + return USBD_FAIL; + 8007834: 2302 movs r3, #2 + 8007836: e000 b.n 800783a + } + + return USBD_OK; + 8007838: 2300 movs r3, #0 +} + 800783a: 4618 mov r0, r3 + 800783c: 3718 adds r7, #24 + 800783e: 46bd mov sp, r7 + 8007840: bd80 pop {r7, pc} + +08007842 : +* @param epnum: endpoint index +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, + uint8_t epnum, uint8_t *pdata) +{ + 8007842: b580 push {r7, lr} + 8007844: b086 sub sp, #24 + 8007846: af00 add r7, sp, #0 + 8007848: 60f8 str r0, [r7, #12] + 800784a: 460b mov r3, r1 + 800784c: 607a str r2, [r7, #4] + 800784e: 72fb strb r3, [r7, #11] + USBD_EndpointTypeDef *pep; + + if (epnum == 0U) + 8007850: 7afb ldrb r3, [r7, #11] + 8007852: 2b00 cmp r3, #0 + 8007854: d17f bne.n 8007956 + { + pep = &pdev->ep_in[0]; + 8007856: 68fb ldr r3, [r7, #12] + 8007858: 3314 adds r3, #20 + 800785a: 617b str r3, [r7, #20] + + if (pdev->ep0_state == USBD_EP0_DATA_IN) + 800785c: 68fb ldr r3, [r7, #12] + 800785e: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 + 8007862: 2b02 cmp r3, #2 + 8007864: d15c bne.n 8007920 + { + if (pep->rem_length > pep->maxpacket) + 8007866: 697b ldr r3, [r7, #20] + 8007868: 68da ldr r2, [r3, #12] + 800786a: 697b ldr r3, [r7, #20] + 800786c: 691b ldr r3, [r3, #16] + 800786e: 429a cmp r2, r3 + 8007870: d915 bls.n 800789e + { + pep->rem_length -= pep->maxpacket; + 8007872: 697b ldr r3, [r7, #20] + 8007874: 68da ldr r2, [r3, #12] + 8007876: 697b ldr r3, [r7, #20] + 8007878: 691b ldr r3, [r3, #16] + 800787a: 1ad2 subs r2, r2, r3 + 800787c: 697b ldr r3, [r7, #20] + 800787e: 60da str r2, [r3, #12] + + USBD_CtlContinueSendData(pdev, pdata, (uint16_t)pep->rem_length); + 8007880: 697b ldr r3, [r7, #20] + 8007882: 68db ldr r3, [r3, #12] + 8007884: b29b uxth r3, r3 + 8007886: 461a mov r2, r3 + 8007888: 6879 ldr r1, [r7, #4] + 800788a: 68f8 ldr r0, [r7, #12] + 800788c: f000 febe bl 800860c + + /* Prepare endpoint for premature end of transfer */ + USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); + 8007890: 2300 movs r3, #0 + 8007892: 2200 movs r2, #0 + 8007894: 2100 movs r1, #0 + 8007896: 68f8 ldr r0, [r7, #12] + 8007898: f001 fbb7 bl 800900a + 800789c: e04e b.n 800793c + } + else + { + /* last packet is MPS multiple, so send ZLP packet */ + if ((pep->total_length % pep->maxpacket == 0U) && + 800789e: 697b ldr r3, [r7, #20] + 80078a0: 689b ldr r3, [r3, #8] + 80078a2: 697a ldr r2, [r7, #20] + 80078a4: 6912 ldr r2, [r2, #16] + 80078a6: fbb3 f1f2 udiv r1, r3, r2 + 80078aa: fb01 f202 mul.w r2, r1, r2 + 80078ae: 1a9b subs r3, r3, r2 + 80078b0: 2b00 cmp r3, #0 + 80078b2: d11c bne.n 80078ee + (pep->total_length >= pep->maxpacket) && + 80078b4: 697b ldr r3, [r7, #20] + 80078b6: 689a ldr r2, [r3, #8] + 80078b8: 697b ldr r3, [r7, #20] + 80078ba: 691b ldr r3, [r3, #16] + if ((pep->total_length % pep->maxpacket == 0U) && + 80078bc: 429a cmp r2, r3 + 80078be: d316 bcc.n 80078ee + (pep->total_length < pdev->ep0_data_len)) + 80078c0: 697b ldr r3, [r7, #20] + 80078c2: 689a ldr r2, [r3, #8] + 80078c4: 68fb ldr r3, [r7, #12] + 80078c6: f8d3 3298 ldr.w r3, [r3, #664] @ 0x298 + (pep->total_length >= pep->maxpacket) && + 80078ca: 429a cmp r2, r3 + 80078cc: d20f bcs.n 80078ee + { + USBD_CtlContinueSendData(pdev, NULL, 0U); + 80078ce: 2200 movs r2, #0 + 80078d0: 2100 movs r1, #0 + 80078d2: 68f8 ldr r0, [r7, #12] + 80078d4: f000 fe9a bl 800860c + pdev->ep0_data_len = 0U; + 80078d8: 68fb ldr r3, [r7, #12] + 80078da: 2200 movs r2, #0 + 80078dc: f8c3 2298 str.w r2, [r3, #664] @ 0x298 + + /* Prepare endpoint for premature end of transfer */ + USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); + 80078e0: 2300 movs r3, #0 + 80078e2: 2200 movs r2, #0 + 80078e4: 2100 movs r1, #0 + 80078e6: 68f8 ldr r0, [r7, #12] + 80078e8: f001 fb8f bl 800900a + 80078ec: e026 b.n 800793c + } + else + { + if ((pdev->pClass->EP0_TxSent != NULL) && + 80078ee: 68fb ldr r3, [r7, #12] + 80078f0: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 80078f4: 68db ldr r3, [r3, #12] + 80078f6: 2b00 cmp r3, #0 + 80078f8: d00a beq.n 8007910 + (pdev->dev_state == USBD_STATE_CONFIGURED)) + 80078fa: 68fb ldr r3, [r7, #12] + 80078fc: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + if ((pdev->pClass->EP0_TxSent != NULL) && + 8007900: 2b03 cmp r3, #3 + 8007902: d105 bne.n 8007910 + { + pdev->pClass->EP0_TxSent(pdev); + 8007904: 68fb ldr r3, [r7, #12] + 8007906: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 800790a: 68db ldr r3, [r3, #12] + 800790c: 68f8 ldr r0, [r7, #12] + 800790e: 4798 blx r3 + } + USBD_LL_StallEP(pdev, 0x80U); + 8007910: 2180 movs r1, #128 @ 0x80 + 8007912: 68f8 ldr r0, [r7, #12] + 8007914: f001 face bl 8008eb4 + USBD_CtlReceiveStatus(pdev); + 8007918: 68f8 ldr r0, [r7, #12] + 800791a: f000 fecc bl 80086b6 + 800791e: e00d b.n 800793c + } + } + } + else + { + if ((pdev->ep0_state == USBD_EP0_STATUS_IN) || + 8007920: 68fb ldr r3, [r7, #12] + 8007922: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 + 8007926: 2b04 cmp r3, #4 + 8007928: d004 beq.n 8007934 + (pdev->ep0_state == USBD_EP0_IDLE)) + 800792a: 68fb ldr r3, [r7, #12] + 800792c: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 + if ((pdev->ep0_state == USBD_EP0_STATUS_IN) || + 8007930: 2b00 cmp r3, #0 + 8007932: d103 bne.n 800793c + { + USBD_LL_StallEP(pdev, 0x80U); + 8007934: 2180 movs r1, #128 @ 0x80 + 8007936: 68f8 ldr r0, [r7, #12] + 8007938: f001 fabc bl 8008eb4 + } + } + + if (pdev->dev_test_mode == 1U) + 800793c: 68fb ldr r3, [r7, #12] + 800793e: f893 32a0 ldrb.w r3, [r3, #672] @ 0x2a0 + 8007942: 2b01 cmp r3, #1 + 8007944: d11d bne.n 8007982 + { + USBD_RunTestMode(pdev); + 8007946: 68f8 ldr r0, [r7, #12] + 8007948: f7ff fe81 bl 800764e + pdev->dev_test_mode = 0U; + 800794c: 68fb ldr r3, [r7, #12] + 800794e: 2200 movs r2, #0 + 8007950: f883 22a0 strb.w r2, [r3, #672] @ 0x2a0 + 8007954: e015 b.n 8007982 + } + } + else if ((pdev->pClass->DataIn != NULL) && + 8007956: 68fb ldr r3, [r7, #12] + 8007958: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 800795c: 695b ldr r3, [r3, #20] + 800795e: 2b00 cmp r3, #0 + 8007960: d00d beq.n 800797e + (pdev->dev_state == USBD_STATE_CONFIGURED)) + 8007962: 68fb ldr r3, [r7, #12] + 8007964: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + else if ((pdev->pClass->DataIn != NULL) && + 8007968: 2b03 cmp r3, #3 + 800796a: d108 bne.n 800797e + { + pdev->pClass->DataIn(pdev, epnum); + 800796c: 68fb ldr r3, [r7, #12] + 800796e: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007972: 695b ldr r3, [r3, #20] + 8007974: 7afa ldrb r2, [r7, #11] + 8007976: 4611 mov r1, r2 + 8007978: 68f8 ldr r0, [r7, #12] + 800797a: 4798 blx r3 + 800797c: e001 b.n 8007982 + } + else + { + /* should never be in this condition */ + return USBD_FAIL; + 800797e: 2302 movs r3, #2 + 8007980: e000 b.n 8007984 + } + + return USBD_OK; + 8007982: 2300 movs r3, #0 +} + 8007984: 4618 mov r0, r3 + 8007986: 3718 adds r7, #24 + 8007988: 46bd mov sp, r7 + 800798a: bd80 pop {r7, pc} + +0800798c : +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev) +{ + 800798c: b580 push {r7, lr} + 800798e: b082 sub sp, #8 + 8007990: af00 add r7, sp, #0 + 8007992: 6078 str r0, [r7, #4] + /* Open EP0 OUT */ + USBD_LL_OpenEP(pdev, 0x00U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); + 8007994: 2340 movs r3, #64 @ 0x40 + 8007996: 2200 movs r2, #0 + 8007998: 2100 movs r1, #0 + 800799a: 6878 ldr r0, [r7, #4] + 800799c: f001 fa45 bl 8008e2a + pdev->ep_out[0x00U & 0xFU].is_used = 1U; + 80079a0: 687b ldr r3, [r7, #4] + 80079a2: 2201 movs r2, #1 + 80079a4: f8c3 2158 str.w r2, [r3, #344] @ 0x158 + + pdev->ep_out[0].maxpacket = USB_MAX_EP0_SIZE; + 80079a8: 687b ldr r3, [r7, #4] + 80079aa: 2240 movs r2, #64 @ 0x40 + 80079ac: f8c3 2164 str.w r2, [r3, #356] @ 0x164 + + /* Open EP0 IN */ + USBD_LL_OpenEP(pdev, 0x80U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); + 80079b0: 2340 movs r3, #64 @ 0x40 + 80079b2: 2200 movs r2, #0 + 80079b4: 2180 movs r1, #128 @ 0x80 + 80079b6: 6878 ldr r0, [r7, #4] + 80079b8: f001 fa37 bl 8008e2a + pdev->ep_in[0x80U & 0xFU].is_used = 1U; + 80079bc: 687b ldr r3, [r7, #4] + 80079be: 2201 movs r2, #1 + 80079c0: 619a str r2, [r3, #24] + + pdev->ep_in[0].maxpacket = USB_MAX_EP0_SIZE; + 80079c2: 687b ldr r3, [r7, #4] + 80079c4: 2240 movs r2, #64 @ 0x40 + 80079c6: 625a str r2, [r3, #36] @ 0x24 + + /* Upon Reset call user call back */ + pdev->dev_state = USBD_STATE_DEFAULT; + 80079c8: 687b ldr r3, [r7, #4] + 80079ca: 2201 movs r2, #1 + 80079cc: f883 229c strb.w r2, [r3, #668] @ 0x29c + pdev->ep0_state = USBD_EP0_IDLE; + 80079d0: 687b ldr r3, [r7, #4] + 80079d2: 2200 movs r2, #0 + 80079d4: f8c3 2294 str.w r2, [r3, #660] @ 0x294 + pdev->dev_config = 0U; + 80079d8: 687b ldr r3, [r7, #4] + 80079da: 2200 movs r2, #0 + 80079dc: 605a str r2, [r3, #4] + pdev->dev_remote_wakeup = 0U; + 80079de: 687b ldr r3, [r7, #4] + 80079e0: 2200 movs r2, #0 + 80079e2: f8c3 22a4 str.w r2, [r3, #676] @ 0x2a4 + + if (pdev->pClassData) + 80079e6: 687b ldr r3, [r7, #4] + 80079e8: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 80079ec: 2b00 cmp r3, #0 + 80079ee: d009 beq.n 8007a04 + { + pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config); + 80079f0: 687b ldr r3, [r7, #4] + 80079f2: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 80079f6: 685b ldr r3, [r3, #4] + 80079f8: 687a ldr r2, [r7, #4] + 80079fa: 6852 ldr r2, [r2, #4] + 80079fc: b2d2 uxtb r2, r2 + 80079fe: 4611 mov r1, r2 + 8007a00: 6878 ldr r0, [r7, #4] + 8007a02: 4798 blx r3 + } + + return USBD_OK; + 8007a04: 2300 movs r3, #0 +} + 8007a06: 4618 mov r0, r3 + 8007a08: 3708 adds r7, #8 + 8007a0a: 46bd mov sp, r7 + 8007a0c: bd80 pop {r7, pc} + +08007a0e : +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, + USBD_SpeedTypeDef speed) +{ + 8007a0e: b480 push {r7} + 8007a10: b083 sub sp, #12 + 8007a12: af00 add r7, sp, #0 + 8007a14: 6078 str r0, [r7, #4] + 8007a16: 460b mov r3, r1 + 8007a18: 70fb strb r3, [r7, #3] + pdev->dev_speed = speed; + 8007a1a: 687b ldr r3, [r7, #4] + 8007a1c: 78fa ldrb r2, [r7, #3] + 8007a1e: 741a strb r2, [r3, #16] + + return USBD_OK; + 8007a20: 2300 movs r3, #0 +} + 8007a22: 4618 mov r0, r3 + 8007a24: 370c adds r7, #12 + 8007a26: 46bd mov sp, r7 + 8007a28: bc80 pop {r7} + 8007a2a: 4770 bx lr + +08007a2c : +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev) +{ + 8007a2c: b480 push {r7} + 8007a2e: b083 sub sp, #12 + 8007a30: af00 add r7, sp, #0 + 8007a32: 6078 str r0, [r7, #4] + pdev->dev_old_state = pdev->dev_state; + 8007a34: 687b ldr r3, [r7, #4] + 8007a36: f893 229c ldrb.w r2, [r3, #668] @ 0x29c + 8007a3a: 687b ldr r3, [r7, #4] + 8007a3c: f883 229d strb.w r2, [r3, #669] @ 0x29d + pdev->dev_state = USBD_STATE_SUSPENDED; + 8007a40: 687b ldr r3, [r7, #4] + 8007a42: 2204 movs r2, #4 + 8007a44: f883 229c strb.w r2, [r3, #668] @ 0x29c + + return USBD_OK; + 8007a48: 2300 movs r3, #0 +} + 8007a4a: 4618 mov r0, r3 + 8007a4c: 370c adds r7, #12 + 8007a4e: 46bd mov sp, r7 + 8007a50: bc80 pop {r7} + 8007a52: 4770 bx lr + +08007a54 : +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev) +{ + 8007a54: b480 push {r7} + 8007a56: b083 sub sp, #12 + 8007a58: af00 add r7, sp, #0 + 8007a5a: 6078 str r0, [r7, #4] + if (pdev->dev_state == USBD_STATE_SUSPENDED) + 8007a5c: 687b ldr r3, [r7, #4] + 8007a5e: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007a62: 2b04 cmp r3, #4 + 8007a64: d105 bne.n 8007a72 + { + pdev->dev_state = pdev->dev_old_state; + 8007a66: 687b ldr r3, [r7, #4] + 8007a68: f893 229d ldrb.w r2, [r3, #669] @ 0x29d + 8007a6c: 687b ldr r3, [r7, #4] + 8007a6e: f883 229c strb.w r2, [r3, #668] @ 0x29c + } + + return USBD_OK; + 8007a72: 2300 movs r3, #0 +} + 8007a74: 4618 mov r0, r3 + 8007a76: 370c adds r7, #12 + 8007a78: 46bd mov sp, r7 + 8007a7a: bc80 pop {r7} + 8007a7c: 4770 bx lr + +08007a7e : +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev) +{ + 8007a7e: b580 push {r7, lr} + 8007a80: b082 sub sp, #8 + 8007a82: af00 add r7, sp, #0 + 8007a84: 6078 str r0, [r7, #4] + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 8007a86: 687b ldr r3, [r7, #4] + 8007a88: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007a8c: 2b03 cmp r3, #3 + 8007a8e: d10b bne.n 8007aa8 + { + if (pdev->pClass->SOF != NULL) + 8007a90: 687b ldr r3, [r7, #4] + 8007a92: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007a96: 69db ldr r3, [r3, #28] + 8007a98: 2b00 cmp r3, #0 + 8007a9a: d005 beq.n 8007aa8 + { + pdev->pClass->SOF(pdev); + 8007a9c: 687b ldr r3, [r7, #4] + 8007a9e: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007aa2: 69db ldr r3, [r3, #28] + 8007aa4: 6878 ldr r0, [r7, #4] + 8007aa6: 4798 blx r3 + } + } + + return USBD_OK; + 8007aa8: 2300 movs r3, #0 +} + 8007aaa: 4618 mov r0, r3 + 8007aac: 3708 adds r7, #8 + 8007aae: 46bd mov sp, r7 + 8007ab0: bd80 pop {r7, pc} + ... + +08007ab4 : +* @param req: usb request +* @retval status +*/ +USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8007ab4: b580 push {r7, lr} + 8007ab6: b084 sub sp, #16 + 8007ab8: af00 add r7, sp, #0 + 8007aba: 6078 str r0, [r7, #4] + 8007abc: 6039 str r1, [r7, #0] + USBD_StatusTypeDef ret = USBD_OK; + 8007abe: 2300 movs r3, #0 + 8007ac0: 73fb strb r3, [r7, #15] + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + 8007ac2: 683b ldr r3, [r7, #0] + 8007ac4: 781b ldrb r3, [r3, #0] + 8007ac6: f003 0360 and.w r3, r3, #96 @ 0x60 + 8007aca: 2b40 cmp r3, #64 @ 0x40 + 8007acc: d005 beq.n 8007ada + 8007ace: 2b40 cmp r3, #64 @ 0x40 + 8007ad0: d84f bhi.n 8007b72 + 8007ad2: 2b00 cmp r3, #0 + 8007ad4: d009 beq.n 8007aea + 8007ad6: 2b20 cmp r3, #32 + 8007ad8: d14b bne.n 8007b72 + { + case USB_REQ_TYPE_CLASS: + case USB_REQ_TYPE_VENDOR: + pdev->pClass->Setup(pdev, req); + 8007ada: 687b ldr r3, [r7, #4] + 8007adc: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007ae0: 689b ldr r3, [r3, #8] + 8007ae2: 6839 ldr r1, [r7, #0] + 8007ae4: 6878 ldr r0, [r7, #4] + 8007ae6: 4798 blx r3 + break; + 8007ae8: e048 b.n 8007b7c + + case USB_REQ_TYPE_STANDARD: + switch (req->bRequest) + 8007aea: 683b ldr r3, [r7, #0] + 8007aec: 785b ldrb r3, [r3, #1] + 8007aee: 2b09 cmp r3, #9 + 8007af0: d839 bhi.n 8007b66 + 8007af2: a201 add r2, pc, #4 @ (adr r2, 8007af8 ) + 8007af4: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8007af8: 08007b49 .word 0x08007b49 + 8007afc: 08007b5d .word 0x08007b5d + 8007b00: 08007b67 .word 0x08007b67 + 8007b04: 08007b53 .word 0x08007b53 + 8007b08: 08007b67 .word 0x08007b67 + 8007b0c: 08007b2b .word 0x08007b2b + 8007b10: 08007b21 .word 0x08007b21 + 8007b14: 08007b67 .word 0x08007b67 + 8007b18: 08007b3f .word 0x08007b3f + 8007b1c: 08007b35 .word 0x08007b35 + { + case USB_REQ_GET_DESCRIPTOR: + USBD_GetDescriptor(pdev, req); + 8007b20: 6839 ldr r1, [r7, #0] + 8007b22: 6878 ldr r0, [r7, #4] + 8007b24: f000 f9dc bl 8007ee0 + break; + 8007b28: e022 b.n 8007b70 + + case USB_REQ_SET_ADDRESS: + USBD_SetAddress(pdev, req); + 8007b2a: 6839 ldr r1, [r7, #0] + 8007b2c: 6878 ldr r0, [r7, #4] + 8007b2e: f000 fb3f bl 80081b0 + break; + 8007b32: e01d b.n 8007b70 + + case USB_REQ_SET_CONFIGURATION: + USBD_SetConfig(pdev, req); + 8007b34: 6839 ldr r1, [r7, #0] + 8007b36: 6878 ldr r0, [r7, #4] + 8007b38: f000 fb7e bl 8008238 + break; + 8007b3c: e018 b.n 8007b70 + + case USB_REQ_GET_CONFIGURATION: + USBD_GetConfig(pdev, req); + 8007b3e: 6839 ldr r1, [r7, #0] + 8007b40: 6878 ldr r0, [r7, #4] + 8007b42: f000 fc07 bl 8008354 + break; + 8007b46: e013 b.n 8007b70 + + case USB_REQ_GET_STATUS: + USBD_GetStatus(pdev, req); + 8007b48: 6839 ldr r1, [r7, #0] + 8007b4a: 6878 ldr r0, [r7, #4] + 8007b4c: f000 fc37 bl 80083be + break; + 8007b50: e00e b.n 8007b70 + + case USB_REQ_SET_FEATURE: + USBD_SetFeature(pdev, req); + 8007b52: 6839 ldr r1, [r7, #0] + 8007b54: 6878 ldr r0, [r7, #4] + 8007b56: f000 fc65 bl 8008424 + break; + 8007b5a: e009 b.n 8007b70 + + case USB_REQ_CLEAR_FEATURE: + USBD_ClrFeature(pdev, req); + 8007b5c: 6839 ldr r1, [r7, #0] + 8007b5e: 6878 ldr r0, [r7, #4] + 8007b60: f000 fc74 bl 800844c + break; + 8007b64: e004 b.n 8007b70 + + default: + USBD_CtlError(pdev, req); + 8007b66: 6839 ldr r1, [r7, #0] + 8007b68: 6878 ldr r0, [r7, #4] + 8007b6a: f000 fcc9 bl 8008500 + break; + 8007b6e: bf00 nop + } + break; + 8007b70: e004 b.n 8007b7c + + default: + USBD_CtlError(pdev, req); + 8007b72: 6839 ldr r1, [r7, #0] + 8007b74: 6878 ldr r0, [r7, #4] + 8007b76: f000 fcc3 bl 8008500 + break; + 8007b7a: bf00 nop + } + + return ret; + 8007b7c: 7bfb ldrb r3, [r7, #15] +} + 8007b7e: 4618 mov r0, r3 + 8007b80: 3710 adds r7, #16 + 8007b82: 46bd mov sp, r7 + 8007b84: bd80 pop {r7, pc} + 8007b86: bf00 nop + +08007b88 : +* @param req: usb request +* @retval status +*/ +USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8007b88: b580 push {r7, lr} + 8007b8a: b084 sub sp, #16 + 8007b8c: af00 add r7, sp, #0 + 8007b8e: 6078 str r0, [r7, #4] + 8007b90: 6039 str r1, [r7, #0] + USBD_StatusTypeDef ret = USBD_OK; + 8007b92: 2300 movs r3, #0 + 8007b94: 73fb strb r3, [r7, #15] + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + 8007b96: 683b ldr r3, [r7, #0] + 8007b98: 781b ldrb r3, [r3, #0] + 8007b9a: f003 0360 and.w r3, r3, #96 @ 0x60 + 8007b9e: 2b40 cmp r3, #64 @ 0x40 + 8007ba0: d005 beq.n 8007bae + 8007ba2: 2b40 cmp r3, #64 @ 0x40 + 8007ba4: d82e bhi.n 8007c04 + 8007ba6: 2b00 cmp r3, #0 + 8007ba8: d001 beq.n 8007bae + 8007baa: 2b20 cmp r3, #32 + 8007bac: d12a bne.n 8007c04 + { + case USB_REQ_TYPE_CLASS: + case USB_REQ_TYPE_VENDOR: + case USB_REQ_TYPE_STANDARD: + switch (pdev->dev_state) + 8007bae: 687b ldr r3, [r7, #4] + 8007bb0: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007bb4: 3b01 subs r3, #1 + 8007bb6: 2b02 cmp r3, #2 + 8007bb8: d81d bhi.n 8007bf6 + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + case USBD_STATE_CONFIGURED: + + if (LOBYTE(req->wIndex) <= USBD_MAX_NUM_INTERFACES) + 8007bba: 683b ldr r3, [r7, #0] + 8007bbc: 889b ldrh r3, [r3, #4] + 8007bbe: b2db uxtb r3, r3 + 8007bc0: 2b01 cmp r3, #1 + 8007bc2: d813 bhi.n 8007bec + { + ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req); + 8007bc4: 687b ldr r3, [r7, #4] + 8007bc6: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007bca: 689b ldr r3, [r3, #8] + 8007bcc: 6839 ldr r1, [r7, #0] + 8007bce: 6878 ldr r0, [r7, #4] + 8007bd0: 4798 blx r3 + 8007bd2: 4603 mov r3, r0 + 8007bd4: 73fb strb r3, [r7, #15] + + if ((req->wLength == 0U) && (ret == USBD_OK)) + 8007bd6: 683b ldr r3, [r7, #0] + 8007bd8: 88db ldrh r3, [r3, #6] + 8007bda: 2b00 cmp r3, #0 + 8007bdc: d110 bne.n 8007c00 + 8007bde: 7bfb ldrb r3, [r7, #15] + 8007be0: 2b00 cmp r3, #0 + 8007be2: d10d bne.n 8007c00 + { + USBD_CtlSendStatus(pdev); + 8007be4: 6878 ldr r0, [r7, #4] + 8007be6: f000 fd53 bl 8008690 + } + else + { + USBD_CtlError(pdev, req); + } + break; + 8007bea: e009 b.n 8007c00 + USBD_CtlError(pdev, req); + 8007bec: 6839 ldr r1, [r7, #0] + 8007bee: 6878 ldr r0, [r7, #4] + 8007bf0: f000 fc86 bl 8008500 + break; + 8007bf4: e004 b.n 8007c00 + + default: + USBD_CtlError(pdev, req); + 8007bf6: 6839 ldr r1, [r7, #0] + 8007bf8: 6878 ldr r0, [r7, #4] + 8007bfa: f000 fc81 bl 8008500 + break; + 8007bfe: e000 b.n 8007c02 + break; + 8007c00: bf00 nop + } + break; + 8007c02: e004 b.n 8007c0e + + default: + USBD_CtlError(pdev, req); + 8007c04: 6839 ldr r1, [r7, #0] + 8007c06: 6878 ldr r0, [r7, #4] + 8007c08: f000 fc7a bl 8008500 + break; + 8007c0c: bf00 nop + } + + return USBD_OK; + 8007c0e: 2300 movs r3, #0 +} + 8007c10: 4618 mov r0, r3 + 8007c12: 3710 adds r7, #16 + 8007c14: 46bd mov sp, r7 + 8007c16: bd80 pop {r7, pc} + +08007c18 : +* @param req: usb request +* @retval status +*/ +USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8007c18: b580 push {r7, lr} + 8007c1a: b084 sub sp, #16 + 8007c1c: af00 add r7, sp, #0 + 8007c1e: 6078 str r0, [r7, #4] + 8007c20: 6039 str r1, [r7, #0] + USBD_EndpointTypeDef *pep; + uint8_t ep_addr; + USBD_StatusTypeDef ret = USBD_OK; + 8007c22: 2300 movs r3, #0 + 8007c24: 73fb strb r3, [r7, #15] + ep_addr = LOBYTE(req->wIndex); + 8007c26: 683b ldr r3, [r7, #0] + 8007c28: 889b ldrh r3, [r3, #4] + 8007c2a: 73bb strb r3, [r7, #14] + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + 8007c2c: 683b ldr r3, [r7, #0] + 8007c2e: 781b ldrb r3, [r3, #0] + 8007c30: f003 0360 and.w r3, r3, #96 @ 0x60 + 8007c34: 2b40 cmp r3, #64 @ 0x40 + 8007c36: d007 beq.n 8007c48 + 8007c38: 2b40 cmp r3, #64 @ 0x40 + 8007c3a: f200 8146 bhi.w 8007eca + 8007c3e: 2b00 cmp r3, #0 + 8007c40: d00a beq.n 8007c58 + 8007c42: 2b20 cmp r3, #32 + 8007c44: f040 8141 bne.w 8007eca + { + case USB_REQ_TYPE_CLASS: + case USB_REQ_TYPE_VENDOR: + pdev->pClass->Setup(pdev, req); + 8007c48: 687b ldr r3, [r7, #4] + 8007c4a: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007c4e: 689b ldr r3, [r3, #8] + 8007c50: 6839 ldr r1, [r7, #0] + 8007c52: 6878 ldr r0, [r7, #4] + 8007c54: 4798 blx r3 + break; + 8007c56: e13d b.n 8007ed4 + + case USB_REQ_TYPE_STANDARD: + /* Check if it is a class request */ + if ((req->bmRequest & 0x60U) == 0x20U) + 8007c58: 683b ldr r3, [r7, #0] + 8007c5a: 781b ldrb r3, [r3, #0] + 8007c5c: f003 0360 and.w r3, r3, #96 @ 0x60 + 8007c60: 2b20 cmp r3, #32 + 8007c62: d10a bne.n 8007c7a + { + ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req); + 8007c64: 687b ldr r3, [r7, #4] + 8007c66: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007c6a: 689b ldr r3, [r3, #8] + 8007c6c: 6839 ldr r1, [r7, #0] + 8007c6e: 6878 ldr r0, [r7, #4] + 8007c70: 4798 blx r3 + 8007c72: 4603 mov r3, r0 + 8007c74: 73fb strb r3, [r7, #15] + + return ret; + 8007c76: 7bfb ldrb r3, [r7, #15] + 8007c78: e12d b.n 8007ed6 + } + + switch (req->bRequest) + 8007c7a: 683b ldr r3, [r7, #0] + 8007c7c: 785b ldrb r3, [r3, #1] + 8007c7e: 2b03 cmp r3, #3 + 8007c80: d007 beq.n 8007c92 + 8007c82: 2b03 cmp r3, #3 + 8007c84: f300 811b bgt.w 8007ebe + 8007c88: 2b00 cmp r3, #0 + 8007c8a: d072 beq.n 8007d72 + 8007c8c: 2b01 cmp r3, #1 + 8007c8e: d03a beq.n 8007d06 + 8007c90: e115 b.n 8007ebe + { + case USB_REQ_SET_FEATURE: + switch (pdev->dev_state) + 8007c92: 687b ldr r3, [r7, #4] + 8007c94: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007c98: 2b02 cmp r3, #2 + 8007c9a: d002 beq.n 8007ca2 + 8007c9c: 2b03 cmp r3, #3 + 8007c9e: d015 beq.n 8007ccc + 8007ca0: e02b b.n 8007cfa + { + case USBD_STATE_ADDRESSED: + if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) + 8007ca2: 7bbb ldrb r3, [r7, #14] + 8007ca4: 2b00 cmp r3, #0 + 8007ca6: d00c beq.n 8007cc2 + 8007ca8: 7bbb ldrb r3, [r7, #14] + 8007caa: 2b80 cmp r3, #128 @ 0x80 + 8007cac: d009 beq.n 8007cc2 + { + USBD_LL_StallEP(pdev, ep_addr); + 8007cae: 7bbb ldrb r3, [r7, #14] + 8007cb0: 4619 mov r1, r3 + 8007cb2: 6878 ldr r0, [r7, #4] + 8007cb4: f001 f8fe bl 8008eb4 + USBD_LL_StallEP(pdev, 0x80U); + 8007cb8: 2180 movs r1, #128 @ 0x80 + 8007cba: 6878 ldr r0, [r7, #4] + 8007cbc: f001 f8fa bl 8008eb4 + } + else + { + USBD_CtlError(pdev, req); + } + break; + 8007cc0: e020 b.n 8007d04 + USBD_CtlError(pdev, req); + 8007cc2: 6839 ldr r1, [r7, #0] + 8007cc4: 6878 ldr r0, [r7, #4] + 8007cc6: f000 fc1b bl 8008500 + break; + 8007cca: e01b b.n 8007d04 + + case USBD_STATE_CONFIGURED: + if (req->wValue == USB_FEATURE_EP_HALT) + 8007ccc: 683b ldr r3, [r7, #0] + 8007cce: 885b ldrh r3, [r3, #2] + 8007cd0: 2b00 cmp r3, #0 + 8007cd2: d10e bne.n 8007cf2 + { + if ((ep_addr != 0x00U) && + 8007cd4: 7bbb ldrb r3, [r7, #14] + 8007cd6: 2b00 cmp r3, #0 + 8007cd8: d00b beq.n 8007cf2 + 8007cda: 7bbb ldrb r3, [r7, #14] + 8007cdc: 2b80 cmp r3, #128 @ 0x80 + 8007cde: d008 beq.n 8007cf2 + (ep_addr != 0x80U) && (req->wLength == 0x00U)) + 8007ce0: 683b ldr r3, [r7, #0] + 8007ce2: 88db ldrh r3, [r3, #6] + 8007ce4: 2b00 cmp r3, #0 + 8007ce6: d104 bne.n 8007cf2 + { + USBD_LL_StallEP(pdev, ep_addr); + 8007ce8: 7bbb ldrb r3, [r7, #14] + 8007cea: 4619 mov r1, r3 + 8007cec: 6878 ldr r0, [r7, #4] + 8007cee: f001 f8e1 bl 8008eb4 + } + } + USBD_CtlSendStatus(pdev); + 8007cf2: 6878 ldr r0, [r7, #4] + 8007cf4: f000 fccc bl 8008690 + + break; + 8007cf8: e004 b.n 8007d04 + + default: + USBD_CtlError(pdev, req); + 8007cfa: 6839 ldr r1, [r7, #0] + 8007cfc: 6878 ldr r0, [r7, #4] + 8007cfe: f000 fbff bl 8008500 + break; + 8007d02: bf00 nop + } + break; + 8007d04: e0e0 b.n 8007ec8 + + case USB_REQ_CLEAR_FEATURE: + + switch (pdev->dev_state) + 8007d06: 687b ldr r3, [r7, #4] + 8007d08: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007d0c: 2b02 cmp r3, #2 + 8007d0e: d002 beq.n 8007d16 + 8007d10: 2b03 cmp r3, #3 + 8007d12: d015 beq.n 8007d40 + 8007d14: e026 b.n 8007d64 + { + case USBD_STATE_ADDRESSED: + if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) + 8007d16: 7bbb ldrb r3, [r7, #14] + 8007d18: 2b00 cmp r3, #0 + 8007d1a: d00c beq.n 8007d36 + 8007d1c: 7bbb ldrb r3, [r7, #14] + 8007d1e: 2b80 cmp r3, #128 @ 0x80 + 8007d20: d009 beq.n 8007d36 + { + USBD_LL_StallEP(pdev, ep_addr); + 8007d22: 7bbb ldrb r3, [r7, #14] + 8007d24: 4619 mov r1, r3 + 8007d26: 6878 ldr r0, [r7, #4] + 8007d28: f001 f8c4 bl 8008eb4 + USBD_LL_StallEP(pdev, 0x80U); + 8007d2c: 2180 movs r1, #128 @ 0x80 + 8007d2e: 6878 ldr r0, [r7, #4] + 8007d30: f001 f8c0 bl 8008eb4 + } + else + { + USBD_CtlError(pdev, req); + } + break; + 8007d34: e01c b.n 8007d70 + USBD_CtlError(pdev, req); + 8007d36: 6839 ldr r1, [r7, #0] + 8007d38: 6878 ldr r0, [r7, #4] + 8007d3a: f000 fbe1 bl 8008500 + break; + 8007d3e: e017 b.n 8007d70 + + case USBD_STATE_CONFIGURED: + if (req->wValue == USB_FEATURE_EP_HALT) + 8007d40: 683b ldr r3, [r7, #0] + 8007d42: 885b ldrh r3, [r3, #2] + 8007d44: 2b00 cmp r3, #0 + 8007d46: d112 bne.n 8007d6e + { + if ((ep_addr & 0x7FU) != 0x00U) + 8007d48: 7bbb ldrb r3, [r7, #14] + 8007d4a: f003 037f and.w r3, r3, #127 @ 0x7f + 8007d4e: 2b00 cmp r3, #0 + 8007d50: d004 beq.n 8007d5c + { + USBD_LL_ClearStallEP(pdev, ep_addr); + 8007d52: 7bbb ldrb r3, [r7, #14] + 8007d54: 4619 mov r1, r3 + 8007d56: 6878 ldr r0, [r7, #4] + 8007d58: f001 f8cb bl 8008ef2 + } + USBD_CtlSendStatus(pdev); + 8007d5c: 6878 ldr r0, [r7, #4] + 8007d5e: f000 fc97 bl 8008690 + } + break; + 8007d62: e004 b.n 8007d6e + + default: + USBD_CtlError(pdev, req); + 8007d64: 6839 ldr r1, [r7, #0] + 8007d66: 6878 ldr r0, [r7, #4] + 8007d68: f000 fbca bl 8008500 + break; + 8007d6c: e000 b.n 8007d70 + break; + 8007d6e: bf00 nop + } + break; + 8007d70: e0aa b.n 8007ec8 + + case USB_REQ_GET_STATUS: + switch (pdev->dev_state) + 8007d72: 687b ldr r3, [r7, #4] + 8007d74: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007d78: 2b02 cmp r3, #2 + 8007d7a: d002 beq.n 8007d82 + 8007d7c: 2b03 cmp r3, #3 + 8007d7e: d032 beq.n 8007de6 + 8007d80: e097 b.n 8007eb2 + { + case USBD_STATE_ADDRESSED: + if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) + 8007d82: 7bbb ldrb r3, [r7, #14] + 8007d84: 2b00 cmp r3, #0 + 8007d86: d007 beq.n 8007d98 + 8007d88: 7bbb ldrb r3, [r7, #14] + 8007d8a: 2b80 cmp r3, #128 @ 0x80 + 8007d8c: d004 beq.n 8007d98 + { + USBD_CtlError(pdev, req); + 8007d8e: 6839 ldr r1, [r7, #0] + 8007d90: 6878 ldr r0, [r7, #4] + 8007d92: f000 fbb5 bl 8008500 + break; + 8007d96: e091 b.n 8007ebc + } + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + 8007d98: f997 300e ldrsb.w r3, [r7, #14] + 8007d9c: 2b00 cmp r3, #0 + 8007d9e: da0b bge.n 8007db8 + 8007da0: 7bbb ldrb r3, [r7, #14] + 8007da2: f003 027f and.w r2, r3, #127 @ 0x7f + 8007da6: 4613 mov r3, r2 + 8007da8: 009b lsls r3, r3, #2 + 8007daa: 4413 add r3, r2 + 8007dac: 009b lsls r3, r3, #2 + 8007dae: 3310 adds r3, #16 + 8007db0: 687a ldr r2, [r7, #4] + 8007db2: 4413 add r3, r2 + 8007db4: 3304 adds r3, #4 + 8007db6: e00b b.n 8007dd0 + &pdev->ep_out[ep_addr & 0x7FU]; + 8007db8: 7bbb ldrb r3, [r7, #14] + 8007dba: f003 027f and.w r2, r3, #127 @ 0x7f + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + 8007dbe: 4613 mov r3, r2 + 8007dc0: 009b lsls r3, r3, #2 + 8007dc2: 4413 add r3, r2 + 8007dc4: 009b lsls r3, r3, #2 + 8007dc6: f503 73a8 add.w r3, r3, #336 @ 0x150 + 8007dca: 687a ldr r2, [r7, #4] + 8007dcc: 4413 add r3, r2 + 8007dce: 3304 adds r3, #4 + 8007dd0: 60bb str r3, [r7, #8] + + pep->status = 0x0000U; + 8007dd2: 68bb ldr r3, [r7, #8] + 8007dd4: 2200 movs r2, #0 + 8007dd6: 601a str r2, [r3, #0] + + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pep->status, 2U); + 8007dd8: 68bb ldr r3, [r7, #8] + 8007dda: 2202 movs r2, #2 + 8007ddc: 4619 mov r1, r3 + 8007dde: 6878 ldr r0, [r7, #4] + 8007de0: f000 fbf8 bl 80085d4 + break; + 8007de4: e06a b.n 8007ebc + + case USBD_STATE_CONFIGURED: + if ((ep_addr & 0x80U) == 0x80U) + 8007de6: f997 300e ldrsb.w r3, [r7, #14] + 8007dea: 2b00 cmp r3, #0 + 8007dec: da11 bge.n 8007e12 + { + if (pdev->ep_in[ep_addr & 0xFU].is_used == 0U) + 8007dee: 7bbb ldrb r3, [r7, #14] + 8007df0: f003 020f and.w r2, r3, #15 + 8007df4: 6879 ldr r1, [r7, #4] + 8007df6: 4613 mov r3, r2 + 8007df8: 009b lsls r3, r3, #2 + 8007dfa: 4413 add r3, r2 + 8007dfc: 009b lsls r3, r3, #2 + 8007dfe: 440b add r3, r1 + 8007e00: 3318 adds r3, #24 + 8007e02: 681b ldr r3, [r3, #0] + 8007e04: 2b00 cmp r3, #0 + 8007e06: d117 bne.n 8007e38 + { + USBD_CtlError(pdev, req); + 8007e08: 6839 ldr r1, [r7, #0] + 8007e0a: 6878 ldr r0, [r7, #4] + 8007e0c: f000 fb78 bl 8008500 + break; + 8007e10: e054 b.n 8007ebc + } + } + else + { + if (pdev->ep_out[ep_addr & 0xFU].is_used == 0U) + 8007e12: 7bbb ldrb r3, [r7, #14] + 8007e14: f003 020f and.w r2, r3, #15 + 8007e18: 6879 ldr r1, [r7, #4] + 8007e1a: 4613 mov r3, r2 + 8007e1c: 009b lsls r3, r3, #2 + 8007e1e: 4413 add r3, r2 + 8007e20: 009b lsls r3, r3, #2 + 8007e22: 440b add r3, r1 + 8007e24: f503 73ac add.w r3, r3, #344 @ 0x158 + 8007e28: 681b ldr r3, [r3, #0] + 8007e2a: 2b00 cmp r3, #0 + 8007e2c: d104 bne.n 8007e38 + { + USBD_CtlError(pdev, req); + 8007e2e: 6839 ldr r1, [r7, #0] + 8007e30: 6878 ldr r0, [r7, #4] + 8007e32: f000 fb65 bl 8008500 + break; + 8007e36: e041 b.n 8007ebc + } + } + + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + 8007e38: f997 300e ldrsb.w r3, [r7, #14] + 8007e3c: 2b00 cmp r3, #0 + 8007e3e: da0b bge.n 8007e58 + 8007e40: 7bbb ldrb r3, [r7, #14] + 8007e42: f003 027f and.w r2, r3, #127 @ 0x7f + 8007e46: 4613 mov r3, r2 + 8007e48: 009b lsls r3, r3, #2 + 8007e4a: 4413 add r3, r2 + 8007e4c: 009b lsls r3, r3, #2 + 8007e4e: 3310 adds r3, #16 + 8007e50: 687a ldr r2, [r7, #4] + 8007e52: 4413 add r3, r2 + 8007e54: 3304 adds r3, #4 + 8007e56: e00b b.n 8007e70 + &pdev->ep_out[ep_addr & 0x7FU]; + 8007e58: 7bbb ldrb r3, [r7, #14] + 8007e5a: f003 027f and.w r2, r3, #127 @ 0x7f + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + 8007e5e: 4613 mov r3, r2 + 8007e60: 009b lsls r3, r3, #2 + 8007e62: 4413 add r3, r2 + 8007e64: 009b lsls r3, r3, #2 + 8007e66: f503 73a8 add.w r3, r3, #336 @ 0x150 + 8007e6a: 687a ldr r2, [r7, #4] + 8007e6c: 4413 add r3, r2 + 8007e6e: 3304 adds r3, #4 + 8007e70: 60bb str r3, [r7, #8] + + if ((ep_addr == 0x00U) || (ep_addr == 0x80U)) + 8007e72: 7bbb ldrb r3, [r7, #14] + 8007e74: 2b00 cmp r3, #0 + 8007e76: d002 beq.n 8007e7e + 8007e78: 7bbb ldrb r3, [r7, #14] + 8007e7a: 2b80 cmp r3, #128 @ 0x80 + 8007e7c: d103 bne.n 8007e86 + { + pep->status = 0x0000U; + 8007e7e: 68bb ldr r3, [r7, #8] + 8007e80: 2200 movs r2, #0 + 8007e82: 601a str r2, [r3, #0] + 8007e84: e00e b.n 8007ea4 + } + else if (USBD_LL_IsStallEP(pdev, ep_addr)) + 8007e86: 7bbb ldrb r3, [r7, #14] + 8007e88: 4619 mov r1, r3 + 8007e8a: 6878 ldr r0, [r7, #4] + 8007e8c: f001 f850 bl 8008f30 + 8007e90: 4603 mov r3, r0 + 8007e92: 2b00 cmp r3, #0 + 8007e94: d003 beq.n 8007e9e + { + pep->status = 0x0001U; + 8007e96: 68bb ldr r3, [r7, #8] + 8007e98: 2201 movs r2, #1 + 8007e9a: 601a str r2, [r3, #0] + 8007e9c: e002 b.n 8007ea4 + } + else + { + pep->status = 0x0000U; + 8007e9e: 68bb ldr r3, [r7, #8] + 8007ea0: 2200 movs r2, #0 + 8007ea2: 601a str r2, [r3, #0] + } + + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pep->status, 2U); + 8007ea4: 68bb ldr r3, [r7, #8] + 8007ea6: 2202 movs r2, #2 + 8007ea8: 4619 mov r1, r3 + 8007eaa: 6878 ldr r0, [r7, #4] + 8007eac: f000 fb92 bl 80085d4 + break; + 8007eb0: e004 b.n 8007ebc + + default: + USBD_CtlError(pdev, req); + 8007eb2: 6839 ldr r1, [r7, #0] + 8007eb4: 6878 ldr r0, [r7, #4] + 8007eb6: f000 fb23 bl 8008500 + break; + 8007eba: bf00 nop + } + break; + 8007ebc: e004 b.n 8007ec8 + + default: + USBD_CtlError(pdev, req); + 8007ebe: 6839 ldr r1, [r7, #0] + 8007ec0: 6878 ldr r0, [r7, #4] + 8007ec2: f000 fb1d bl 8008500 + break; + 8007ec6: bf00 nop + } + break; + 8007ec8: e004 b.n 8007ed4 + + default: + USBD_CtlError(pdev, req); + 8007eca: 6839 ldr r1, [r7, #0] + 8007ecc: 6878 ldr r0, [r7, #4] + 8007ece: f000 fb17 bl 8008500 + break; + 8007ed2: bf00 nop + } + + return ret; + 8007ed4: 7bfb ldrb r3, [r7, #15] +} + 8007ed6: 4618 mov r0, r3 + 8007ed8: 3710 adds r7, #16 + 8007eda: 46bd mov sp, r7 + 8007edc: bd80 pop {r7, pc} + ... + +08007ee0 : +* @param req: usb request +* @retval status +*/ +static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8007ee0: b580 push {r7, lr} + 8007ee2: b084 sub sp, #16 + 8007ee4: af00 add r7, sp, #0 + 8007ee6: 6078 str r0, [r7, #4] + 8007ee8: 6039 str r1, [r7, #0] + uint16_t len = 0U; + 8007eea: 2300 movs r3, #0 + 8007eec: 813b strh r3, [r7, #8] + uint8_t *pbuf = NULL; + 8007eee: 2300 movs r3, #0 + 8007ef0: 60fb str r3, [r7, #12] + uint8_t err = 0U; + 8007ef2: 2300 movs r3, #0 + 8007ef4: 72fb strb r3, [r7, #11] + + switch (req->wValue >> 8) + 8007ef6: 683b ldr r3, [r7, #0] + 8007ef8: 885b ldrh r3, [r3, #2] + 8007efa: 0a1b lsrs r3, r3, #8 + 8007efc: b29b uxth r3, r3 + 8007efe: 3b01 subs r3, #1 + 8007f00: 2b06 cmp r3, #6 + 8007f02: f200 8128 bhi.w 8008156 + 8007f06: a201 add r2, pc, #4 @ (adr r2, 8007f0c ) + 8007f08: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8007f0c: 08007f29 .word 0x08007f29 + 8007f10: 08007f41 .word 0x08007f41 + 8007f14: 08007f81 .word 0x08007f81 + 8007f18: 08008157 .word 0x08008157 + 8007f1c: 08008157 .word 0x08008157 + 8007f20: 080080f7 .word 0x080080f7 + 8007f24: 08008123 .word 0x08008123 + err++; + } + break; +#endif + case USB_DESC_TYPE_DEVICE: + pbuf = pdev->pDesc->GetDeviceDescriptor(pdev->dev_speed, &len); + 8007f28: 687b ldr r3, [r7, #4] + 8007f2a: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 8007f2e: 681b ldr r3, [r3, #0] + 8007f30: 687a ldr r2, [r7, #4] + 8007f32: 7c12 ldrb r2, [r2, #16] + 8007f34: f107 0108 add.w r1, r7, #8 + 8007f38: 4610 mov r0, r2 + 8007f3a: 4798 blx r3 + 8007f3c: 60f8 str r0, [r7, #12] + break; + 8007f3e: e112 b.n 8008166 + + case USB_DESC_TYPE_CONFIGURATION: + if (pdev->dev_speed == USBD_SPEED_HIGH) + 8007f40: 687b ldr r3, [r7, #4] + 8007f42: 7c1b ldrb r3, [r3, #16] + 8007f44: 2b00 cmp r3, #0 + 8007f46: d10d bne.n 8007f64 + { + pbuf = pdev->pClass->GetHSConfigDescriptor(&len); + 8007f48: 687b ldr r3, [r7, #4] + 8007f4a: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007f4e: 6a9b ldr r3, [r3, #40] @ 0x28 + 8007f50: f107 0208 add.w r2, r7, #8 + 8007f54: 4610 mov r0, r2 + 8007f56: 4798 blx r3 + 8007f58: 60f8 str r0, [r7, #12] + pbuf[1] = USB_DESC_TYPE_CONFIGURATION; + 8007f5a: 68fb ldr r3, [r7, #12] + 8007f5c: 3301 adds r3, #1 + 8007f5e: 2202 movs r2, #2 + 8007f60: 701a strb r2, [r3, #0] + else + { + pbuf = pdev->pClass->GetFSConfigDescriptor(&len); + pbuf[1] = USB_DESC_TYPE_CONFIGURATION; + } + break; + 8007f62: e100 b.n 8008166 + pbuf = pdev->pClass->GetFSConfigDescriptor(&len); + 8007f64: 687b ldr r3, [r7, #4] + 8007f66: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007f6a: 6adb ldr r3, [r3, #44] @ 0x2c + 8007f6c: f107 0208 add.w r2, r7, #8 + 8007f70: 4610 mov r0, r2 + 8007f72: 4798 blx r3 + 8007f74: 60f8 str r0, [r7, #12] + pbuf[1] = USB_DESC_TYPE_CONFIGURATION; + 8007f76: 68fb ldr r3, [r7, #12] + 8007f78: 3301 adds r3, #1 + 8007f7a: 2202 movs r2, #2 + 8007f7c: 701a strb r2, [r3, #0] + break; + 8007f7e: e0f2 b.n 8008166 + + case USB_DESC_TYPE_STRING: + switch ((uint8_t)(req->wValue)) + 8007f80: 683b ldr r3, [r7, #0] + 8007f82: 885b ldrh r3, [r3, #2] + 8007f84: b2db uxtb r3, r3 + 8007f86: 2b05 cmp r3, #5 + 8007f88: f200 80ac bhi.w 80080e4 + 8007f8c: a201 add r2, pc, #4 @ (adr r2, 8007f94 ) + 8007f8e: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8007f92: bf00 nop + 8007f94: 08007fad .word 0x08007fad + 8007f98: 08007fe1 .word 0x08007fe1 + 8007f9c: 08008015 .word 0x08008015 + 8007fa0: 08008049 .word 0x08008049 + 8007fa4: 0800807d .word 0x0800807d + 8007fa8: 080080b1 .word 0x080080b1 + { + case USBD_IDX_LANGID_STR: + if (pdev->pDesc->GetLangIDStrDescriptor != NULL) + 8007fac: 687b ldr r3, [r7, #4] + 8007fae: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 8007fb2: 685b ldr r3, [r3, #4] + 8007fb4: 2b00 cmp r3, #0 + 8007fb6: d00b beq.n 8007fd0 + { + pbuf = pdev->pDesc->GetLangIDStrDescriptor(pdev->dev_speed, &len); + 8007fb8: 687b ldr r3, [r7, #4] + 8007fba: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 8007fbe: 685b ldr r3, [r3, #4] + 8007fc0: 687a ldr r2, [r7, #4] + 8007fc2: 7c12 ldrb r2, [r2, #16] + 8007fc4: f107 0108 add.w r1, r7, #8 + 8007fc8: 4610 mov r0, r2 + 8007fca: 4798 blx r3 + 8007fcc: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 8007fce: e091 b.n 80080f4 + USBD_CtlError(pdev, req); + 8007fd0: 6839 ldr r1, [r7, #0] + 8007fd2: 6878 ldr r0, [r7, #4] + 8007fd4: f000 fa94 bl 8008500 + err++; + 8007fd8: 7afb ldrb r3, [r7, #11] + 8007fda: 3301 adds r3, #1 + 8007fdc: 72fb strb r3, [r7, #11] + break; + 8007fde: e089 b.n 80080f4 + + case USBD_IDX_MFC_STR: + if (pdev->pDesc->GetManufacturerStrDescriptor != NULL) + 8007fe0: 687b ldr r3, [r7, #4] + 8007fe2: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 8007fe6: 689b ldr r3, [r3, #8] + 8007fe8: 2b00 cmp r3, #0 + 8007fea: d00b beq.n 8008004 + { + pbuf = pdev->pDesc->GetManufacturerStrDescriptor(pdev->dev_speed, &len); + 8007fec: 687b ldr r3, [r7, #4] + 8007fee: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 8007ff2: 689b ldr r3, [r3, #8] + 8007ff4: 687a ldr r2, [r7, #4] + 8007ff6: 7c12 ldrb r2, [r2, #16] + 8007ff8: f107 0108 add.w r1, r7, #8 + 8007ffc: 4610 mov r0, r2 + 8007ffe: 4798 blx r3 + 8008000: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 8008002: e077 b.n 80080f4 + USBD_CtlError(pdev, req); + 8008004: 6839 ldr r1, [r7, #0] + 8008006: 6878 ldr r0, [r7, #4] + 8008008: f000 fa7a bl 8008500 + err++; + 800800c: 7afb ldrb r3, [r7, #11] + 800800e: 3301 adds r3, #1 + 8008010: 72fb strb r3, [r7, #11] + break; + 8008012: e06f b.n 80080f4 + + case USBD_IDX_PRODUCT_STR: + if (pdev->pDesc->GetProductStrDescriptor != NULL) + 8008014: 687b ldr r3, [r7, #4] + 8008016: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 800801a: 68db ldr r3, [r3, #12] + 800801c: 2b00 cmp r3, #0 + 800801e: d00b beq.n 8008038 + { + pbuf = pdev->pDesc->GetProductStrDescriptor(pdev->dev_speed, &len); + 8008020: 687b ldr r3, [r7, #4] + 8008022: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 8008026: 68db ldr r3, [r3, #12] + 8008028: 687a ldr r2, [r7, #4] + 800802a: 7c12 ldrb r2, [r2, #16] + 800802c: f107 0108 add.w r1, r7, #8 + 8008030: 4610 mov r0, r2 + 8008032: 4798 blx r3 + 8008034: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 8008036: e05d b.n 80080f4 + USBD_CtlError(pdev, req); + 8008038: 6839 ldr r1, [r7, #0] + 800803a: 6878 ldr r0, [r7, #4] + 800803c: f000 fa60 bl 8008500 + err++; + 8008040: 7afb ldrb r3, [r7, #11] + 8008042: 3301 adds r3, #1 + 8008044: 72fb strb r3, [r7, #11] + break; + 8008046: e055 b.n 80080f4 + + case USBD_IDX_SERIAL_STR: + if (pdev->pDesc->GetSerialStrDescriptor != NULL) + 8008048: 687b ldr r3, [r7, #4] + 800804a: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 800804e: 691b ldr r3, [r3, #16] + 8008050: 2b00 cmp r3, #0 + 8008052: d00b beq.n 800806c + { + pbuf = pdev->pDesc->GetSerialStrDescriptor(pdev->dev_speed, &len); + 8008054: 687b ldr r3, [r7, #4] + 8008056: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 800805a: 691b ldr r3, [r3, #16] + 800805c: 687a ldr r2, [r7, #4] + 800805e: 7c12 ldrb r2, [r2, #16] + 8008060: f107 0108 add.w r1, r7, #8 + 8008064: 4610 mov r0, r2 + 8008066: 4798 blx r3 + 8008068: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 800806a: e043 b.n 80080f4 + USBD_CtlError(pdev, req); + 800806c: 6839 ldr r1, [r7, #0] + 800806e: 6878 ldr r0, [r7, #4] + 8008070: f000 fa46 bl 8008500 + err++; + 8008074: 7afb ldrb r3, [r7, #11] + 8008076: 3301 adds r3, #1 + 8008078: 72fb strb r3, [r7, #11] + break; + 800807a: e03b b.n 80080f4 + + case USBD_IDX_CONFIG_STR: + if (pdev->pDesc->GetConfigurationStrDescriptor != NULL) + 800807c: 687b ldr r3, [r7, #4] + 800807e: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 8008082: 695b ldr r3, [r3, #20] + 8008084: 2b00 cmp r3, #0 + 8008086: d00b beq.n 80080a0 + { + pbuf = pdev->pDesc->GetConfigurationStrDescriptor(pdev->dev_speed, &len); + 8008088: 687b ldr r3, [r7, #4] + 800808a: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 800808e: 695b ldr r3, [r3, #20] + 8008090: 687a ldr r2, [r7, #4] + 8008092: 7c12 ldrb r2, [r2, #16] + 8008094: f107 0108 add.w r1, r7, #8 + 8008098: 4610 mov r0, r2 + 800809a: 4798 blx r3 + 800809c: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 800809e: e029 b.n 80080f4 + USBD_CtlError(pdev, req); + 80080a0: 6839 ldr r1, [r7, #0] + 80080a2: 6878 ldr r0, [r7, #4] + 80080a4: f000 fa2c bl 8008500 + err++; + 80080a8: 7afb ldrb r3, [r7, #11] + 80080aa: 3301 adds r3, #1 + 80080ac: 72fb strb r3, [r7, #11] + break; + 80080ae: e021 b.n 80080f4 + + case USBD_IDX_INTERFACE_STR: + if (pdev->pDesc->GetInterfaceStrDescriptor != NULL) + 80080b0: 687b ldr r3, [r7, #4] + 80080b2: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 80080b6: 699b ldr r3, [r3, #24] + 80080b8: 2b00 cmp r3, #0 + 80080ba: d00b beq.n 80080d4 + { + pbuf = pdev->pDesc->GetInterfaceStrDescriptor(pdev->dev_speed, &len); + 80080bc: 687b ldr r3, [r7, #4] + 80080be: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 80080c2: 699b ldr r3, [r3, #24] + 80080c4: 687a ldr r2, [r7, #4] + 80080c6: 7c12 ldrb r2, [r2, #16] + 80080c8: f107 0108 add.w r1, r7, #8 + 80080cc: 4610 mov r0, r2 + 80080ce: 4798 blx r3 + 80080d0: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 80080d2: e00f b.n 80080f4 + USBD_CtlError(pdev, req); + 80080d4: 6839 ldr r1, [r7, #0] + 80080d6: 6878 ldr r0, [r7, #4] + 80080d8: f000 fa12 bl 8008500 + err++; + 80080dc: 7afb ldrb r3, [r7, #11] + 80080de: 3301 adds r3, #1 + 80080e0: 72fb strb r3, [r7, #11] + break; + 80080e2: e007 b.n 80080f4 + USBD_CtlError(pdev, req); + err++; + } + break; +#else + USBD_CtlError(pdev, req); + 80080e4: 6839 ldr r1, [r7, #0] + 80080e6: 6878 ldr r0, [r7, #4] + 80080e8: f000 fa0a bl 8008500 + err++; + 80080ec: 7afb ldrb r3, [r7, #11] + 80080ee: 3301 adds r3, #1 + 80080f0: 72fb strb r3, [r7, #11] +#endif + } + break; + 80080f2: e038 b.n 8008166 + 80080f4: e037 b.n 8008166 + + case USB_DESC_TYPE_DEVICE_QUALIFIER: + if (pdev->dev_speed == USBD_SPEED_HIGH) + 80080f6: 687b ldr r3, [r7, #4] + 80080f8: 7c1b ldrb r3, [r3, #16] + 80080fa: 2b00 cmp r3, #0 + 80080fc: d109 bne.n 8008112 + { + pbuf = pdev->pClass->GetDeviceQualifierDescriptor(&len); + 80080fe: 687b ldr r3, [r7, #4] + 8008100: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8008104: 6b5b ldr r3, [r3, #52] @ 0x34 + 8008106: f107 0208 add.w r2, r7, #8 + 800810a: 4610 mov r0, r2 + 800810c: 4798 blx r3 + 800810e: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 8008110: e029 b.n 8008166 + USBD_CtlError(pdev, req); + 8008112: 6839 ldr r1, [r7, #0] + 8008114: 6878 ldr r0, [r7, #4] + 8008116: f000 f9f3 bl 8008500 + err++; + 800811a: 7afb ldrb r3, [r7, #11] + 800811c: 3301 adds r3, #1 + 800811e: 72fb strb r3, [r7, #11] + break; + 8008120: e021 b.n 8008166 + + case USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION: + if (pdev->dev_speed == USBD_SPEED_HIGH) + 8008122: 687b ldr r3, [r7, #4] + 8008124: 7c1b ldrb r3, [r3, #16] + 8008126: 2b00 cmp r3, #0 + 8008128: d10d bne.n 8008146 + { + pbuf = pdev->pClass->GetOtherSpeedConfigDescriptor(&len); + 800812a: 687b ldr r3, [r7, #4] + 800812c: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8008130: 6b1b ldr r3, [r3, #48] @ 0x30 + 8008132: f107 0208 add.w r2, r7, #8 + 8008136: 4610 mov r0, r2 + 8008138: 4798 blx r3 + 800813a: 60f8 str r0, [r7, #12] + pbuf[1] = USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION; + 800813c: 68fb ldr r3, [r7, #12] + 800813e: 3301 adds r3, #1 + 8008140: 2207 movs r2, #7 + 8008142: 701a strb r2, [r3, #0] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 8008144: e00f b.n 8008166 + USBD_CtlError(pdev, req); + 8008146: 6839 ldr r1, [r7, #0] + 8008148: 6878 ldr r0, [r7, #4] + 800814a: f000 f9d9 bl 8008500 + err++; + 800814e: 7afb ldrb r3, [r7, #11] + 8008150: 3301 adds r3, #1 + 8008152: 72fb strb r3, [r7, #11] + break; + 8008154: e007 b.n 8008166 + + default: + USBD_CtlError(pdev, req); + 8008156: 6839 ldr r1, [r7, #0] + 8008158: 6878 ldr r0, [r7, #4] + 800815a: f000 f9d1 bl 8008500 + err++; + 800815e: 7afb ldrb r3, [r7, #11] + 8008160: 3301 adds r3, #1 + 8008162: 72fb strb r3, [r7, #11] + break; + 8008164: bf00 nop + } + + if (err != 0U) + 8008166: 7afb ldrb r3, [r7, #11] + 8008168: 2b00 cmp r3, #0 + 800816a: d11c bne.n 80081a6 + { + return; + } + else + { + if ((len != 0U) && (req->wLength != 0U)) + 800816c: 893b ldrh r3, [r7, #8] + 800816e: 2b00 cmp r3, #0 + 8008170: d011 beq.n 8008196 + 8008172: 683b ldr r3, [r7, #0] + 8008174: 88db ldrh r3, [r3, #6] + 8008176: 2b00 cmp r3, #0 + 8008178: d00d beq.n 8008196 + { + len = MIN(len, req->wLength); + 800817a: 683b ldr r3, [r7, #0] + 800817c: 88da ldrh r2, [r3, #6] + 800817e: 893b ldrh r3, [r7, #8] + 8008180: 4293 cmp r3, r2 + 8008182: bf28 it cs + 8008184: 4613 movcs r3, r2 + 8008186: b29b uxth r3, r3 + 8008188: 813b strh r3, [r7, #8] + (void)USBD_CtlSendData(pdev, pbuf, len); + 800818a: 893b ldrh r3, [r7, #8] + 800818c: 461a mov r2, r3 + 800818e: 68f9 ldr r1, [r7, #12] + 8008190: 6878 ldr r0, [r7, #4] + 8008192: f000 fa1f bl 80085d4 + } + + if (req->wLength == 0U) + 8008196: 683b ldr r3, [r7, #0] + 8008198: 88db ldrh r3, [r3, #6] + 800819a: 2b00 cmp r3, #0 + 800819c: d104 bne.n 80081a8 + { + (void)USBD_CtlSendStatus(pdev); + 800819e: 6878 ldr r0, [r7, #4] + 80081a0: f000 fa76 bl 8008690 + 80081a4: e000 b.n 80081a8 + return; + 80081a6: bf00 nop + } + } +} + 80081a8: 3710 adds r7, #16 + 80081aa: 46bd mov sp, r7 + 80081ac: bd80 pop {r7, pc} + 80081ae: bf00 nop + +080081b0 : +* @param req: usb request +* @retval status +*/ +static void USBD_SetAddress(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 80081b0: b580 push {r7, lr} + 80081b2: b084 sub sp, #16 + 80081b4: af00 add r7, sp, #0 + 80081b6: 6078 str r0, [r7, #4] + 80081b8: 6039 str r1, [r7, #0] + uint8_t dev_addr; + + if ((req->wIndex == 0U) && (req->wLength == 0U) && (req->wValue < 128U)) + 80081ba: 683b ldr r3, [r7, #0] + 80081bc: 889b ldrh r3, [r3, #4] + 80081be: 2b00 cmp r3, #0 + 80081c0: d130 bne.n 8008224 + 80081c2: 683b ldr r3, [r7, #0] + 80081c4: 88db ldrh r3, [r3, #6] + 80081c6: 2b00 cmp r3, #0 + 80081c8: d12c bne.n 8008224 + 80081ca: 683b ldr r3, [r7, #0] + 80081cc: 885b ldrh r3, [r3, #2] + 80081ce: 2b7f cmp r3, #127 @ 0x7f + 80081d0: d828 bhi.n 8008224 + { + dev_addr = (uint8_t)(req->wValue) & 0x7FU; + 80081d2: 683b ldr r3, [r7, #0] + 80081d4: 885b ldrh r3, [r3, #2] + 80081d6: b2db uxtb r3, r3 + 80081d8: f003 037f and.w r3, r3, #127 @ 0x7f + 80081dc: 73fb strb r3, [r7, #15] + + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 80081de: 687b ldr r3, [r7, #4] + 80081e0: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 80081e4: 2b03 cmp r3, #3 + 80081e6: d104 bne.n 80081f2 + { + USBD_CtlError(pdev, req); + 80081e8: 6839 ldr r1, [r7, #0] + 80081ea: 6878 ldr r0, [r7, #4] + 80081ec: f000 f988 bl 8008500 + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 80081f0: e01d b.n 800822e + } + else + { + pdev->dev_address = dev_addr; + 80081f2: 687b ldr r3, [r7, #4] + 80081f4: 7bfa ldrb r2, [r7, #15] + 80081f6: f883 229e strb.w r2, [r3, #670] @ 0x29e + USBD_LL_SetUSBAddress(pdev, dev_addr); + 80081fa: 7bfb ldrb r3, [r7, #15] + 80081fc: 4619 mov r1, r3 + 80081fe: 6878 ldr r0, [r7, #4] + 8008200: f000 fec1 bl 8008f86 + USBD_CtlSendStatus(pdev); + 8008204: 6878 ldr r0, [r7, #4] + 8008206: f000 fa43 bl 8008690 + + if (dev_addr != 0U) + 800820a: 7bfb ldrb r3, [r7, #15] + 800820c: 2b00 cmp r3, #0 + 800820e: d004 beq.n 800821a + { + pdev->dev_state = USBD_STATE_ADDRESSED; + 8008210: 687b ldr r3, [r7, #4] + 8008212: 2202 movs r2, #2 + 8008214: f883 229c strb.w r2, [r3, #668] @ 0x29c + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 8008218: e009 b.n 800822e + } + else + { + pdev->dev_state = USBD_STATE_DEFAULT; + 800821a: 687b ldr r3, [r7, #4] + 800821c: 2201 movs r2, #1 + 800821e: f883 229c strb.w r2, [r3, #668] @ 0x29c + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 8008222: e004 b.n 800822e + } + } + } + else + { + USBD_CtlError(pdev, req); + 8008224: 6839 ldr r1, [r7, #0] + 8008226: 6878 ldr r0, [r7, #4] + 8008228: f000 f96a bl 8008500 + } +} + 800822c: bf00 nop + 800822e: bf00 nop + 8008230: 3710 adds r7, #16 + 8008232: 46bd mov sp, r7 + 8008234: bd80 pop {r7, pc} + ... + +08008238 : +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + 8008238: b580 push {r7, lr} + 800823a: b082 sub sp, #8 + 800823c: af00 add r7, sp, #0 + 800823e: 6078 str r0, [r7, #4] + 8008240: 6039 str r1, [r7, #0] + static uint8_t cfgidx; + + cfgidx = (uint8_t)(req->wValue); + 8008242: 683b ldr r3, [r7, #0] + 8008244: 885b ldrh r3, [r3, #2] + 8008246: b2da uxtb r2, r3 + 8008248: 4b41 ldr r3, [pc, #260] @ (8008350 ) + 800824a: 701a strb r2, [r3, #0] + + if (cfgidx > USBD_MAX_NUM_CONFIGURATION) + 800824c: 4b40 ldr r3, [pc, #256] @ (8008350 ) + 800824e: 781b ldrb r3, [r3, #0] + 8008250: 2b01 cmp r3, #1 + 8008252: d904 bls.n 800825e + { + USBD_CtlError(pdev, req); + 8008254: 6839 ldr r1, [r7, #0] + 8008256: 6878 ldr r0, [r7, #4] + 8008258: f000 f952 bl 8008500 + 800825c: e075 b.n 800834a + } + else + { + switch (pdev->dev_state) + 800825e: 687b ldr r3, [r7, #4] + 8008260: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8008264: 2b02 cmp r3, #2 + 8008266: d002 beq.n 800826e + 8008268: 2b03 cmp r3, #3 + 800826a: d023 beq.n 80082b4 + 800826c: e062 b.n 8008334 + { + case USBD_STATE_ADDRESSED: + if (cfgidx) + 800826e: 4b38 ldr r3, [pc, #224] @ (8008350 ) + 8008270: 781b ldrb r3, [r3, #0] + 8008272: 2b00 cmp r3, #0 + 8008274: d01a beq.n 80082ac + { + pdev->dev_config = cfgidx; + 8008276: 4b36 ldr r3, [pc, #216] @ (8008350 ) + 8008278: 781b ldrb r3, [r3, #0] + 800827a: 461a mov r2, r3 + 800827c: 687b ldr r3, [r7, #4] + 800827e: 605a str r2, [r3, #4] + pdev->dev_state = USBD_STATE_CONFIGURED; + 8008280: 687b ldr r3, [r7, #4] + 8008282: 2203 movs r2, #3 + 8008284: f883 229c strb.w r2, [r3, #668] @ 0x29c + if (USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL) + 8008288: 4b31 ldr r3, [pc, #196] @ (8008350 ) + 800828a: 781b ldrb r3, [r3, #0] + 800828c: 4619 mov r1, r3 + 800828e: 6878 ldr r0, [r7, #4] + 8008290: f7ff f9e7 bl 8007662 + 8008294: 4603 mov r3, r0 + 8008296: 2b02 cmp r3, #2 + 8008298: d104 bne.n 80082a4 + { + USBD_CtlError(pdev, req); + 800829a: 6839 ldr r1, [r7, #0] + 800829c: 6878 ldr r0, [r7, #4] + 800829e: f000 f92f bl 8008500 + return; + 80082a2: e052 b.n 800834a + } + USBD_CtlSendStatus(pdev); + 80082a4: 6878 ldr r0, [r7, #4] + 80082a6: f000 f9f3 bl 8008690 + } + else + { + USBD_CtlSendStatus(pdev); + } + break; + 80082aa: e04e b.n 800834a + USBD_CtlSendStatus(pdev); + 80082ac: 6878 ldr r0, [r7, #4] + 80082ae: f000 f9ef bl 8008690 + break; + 80082b2: e04a b.n 800834a + + case USBD_STATE_CONFIGURED: + if (cfgidx == 0U) + 80082b4: 4b26 ldr r3, [pc, #152] @ (8008350 ) + 80082b6: 781b ldrb r3, [r3, #0] + 80082b8: 2b00 cmp r3, #0 + 80082ba: d112 bne.n 80082e2 + { + pdev->dev_state = USBD_STATE_ADDRESSED; + 80082bc: 687b ldr r3, [r7, #4] + 80082be: 2202 movs r2, #2 + 80082c0: f883 229c strb.w r2, [r3, #668] @ 0x29c + pdev->dev_config = cfgidx; + 80082c4: 4b22 ldr r3, [pc, #136] @ (8008350 ) + 80082c6: 781b ldrb r3, [r3, #0] + 80082c8: 461a mov r2, r3 + 80082ca: 687b ldr r3, [r7, #4] + 80082cc: 605a str r2, [r3, #4] + USBD_ClrClassConfig(pdev, cfgidx); + 80082ce: 4b20 ldr r3, [pc, #128] @ (8008350 ) + 80082d0: 781b ldrb r3, [r3, #0] + 80082d2: 4619 mov r1, r3 + 80082d4: 6878 ldr r0, [r7, #4] + 80082d6: f7ff f9e3 bl 80076a0 + USBD_CtlSendStatus(pdev); + 80082da: 6878 ldr r0, [r7, #4] + 80082dc: f000 f9d8 bl 8008690 + } + else + { + USBD_CtlSendStatus(pdev); + } + break; + 80082e0: e033 b.n 800834a + else if (cfgidx != pdev->dev_config) + 80082e2: 4b1b ldr r3, [pc, #108] @ (8008350 ) + 80082e4: 781b ldrb r3, [r3, #0] + 80082e6: 461a mov r2, r3 + 80082e8: 687b ldr r3, [r7, #4] + 80082ea: 685b ldr r3, [r3, #4] + 80082ec: 429a cmp r2, r3 + 80082ee: d01d beq.n 800832c + USBD_ClrClassConfig(pdev, (uint8_t)pdev->dev_config); + 80082f0: 687b ldr r3, [r7, #4] + 80082f2: 685b ldr r3, [r3, #4] + 80082f4: b2db uxtb r3, r3 + 80082f6: 4619 mov r1, r3 + 80082f8: 6878 ldr r0, [r7, #4] + 80082fa: f7ff f9d1 bl 80076a0 + pdev->dev_config = cfgidx; + 80082fe: 4b14 ldr r3, [pc, #80] @ (8008350 ) + 8008300: 781b ldrb r3, [r3, #0] + 8008302: 461a mov r2, r3 + 8008304: 687b ldr r3, [r7, #4] + 8008306: 605a str r2, [r3, #4] + if (USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL) + 8008308: 4b11 ldr r3, [pc, #68] @ (8008350 ) + 800830a: 781b ldrb r3, [r3, #0] + 800830c: 4619 mov r1, r3 + 800830e: 6878 ldr r0, [r7, #4] + 8008310: f7ff f9a7 bl 8007662 + 8008314: 4603 mov r3, r0 + 8008316: 2b02 cmp r3, #2 + 8008318: d104 bne.n 8008324 + USBD_CtlError(pdev, req); + 800831a: 6839 ldr r1, [r7, #0] + 800831c: 6878 ldr r0, [r7, #4] + 800831e: f000 f8ef bl 8008500 + return; + 8008322: e012 b.n 800834a + USBD_CtlSendStatus(pdev); + 8008324: 6878 ldr r0, [r7, #4] + 8008326: f000 f9b3 bl 8008690 + break; + 800832a: e00e b.n 800834a + USBD_CtlSendStatus(pdev); + 800832c: 6878 ldr r0, [r7, #4] + 800832e: f000 f9af bl 8008690 + break; + 8008332: e00a b.n 800834a + + default: + USBD_CtlError(pdev, req); + 8008334: 6839 ldr r1, [r7, #0] + 8008336: 6878 ldr r0, [r7, #4] + 8008338: f000 f8e2 bl 8008500 + USBD_ClrClassConfig(pdev, cfgidx); + 800833c: 4b04 ldr r3, [pc, #16] @ (8008350 ) + 800833e: 781b ldrb r3, [r3, #0] + 8008340: 4619 mov r1, r3 + 8008342: 6878 ldr r0, [r7, #4] + 8008344: f7ff f9ac bl 80076a0 + break; + 8008348: bf00 nop + } + } +} + 800834a: 3708 adds r7, #8 + 800834c: 46bd mov sp, r7 + 800834e: bd80 pop {r7, pc} + 8008350: 20000344 .word 0x20000344 + +08008354 : +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + 8008354: b580 push {r7, lr} + 8008356: b082 sub sp, #8 + 8008358: af00 add r7, sp, #0 + 800835a: 6078 str r0, [r7, #4] + 800835c: 6039 str r1, [r7, #0] + if (req->wLength != 1U) + 800835e: 683b ldr r3, [r7, #0] + 8008360: 88db ldrh r3, [r3, #6] + 8008362: 2b01 cmp r3, #1 + 8008364: d004 beq.n 8008370 + { + USBD_CtlError(pdev, req); + 8008366: 6839 ldr r1, [r7, #0] + 8008368: 6878 ldr r0, [r7, #4] + 800836a: f000 f8c9 bl 8008500 + default: + USBD_CtlError(pdev, req); + break; + } + } +} + 800836e: e022 b.n 80083b6 + switch (pdev->dev_state) + 8008370: 687b ldr r3, [r7, #4] + 8008372: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8008376: 2b02 cmp r3, #2 + 8008378: dc02 bgt.n 8008380 + 800837a: 2b00 cmp r3, #0 + 800837c: dc03 bgt.n 8008386 + 800837e: e015 b.n 80083ac + 8008380: 2b03 cmp r3, #3 + 8008382: d00b beq.n 800839c + 8008384: e012 b.n 80083ac + pdev->dev_default_config = 0U; + 8008386: 687b ldr r3, [r7, #4] + 8008388: 2200 movs r2, #0 + 800838a: 609a str r2, [r3, #8] + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_default_config, 1U); + 800838c: 687b ldr r3, [r7, #4] + 800838e: 3308 adds r3, #8 + 8008390: 2201 movs r2, #1 + 8008392: 4619 mov r1, r3 + 8008394: 6878 ldr r0, [r7, #4] + 8008396: f000 f91d bl 80085d4 + break; + 800839a: e00c b.n 80083b6 + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_config, 1U); + 800839c: 687b ldr r3, [r7, #4] + 800839e: 3304 adds r3, #4 + 80083a0: 2201 movs r2, #1 + 80083a2: 4619 mov r1, r3 + 80083a4: 6878 ldr r0, [r7, #4] + 80083a6: f000 f915 bl 80085d4 + break; + 80083aa: e004 b.n 80083b6 + USBD_CtlError(pdev, req); + 80083ac: 6839 ldr r1, [r7, #0] + 80083ae: 6878 ldr r0, [r7, #4] + 80083b0: f000 f8a6 bl 8008500 + break; + 80083b4: bf00 nop +} + 80083b6: bf00 nop + 80083b8: 3708 adds r7, #8 + 80083ba: 46bd mov sp, r7 + 80083bc: bd80 pop {r7, pc} + +080083be : +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + 80083be: b580 push {r7, lr} + 80083c0: b082 sub sp, #8 + 80083c2: af00 add r7, sp, #0 + 80083c4: 6078 str r0, [r7, #4] + 80083c6: 6039 str r1, [r7, #0] + switch (pdev->dev_state) + 80083c8: 687b ldr r3, [r7, #4] + 80083ca: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 80083ce: 3b01 subs r3, #1 + 80083d0: 2b02 cmp r3, #2 + 80083d2: d81e bhi.n 8008412 + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + case USBD_STATE_CONFIGURED: + if (req->wLength != 0x2U) + 80083d4: 683b ldr r3, [r7, #0] + 80083d6: 88db ldrh r3, [r3, #6] + 80083d8: 2b02 cmp r3, #2 + 80083da: d004 beq.n 80083e6 + { + USBD_CtlError(pdev, req); + 80083dc: 6839 ldr r1, [r7, #0] + 80083de: 6878 ldr r0, [r7, #4] + 80083e0: f000 f88e bl 8008500 + break; + 80083e4: e01a b.n 800841c + } + +#if (USBD_SELF_POWERED == 1U) + pdev->dev_config_status = USB_CONFIG_SELF_POWERED; + 80083e6: 687b ldr r3, [r7, #4] + 80083e8: 2201 movs r2, #1 + 80083ea: 60da str r2, [r3, #12] +#else + pdev->dev_config_status = 0U; +#endif + + if (pdev->dev_remote_wakeup) + 80083ec: 687b ldr r3, [r7, #4] + 80083ee: f8d3 32a4 ldr.w r3, [r3, #676] @ 0x2a4 + 80083f2: 2b00 cmp r3, #0 + 80083f4: d005 beq.n 8008402 + { + pdev->dev_config_status |= USB_CONFIG_REMOTE_WAKEUP; + 80083f6: 687b ldr r3, [r7, #4] + 80083f8: 68db ldr r3, [r3, #12] + 80083fa: f043 0202 orr.w r2, r3, #2 + 80083fe: 687b ldr r3, [r7, #4] + 8008400: 60da str r2, [r3, #12] + } + + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_config_status, 2U); + 8008402: 687b ldr r3, [r7, #4] + 8008404: 330c adds r3, #12 + 8008406: 2202 movs r2, #2 + 8008408: 4619 mov r1, r3 + 800840a: 6878 ldr r0, [r7, #4] + 800840c: f000 f8e2 bl 80085d4 + break; + 8008410: e004 b.n 800841c + + default: + USBD_CtlError(pdev, req); + 8008412: 6839 ldr r1, [r7, #0] + 8008414: 6878 ldr r0, [r7, #4] + 8008416: f000 f873 bl 8008500 + break; + 800841a: bf00 nop + } +} + 800841c: bf00 nop + 800841e: 3708 adds r7, #8 + 8008420: 46bd mov sp, r7 + 8008422: bd80 pop {r7, pc} + +08008424 : +* @param req: usb request +* @retval status +*/ +static void USBD_SetFeature(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8008424: b580 push {r7, lr} + 8008426: b082 sub sp, #8 + 8008428: af00 add r7, sp, #0 + 800842a: 6078 str r0, [r7, #4] + 800842c: 6039 str r1, [r7, #0] + if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) + 800842e: 683b ldr r3, [r7, #0] + 8008430: 885b ldrh r3, [r3, #2] + 8008432: 2b01 cmp r3, #1 + 8008434: d106 bne.n 8008444 + { + pdev->dev_remote_wakeup = 1U; + 8008436: 687b ldr r3, [r7, #4] + 8008438: 2201 movs r2, #1 + 800843a: f8c3 22a4 str.w r2, [r3, #676] @ 0x2a4 + USBD_CtlSendStatus(pdev); + 800843e: 6878 ldr r0, [r7, #4] + 8008440: f000 f926 bl 8008690 + } +} + 8008444: bf00 nop + 8008446: 3708 adds r7, #8 + 8008448: 46bd mov sp, r7 + 800844a: bd80 pop {r7, pc} + +0800844c : +* @param req: usb request +* @retval status +*/ +static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 800844c: b580 push {r7, lr} + 800844e: b082 sub sp, #8 + 8008450: af00 add r7, sp, #0 + 8008452: 6078 str r0, [r7, #4] + 8008454: 6039 str r1, [r7, #0] + switch (pdev->dev_state) + 8008456: 687b ldr r3, [r7, #4] + 8008458: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 800845c: 3b01 subs r3, #1 + 800845e: 2b02 cmp r3, #2 + 8008460: d80b bhi.n 800847a + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + case USBD_STATE_CONFIGURED: + if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) + 8008462: 683b ldr r3, [r7, #0] + 8008464: 885b ldrh r3, [r3, #2] + 8008466: 2b01 cmp r3, #1 + 8008468: d10c bne.n 8008484 + { + pdev->dev_remote_wakeup = 0U; + 800846a: 687b ldr r3, [r7, #4] + 800846c: 2200 movs r2, #0 + 800846e: f8c3 22a4 str.w r2, [r3, #676] @ 0x2a4 + USBD_CtlSendStatus(pdev); + 8008472: 6878 ldr r0, [r7, #4] + 8008474: f000 f90c bl 8008690 + } + break; + 8008478: e004 b.n 8008484 + + default: + USBD_CtlError(pdev, req); + 800847a: 6839 ldr r1, [r7, #0] + 800847c: 6878 ldr r0, [r7, #4] + 800847e: f000 f83f bl 8008500 + break; + 8008482: e000 b.n 8008486 + break; + 8008484: bf00 nop + } +} + 8008486: bf00 nop + 8008488: 3708 adds r7, #8 + 800848a: 46bd mov sp, r7 + 800848c: bd80 pop {r7, pc} + +0800848e : +* @param req: usb request +* @retval None +*/ + +void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata) +{ + 800848e: b480 push {r7} + 8008490: b083 sub sp, #12 + 8008492: af00 add r7, sp, #0 + 8008494: 6078 str r0, [r7, #4] + 8008496: 6039 str r1, [r7, #0] + req->bmRequest = *(uint8_t *)(pdata); + 8008498: 683b ldr r3, [r7, #0] + 800849a: 781a ldrb r2, [r3, #0] + 800849c: 687b ldr r3, [r7, #4] + 800849e: 701a strb r2, [r3, #0] + req->bRequest = *(uint8_t *)(pdata + 1U); + 80084a0: 683b ldr r3, [r7, #0] + 80084a2: 785a ldrb r2, [r3, #1] + 80084a4: 687b ldr r3, [r7, #4] + 80084a6: 705a strb r2, [r3, #1] + req->wValue = SWAPBYTE(pdata + 2U); + 80084a8: 683b ldr r3, [r7, #0] + 80084aa: 3302 adds r3, #2 + 80084ac: 781b ldrb r3, [r3, #0] + 80084ae: 461a mov r2, r3 + 80084b0: 683b ldr r3, [r7, #0] + 80084b2: 3303 adds r3, #3 + 80084b4: 781b ldrb r3, [r3, #0] + 80084b6: 021b lsls r3, r3, #8 + 80084b8: b29b uxth r3, r3 + 80084ba: 4413 add r3, r2 + 80084bc: b29a uxth r2, r3 + 80084be: 687b ldr r3, [r7, #4] + 80084c0: 805a strh r2, [r3, #2] + req->wIndex = SWAPBYTE(pdata + 4U); + 80084c2: 683b ldr r3, [r7, #0] + 80084c4: 3304 adds r3, #4 + 80084c6: 781b ldrb r3, [r3, #0] + 80084c8: 461a mov r2, r3 + 80084ca: 683b ldr r3, [r7, #0] + 80084cc: 3305 adds r3, #5 + 80084ce: 781b ldrb r3, [r3, #0] + 80084d0: 021b lsls r3, r3, #8 + 80084d2: b29b uxth r3, r3 + 80084d4: 4413 add r3, r2 + 80084d6: b29a uxth r2, r3 + 80084d8: 687b ldr r3, [r7, #4] + 80084da: 809a strh r2, [r3, #4] + req->wLength = SWAPBYTE(pdata + 6U); + 80084dc: 683b ldr r3, [r7, #0] + 80084de: 3306 adds r3, #6 + 80084e0: 781b ldrb r3, [r3, #0] + 80084e2: 461a mov r2, r3 + 80084e4: 683b ldr r3, [r7, #0] + 80084e6: 3307 adds r3, #7 + 80084e8: 781b ldrb r3, [r3, #0] + 80084ea: 021b lsls r3, r3, #8 + 80084ec: b29b uxth r3, r3 + 80084ee: 4413 add r3, r2 + 80084f0: b29a uxth r2, r3 + 80084f2: 687b ldr r3, [r7, #4] + 80084f4: 80da strh r2, [r3, #6] + +} + 80084f6: bf00 nop + 80084f8: 370c adds r7, #12 + 80084fa: 46bd mov sp, r7 + 80084fc: bc80 pop {r7} + 80084fe: 4770 bx lr + +08008500 : +* @retval None +*/ + +void USBD_CtlError(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8008500: b580 push {r7, lr} + 8008502: b082 sub sp, #8 + 8008504: af00 add r7, sp, #0 + 8008506: 6078 str r0, [r7, #4] + 8008508: 6039 str r1, [r7, #0] + USBD_LL_StallEP(pdev, 0x80U); + 800850a: 2180 movs r1, #128 @ 0x80 + 800850c: 6878 ldr r0, [r7, #4] + 800850e: f000 fcd1 bl 8008eb4 + USBD_LL_StallEP(pdev, 0U); + 8008512: 2100 movs r1, #0 + 8008514: 6878 ldr r0, [r7, #4] + 8008516: f000 fccd bl 8008eb4 +} + 800851a: bf00 nop + 800851c: 3708 adds r7, #8 + 800851e: 46bd mov sp, r7 + 8008520: bd80 pop {r7, pc} + +08008522 : + * @param unicode : Formatted string buffer (unicode) + * @param len : descriptor length + * @retval None + */ +void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len) +{ + 8008522: b580 push {r7, lr} + 8008524: b086 sub sp, #24 + 8008526: af00 add r7, sp, #0 + 8008528: 60f8 str r0, [r7, #12] + 800852a: 60b9 str r1, [r7, #8] + 800852c: 607a str r2, [r7, #4] + uint8_t idx = 0U; + 800852e: 2300 movs r3, #0 + 8008530: 75fb strb r3, [r7, #23] + + if (desc != NULL) + 8008532: 68fb ldr r3, [r7, #12] + 8008534: 2b00 cmp r3, #0 + 8008536: d032 beq.n 800859e + { + *len = (uint16_t)USBD_GetLen(desc) * 2U + 2U; + 8008538: 68f8 ldr r0, [r7, #12] + 800853a: f000 f834 bl 80085a6 + 800853e: 4603 mov r3, r0 + 8008540: 3301 adds r3, #1 + 8008542: b29b uxth r3, r3 + 8008544: 005b lsls r3, r3, #1 + 8008546: b29a uxth r2, r3 + 8008548: 687b ldr r3, [r7, #4] + 800854a: 801a strh r2, [r3, #0] + unicode[idx++] = *(uint8_t *)(void *)len; + 800854c: 7dfb ldrb r3, [r7, #23] + 800854e: 1c5a adds r2, r3, #1 + 8008550: 75fa strb r2, [r7, #23] + 8008552: 461a mov r2, r3 + 8008554: 68bb ldr r3, [r7, #8] + 8008556: 4413 add r3, r2 + 8008558: 687a ldr r2, [r7, #4] + 800855a: 7812 ldrb r2, [r2, #0] + 800855c: 701a strb r2, [r3, #0] + unicode[idx++] = USB_DESC_TYPE_STRING; + 800855e: 7dfb ldrb r3, [r7, #23] + 8008560: 1c5a adds r2, r3, #1 + 8008562: 75fa strb r2, [r7, #23] + 8008564: 461a mov r2, r3 + 8008566: 68bb ldr r3, [r7, #8] + 8008568: 4413 add r3, r2 + 800856a: 2203 movs r2, #3 + 800856c: 701a strb r2, [r3, #0] + + while (*desc != '\0') + 800856e: e012 b.n 8008596 + { + unicode[idx++] = *desc++; + 8008570: 68fb ldr r3, [r7, #12] + 8008572: 1c5a adds r2, r3, #1 + 8008574: 60fa str r2, [r7, #12] + 8008576: 7dfa ldrb r2, [r7, #23] + 8008578: 1c51 adds r1, r2, #1 + 800857a: 75f9 strb r1, [r7, #23] + 800857c: 4611 mov r1, r2 + 800857e: 68ba ldr r2, [r7, #8] + 8008580: 440a add r2, r1 + 8008582: 781b ldrb r3, [r3, #0] + 8008584: 7013 strb r3, [r2, #0] + unicode[idx++] = 0U; + 8008586: 7dfb ldrb r3, [r7, #23] + 8008588: 1c5a adds r2, r3, #1 + 800858a: 75fa strb r2, [r7, #23] + 800858c: 461a mov r2, r3 + 800858e: 68bb ldr r3, [r7, #8] + 8008590: 4413 add r3, r2 + 8008592: 2200 movs r2, #0 + 8008594: 701a strb r2, [r3, #0] + while (*desc != '\0') + 8008596: 68fb ldr r3, [r7, #12] + 8008598: 781b ldrb r3, [r3, #0] + 800859a: 2b00 cmp r3, #0 + 800859c: d1e8 bne.n 8008570 + } + } +} + 800859e: bf00 nop + 80085a0: 3718 adds r7, #24 + 80085a2: 46bd mov sp, r7 + 80085a4: bd80 pop {r7, pc} + +080085a6 : + * return the string length + * @param buf : pointer to the ascii string buffer + * @retval string length + */ +static uint8_t USBD_GetLen(uint8_t *buf) +{ + 80085a6: b480 push {r7} + 80085a8: b085 sub sp, #20 + 80085aa: af00 add r7, sp, #0 + 80085ac: 6078 str r0, [r7, #4] + uint8_t len = 0U; + 80085ae: 2300 movs r3, #0 + 80085b0: 73fb strb r3, [r7, #15] + + while (*buf != '\0') + 80085b2: e005 b.n 80085c0 + { + len++; + 80085b4: 7bfb ldrb r3, [r7, #15] + 80085b6: 3301 adds r3, #1 + 80085b8: 73fb strb r3, [r7, #15] + buf++; + 80085ba: 687b ldr r3, [r7, #4] + 80085bc: 3301 adds r3, #1 + 80085be: 607b str r3, [r7, #4] + while (*buf != '\0') + 80085c0: 687b ldr r3, [r7, #4] + 80085c2: 781b ldrb r3, [r3, #0] + 80085c4: 2b00 cmp r3, #0 + 80085c6: d1f5 bne.n 80085b4 + } + + return len; + 80085c8: 7bfb ldrb r3, [r7, #15] +} + 80085ca: 4618 mov r0, r3 + 80085cc: 3714 adds r7, #20 + 80085ce: 46bd mov sp, r7 + 80085d0: bc80 pop {r7} + 80085d2: 4770 bx lr + +080085d4 : +* @param len: length of data to be sent +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + 80085d4: b580 push {r7, lr} + 80085d6: b084 sub sp, #16 + 80085d8: af00 add r7, sp, #0 + 80085da: 60f8 str r0, [r7, #12] + 80085dc: 60b9 str r1, [r7, #8] + 80085de: 4613 mov r3, r2 + 80085e0: 80fb strh r3, [r7, #6] + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_DATA_IN; + 80085e2: 68fb ldr r3, [r7, #12] + 80085e4: 2202 movs r2, #2 + 80085e6: f8c3 2294 str.w r2, [r3, #660] @ 0x294 + pdev->ep_in[0].total_length = len; + 80085ea: 88fa ldrh r2, [r7, #6] + 80085ec: 68fb ldr r3, [r7, #12] + 80085ee: 61da str r2, [r3, #28] + pdev->ep_in[0].rem_length = len; + 80085f0: 88fa ldrh r2, [r7, #6] + 80085f2: 68fb ldr r3, [r7, #12] + 80085f4: 621a str r2, [r3, #32] + + /* Start the transfer */ + USBD_LL_Transmit(pdev, 0x00U, pbuf, len); + 80085f6: 88fb ldrh r3, [r7, #6] + 80085f8: 68ba ldr r2, [r7, #8] + 80085fa: 2100 movs r1, #0 + 80085fc: 68f8 ldr r0, [r7, #12] + 80085fe: f000 fce1 bl 8008fc4 + + return USBD_OK; + 8008602: 2300 movs r3, #0 +} + 8008604: 4618 mov r0, r3 + 8008606: 3710 adds r7, #16 + 8008608: 46bd mov sp, r7 + 800860a: bd80 pop {r7, pc} + +0800860c : +* @param len: length of data to be sent +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + 800860c: b580 push {r7, lr} + 800860e: b084 sub sp, #16 + 8008610: af00 add r7, sp, #0 + 8008612: 60f8 str r0, [r7, #12] + 8008614: 60b9 str r1, [r7, #8] + 8008616: 4613 mov r3, r2 + 8008618: 80fb strh r3, [r7, #6] + /* Start the next transfer */ + USBD_LL_Transmit(pdev, 0x00U, pbuf, len); + 800861a: 88fb ldrh r3, [r7, #6] + 800861c: 68ba ldr r2, [r7, #8] + 800861e: 2100 movs r1, #0 + 8008620: 68f8 ldr r0, [r7, #12] + 8008622: f000 fccf bl 8008fc4 + + return USBD_OK; + 8008626: 2300 movs r3, #0 +} + 8008628: 4618 mov r0, r3 + 800862a: 3710 adds r7, #16 + 800862c: 46bd mov sp, r7 + 800862e: bd80 pop {r7, pc} + +08008630 : +* @param len: length of data to be received +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + 8008630: b580 push {r7, lr} + 8008632: b084 sub sp, #16 + 8008634: af00 add r7, sp, #0 + 8008636: 60f8 str r0, [r7, #12] + 8008638: 60b9 str r1, [r7, #8] + 800863a: 4613 mov r3, r2 + 800863c: 80fb strh r3, [r7, #6] + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_DATA_OUT; + 800863e: 68fb ldr r3, [r7, #12] + 8008640: 2203 movs r2, #3 + 8008642: f8c3 2294 str.w r2, [r3, #660] @ 0x294 + pdev->ep_out[0].total_length = len; + 8008646: 88fa ldrh r2, [r7, #6] + 8008648: 68fb ldr r3, [r7, #12] + 800864a: f8c3 215c str.w r2, [r3, #348] @ 0x15c + pdev->ep_out[0].rem_length = len; + 800864e: 88fa ldrh r2, [r7, #6] + 8008650: 68fb ldr r3, [r7, #12] + 8008652: f8c3 2160 str.w r2, [r3, #352] @ 0x160 + + /* Start the transfer */ + USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); + 8008656: 88fb ldrh r3, [r7, #6] + 8008658: 68ba ldr r2, [r7, #8] + 800865a: 2100 movs r1, #0 + 800865c: 68f8 ldr r0, [r7, #12] + 800865e: f000 fcd4 bl 800900a + + return USBD_OK; + 8008662: 2300 movs r3, #0 +} + 8008664: 4618 mov r0, r3 + 8008666: 3710 adds r7, #16 + 8008668: 46bd mov sp, r7 + 800866a: bd80 pop {r7, pc} + +0800866c : +* @param len: length of data to be received +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + 800866c: b580 push {r7, lr} + 800866e: b084 sub sp, #16 + 8008670: af00 add r7, sp, #0 + 8008672: 60f8 str r0, [r7, #12] + 8008674: 60b9 str r1, [r7, #8] + 8008676: 4613 mov r3, r2 + 8008678: 80fb strh r3, [r7, #6] + USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); + 800867a: 88fb ldrh r3, [r7, #6] + 800867c: 68ba ldr r2, [r7, #8] + 800867e: 2100 movs r1, #0 + 8008680: 68f8 ldr r0, [r7, #12] + 8008682: f000 fcc2 bl 800900a + + return USBD_OK; + 8008686: 2300 movs r3, #0 +} + 8008688: 4618 mov r0, r3 + 800868a: 3710 adds r7, #16 + 800868c: 46bd mov sp, r7 + 800868e: bd80 pop {r7, pc} + +08008690 : +* send zero lzngth packet on the ctl pipe +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev) +{ + 8008690: b580 push {r7, lr} + 8008692: b082 sub sp, #8 + 8008694: af00 add r7, sp, #0 + 8008696: 6078 str r0, [r7, #4] + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_STATUS_IN; + 8008698: 687b ldr r3, [r7, #4] + 800869a: 2204 movs r2, #4 + 800869c: f8c3 2294 str.w r2, [r3, #660] @ 0x294 + + /* Start the transfer */ + USBD_LL_Transmit(pdev, 0x00U, NULL, 0U); + 80086a0: 2300 movs r3, #0 + 80086a2: 2200 movs r2, #0 + 80086a4: 2100 movs r1, #0 + 80086a6: 6878 ldr r0, [r7, #4] + 80086a8: f000 fc8c bl 8008fc4 + + return USBD_OK; + 80086ac: 2300 movs r3, #0 +} + 80086ae: 4618 mov r0, r3 + 80086b0: 3708 adds r7, #8 + 80086b2: 46bd mov sp, r7 + 80086b4: bd80 pop {r7, pc} + +080086b6 : +* receive zero lzngth packet on the ctl pipe +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev) +{ + 80086b6: b580 push {r7, lr} + 80086b8: b082 sub sp, #8 + 80086ba: af00 add r7, sp, #0 + 80086bc: 6078 str r0, [r7, #4] + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_STATUS_OUT; + 80086be: 687b ldr r3, [r7, #4] + 80086c0: 2205 movs r2, #5 + 80086c2: f8c3 2294 str.w r2, [r3, #660] @ 0x294 + + /* Start the transfer */ + USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); + 80086c6: 2300 movs r3, #0 + 80086c8: 2200 movs r2, #0 + 80086ca: 2100 movs r1, #0 + 80086cc: 6878 ldr r0, [r7, #4] + 80086ce: f000 fc9c bl 800900a + + return USBD_OK; + 80086d2: 2300 movs r3, #0 +} + 80086d4: 4618 mov r0, r3 + 80086d6: 3708 adds r7, #8 + 80086d8: 46bd mov sp, r7 + 80086da: bd80 pop {r7, pc} + +080086dc : +/** + * Init USB device Library, add supported class and start the library + * @retval None + */ +void MX_USB_DEVICE_Init(void) +{ + 80086dc: b580 push {r7, lr} + 80086de: af00 add r7, sp, #0 + /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ + + /* USER CODE END USB_DEVICE_Init_PreTreatment */ + + /* Init Device Library, add supported class and start the library. */ + if (USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK) + 80086e0: 2200 movs r2, #0 + 80086e2: 4912 ldr r1, [pc, #72] @ (800872c ) + 80086e4: 4812 ldr r0, [pc, #72] @ (8008730 ) + 80086e6: f7fe ff62 bl 80075ae + 80086ea: 4603 mov r3, r0 + 80086ec: 2b00 cmp r3, #0 + 80086ee: d001 beq.n 80086f4 + { + Error_Handler(); + 80086f0: f7f8 f97a bl 80009e8 + } + if (USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC) != USBD_OK) + 80086f4: 490f ldr r1, [pc, #60] @ (8008734 ) + 80086f6: 480e ldr r0, [pc, #56] @ (8008730 ) + 80086f8: f7fe ff84 bl 8007604 + 80086fc: 4603 mov r3, r0 + 80086fe: 2b00 cmp r3, #0 + 8008700: d001 beq.n 8008706 + { + Error_Handler(); + 8008702: f7f8 f971 bl 80009e8 + } + if (USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS) != USBD_OK) + 8008706: 490c ldr r1, [pc, #48] @ (8008738 ) + 8008708: 4809 ldr r0, [pc, #36] @ (8008730 ) + 800870a: f7fe feb5 bl 8007478 + 800870e: 4603 mov r3, r0 + 8008710: 2b00 cmp r3, #0 + 8008712: d001 beq.n 8008718 + { + Error_Handler(); + 8008714: f7f8 f968 bl 80009e8 + } + if (USBD_Start(&hUsbDeviceFS) != USBD_OK) + 8008718: 4805 ldr r0, [pc, #20] @ (8008730 ) + 800871a: f7fe ff8c bl 8007636 + 800871e: 4603 mov r3, r0 + 8008720: 2b00 cmp r3, #0 + 8008722: d001 beq.n 8008728 + { + Error_Handler(); + 8008724: f7f8 f960 bl 80009e8 + } + + /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */ + + /* USER CODE END USB_DEVICE_Init_PostTreatment */ +} + 8008728: bf00 nop + 800872a: bd80 pop {r7, pc} + 800872c: 2000012c .word 0x2000012c + 8008730: 20000348 .word 0x20000348 + 8008734: 20000018 .word 0x20000018 + 8008738: 2000011c .word 0x2000011c + +0800873c : +/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ +#define RX_FIFO_SZ 256 +static uint8_t rx_fifo[RX_FIFO_SZ]; +static volatile uint16_t rx_head = 0, rx_tail = 0; + +static void fifo_push(const uint8_t* data, uint32_t len) { + 800873c: b480 push {r7} + 800873e: b085 sub sp, #20 + 8008740: af00 add r7, sp, #0 + 8008742: 6078 str r0, [r7, #4] + 8008744: 6039 str r1, [r7, #0] + while (len--) { + 8008746: e01e b.n 8008786 + uint16_t next = (rx_head + 1u) & (RX_FIFO_SZ - 1u); + 8008748: 4b14 ldr r3, [pc, #80] @ (800879c ) + 800874a: 881b ldrh r3, [r3, #0] + 800874c: b29b uxth r3, r3 + 800874e: 3301 adds r3, #1 + 8008750: b29b uxth r3, r3 + 8008752: b2db uxtb r3, r3 + 8008754: 81fb strh r3, [r7, #14] + if (next == (rx_tail & (RX_FIFO_SZ - 1u))) { + 8008756: 89fa ldrh r2, [r7, #14] + 8008758: 4b11 ldr r3, [pc, #68] @ (80087a0 ) + 800875a: 881b ldrh r3, [r3, #0] + 800875c: b29b uxth r3, r3 + 800875e: b2db uxtb r3, r3 + 8008760: 429a cmp r2, r3 + 8008762: d103 bne.n 800876c + /* overflow — drop byte (or set a flag) */ + data++; + 8008764: 687b ldr r3, [r7, #4] + 8008766: 3301 adds r3, #1 + 8008768: 607b str r3, [r7, #4] + continue; + 800876a: e00c b.n 8008786 + } + rx_fifo[rx_head & (RX_FIFO_SZ - 1u)] = *data++; + 800876c: 687b ldr r3, [r7, #4] + 800876e: 1c5a adds r2, r3, #1 + 8008770: 607a str r2, [r7, #4] + 8008772: 4a0a ldr r2, [pc, #40] @ (800879c ) + 8008774: 8812 ldrh r2, [r2, #0] + 8008776: b292 uxth r2, r2 + 8008778: b2d2 uxtb r2, r2 + 800877a: 7819 ldrb r1, [r3, #0] + 800877c: 4b09 ldr r3, [pc, #36] @ (80087a4 ) + 800877e: 5499 strb r1, [r3, r2] + rx_head = next; + 8008780: 4a06 ldr r2, [pc, #24] @ (800879c ) + 8008782: 89fb ldrh r3, [r7, #14] + 8008784: 8013 strh r3, [r2, #0] + while (len--) { + 8008786: 683b ldr r3, [r7, #0] + 8008788: 1e5a subs r2, r3, #1 + 800878a: 603a str r2, [r7, #0] + 800878c: 2b00 cmp r3, #0 + 800878e: d1db bne.n 8008748 + } +} + 8008790: bf00 nop + 8008792: bf00 nop + 8008794: 3714 adds r7, #20 + 8008796: 46bd mov sp, r7 + 8008798: bc80 pop {r7} + 800879a: 4770 bx lr + 800879c: 20000f0c .word 0x20000f0c + 80087a0: 20000f0e .word 0x20000f0e + 80087a4: 20000e0c .word 0x20000e0c + +080087a8 : + +uint32_t CDC_Available(void) { + 80087a8: b480 push {r7} + 80087aa: af00 add r7, sp, #0 + return (uint16_t)((rx_head - rx_tail) & (RX_FIFO_SZ - 1u)); + 80087ac: 4b06 ldr r3, [pc, #24] @ (80087c8 ) + 80087ae: 881b ldrh r3, [r3, #0] + 80087b0: b29a uxth r2, r3 + 80087b2: 4b06 ldr r3, [pc, #24] @ (80087cc ) + 80087b4: 881b ldrh r3, [r3, #0] + 80087b6: b29b uxth r3, r3 + 80087b8: 1ad3 subs r3, r2, r3 + 80087ba: b29b uxth r3, r3 + 80087bc: b2db uxtb r3, r3 +} + 80087be: 4618 mov r0, r3 + 80087c0: 46bd mov sp, r7 + 80087c2: bc80 pop {r7} + 80087c4: 4770 bx lr + 80087c6: bf00 nop + 80087c8: 20000f0c .word 0x20000f0c + 80087cc: 20000f0e .word 0x20000f0e + +080087d0 : + +int CDC_ReadByte(void) { + 80087d0: b480 push {r7} + 80087d2: b083 sub sp, #12 + 80087d4: af00 add r7, sp, #0 + if (rx_tail == rx_head) return -1; + 80087d6: 4b10 ldr r3, [pc, #64] @ (8008818 ) + 80087d8: 881b ldrh r3, [r3, #0] + 80087da: b29a uxth r2, r3 + 80087dc: 4b0f ldr r3, [pc, #60] @ (800881c ) + 80087de: 881b ldrh r3, [r3, #0] + 80087e0: b29b uxth r3, r3 + 80087e2: 429a cmp r2, r3 + 80087e4: d102 bne.n 80087ec + 80087e6: f04f 33ff mov.w r3, #4294967295 + 80087ea: e010 b.n 800880e + int b = rx_fifo[rx_tail & (RX_FIFO_SZ - 1u)]; + 80087ec: 4b0a ldr r3, [pc, #40] @ (8008818 ) + 80087ee: 881b ldrh r3, [r3, #0] + 80087f0: b29b uxth r3, r3 + 80087f2: b2db uxtb r3, r3 + 80087f4: 4a0a ldr r2, [pc, #40] @ (8008820 ) + 80087f6: 5cd3 ldrb r3, [r2, r3] + 80087f8: 607b str r3, [r7, #4] + rx_tail = (rx_tail + 1u) & (RX_FIFO_SZ - 1u); + 80087fa: 4b07 ldr r3, [pc, #28] @ (8008818 ) + 80087fc: 881b ldrh r3, [r3, #0] + 80087fe: b29b uxth r3, r3 + 8008800: 3301 adds r3, #1 + 8008802: b29b uxth r3, r3 + 8008804: b2db uxtb r3, r3 + 8008806: b29a uxth r2, r3 + 8008808: 4b03 ldr r3, [pc, #12] @ (8008818 ) + 800880a: 801a strh r2, [r3, #0] + return b; + 800880c: 687b ldr r3, [r7, #4] +} + 800880e: 4618 mov r0, r3 + 8008810: 370c adds r7, #12 + 8008812: 46bd mov sp, r7 + 8008814: bc80 pop {r7} + 8008816: 4770 bx lr + 8008818: 20000f0e .word 0x20000f0e + 800881c: 20000f0c .word 0x20000f0c + 8008820: 20000e0c .word 0x20000e0c + +08008824 : +/** + * @brief Initializes the CDC media low layer over the FS USB IP + * @retval USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_Init_FS(void) +{ + 8008824: b580 push {r7, lr} + 8008826: af00 add r7, sp, #0 + /* USER CODE BEGIN 3 */ + /* Set Application Buffers */ + USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); + 8008828: 2200 movs r2, #0 + 800882a: 4905 ldr r1, [pc, #20] @ (8008840 ) + 800882c: 4805 ldr r0, [pc, #20] @ (8008844 ) + 800882e: f7fe fe39 bl 80074a4 + USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); + 8008832: 4905 ldr r1, [pc, #20] @ (8008848 ) + 8008834: 4803 ldr r0, [pc, #12] @ (8008844 ) + 8008836: f7fe fe4e bl 80074d6 + return (USBD_OK); + 800883a: 2300 movs r3, #0 + /* USER CODE END 3 */ +} + 800883c: 4618 mov r0, r3 + 800883e: bd80 pop {r7, pc} + 8008840: 20000a0c .word 0x20000a0c + 8008844: 20000348 .word 0x20000348 + 8008848: 2000060c .word 0x2000060c + +0800884c : +/** + * @brief DeInitializes the CDC media low layer + * @retval USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_DeInit_FS(void) +{ + 800884c: b480 push {r7} + 800884e: af00 add r7, sp, #0 + /* USER CODE BEGIN 4 */ + return (USBD_OK); + 8008850: 2300 movs r3, #0 + /* USER CODE END 4 */ +} + 8008852: 4618 mov r0, r3 + 8008854: 46bd mov sp, r7 + 8008856: bc80 pop {r7} + 8008858: 4770 bx lr + ... + +0800885c : + * @param pbuf: Buffer containing command data (request parameters) + * @param length: Number of data to be sent (in bytes) + * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) +{ + 800885c: b480 push {r7} + 800885e: b083 sub sp, #12 + 8008860: af00 add r7, sp, #0 + 8008862: 4603 mov r3, r0 + 8008864: 6039 str r1, [r7, #0] + 8008866: 71fb strb r3, [r7, #7] + 8008868: 4613 mov r3, r2 + 800886a: 80bb strh r3, [r7, #4] + /* USER CODE BEGIN 5 */ + switch(cmd) + 800886c: 79fb ldrb r3, [r7, #7] + 800886e: 2b23 cmp r3, #35 @ 0x23 + 8008870: d84a bhi.n 8008908 + 8008872: a201 add r2, pc, #4 @ (adr r2, 8008878 ) + 8008874: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8008878: 08008909 .word 0x08008909 + 800887c: 08008909 .word 0x08008909 + 8008880: 08008909 .word 0x08008909 + 8008884: 08008909 .word 0x08008909 + 8008888: 08008909 .word 0x08008909 + 800888c: 08008909 .word 0x08008909 + 8008890: 08008909 .word 0x08008909 + 8008894: 08008909 .word 0x08008909 + 8008898: 08008909 .word 0x08008909 + 800889c: 08008909 .word 0x08008909 + 80088a0: 08008909 .word 0x08008909 + 80088a4: 08008909 .word 0x08008909 + 80088a8: 08008909 .word 0x08008909 + 80088ac: 08008909 .word 0x08008909 + 80088b0: 08008909 .word 0x08008909 + 80088b4: 08008909 .word 0x08008909 + 80088b8: 08008909 .word 0x08008909 + 80088bc: 08008909 .word 0x08008909 + 80088c0: 08008909 .word 0x08008909 + 80088c4: 08008909 .word 0x08008909 + 80088c8: 08008909 .word 0x08008909 + 80088cc: 08008909 .word 0x08008909 + 80088d0: 08008909 .word 0x08008909 + 80088d4: 08008909 .word 0x08008909 + 80088d8: 08008909 .word 0x08008909 + 80088dc: 08008909 .word 0x08008909 + 80088e0: 08008909 .word 0x08008909 + 80088e4: 08008909 .word 0x08008909 + 80088e8: 08008909 .word 0x08008909 + 80088ec: 08008909 .word 0x08008909 + 80088f0: 08008909 .word 0x08008909 + 80088f4: 08008909 .word 0x08008909 + 80088f8: 08008909 .word 0x08008909 + 80088fc: 08008909 .word 0x08008909 + 8008900: 08008909 .word 0x08008909 + 8008904: 08008909 .word 0x08008909 + case CDC_SEND_BREAK: + + break; + + default: + break; + 8008908: bf00 nop + } + + return (USBD_OK); + 800890a: 2300 movs r3, #0 + /* USER CODE END 5 */ +} + 800890c: 4618 mov r0, r3 + 800890e: 370c adds r7, #12 + 8008910: 46bd mov sp, r7 + 8008912: bc80 pop {r7} + 8008914: 4770 bx lr + 8008916: bf00 nop + +08008918 : + * @param Buf: Buffer of data to be received + * @param Len: Number of data received (in bytes) + * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) +{ + 8008918: b580 push {r7, lr} + 800891a: b082 sub sp, #8 + 800891c: af00 add r7, sp, #0 + 800891e: 6078 str r0, [r7, #4] + 8008920: 6039 str r1, [r7, #0] + /* USER CODE BEGIN 6 */ + if (*Len) fifo_push(Buf, *Len); + 8008922: 683b ldr r3, [r7, #0] + 8008924: 681b ldr r3, [r3, #0] + 8008926: 2b00 cmp r3, #0 + 8008928: d005 beq.n 8008936 + 800892a: 683b ldr r3, [r7, #0] + 800892c: 681b ldr r3, [r3, #0] + 800892e: 4619 mov r1, r3 + 8008930: 6878 ldr r0, [r7, #4] + 8008932: f7ff ff03 bl 800873c + USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); + 8008936: 6879 ldr r1, [r7, #4] + 8008938: 4805 ldr r0, [pc, #20] @ (8008950 ) + 800893a: f7fe fdcc bl 80074d6 + USBD_CDC_ReceivePacket(&hUsbDeviceFS); + 800893e: 4804 ldr r0, [pc, #16] @ (8008950 ) + 8008940: f7fe fe0b bl 800755a + return (USBD_OK); + 8008944: 2300 movs r3, #0 + /* USER CODE END 6 */ +} + 8008946: 4618 mov r0, r3 + 8008948: 3708 adds r7, #8 + 800894a: 46bd mov sp, r7 + 800894c: bd80 pop {r7, pc} + 800894e: bf00 nop + 8008950: 20000348 .word 0x20000348 + +08008954 : + * @param Buf: Buffer of data to be sent + * @param Len: Number of data to be sent (in bytes) + * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY + */ +uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) +{ + 8008954: b580 push {r7, lr} + 8008956: b084 sub sp, #16 + 8008958: af00 add r7, sp, #0 + 800895a: 6078 str r0, [r7, #4] + 800895c: 460b mov r3, r1 + 800895e: 807b strh r3, [r7, #2] + uint8_t result = USBD_OK; + 8008960: 2300 movs r3, #0 + 8008962: 73fb strb r3, [r7, #15] + /* USER CODE BEGIN 7 */ + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; + 8008964: 4b0d ldr r3, [pc, #52] @ (800899c ) + 8008966: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 800896a: 60bb str r3, [r7, #8] + if (hcdc->TxState != 0){ + 800896c: 68bb ldr r3, [r7, #8] + 800896e: f8d3 3214 ldr.w r3, [r3, #532] @ 0x214 + 8008972: 2b00 cmp r3, #0 + 8008974: d001 beq.n 800897a + return USBD_BUSY; + 8008976: 2301 movs r3, #1 + 8008978: e00b b.n 8008992 + } + USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); + 800897a: 887b ldrh r3, [r7, #2] + 800897c: 461a mov r2, r3 + 800897e: 6879 ldr r1, [r7, #4] + 8008980: 4806 ldr r0, [pc, #24] @ (800899c ) + 8008982: f7fe fd8f bl 80074a4 + result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); + 8008986: 4805 ldr r0, [pc, #20] @ (800899c ) + 8008988: f7fe fdb8 bl 80074fc + 800898c: 4603 mov r3, r0 + 800898e: 73fb strb r3, [r7, #15] + /* USER CODE END 7 */ + return result; + 8008990: 7bfb ldrb r3, [r7, #15] +} + 8008992: 4618 mov r0, r3 + 8008994: 3710 adds r7, #16 + 8008996: 46bd mov sp, r7 + 8008998: bd80 pop {r7, pc} + 800899a: bf00 nop + 800899c: 20000348 .word 0x20000348 + +080089a0 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 80089a0: b480 push {r7} + 80089a2: b083 sub sp, #12 + 80089a4: af00 add r7, sp, #0 + 80089a6: 4603 mov r3, r0 + 80089a8: 6039 str r1, [r7, #0] + 80089aa: 71fb strb r3, [r7, #7] + UNUSED(speed); + *length = sizeof(USBD_FS_DeviceDesc); + 80089ac: 683b ldr r3, [r7, #0] + 80089ae: 2212 movs r2, #18 + 80089b0: 801a strh r2, [r3, #0] + return USBD_FS_DeviceDesc; + 80089b2: 4b03 ldr r3, [pc, #12] @ (80089c0 ) +} + 80089b4: 4618 mov r0, r3 + 80089b6: 370c adds r7, #12 + 80089b8: 46bd mov sp, r7 + 80089ba: bc80 pop {r7} + 80089bc: 4770 bx lr + 80089be: bf00 nop + 80089c0: 20000148 .word 0x20000148 + +080089c4 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 80089c4: b480 push {r7} + 80089c6: b083 sub sp, #12 + 80089c8: af00 add r7, sp, #0 + 80089ca: 4603 mov r3, r0 + 80089cc: 6039 str r1, [r7, #0] + 80089ce: 71fb strb r3, [r7, #7] + UNUSED(speed); + *length = sizeof(USBD_LangIDDesc); + 80089d0: 683b ldr r3, [r7, #0] + 80089d2: 2204 movs r2, #4 + 80089d4: 801a strh r2, [r3, #0] + return USBD_LangIDDesc; + 80089d6: 4b03 ldr r3, [pc, #12] @ (80089e4 ) +} + 80089d8: 4618 mov r0, r3 + 80089da: 370c adds r7, #12 + 80089dc: 46bd mov sp, r7 + 80089de: bc80 pop {r7} + 80089e0: 4770 bx lr + 80089e2: bf00 nop + 80089e4: 2000015c .word 0x2000015c + +080089e8 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 80089e8: b580 push {r7, lr} + 80089ea: b082 sub sp, #8 + 80089ec: af00 add r7, sp, #0 + 80089ee: 4603 mov r3, r0 + 80089f0: 6039 str r1, [r7, #0] + 80089f2: 71fb strb r3, [r7, #7] + if(speed == 0) + 80089f4: 79fb ldrb r3, [r7, #7] + 80089f6: 2b00 cmp r3, #0 + 80089f8: d105 bne.n 8008a06 + { + USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); + 80089fa: 683a ldr r2, [r7, #0] + 80089fc: 4907 ldr r1, [pc, #28] @ (8008a1c ) + 80089fe: 4808 ldr r0, [pc, #32] @ (8008a20 ) + 8008a00: f7ff fd8f bl 8008522 + 8008a04: e004 b.n 8008a10 + } + else + { + USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); + 8008a06: 683a ldr r2, [r7, #0] + 8008a08: 4904 ldr r1, [pc, #16] @ (8008a1c ) + 8008a0a: 4805 ldr r0, [pc, #20] @ (8008a20 ) + 8008a0c: f7ff fd89 bl 8008522 + } + return USBD_StrDesc; + 8008a10: 4b02 ldr r3, [pc, #8] @ (8008a1c ) +} + 8008a12: 4618 mov r0, r3 + 8008a14: 3708 adds r7, #8 + 8008a16: 46bd mov sp, r7 + 8008a18: bd80 pop {r7, pc} + 8008a1a: bf00 nop + 8008a1c: 20000f10 .word 0x20000f10 + 8008a20: 08009a98 .word 0x08009a98 + +08008a24 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 8008a24: b580 push {r7, lr} + 8008a26: b082 sub sp, #8 + 8008a28: af00 add r7, sp, #0 + 8008a2a: 4603 mov r3, r0 + 8008a2c: 6039 str r1, [r7, #0] + 8008a2e: 71fb strb r3, [r7, #7] + UNUSED(speed); + USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length); + 8008a30: 683a ldr r2, [r7, #0] + 8008a32: 4904 ldr r1, [pc, #16] @ (8008a44 ) + 8008a34: 4804 ldr r0, [pc, #16] @ (8008a48 ) + 8008a36: f7ff fd74 bl 8008522 + return USBD_StrDesc; + 8008a3a: 4b02 ldr r3, [pc, #8] @ (8008a44 ) +} + 8008a3c: 4618 mov r0, r3 + 8008a3e: 3708 adds r7, #8 + 8008a40: 46bd mov sp, r7 + 8008a42: bd80 pop {r7, pc} + 8008a44: 20000f10 .word 0x20000f10 + 8008a48: 08009ab0 .word 0x08009ab0 + +08008a4c : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 8008a4c: b580 push {r7, lr} + 8008a4e: b082 sub sp, #8 + 8008a50: af00 add r7, sp, #0 + 8008a52: 4603 mov r3, r0 + 8008a54: 6039 str r1, [r7, #0] + 8008a56: 71fb strb r3, [r7, #7] + UNUSED(speed); + *length = USB_SIZ_STRING_SERIAL; + 8008a58: 683b ldr r3, [r7, #0] + 8008a5a: 221a movs r2, #26 + 8008a5c: 801a strh r2, [r3, #0] + + /* Update the serial number string descriptor with the data from the unique + * ID */ + Get_SerialNum(); + 8008a5e: f000 f843 bl 8008ae8 + /* USER CODE BEGIN USBD_FS_SerialStrDescriptor */ + + /* USER CODE END USBD_FS_SerialStrDescriptor */ + return (uint8_t *) USBD_StringSerial; + 8008a62: 4b02 ldr r3, [pc, #8] @ (8008a6c ) +} + 8008a64: 4618 mov r0, r3 + 8008a66: 3708 adds r7, #8 + 8008a68: 46bd mov sp, r7 + 8008a6a: bd80 pop {r7, pc} + 8008a6c: 20000160 .word 0x20000160 + +08008a70 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 8008a70: b580 push {r7, lr} + 8008a72: b082 sub sp, #8 + 8008a74: af00 add r7, sp, #0 + 8008a76: 4603 mov r3, r0 + 8008a78: 6039 str r1, [r7, #0] + 8008a7a: 71fb strb r3, [r7, #7] + if(speed == USBD_SPEED_HIGH) + 8008a7c: 79fb ldrb r3, [r7, #7] + 8008a7e: 2b00 cmp r3, #0 + 8008a80: d105 bne.n 8008a8e + { + USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); + 8008a82: 683a ldr r2, [r7, #0] + 8008a84: 4907 ldr r1, [pc, #28] @ (8008aa4 ) + 8008a86: 4808 ldr r0, [pc, #32] @ (8008aa8 ) + 8008a88: f7ff fd4b bl 8008522 + 8008a8c: e004 b.n 8008a98 + } + else + { + USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); + 8008a8e: 683a ldr r2, [r7, #0] + 8008a90: 4904 ldr r1, [pc, #16] @ (8008aa4 ) + 8008a92: 4805 ldr r0, [pc, #20] @ (8008aa8 ) + 8008a94: f7ff fd45 bl 8008522 + } + return USBD_StrDesc; + 8008a98: 4b02 ldr r3, [pc, #8] @ (8008aa4 ) +} + 8008a9a: 4618 mov r0, r3 + 8008a9c: 3708 adds r7, #8 + 8008a9e: 46bd mov sp, r7 + 8008aa0: bd80 pop {r7, pc} + 8008aa2: bf00 nop + 8008aa4: 20000f10 .word 0x20000f10 + 8008aa8: 08009ac4 .word 0x08009ac4 + +08008aac : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 8008aac: b580 push {r7, lr} + 8008aae: b082 sub sp, #8 + 8008ab0: af00 add r7, sp, #0 + 8008ab2: 4603 mov r3, r0 + 8008ab4: 6039 str r1, [r7, #0] + 8008ab6: 71fb strb r3, [r7, #7] + if(speed == 0) + 8008ab8: 79fb ldrb r3, [r7, #7] + 8008aba: 2b00 cmp r3, #0 + 8008abc: d105 bne.n 8008aca + { + USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); + 8008abe: 683a ldr r2, [r7, #0] + 8008ac0: 4907 ldr r1, [pc, #28] @ (8008ae0 ) + 8008ac2: 4808 ldr r0, [pc, #32] @ (8008ae4 ) + 8008ac4: f7ff fd2d bl 8008522 + 8008ac8: e004 b.n 8008ad4 + } + else + { + USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); + 8008aca: 683a ldr r2, [r7, #0] + 8008acc: 4904 ldr r1, [pc, #16] @ (8008ae0 ) + 8008ace: 4805 ldr r0, [pc, #20] @ (8008ae4 ) + 8008ad0: f7ff fd27 bl 8008522 + } + return USBD_StrDesc; + 8008ad4: 4b02 ldr r3, [pc, #8] @ (8008ae0 ) +} + 8008ad6: 4618 mov r0, r3 + 8008ad8: 3708 adds r7, #8 + 8008ada: 46bd mov sp, r7 + 8008adc: bd80 pop {r7, pc} + 8008ade: bf00 nop + 8008ae0: 20000f10 .word 0x20000f10 + 8008ae4: 08009ad0 .word 0x08009ad0 + +08008ae8 : + * @brief Create the serial number string descriptor + * @param None + * @retval None + */ +static void Get_SerialNum(void) +{ + 8008ae8: b580 push {r7, lr} + 8008aea: b084 sub sp, #16 + 8008aec: af00 add r7, sp, #0 + uint32_t deviceserial0; + uint32_t deviceserial1; + uint32_t deviceserial2; + + deviceserial0 = *(uint32_t *) DEVICE_ID1; + 8008aee: 4b0f ldr r3, [pc, #60] @ (8008b2c ) + 8008af0: 681b ldr r3, [r3, #0] + 8008af2: 60fb str r3, [r7, #12] + deviceserial1 = *(uint32_t *) DEVICE_ID2; + 8008af4: 4b0e ldr r3, [pc, #56] @ (8008b30 ) + 8008af6: 681b ldr r3, [r3, #0] + 8008af8: 60bb str r3, [r7, #8] + deviceserial2 = *(uint32_t *) DEVICE_ID3; + 8008afa: 4b0e ldr r3, [pc, #56] @ (8008b34 ) + 8008afc: 681b ldr r3, [r3, #0] + 8008afe: 607b str r3, [r7, #4] + + deviceserial0 += deviceserial2; + 8008b00: 68fa ldr r2, [r7, #12] + 8008b02: 687b ldr r3, [r7, #4] + 8008b04: 4413 add r3, r2 + 8008b06: 60fb str r3, [r7, #12] + + if (deviceserial0 != 0) + 8008b08: 68fb ldr r3, [r7, #12] + 8008b0a: 2b00 cmp r3, #0 + 8008b0c: d009 beq.n 8008b22 + { + IntToUnicode(deviceserial0, &USBD_StringSerial[2], 8); + 8008b0e: 2208 movs r2, #8 + 8008b10: 4909 ldr r1, [pc, #36] @ (8008b38 ) + 8008b12: 68f8 ldr r0, [r7, #12] + 8008b14: f000 f814 bl 8008b40 + IntToUnicode(deviceserial1, &USBD_StringSerial[18], 4); + 8008b18: 2204 movs r2, #4 + 8008b1a: 4908 ldr r1, [pc, #32] @ (8008b3c ) + 8008b1c: 68b8 ldr r0, [r7, #8] + 8008b1e: f000 f80f bl 8008b40 + } +} + 8008b22: bf00 nop + 8008b24: 3710 adds r7, #16 + 8008b26: 46bd mov sp, r7 + 8008b28: bd80 pop {r7, pc} + 8008b2a: bf00 nop + 8008b2c: 1ffff7e8 .word 0x1ffff7e8 + 8008b30: 1ffff7ec .word 0x1ffff7ec + 8008b34: 1ffff7f0 .word 0x1ffff7f0 + 8008b38: 20000162 .word 0x20000162 + 8008b3c: 20000172 .word 0x20000172 + +08008b40 : + * @param pbuf: pointer to the buffer + * @param len: buffer length + * @retval None + */ +static void IntToUnicode(uint32_t value, uint8_t * pbuf, uint8_t len) +{ + 8008b40: b480 push {r7} + 8008b42: b087 sub sp, #28 + 8008b44: af00 add r7, sp, #0 + 8008b46: 60f8 str r0, [r7, #12] + 8008b48: 60b9 str r1, [r7, #8] + 8008b4a: 4613 mov r3, r2 + 8008b4c: 71fb strb r3, [r7, #7] + uint8_t idx = 0; + 8008b4e: 2300 movs r3, #0 + 8008b50: 75fb strb r3, [r7, #23] + + for (idx = 0; idx < len; idx++) + 8008b52: 2300 movs r3, #0 + 8008b54: 75fb strb r3, [r7, #23] + 8008b56: e027 b.n 8008ba8 + { + if (((value >> 28)) < 0xA) + 8008b58: 68fb ldr r3, [r7, #12] + 8008b5a: 0f1b lsrs r3, r3, #28 + 8008b5c: 2b09 cmp r3, #9 + 8008b5e: d80b bhi.n 8008b78 + { + pbuf[2 * idx] = (value >> 28) + '0'; + 8008b60: 68fb ldr r3, [r7, #12] + 8008b62: 0f1b lsrs r3, r3, #28 + 8008b64: b2da uxtb r2, r3 + 8008b66: 7dfb ldrb r3, [r7, #23] + 8008b68: 005b lsls r3, r3, #1 + 8008b6a: 4619 mov r1, r3 + 8008b6c: 68bb ldr r3, [r7, #8] + 8008b6e: 440b add r3, r1 + 8008b70: 3230 adds r2, #48 @ 0x30 + 8008b72: b2d2 uxtb r2, r2 + 8008b74: 701a strb r2, [r3, #0] + 8008b76: e00a b.n 8008b8e + } + else + { + pbuf[2 * idx] = (value >> 28) + 'A' - 10; + 8008b78: 68fb ldr r3, [r7, #12] + 8008b7a: 0f1b lsrs r3, r3, #28 + 8008b7c: b2da uxtb r2, r3 + 8008b7e: 7dfb ldrb r3, [r7, #23] + 8008b80: 005b lsls r3, r3, #1 + 8008b82: 4619 mov r1, r3 + 8008b84: 68bb ldr r3, [r7, #8] + 8008b86: 440b add r3, r1 + 8008b88: 3237 adds r2, #55 @ 0x37 + 8008b8a: b2d2 uxtb r2, r2 + 8008b8c: 701a strb r2, [r3, #0] + } + + value = value << 4; + 8008b8e: 68fb ldr r3, [r7, #12] + 8008b90: 011b lsls r3, r3, #4 + 8008b92: 60fb str r3, [r7, #12] + + pbuf[2 * idx + 1] = 0; + 8008b94: 7dfb ldrb r3, [r7, #23] + 8008b96: 005b lsls r3, r3, #1 + 8008b98: 3301 adds r3, #1 + 8008b9a: 68ba ldr r2, [r7, #8] + 8008b9c: 4413 add r3, r2 + 8008b9e: 2200 movs r2, #0 + 8008ba0: 701a strb r2, [r3, #0] + for (idx = 0; idx < len; idx++) + 8008ba2: 7dfb ldrb r3, [r7, #23] + 8008ba4: 3301 adds r3, #1 + 8008ba6: 75fb strb r3, [r7, #23] + 8008ba8: 7dfa ldrb r2, [r7, #23] + 8008baa: 79fb ldrb r3, [r7, #7] + 8008bac: 429a cmp r2, r3 + 8008bae: d3d3 bcc.n 8008b58 + } +} + 8008bb0: bf00 nop + 8008bb2: bf00 nop + 8008bb4: 371c adds r7, #28 + 8008bb6: 46bd mov sp, r7 + 8008bb8: bc80 pop {r7} + 8008bba: 4770 bx lr + +08008bbc : + LL Driver Callbacks (PCD -> USB Device Library) +*******************************************************************************/ +/* MSP Init */ + +void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle) +{ + 8008bbc: b580 push {r7, lr} + 8008bbe: b084 sub sp, #16 + 8008bc0: af00 add r7, sp, #0 + 8008bc2: 6078 str r0, [r7, #4] + if(pcdHandle->Instance==USB) + 8008bc4: 687b ldr r3, [r7, #4] + 8008bc6: 681b ldr r3, [r3, #0] + 8008bc8: 4a0d ldr r2, [pc, #52] @ (8008c00 ) + 8008bca: 4293 cmp r3, r2 + 8008bcc: d113 bne.n 8008bf6 + { + /* USER CODE BEGIN USB_MspInit 0 */ + + /* USER CODE END USB_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_USB_CLK_ENABLE(); + 8008bce: 4b0d ldr r3, [pc, #52] @ (8008c04 ) + 8008bd0: 69db ldr r3, [r3, #28] + 8008bd2: 4a0c ldr r2, [pc, #48] @ (8008c04 ) + 8008bd4: f443 0300 orr.w r3, r3, #8388608 @ 0x800000 + 8008bd8: 61d3 str r3, [r2, #28] + 8008bda: 4b0a ldr r3, [pc, #40] @ (8008c04 ) + 8008bdc: 69db ldr r3, [r3, #28] + 8008bde: f403 0300 and.w r3, r3, #8388608 @ 0x800000 + 8008be2: 60fb str r3, [r7, #12] + 8008be4: 68fb ldr r3, [r7, #12] + + /* Peripheral interrupt init */ + HAL_NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 0, 0); + 8008be6: 2200 movs r2, #0 + 8008be8: 2100 movs r1, #0 + 8008bea: 2014 movs r0, #20 + 8008bec: f7f8 fc59 bl 80014a2 + HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn); + 8008bf0: 2014 movs r0, #20 + 8008bf2: f7f8 fc72 bl 80014da + /* USER CODE BEGIN USB_MspInit 1 */ + + /* USER CODE END USB_MspInit 1 */ + } +} + 8008bf6: bf00 nop + 8008bf8: 3710 adds r7, #16 + 8008bfa: 46bd mov sp, r7 + 8008bfc: bd80 pop {r7, pc} + 8008bfe: bf00 nop + 8008c00: 40005c00 .word 0x40005c00 + 8008c04: 40021000 .word 0x40021000 + +08008c08 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8008c08: b580 push {r7, lr} + 8008c0a: b082 sub sp, #8 + 8008c0c: af00 add r7, sp, #0 + 8008c0e: 6078 str r0, [r7, #4] + USBD_LL_SetupStage((USBD_HandleTypeDef*)hpcd->pData, (uint8_t *)hpcd->Setup); + 8008c10: 687b ldr r3, [r7, #4] + 8008c12: f8d3 22d4 ldr.w r2, [r3, #724] @ 0x2d4 + 8008c16: 687b ldr r3, [r7, #4] + 8008c18: f503 7326 add.w r3, r3, #664 @ 0x298 + 8008c1c: 4619 mov r1, r3 + 8008c1e: 4610 mov r0, r2 + 8008c20: f7fe fd51 bl 80076c6 +} + 8008c24: bf00 nop + 8008c26: 3708 adds r7, #8 + 8008c28: 46bd mov sp, r7 + 8008c2a: bd80 pop {r7, pc} + +08008c2c : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#else +void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8008c2c: b580 push {r7, lr} + 8008c2e: b082 sub sp, #8 + 8008c30: af00 add r7, sp, #0 + 8008c32: 6078 str r0, [r7, #4] + 8008c34: 460b mov r3, r1 + 8008c36: 70fb strb r3, [r7, #3] + USBD_LL_DataOutStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->OUT_ep[epnum].xfer_buff); + 8008c38: 687b ldr r3, [r7, #4] + 8008c3a: f8d3 02d4 ldr.w r0, [r3, #724] @ 0x2d4 + 8008c3e: 78fa ldrb r2, [r7, #3] + 8008c40: 6879 ldr r1, [r7, #4] + 8008c42: 4613 mov r3, r2 + 8008c44: 009b lsls r3, r3, #2 + 8008c46: 4413 add r3, r2 + 8008c48: 00db lsls r3, r3, #3 + 8008c4a: 440b add r3, r1 + 8008c4c: f503 73b2 add.w r3, r3, #356 @ 0x164 + 8008c50: 681a ldr r2, [r3, #0] + 8008c52: 78fb ldrb r3, [r7, #3] + 8008c54: 4619 mov r1, r3 + 8008c56: f7fe fd83 bl 8007760 +} + 8008c5a: bf00 nop + 8008c5c: 3708 adds r7, #8 + 8008c5e: 46bd mov sp, r7 + 8008c60: bd80 pop {r7, pc} + +08008c62 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#else +void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8008c62: b580 push {r7, lr} + 8008c64: b082 sub sp, #8 + 8008c66: af00 add r7, sp, #0 + 8008c68: 6078 str r0, [r7, #4] + 8008c6a: 460b mov r3, r1 + 8008c6c: 70fb strb r3, [r7, #3] + USBD_LL_DataInStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->IN_ep[epnum].xfer_buff); + 8008c6e: 687b ldr r3, [r7, #4] + 8008c70: f8d3 02d4 ldr.w r0, [r3, #724] @ 0x2d4 + 8008c74: 78fa ldrb r2, [r7, #3] + 8008c76: 6879 ldr r1, [r7, #4] + 8008c78: 4613 mov r3, r2 + 8008c7a: 009b lsls r3, r3, #2 + 8008c7c: 4413 add r3, r2 + 8008c7e: 00db lsls r3, r3, #3 + 8008c80: 440b add r3, r1 + 8008c82: 3324 adds r3, #36 @ 0x24 + 8008c84: 681a ldr r2, [r3, #0] + 8008c86: 78fb ldrb r3, [r7, #3] + 8008c88: 4619 mov r1, r3 + 8008c8a: f7fe fdda bl 8007842 +} + 8008c8e: bf00 nop + 8008c90: 3708 adds r7, #8 + 8008c92: 46bd mov sp, r7 + 8008c94: bd80 pop {r7, pc} + +08008c96 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_SOFCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8008c96: b580 push {r7, lr} + 8008c98: b082 sub sp, #8 + 8008c9a: af00 add r7, sp, #0 + 8008c9c: 6078 str r0, [r7, #4] + USBD_LL_SOF((USBD_HandleTypeDef*)hpcd->pData); + 8008c9e: 687b ldr r3, [r7, #4] + 8008ca0: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 + 8008ca4: 4618 mov r0, r3 + 8008ca6: f7fe feea bl 8007a7e +} + 8008caa: bf00 nop + 8008cac: 3708 adds r7, #8 + 8008cae: 46bd mov sp, r7 + 8008cb0: bd80 pop {r7, pc} + +08008cb2 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ResetCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8008cb2: b580 push {r7, lr} + 8008cb4: b084 sub sp, #16 + 8008cb6: af00 add r7, sp, #0 + 8008cb8: 6078 str r0, [r7, #4] + USBD_SpeedTypeDef speed = USBD_SPEED_FULL; + 8008cba: 2301 movs r3, #1 + 8008cbc: 73fb strb r3, [r7, #15] + + if ( hpcd->Init.speed != PCD_SPEED_FULL) + 8008cbe: 687b ldr r3, [r7, #4] + 8008cc0: 799b ldrb r3, [r3, #6] + 8008cc2: 2b02 cmp r3, #2 + 8008cc4: d001 beq.n 8008cca + { + Error_Handler(); + 8008cc6: f7f7 fe8f bl 80009e8 + } + /* Set Speed. */ + USBD_LL_SetSpeed((USBD_HandleTypeDef*)hpcd->pData, speed); + 8008cca: 687b ldr r3, [r7, #4] + 8008ccc: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 + 8008cd0: 7bfa ldrb r2, [r7, #15] + 8008cd2: 4611 mov r1, r2 + 8008cd4: 4618 mov r0, r3 + 8008cd6: f7fe fe9a bl 8007a0e + + /* Reset Device. */ + USBD_LL_Reset((USBD_HandleTypeDef*)hpcd->pData); + 8008cda: 687b ldr r3, [r7, #4] + 8008cdc: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 + 8008ce0: 4618 mov r0, r3 + 8008ce2: f7fe fe53 bl 800798c +} + 8008ce6: bf00 nop + 8008ce8: 3710 adds r7, #16 + 8008cea: 46bd mov sp, r7 + 8008cec: bd80 pop {r7, pc} + ... + +08008cf0 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8008cf0: b580 push {r7, lr} + 8008cf2: b082 sub sp, #8 + 8008cf4: af00 add r7, sp, #0 + 8008cf6: 6078 str r0, [r7, #4] + /* Inform USB library that core enters in suspend Mode. */ + USBD_LL_Suspend((USBD_HandleTypeDef*)hpcd->pData); + 8008cf8: 687b ldr r3, [r7, #4] + 8008cfa: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 + 8008cfe: 4618 mov r0, r3 + 8008d00: f7fe fe94 bl 8007a2c + /* Enter in STOP mode. */ + /* USER CODE BEGIN 2 */ + if (hpcd->Init.low_power_enable) + 8008d04: 687b ldr r3, [r7, #4] + 8008d06: 7a9b ldrb r3, [r3, #10] + 8008d08: 2b00 cmp r3, #0 + 8008d0a: d005 beq.n 8008d18 + { + /* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register. */ + SCB->SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk)); + 8008d0c: 4b04 ldr r3, [pc, #16] @ (8008d20 ) + 8008d0e: 691b ldr r3, [r3, #16] + 8008d10: 4a03 ldr r2, [pc, #12] @ (8008d20 ) + 8008d12: f043 0306 orr.w r3, r3, #6 + 8008d16: 6113 str r3, [r2, #16] + } + /* USER CODE END 2 */ +} + 8008d18: bf00 nop + 8008d1a: 3708 adds r7, #8 + 8008d1c: 46bd mov sp, r7 + 8008d1e: bd80 pop {r7, pc} + 8008d20: e000ed00 .word 0xe000ed00 + +08008d24 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8008d24: b580 push {r7, lr} + 8008d26: b082 sub sp, #8 + 8008d28: af00 add r7, sp, #0 + 8008d2a: 6078 str r0, [r7, #4] + /* USER CODE BEGIN 3 */ + + /* USER CODE END 3 */ + USBD_LL_Resume((USBD_HandleTypeDef*)hpcd->pData); + 8008d2c: 687b ldr r3, [r7, #4] + 8008d2e: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 + 8008d32: 4618 mov r0, r3 + 8008d34: f7fe fe8e bl 8007a54 +} + 8008d38: bf00 nop + 8008d3a: 3708 adds r7, #8 + 8008d3c: 46bd mov sp, r7 + 8008d3e: bd80 pop {r7, pc} + +08008d40 : + * @brief Initializes the low level portion of the device driver. + * @param pdev: Device handle + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev) +{ + 8008d40: b580 push {r7, lr} + 8008d42: b082 sub sp, #8 + 8008d44: af00 add r7, sp, #0 + 8008d46: 6078 str r0, [r7, #4] + /* Init USB Ip. */ + /* Link the driver to the stack. */ + hpcd_USB_FS.pData = pdev; + 8008d48: 4a28 ldr r2, [pc, #160] @ (8008dec ) + 8008d4a: 687b ldr r3, [r7, #4] + 8008d4c: f8c2 32d4 str.w r3, [r2, #724] @ 0x2d4 + pdev->pData = &hpcd_USB_FS; + 8008d50: 687b ldr r3, [r7, #4] + 8008d52: 4a26 ldr r2, [pc, #152] @ (8008dec ) + 8008d54: f8c3 22c0 str.w r2, [r3, #704] @ 0x2c0 + + hpcd_USB_FS.Instance = USB; + 8008d58: 4b24 ldr r3, [pc, #144] @ (8008dec ) + 8008d5a: 4a25 ldr r2, [pc, #148] @ (8008df0 ) + 8008d5c: 601a str r2, [r3, #0] + hpcd_USB_FS.Init.dev_endpoints = 8; + 8008d5e: 4b23 ldr r3, [pc, #140] @ (8008dec ) + 8008d60: 2208 movs r2, #8 + 8008d62: 711a strb r2, [r3, #4] + hpcd_USB_FS.Init.speed = PCD_SPEED_FULL; + 8008d64: 4b21 ldr r3, [pc, #132] @ (8008dec ) + 8008d66: 2202 movs r2, #2 + 8008d68: 719a strb r2, [r3, #6] + hpcd_USB_FS.Init.low_power_enable = DISABLE; + 8008d6a: 4b20 ldr r3, [pc, #128] @ (8008dec ) + 8008d6c: 2200 movs r2, #0 + 8008d6e: 729a strb r2, [r3, #10] + hpcd_USB_FS.Init.lpm_enable = DISABLE; + 8008d70: 4b1e ldr r3, [pc, #120] @ (8008dec ) + 8008d72: 2200 movs r2, #0 + 8008d74: 72da strb r2, [r3, #11] + hpcd_USB_FS.Init.battery_charging_enable = DISABLE; + 8008d76: 4b1d ldr r3, [pc, #116] @ (8008dec ) + 8008d78: 2200 movs r2, #0 + 8008d7a: 731a strb r2, [r3, #12] + if (HAL_PCD_Init(&hpcd_USB_FS) != HAL_OK) + 8008d7c: 481b ldr r0, [pc, #108] @ (8008dec ) + 8008d7e: f7f8 fd82 bl 8001886 + 8008d82: 4603 mov r3, r0 + 8008d84: 2b00 cmp r3, #0 + 8008d86: d001 beq.n 8008d8c + { + Error_Handler( ); + 8008d88: f7f7 fe2e bl 80009e8 + HAL_PCD_RegisterDataInStageCallback(&hpcd_USB_FS, PCD_DataInStageCallback); + HAL_PCD_RegisterIsoOutIncpltCallback(&hpcd_USB_FS, PCD_ISOOUTIncompleteCallback); + HAL_PCD_RegisterIsoInIncpltCallback(&hpcd_USB_FS, PCD_ISOINIncompleteCallback); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + /* USER CODE BEGIN EndPoint_Configuration */ + HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x00 , PCD_SNG_BUF, 0x18); + 8008d8c: 687b ldr r3, [r7, #4] + 8008d8e: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 8008d92: 2318 movs r3, #24 + 8008d94: 2200 movs r2, #0 + 8008d96: 2100 movs r1, #0 + 8008d98: f7fa fa93 bl 80032c2 + HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x80 , PCD_SNG_BUF, 0x58); + 8008d9c: 687b ldr r3, [r7, #4] + 8008d9e: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 8008da2: 2358 movs r3, #88 @ 0x58 + 8008da4: 2200 movs r2, #0 + 8008da6: 2180 movs r1, #128 @ 0x80 + 8008da8: f7fa fa8b bl 80032c2 + /* USER CODE END EndPoint_Configuration */ + /* USER CODE BEGIN EndPoint_Configuration_CDC */ + HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x81 , PCD_SNG_BUF, 0xC0); + 8008dac: 687b ldr r3, [r7, #4] + 8008dae: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 8008db2: 23c0 movs r3, #192 @ 0xc0 + 8008db4: 2200 movs r2, #0 + 8008db6: 2181 movs r1, #129 @ 0x81 + 8008db8: f7fa fa83 bl 80032c2 + HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x01 , PCD_SNG_BUF, 0x110); + 8008dbc: 687b ldr r3, [r7, #4] + 8008dbe: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 8008dc2: f44f 7388 mov.w r3, #272 @ 0x110 + 8008dc6: 2200 movs r2, #0 + 8008dc8: 2101 movs r1, #1 + 8008dca: f7fa fa7a bl 80032c2 + HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x82 , PCD_SNG_BUF, 0x100); + 8008dce: 687b ldr r3, [r7, #4] + 8008dd0: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 8008dd4: f44f 7380 mov.w r3, #256 @ 0x100 + 8008dd8: 2200 movs r2, #0 + 8008dda: 2182 movs r1, #130 @ 0x82 + 8008ddc: f7fa fa71 bl 80032c2 + /* USER CODE END EndPoint_Configuration_CDC */ + return USBD_OK; + 8008de0: 2300 movs r3, #0 +} + 8008de2: 4618 mov r0, r3 + 8008de4: 3708 adds r7, #8 + 8008de6: 46bd mov sp, r7 + 8008de8: bd80 pop {r7, pc} + 8008dea: bf00 nop + 8008dec: 20001110 .word 0x20001110 + 8008df0: 40005c00 .word 0x40005c00 + +08008df4 : + * @brief Starts the low level portion of the device driver. + * @param pdev: Device handle + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev) +{ + 8008df4: b580 push {r7, lr} + 8008df6: b084 sub sp, #16 + 8008df8: af00 add r7, sp, #0 + 8008dfa: 6078 str r0, [r7, #4] + HAL_StatusTypeDef hal_status = HAL_OK; + 8008dfc: 2300 movs r3, #0 + 8008dfe: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 8008e00: 2300 movs r3, #0 + 8008e02: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_Start(pdev->pData); + 8008e04: 687b ldr r3, [r7, #4] + 8008e06: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 8008e0a: 4618 mov r0, r3 + 8008e0c: f7f8 fe31 bl 8001a72 + 8008e10: 4603 mov r3, r0 + 8008e12: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 8008e14: 7bfb ldrb r3, [r7, #15] + 8008e16: 4618 mov r0, r3 + 8008e18: f000 f94e bl 80090b8 + 8008e1c: 4603 mov r3, r0 + 8008e1e: 73bb strb r3, [r7, #14] + + return usb_status; + 8008e20: 7bbb ldrb r3, [r7, #14] +} + 8008e22: 4618 mov r0, r3 + 8008e24: 3710 adds r7, #16 + 8008e26: 46bd mov sp, r7 + 8008e28: bd80 pop {r7, pc} + +08008e2a : + * @param ep_type: Endpoint type + * @param ep_mps: Endpoint max packet size + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps) +{ + 8008e2a: b580 push {r7, lr} + 8008e2c: b084 sub sp, #16 + 8008e2e: af00 add r7, sp, #0 + 8008e30: 6078 str r0, [r7, #4] + 8008e32: 4608 mov r0, r1 + 8008e34: 4611 mov r1, r2 + 8008e36: 461a mov r2, r3 + 8008e38: 4603 mov r3, r0 + 8008e3a: 70fb strb r3, [r7, #3] + 8008e3c: 460b mov r3, r1 + 8008e3e: 70bb strb r3, [r7, #2] + 8008e40: 4613 mov r3, r2 + 8008e42: 803b strh r3, [r7, #0] + HAL_StatusTypeDef hal_status = HAL_OK; + 8008e44: 2300 movs r3, #0 + 8008e46: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 8008e48: 2300 movs r3, #0 + 8008e4a: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_EP_Open(pdev->pData, ep_addr, ep_mps, ep_type); + 8008e4c: 687b ldr r3, [r7, #4] + 8008e4e: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 8008e52: 78bb ldrb r3, [r7, #2] + 8008e54: 883a ldrh r2, [r7, #0] + 8008e56: 78f9 ldrb r1, [r7, #3] + 8008e58: f7f8 ff85 bl 8001d66 + 8008e5c: 4603 mov r3, r0 + 8008e5e: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 8008e60: 7bfb ldrb r3, [r7, #15] + 8008e62: 4618 mov r0, r3 + 8008e64: f000 f928 bl 80090b8 + 8008e68: 4603 mov r3, r0 + 8008e6a: 73bb strb r3, [r7, #14] + + return usb_status; + 8008e6c: 7bbb ldrb r3, [r7, #14] +} + 8008e6e: 4618 mov r0, r3 + 8008e70: 3710 adds r7, #16 + 8008e72: 46bd mov sp, r7 + 8008e74: bd80 pop {r7, pc} + +08008e76 : + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + 8008e76: b580 push {r7, lr} + 8008e78: b084 sub sp, #16 + 8008e7a: af00 add r7, sp, #0 + 8008e7c: 6078 str r0, [r7, #4] + 8008e7e: 460b mov r3, r1 + 8008e80: 70fb strb r3, [r7, #3] + HAL_StatusTypeDef hal_status = HAL_OK; + 8008e82: 2300 movs r3, #0 + 8008e84: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 8008e86: 2300 movs r3, #0 + 8008e88: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_EP_Close(pdev->pData, ep_addr); + 8008e8a: 687b ldr r3, [r7, #4] + 8008e8c: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 8008e90: 78fa ldrb r2, [r7, #3] + 8008e92: 4611 mov r1, r2 + 8008e94: 4618 mov r0, r3 + 8008e96: f7f8 ffc3 bl 8001e20 + 8008e9a: 4603 mov r3, r0 + 8008e9c: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 8008e9e: 7bfb ldrb r3, [r7, #15] + 8008ea0: 4618 mov r0, r3 + 8008ea2: f000 f909 bl 80090b8 + 8008ea6: 4603 mov r3, r0 + 8008ea8: 73bb strb r3, [r7, #14] + + return usb_status; + 8008eaa: 7bbb ldrb r3, [r7, #14] +} + 8008eac: 4618 mov r0, r3 + 8008eae: 3710 adds r7, #16 + 8008eb0: 46bd mov sp, r7 + 8008eb2: bd80 pop {r7, pc} + +08008eb4 : + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + 8008eb4: b580 push {r7, lr} + 8008eb6: b084 sub sp, #16 + 8008eb8: af00 add r7, sp, #0 + 8008eba: 6078 str r0, [r7, #4] + 8008ebc: 460b mov r3, r1 + 8008ebe: 70fb strb r3, [r7, #3] + HAL_StatusTypeDef hal_status = HAL_OK; + 8008ec0: 2300 movs r3, #0 + 8008ec2: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 8008ec4: 2300 movs r3, #0 + 8008ec6: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_EP_SetStall(pdev->pData, ep_addr); + 8008ec8: 687b ldr r3, [r7, #4] + 8008eca: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 8008ece: 78fa ldrb r2, [r7, #3] + 8008ed0: 4611 mov r1, r2 + 8008ed2: 4618 mov r0, r3 + 8008ed4: f7f9 f86b bl 8001fae + 8008ed8: 4603 mov r3, r0 + 8008eda: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 8008edc: 7bfb ldrb r3, [r7, #15] + 8008ede: 4618 mov r0, r3 + 8008ee0: f000 f8ea bl 80090b8 + 8008ee4: 4603 mov r3, r0 + 8008ee6: 73bb strb r3, [r7, #14] + + return usb_status; + 8008ee8: 7bbb ldrb r3, [r7, #14] +} + 8008eea: 4618 mov r0, r3 + 8008eec: 3710 adds r7, #16 + 8008eee: 46bd mov sp, r7 + 8008ef0: bd80 pop {r7, pc} + +08008ef2 : + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + 8008ef2: b580 push {r7, lr} + 8008ef4: b084 sub sp, #16 + 8008ef6: af00 add r7, sp, #0 + 8008ef8: 6078 str r0, [r7, #4] + 8008efa: 460b mov r3, r1 + 8008efc: 70fb strb r3, [r7, #3] + HAL_StatusTypeDef hal_status = HAL_OK; + 8008efe: 2300 movs r3, #0 + 8008f00: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 8008f02: 2300 movs r3, #0 + 8008f04: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_EP_ClrStall(pdev->pData, ep_addr); + 8008f06: 687b ldr r3, [r7, #4] + 8008f08: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 8008f0c: 78fa ldrb r2, [r7, #3] + 8008f0e: 4611 mov r1, r2 + 8008f10: 4618 mov r0, r3 + 8008f12: f7f9 f8ac bl 800206e + 8008f16: 4603 mov r3, r0 + 8008f18: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 8008f1a: 7bfb ldrb r3, [r7, #15] + 8008f1c: 4618 mov r0, r3 + 8008f1e: f000 f8cb bl 80090b8 + 8008f22: 4603 mov r3, r0 + 8008f24: 73bb strb r3, [r7, #14] + + return usb_status; + 8008f26: 7bbb ldrb r3, [r7, #14] +} + 8008f28: 4618 mov r0, r3 + 8008f2a: 3710 adds r7, #16 + 8008f2c: 46bd mov sp, r7 + 8008f2e: bd80 pop {r7, pc} + +08008f30 : + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval Stall (1: Yes, 0: No) + */ +uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + 8008f30: b480 push {r7} + 8008f32: b085 sub sp, #20 + 8008f34: af00 add r7, sp, #0 + 8008f36: 6078 str r0, [r7, #4] + 8008f38: 460b mov r3, r1 + 8008f3a: 70fb strb r3, [r7, #3] + PCD_HandleTypeDef *hpcd = (PCD_HandleTypeDef*) pdev->pData; + 8008f3c: 687b ldr r3, [r7, #4] + 8008f3e: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 8008f42: 60fb str r3, [r7, #12] + + if((ep_addr & 0x80) == 0x80) + 8008f44: f997 3003 ldrsb.w r3, [r7, #3] + 8008f48: 2b00 cmp r3, #0 + 8008f4a: da0b bge.n 8008f64 + { + return hpcd->IN_ep[ep_addr & 0x7F].is_stall; + 8008f4c: 78fb ldrb r3, [r7, #3] + 8008f4e: f003 027f and.w r2, r3, #127 @ 0x7f + 8008f52: 68f9 ldr r1, [r7, #12] + 8008f54: 4613 mov r3, r2 + 8008f56: 009b lsls r3, r3, #2 + 8008f58: 4413 add r3, r2 + 8008f5a: 00db lsls r3, r3, #3 + 8008f5c: 440b add r3, r1 + 8008f5e: 3312 adds r3, #18 + 8008f60: 781b ldrb r3, [r3, #0] + 8008f62: e00b b.n 8008f7c + } + else + { + return hpcd->OUT_ep[ep_addr & 0x7F].is_stall; + 8008f64: 78fb ldrb r3, [r7, #3] + 8008f66: f003 027f and.w r2, r3, #127 @ 0x7f + 8008f6a: 68f9 ldr r1, [r7, #12] + 8008f6c: 4613 mov r3, r2 + 8008f6e: 009b lsls r3, r3, #2 + 8008f70: 4413 add r3, r2 + 8008f72: 00db lsls r3, r3, #3 + 8008f74: 440b add r3, r1 + 8008f76: f503 73a9 add.w r3, r3, #338 @ 0x152 + 8008f7a: 781b ldrb r3, [r3, #0] + } +} + 8008f7c: 4618 mov r0, r3 + 8008f7e: 3714 adds r7, #20 + 8008f80: 46bd mov sp, r7 + 8008f82: bc80 pop {r7} + 8008f84: 4770 bx lr + +08008f86 : + * @param pdev: Device handle + * @param dev_addr: Device address + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr) +{ + 8008f86: b580 push {r7, lr} + 8008f88: b084 sub sp, #16 + 8008f8a: af00 add r7, sp, #0 + 8008f8c: 6078 str r0, [r7, #4] + 8008f8e: 460b mov r3, r1 + 8008f90: 70fb strb r3, [r7, #3] + HAL_StatusTypeDef hal_status = HAL_OK; + 8008f92: 2300 movs r3, #0 + 8008f94: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 8008f96: 2300 movs r3, #0 + 8008f98: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_SetAddress(pdev->pData, dev_addr); + 8008f9a: 687b ldr r3, [r7, #4] + 8008f9c: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 8008fa0: 78fa ldrb r2, [r7, #3] + 8008fa2: 4611 mov r1, r2 + 8008fa4: 4618 mov r0, r3 + 8008fa6: f7f8 feba bl 8001d1e + 8008faa: 4603 mov r3, r0 + 8008fac: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 8008fae: 7bfb ldrb r3, [r7, #15] + 8008fb0: 4618 mov r0, r3 + 8008fb2: f000 f881 bl 80090b8 + 8008fb6: 4603 mov r3, r0 + 8008fb8: 73bb strb r3, [r7, #14] + + return usb_status; + 8008fba: 7bbb ldrb r3, [r7, #14] +} + 8008fbc: 4618 mov r0, r3 + 8008fbe: 3710 adds r7, #16 + 8008fc0: 46bd mov sp, r7 + 8008fc2: bd80 pop {r7, pc} + +08008fc4 : + * @param pbuf: Pointer to data to be sent + * @param size: Data size + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) +{ + 8008fc4: b580 push {r7, lr} + 8008fc6: b086 sub sp, #24 + 8008fc8: af00 add r7, sp, #0 + 8008fca: 60f8 str r0, [r7, #12] + 8008fcc: 607a str r2, [r7, #4] + 8008fce: 461a mov r2, r3 + 8008fd0: 460b mov r3, r1 + 8008fd2: 72fb strb r3, [r7, #11] + 8008fd4: 4613 mov r3, r2 + 8008fd6: 813b strh r3, [r7, #8] + HAL_StatusTypeDef hal_status = HAL_OK; + 8008fd8: 2300 movs r3, #0 + 8008fda: 75fb strb r3, [r7, #23] + USBD_StatusTypeDef usb_status = USBD_OK; + 8008fdc: 2300 movs r3, #0 + 8008fde: 75bb strb r3, [r7, #22] + + hal_status = HAL_PCD_EP_Transmit(pdev->pData, ep_addr, pbuf, size); + 8008fe0: 68fb ldr r3, [r7, #12] + 8008fe2: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 8008fe6: 893b ldrh r3, [r7, #8] + 8008fe8: 7af9 ldrb r1, [r7, #11] + 8008fea: 687a ldr r2, [r7, #4] + 8008fec: f7f8 ffa8 bl 8001f40 + 8008ff0: 4603 mov r3, r0 + 8008ff2: 75fb strb r3, [r7, #23] + + usb_status = USBD_Get_USB_Status(hal_status); + 8008ff4: 7dfb ldrb r3, [r7, #23] + 8008ff6: 4618 mov r0, r3 + 8008ff8: f000 f85e bl 80090b8 + 8008ffc: 4603 mov r3, r0 + 8008ffe: 75bb strb r3, [r7, #22] + + return usb_status; + 8009000: 7dbb ldrb r3, [r7, #22] +} + 8009002: 4618 mov r0, r3 + 8009004: 3718 adds r7, #24 + 8009006: 46bd mov sp, r7 + 8009008: bd80 pop {r7, pc} + +0800900a : + * @param pbuf: Pointer to data to be received + * @param size: Data size + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) +{ + 800900a: b580 push {r7, lr} + 800900c: b086 sub sp, #24 + 800900e: af00 add r7, sp, #0 + 8009010: 60f8 str r0, [r7, #12] + 8009012: 607a str r2, [r7, #4] + 8009014: 461a mov r2, r3 + 8009016: 460b mov r3, r1 + 8009018: 72fb strb r3, [r7, #11] + 800901a: 4613 mov r3, r2 + 800901c: 813b strh r3, [r7, #8] + HAL_StatusTypeDef hal_status = HAL_OK; + 800901e: 2300 movs r3, #0 + 8009020: 75fb strb r3, [r7, #23] + USBD_StatusTypeDef usb_status = USBD_OK; + 8009022: 2300 movs r3, #0 + 8009024: 75bb strb r3, [r7, #22] + + hal_status = HAL_PCD_EP_Receive(pdev->pData, ep_addr, pbuf, size); + 8009026: 68fb ldr r3, [r7, #12] + 8009028: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 800902c: 893b ldrh r3, [r7, #8] + 800902e: 7af9 ldrb r1, [r7, #11] + 8009030: 687a ldr r2, [r7, #4] + 8009032: f7f8 ff3d bl 8001eb0 + 8009036: 4603 mov r3, r0 + 8009038: 75fb strb r3, [r7, #23] + + usb_status = USBD_Get_USB_Status(hal_status); + 800903a: 7dfb ldrb r3, [r7, #23] + 800903c: 4618 mov r0, r3 + 800903e: f000 f83b bl 80090b8 + 8009042: 4603 mov r3, r0 + 8009044: 75bb strb r3, [r7, #22] + + return usb_status; + 8009046: 7dbb ldrb r3, [r7, #22] +} + 8009048: 4618 mov r0, r3 + 800904a: 3718 adds r7, #24 + 800904c: 46bd mov sp, r7 + 800904e: bd80 pop {r7, pc} + +08009050 : + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval Received Data Size + */ +uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + 8009050: b580 push {r7, lr} + 8009052: b082 sub sp, #8 + 8009054: af00 add r7, sp, #0 + 8009056: 6078 str r0, [r7, #4] + 8009058: 460b mov r3, r1 + 800905a: 70fb strb r3, [r7, #3] + return HAL_PCD_EP_GetRxCount((PCD_HandleTypeDef*) pdev->pData, ep_addr); + 800905c: 687b ldr r3, [r7, #4] + 800905e: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 8009062: 78fa ldrb r2, [r7, #3] + 8009064: 4611 mov r1, r2 + 8009066: 4618 mov r0, r3 + 8009068: f7f8 ff53 bl 8001f12 + 800906c: 4603 mov r3, r0 +} + 800906e: 4618 mov r0, r3 + 8009070: 3708 adds r7, #8 + 8009072: 46bd mov sp, r7 + 8009074: bd80 pop {r7, pc} + ... + +08009078 : + * @brief Static single allocation. + * @param size: Size of allocated memory + * @retval None + */ +void *USBD_static_malloc(uint32_t size) +{ + 8009078: b480 push {r7} + 800907a: b083 sub sp, #12 + 800907c: af00 add r7, sp, #0 + 800907e: 6078 str r0, [r7, #4] + static uint32_t mem[(sizeof(USBD_CDC_HandleTypeDef)/4)+1];/* On 32-bit boundary */ + return mem; + 8009080: 4b02 ldr r3, [pc, #8] @ (800908c ) +} + 8009082: 4618 mov r0, r3 + 8009084: 370c adds r7, #12 + 8009086: 46bd mov sp, r7 + 8009088: bc80 pop {r7} + 800908a: 4770 bx lr + 800908c: 200013e8 .word 0x200013e8 + +08009090 : + * @brief Dummy memory free + * @param p: Pointer to allocated memory address + * @retval None + */ +void USBD_static_free(void *p) +{ + 8009090: b480 push {r7} + 8009092: b083 sub sp, #12 + 8009094: af00 add r7, sp, #0 + 8009096: 6078 str r0, [r7, #4] + +} + 8009098: bf00 nop + 800909a: 370c adds r7, #12 + 800909c: 46bd mov sp, r7 + 800909e: bc80 pop {r7} + 80090a0: 4770 bx lr + +080090a2 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) +#else +void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 80090a2: b480 push {r7} + 80090a4: b083 sub sp, #12 + 80090a6: af00 add r7, sp, #0 + 80090a8: 6078 str r0, [r7, #4] + 80090aa: 460b mov r3, r1 + 80090ac: 70fb strb r3, [r7, #3] + { + /* Configure High connection state. */ + + } + /* USER CODE END 6 */ +} + 80090ae: bf00 nop + 80090b0: 370c adds r7, #12 + 80090b2: 46bd mov sp, r7 + 80090b4: bc80 pop {r7} + 80090b6: 4770 bx lr + +080090b8 : + * @brief Returns the USB status depending on the HAL status: + * @param hal_status: HAL status + * @retval USB status + */ +USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status) +{ + 80090b8: b480 push {r7} + 80090ba: b085 sub sp, #20 + 80090bc: af00 add r7, sp, #0 + 80090be: 4603 mov r3, r0 + 80090c0: 71fb strb r3, [r7, #7] + USBD_StatusTypeDef usb_status = USBD_OK; + 80090c2: 2300 movs r3, #0 + 80090c4: 73fb strb r3, [r7, #15] + + switch (hal_status) + 80090c6: 79fb ldrb r3, [r7, #7] + 80090c8: 2b03 cmp r3, #3 + 80090ca: d817 bhi.n 80090fc + 80090cc: a201 add r2, pc, #4 @ (adr r2, 80090d4 ) + 80090ce: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 80090d2: bf00 nop + 80090d4: 080090e5 .word 0x080090e5 + 80090d8: 080090eb .word 0x080090eb + 80090dc: 080090f1 .word 0x080090f1 + 80090e0: 080090f7 .word 0x080090f7 + { + case HAL_OK : + usb_status = USBD_OK; + 80090e4: 2300 movs r3, #0 + 80090e6: 73fb strb r3, [r7, #15] + break; + 80090e8: e00b b.n 8009102 + case HAL_ERROR : + usb_status = USBD_FAIL; + 80090ea: 2302 movs r3, #2 + 80090ec: 73fb strb r3, [r7, #15] + break; + 80090ee: e008 b.n 8009102 + case HAL_BUSY : + usb_status = USBD_BUSY; + 80090f0: 2301 movs r3, #1 + 80090f2: 73fb strb r3, [r7, #15] + break; + 80090f4: e005 b.n 8009102 + case HAL_TIMEOUT : + usb_status = USBD_FAIL; + 80090f6: 2302 movs r3, #2 + 80090f8: 73fb strb r3, [r7, #15] + break; + 80090fa: e002 b.n 8009102 + default : + usb_status = USBD_FAIL; + 80090fc: 2302 movs r3, #2 + 80090fe: 73fb strb r3, [r7, #15] + break; + 8009100: bf00 nop + } + return usb_status; + 8009102: 7bfb ldrb r3, [r7, #15] +} + 8009104: 4618 mov r0, r3 + 8009106: 3714 adds r7, #20 + 8009108: 46bd mov sp, r7 + 800910a: bc80 pop {r7} + 800910c: 4770 bx lr + 800910e: bf00 nop + +08009110 : + 8009110: b40e push {r1, r2, r3} + 8009112: f06f 4100 mvn.w r1, #2147483648 @ 0x80000000 + 8009116: b510 push {r4, lr} + 8009118: 2400 movs r4, #0 + 800911a: b09d sub sp, #116 @ 0x74 + 800911c: ab1f add r3, sp, #124 @ 0x7c + 800911e: 9002 str r0, [sp, #8] + 8009120: 9006 str r0, [sp, #24] + 8009122: 9107 str r1, [sp, #28] + 8009124: 9104 str r1, [sp, #16] + 8009126: 4809 ldr r0, [pc, #36] @ (800914c ) + 8009128: 4909 ldr r1, [pc, #36] @ (8009150 ) + 800912a: f853 2b04 ldr.w r2, [r3], #4 + 800912e: 9105 str r1, [sp, #20] + 8009130: 6800 ldr r0, [r0, #0] + 8009132: a902 add r1, sp, #8 + 8009134: 9301 str r3, [sp, #4] + 8009136: 941b str r4, [sp, #108] @ 0x6c + 8009138: f000 f992 bl 8009460 <_svfiprintf_r> + 800913c: 9b02 ldr r3, [sp, #8] + 800913e: 701c strb r4, [r3, #0] + 8009140: b01d add sp, #116 @ 0x74 + 8009142: e8bd 4010 ldmia.w sp!, {r4, lr} + 8009146: b003 add sp, #12 + 8009148: 4770 bx lr + 800914a: bf00 nop + 800914c: 2000017c .word 0x2000017c + 8009150: ffff0208 .word 0xffff0208 + +08009154 : + 8009154: 4603 mov r3, r0 + 8009156: 4402 add r2, r0 + 8009158: 4293 cmp r3, r2 + 800915a: d100 bne.n 800915e + 800915c: 4770 bx lr + 800915e: f803 1b01 strb.w r1, [r3], #1 + 8009162: e7f9 b.n 8009158 + +08009164 <__errno>: + 8009164: 4b01 ldr r3, [pc, #4] @ (800916c <__errno+0x8>) + 8009166: 6818 ldr r0, [r3, #0] + 8009168: 4770 bx lr + 800916a: bf00 nop + 800916c: 2000017c .word 0x2000017c + +08009170 <__libc_init_array>: + 8009170: b570 push {r4, r5, r6, lr} + 8009172: 2600 movs r6, #0 + 8009174: 4d0c ldr r5, [pc, #48] @ (80091a8 <__libc_init_array+0x38>) + 8009176: 4c0d ldr r4, [pc, #52] @ (80091ac <__libc_init_array+0x3c>) + 8009178: 1b64 subs r4, r4, r5 + 800917a: 10a4 asrs r4, r4, #2 + 800917c: 42a6 cmp r6, r4 + 800917e: d109 bne.n 8009194 <__libc_init_array+0x24> + 8009180: f000 fc76 bl 8009a70 <_init> + 8009184: 2600 movs r6, #0 + 8009186: 4d0a ldr r5, [pc, #40] @ (80091b0 <__libc_init_array+0x40>) + 8009188: 4c0a ldr r4, [pc, #40] @ (80091b4 <__libc_init_array+0x44>) + 800918a: 1b64 subs r4, r4, r5 + 800918c: 10a4 asrs r4, r4, #2 + 800918e: 42a6 cmp r6, r4 + 8009190: d105 bne.n 800919e <__libc_init_array+0x2e> + 8009192: bd70 pop {r4, r5, r6, pc} + 8009194: f855 3b04 ldr.w r3, [r5], #4 + 8009198: 4798 blx r3 + 800919a: 3601 adds r6, #1 + 800919c: e7ee b.n 800917c <__libc_init_array+0xc> + 800919e: f855 3b04 ldr.w r3, [r5], #4 + 80091a2: 4798 blx r3 + 80091a4: 3601 adds r6, #1 + 80091a6: e7f2 b.n 800918e <__libc_init_array+0x1e> + 80091a8: 08009b38 .word 0x08009b38 + 80091ac: 08009b38 .word 0x08009b38 + 80091b0: 08009b38 .word 0x08009b38 + 80091b4: 08009b3c .word 0x08009b3c + +080091b8 <__retarget_lock_acquire_recursive>: + 80091b8: 4770 bx lr + +080091ba <__retarget_lock_release_recursive>: + 80091ba: 4770 bx lr + +080091bc <_free_r>: + 80091bc: b538 push {r3, r4, r5, lr} + 80091be: 4605 mov r5, r0 + 80091c0: 2900 cmp r1, #0 + 80091c2: d040 beq.n 8009246 <_free_r+0x8a> + 80091c4: f851 3c04 ldr.w r3, [r1, #-4] + 80091c8: 1f0c subs r4, r1, #4 + 80091ca: 2b00 cmp r3, #0 + 80091cc: bfb8 it lt + 80091ce: 18e4 addlt r4, r4, r3 + 80091d0: f000 f8de bl 8009390 <__malloc_lock> + 80091d4: 4a1c ldr r2, [pc, #112] @ (8009248 <_free_r+0x8c>) + 80091d6: 6813 ldr r3, [r2, #0] + 80091d8: b933 cbnz r3, 80091e8 <_free_r+0x2c> + 80091da: 6063 str r3, [r4, #4] + 80091dc: 6014 str r4, [r2, #0] + 80091de: 4628 mov r0, r5 + 80091e0: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 80091e4: f000 b8da b.w 800939c <__malloc_unlock> + 80091e8: 42a3 cmp r3, r4 + 80091ea: d908 bls.n 80091fe <_free_r+0x42> + 80091ec: 6820 ldr r0, [r4, #0] + 80091ee: 1821 adds r1, r4, r0 + 80091f0: 428b cmp r3, r1 + 80091f2: bf01 itttt eq + 80091f4: 6819 ldreq r1, [r3, #0] + 80091f6: 685b ldreq r3, [r3, #4] + 80091f8: 1809 addeq r1, r1, r0 + 80091fa: 6021 streq r1, [r4, #0] + 80091fc: e7ed b.n 80091da <_free_r+0x1e> + 80091fe: 461a mov r2, r3 + 8009200: 685b ldr r3, [r3, #4] + 8009202: b10b cbz r3, 8009208 <_free_r+0x4c> + 8009204: 42a3 cmp r3, r4 + 8009206: d9fa bls.n 80091fe <_free_r+0x42> + 8009208: 6811 ldr r1, [r2, #0] + 800920a: 1850 adds r0, r2, r1 + 800920c: 42a0 cmp r0, r4 + 800920e: d10b bne.n 8009228 <_free_r+0x6c> + 8009210: 6820 ldr r0, [r4, #0] + 8009212: 4401 add r1, r0 + 8009214: 1850 adds r0, r2, r1 + 8009216: 4283 cmp r3, r0 + 8009218: 6011 str r1, [r2, #0] + 800921a: d1e0 bne.n 80091de <_free_r+0x22> + 800921c: 6818 ldr r0, [r3, #0] + 800921e: 685b ldr r3, [r3, #4] + 8009220: 4408 add r0, r1 + 8009222: 6010 str r0, [r2, #0] + 8009224: 6053 str r3, [r2, #4] + 8009226: e7da b.n 80091de <_free_r+0x22> + 8009228: d902 bls.n 8009230 <_free_r+0x74> + 800922a: 230c movs r3, #12 + 800922c: 602b str r3, [r5, #0] + 800922e: e7d6 b.n 80091de <_free_r+0x22> + 8009230: 6820 ldr r0, [r4, #0] + 8009232: 1821 adds r1, r4, r0 + 8009234: 428b cmp r3, r1 + 8009236: bf01 itttt eq + 8009238: 6819 ldreq r1, [r3, #0] + 800923a: 685b ldreq r3, [r3, #4] + 800923c: 1809 addeq r1, r1, r0 + 800923e: 6021 streq r1, [r4, #0] + 8009240: 6063 str r3, [r4, #4] + 8009242: 6054 str r4, [r2, #4] + 8009244: e7cb b.n 80091de <_free_r+0x22> + 8009246: bd38 pop {r3, r4, r5, pc} + 8009248: 2000174c .word 0x2000174c + +0800924c : + 800924c: b570 push {r4, r5, r6, lr} + 800924e: 4e0f ldr r6, [pc, #60] @ (800928c ) + 8009250: 460c mov r4, r1 + 8009252: 6831 ldr r1, [r6, #0] + 8009254: 4605 mov r5, r0 + 8009256: b911 cbnz r1, 800925e + 8009258: f000 fba8 bl 80099ac <_sbrk_r> + 800925c: 6030 str r0, [r6, #0] + 800925e: 4621 mov r1, r4 + 8009260: 4628 mov r0, r5 + 8009262: f000 fba3 bl 80099ac <_sbrk_r> + 8009266: 1c43 adds r3, r0, #1 + 8009268: d103 bne.n 8009272 + 800926a: f04f 34ff mov.w r4, #4294967295 + 800926e: 4620 mov r0, r4 + 8009270: bd70 pop {r4, r5, r6, pc} + 8009272: 1cc4 adds r4, r0, #3 + 8009274: f024 0403 bic.w r4, r4, #3 + 8009278: 42a0 cmp r0, r4 + 800927a: d0f8 beq.n 800926e + 800927c: 1a21 subs r1, r4, r0 + 800927e: 4628 mov r0, r5 + 8009280: f000 fb94 bl 80099ac <_sbrk_r> + 8009284: 3001 adds r0, #1 + 8009286: d1f2 bne.n 800926e + 8009288: e7ef b.n 800926a + 800928a: bf00 nop + 800928c: 20001748 .word 0x20001748 + +08009290 <_malloc_r>: + 8009290: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 8009294: 1ccd adds r5, r1, #3 + 8009296: f025 0503 bic.w r5, r5, #3 + 800929a: 3508 adds r5, #8 + 800929c: 2d0c cmp r5, #12 + 800929e: bf38 it cc + 80092a0: 250c movcc r5, #12 + 80092a2: 2d00 cmp r5, #0 + 80092a4: 4606 mov r6, r0 + 80092a6: db01 blt.n 80092ac <_malloc_r+0x1c> + 80092a8: 42a9 cmp r1, r5 + 80092aa: d904 bls.n 80092b6 <_malloc_r+0x26> + 80092ac: 230c movs r3, #12 + 80092ae: 6033 str r3, [r6, #0] + 80092b0: 2000 movs r0, #0 + 80092b2: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 80092b6: f8df 80d4 ldr.w r8, [pc, #212] @ 800938c <_malloc_r+0xfc> + 80092ba: f000 f869 bl 8009390 <__malloc_lock> + 80092be: f8d8 3000 ldr.w r3, [r8] + 80092c2: 461c mov r4, r3 + 80092c4: bb44 cbnz r4, 8009318 <_malloc_r+0x88> + 80092c6: 4629 mov r1, r5 + 80092c8: 4630 mov r0, r6 + 80092ca: f7ff ffbf bl 800924c + 80092ce: 1c43 adds r3, r0, #1 + 80092d0: 4604 mov r4, r0 + 80092d2: d158 bne.n 8009386 <_malloc_r+0xf6> + 80092d4: f8d8 4000 ldr.w r4, [r8] + 80092d8: 4627 mov r7, r4 + 80092da: 2f00 cmp r7, #0 + 80092dc: d143 bne.n 8009366 <_malloc_r+0xd6> + 80092de: 2c00 cmp r4, #0 + 80092e0: d04b beq.n 800937a <_malloc_r+0xea> + 80092e2: 6823 ldr r3, [r4, #0] + 80092e4: 4639 mov r1, r7 + 80092e6: 4630 mov r0, r6 + 80092e8: eb04 0903 add.w r9, r4, r3 + 80092ec: f000 fb5e bl 80099ac <_sbrk_r> + 80092f0: 4581 cmp r9, r0 + 80092f2: d142 bne.n 800937a <_malloc_r+0xea> + 80092f4: 6821 ldr r1, [r4, #0] + 80092f6: 4630 mov r0, r6 + 80092f8: 1a6d subs r5, r5, r1 + 80092fa: 4629 mov r1, r5 + 80092fc: f7ff ffa6 bl 800924c + 8009300: 3001 adds r0, #1 + 8009302: d03a beq.n 800937a <_malloc_r+0xea> + 8009304: 6823 ldr r3, [r4, #0] + 8009306: 442b add r3, r5 + 8009308: 6023 str r3, [r4, #0] + 800930a: f8d8 3000 ldr.w r3, [r8] + 800930e: 685a ldr r2, [r3, #4] + 8009310: bb62 cbnz r2, 800936c <_malloc_r+0xdc> + 8009312: f8c8 7000 str.w r7, [r8] + 8009316: e00f b.n 8009338 <_malloc_r+0xa8> + 8009318: 6822 ldr r2, [r4, #0] + 800931a: 1b52 subs r2, r2, r5 + 800931c: d420 bmi.n 8009360 <_malloc_r+0xd0> + 800931e: 2a0b cmp r2, #11 + 8009320: d917 bls.n 8009352 <_malloc_r+0xc2> + 8009322: 1961 adds r1, r4, r5 + 8009324: 42a3 cmp r3, r4 + 8009326: 6025 str r5, [r4, #0] + 8009328: bf18 it ne + 800932a: 6059 strne r1, [r3, #4] + 800932c: 6863 ldr r3, [r4, #4] + 800932e: bf08 it eq + 8009330: f8c8 1000 streq.w r1, [r8] + 8009334: 5162 str r2, [r4, r5] + 8009336: 604b str r3, [r1, #4] + 8009338: 4630 mov r0, r6 + 800933a: f000 f82f bl 800939c <__malloc_unlock> + 800933e: f104 000b add.w r0, r4, #11 + 8009342: 1d23 adds r3, r4, #4 + 8009344: f020 0007 bic.w r0, r0, #7 + 8009348: 1ac2 subs r2, r0, r3 + 800934a: bf1c itt ne + 800934c: 1a1b subne r3, r3, r0 + 800934e: 50a3 strne r3, [r4, r2] + 8009350: e7af b.n 80092b2 <_malloc_r+0x22> + 8009352: 6862 ldr r2, [r4, #4] + 8009354: 42a3 cmp r3, r4 + 8009356: bf0c ite eq + 8009358: f8c8 2000 streq.w r2, [r8] + 800935c: 605a strne r2, [r3, #4] + 800935e: e7eb b.n 8009338 <_malloc_r+0xa8> + 8009360: 4623 mov r3, r4 + 8009362: 6864 ldr r4, [r4, #4] + 8009364: e7ae b.n 80092c4 <_malloc_r+0x34> + 8009366: 463c mov r4, r7 + 8009368: 687f ldr r7, [r7, #4] + 800936a: e7b6 b.n 80092da <_malloc_r+0x4a> + 800936c: 461a mov r2, r3 + 800936e: 685b ldr r3, [r3, #4] + 8009370: 42a3 cmp r3, r4 + 8009372: d1fb bne.n 800936c <_malloc_r+0xdc> + 8009374: 2300 movs r3, #0 + 8009376: 6053 str r3, [r2, #4] + 8009378: e7de b.n 8009338 <_malloc_r+0xa8> + 800937a: 230c movs r3, #12 + 800937c: 4630 mov r0, r6 + 800937e: 6033 str r3, [r6, #0] + 8009380: f000 f80c bl 800939c <__malloc_unlock> + 8009384: e794 b.n 80092b0 <_malloc_r+0x20> + 8009386: 6005 str r5, [r0, #0] + 8009388: e7d6 b.n 8009338 <_malloc_r+0xa8> + 800938a: bf00 nop + 800938c: 2000174c .word 0x2000174c + +08009390 <__malloc_lock>: + 8009390: 4801 ldr r0, [pc, #4] @ (8009398 <__malloc_lock+0x8>) + 8009392: f7ff bf11 b.w 80091b8 <__retarget_lock_acquire_recursive> + 8009396: bf00 nop + 8009398: 20001744 .word 0x20001744 + +0800939c <__malloc_unlock>: + 800939c: 4801 ldr r0, [pc, #4] @ (80093a4 <__malloc_unlock+0x8>) + 800939e: f7ff bf0c b.w 80091ba <__retarget_lock_release_recursive> + 80093a2: bf00 nop + 80093a4: 20001744 .word 0x20001744 + +080093a8 <__ssputs_r>: + 80093a8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 80093ac: 461f mov r7, r3 + 80093ae: 688e ldr r6, [r1, #8] + 80093b0: 4682 mov sl, r0 + 80093b2: 42be cmp r6, r7 + 80093b4: 460c mov r4, r1 + 80093b6: 4690 mov r8, r2 + 80093b8: 680b ldr r3, [r1, #0] + 80093ba: d82d bhi.n 8009418 <__ssputs_r+0x70> + 80093bc: f9b1 200c ldrsh.w r2, [r1, #12] + 80093c0: f412 6f90 tst.w r2, #1152 @ 0x480 + 80093c4: d026 beq.n 8009414 <__ssputs_r+0x6c> + 80093c6: 6965 ldr r5, [r4, #20] + 80093c8: 6909 ldr r1, [r1, #16] + 80093ca: eb05 0545 add.w r5, r5, r5, lsl #1 + 80093ce: eba3 0901 sub.w r9, r3, r1 + 80093d2: eb05 75d5 add.w r5, r5, r5, lsr #31 + 80093d6: 1c7b adds r3, r7, #1 + 80093d8: 444b add r3, r9 + 80093da: 106d asrs r5, r5, #1 + 80093dc: 429d cmp r5, r3 + 80093de: bf38 it cc + 80093e0: 461d movcc r5, r3 + 80093e2: 0553 lsls r3, r2, #21 + 80093e4: d527 bpl.n 8009436 <__ssputs_r+0x8e> + 80093e6: 4629 mov r1, r5 + 80093e8: f7ff ff52 bl 8009290 <_malloc_r> + 80093ec: 4606 mov r6, r0 + 80093ee: b360 cbz r0, 800944a <__ssputs_r+0xa2> + 80093f0: 464a mov r2, r9 + 80093f2: 6921 ldr r1, [r4, #16] + 80093f4: f000 faf8 bl 80099e8 + 80093f8: 89a3 ldrh r3, [r4, #12] + 80093fa: f423 6390 bic.w r3, r3, #1152 @ 0x480 + 80093fe: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8009402: 81a3 strh r3, [r4, #12] + 8009404: 6126 str r6, [r4, #16] + 8009406: 444e add r6, r9 + 8009408: 6026 str r6, [r4, #0] + 800940a: 463e mov r6, r7 + 800940c: 6165 str r5, [r4, #20] + 800940e: eba5 0509 sub.w r5, r5, r9 + 8009412: 60a5 str r5, [r4, #8] + 8009414: 42be cmp r6, r7 + 8009416: d900 bls.n 800941a <__ssputs_r+0x72> + 8009418: 463e mov r6, r7 + 800941a: 4632 mov r2, r6 + 800941c: 4641 mov r1, r8 + 800941e: 6820 ldr r0, [r4, #0] + 8009420: f000 faaa bl 8009978 + 8009424: 2000 movs r0, #0 + 8009426: 68a3 ldr r3, [r4, #8] + 8009428: 1b9b subs r3, r3, r6 + 800942a: 60a3 str r3, [r4, #8] + 800942c: 6823 ldr r3, [r4, #0] + 800942e: 4433 add r3, r6 + 8009430: 6023 str r3, [r4, #0] + 8009432: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8009436: 462a mov r2, r5 + 8009438: f000 fae4 bl 8009a04 <_realloc_r> + 800943c: 4606 mov r6, r0 + 800943e: 2800 cmp r0, #0 + 8009440: d1e0 bne.n 8009404 <__ssputs_r+0x5c> + 8009442: 4650 mov r0, sl + 8009444: 6921 ldr r1, [r4, #16] + 8009446: f7ff feb9 bl 80091bc <_free_r> + 800944a: 230c movs r3, #12 + 800944c: f8ca 3000 str.w r3, [sl] + 8009450: 89a3 ldrh r3, [r4, #12] + 8009452: f04f 30ff mov.w r0, #4294967295 + 8009456: f043 0340 orr.w r3, r3, #64 @ 0x40 + 800945a: 81a3 strh r3, [r4, #12] + 800945c: e7e9 b.n 8009432 <__ssputs_r+0x8a> + ... + +08009460 <_svfiprintf_r>: + 8009460: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8009464: 4698 mov r8, r3 + 8009466: 898b ldrh r3, [r1, #12] + 8009468: 4607 mov r7, r0 + 800946a: 061b lsls r3, r3, #24 + 800946c: 460d mov r5, r1 + 800946e: 4614 mov r4, r2 + 8009470: b09d sub sp, #116 @ 0x74 + 8009472: d510 bpl.n 8009496 <_svfiprintf_r+0x36> + 8009474: 690b ldr r3, [r1, #16] + 8009476: b973 cbnz r3, 8009496 <_svfiprintf_r+0x36> + 8009478: 2140 movs r1, #64 @ 0x40 + 800947a: f7ff ff09 bl 8009290 <_malloc_r> + 800947e: 6028 str r0, [r5, #0] + 8009480: 6128 str r0, [r5, #16] + 8009482: b930 cbnz r0, 8009492 <_svfiprintf_r+0x32> + 8009484: 230c movs r3, #12 + 8009486: 603b str r3, [r7, #0] + 8009488: f04f 30ff mov.w r0, #4294967295 + 800948c: b01d add sp, #116 @ 0x74 + 800948e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8009492: 2340 movs r3, #64 @ 0x40 + 8009494: 616b str r3, [r5, #20] + 8009496: 2300 movs r3, #0 + 8009498: 9309 str r3, [sp, #36] @ 0x24 + 800949a: 2320 movs r3, #32 + 800949c: f88d 3029 strb.w r3, [sp, #41] @ 0x29 + 80094a0: 2330 movs r3, #48 @ 0x30 + 80094a2: f04f 0901 mov.w r9, #1 + 80094a6: f8cd 800c str.w r8, [sp, #12] + 80094aa: f8df 8198 ldr.w r8, [pc, #408] @ 8009644 <_svfiprintf_r+0x1e4> + 80094ae: f88d 302a strb.w r3, [sp, #42] @ 0x2a + 80094b2: 4623 mov r3, r4 + 80094b4: 469a mov sl, r3 + 80094b6: f813 2b01 ldrb.w r2, [r3], #1 + 80094ba: b10a cbz r2, 80094c0 <_svfiprintf_r+0x60> + 80094bc: 2a25 cmp r2, #37 @ 0x25 + 80094be: d1f9 bne.n 80094b4 <_svfiprintf_r+0x54> + 80094c0: ebba 0b04 subs.w fp, sl, r4 + 80094c4: d00b beq.n 80094de <_svfiprintf_r+0x7e> + 80094c6: 465b mov r3, fp + 80094c8: 4622 mov r2, r4 + 80094ca: 4629 mov r1, r5 + 80094cc: 4638 mov r0, r7 + 80094ce: f7ff ff6b bl 80093a8 <__ssputs_r> + 80094d2: 3001 adds r0, #1 + 80094d4: f000 80a7 beq.w 8009626 <_svfiprintf_r+0x1c6> + 80094d8: 9a09 ldr r2, [sp, #36] @ 0x24 + 80094da: 445a add r2, fp + 80094dc: 9209 str r2, [sp, #36] @ 0x24 + 80094de: f89a 3000 ldrb.w r3, [sl] + 80094e2: 2b00 cmp r3, #0 + 80094e4: f000 809f beq.w 8009626 <_svfiprintf_r+0x1c6> + 80094e8: 2300 movs r3, #0 + 80094ea: f04f 32ff mov.w r2, #4294967295 + 80094ee: e9cd 2305 strd r2, r3, [sp, #20] + 80094f2: f10a 0a01 add.w sl, sl, #1 + 80094f6: 9304 str r3, [sp, #16] + 80094f8: 9307 str r3, [sp, #28] + 80094fa: f88d 3053 strb.w r3, [sp, #83] @ 0x53 + 80094fe: 931a str r3, [sp, #104] @ 0x68 + 8009500: 4654 mov r4, sl + 8009502: 2205 movs r2, #5 + 8009504: f814 1b01 ldrb.w r1, [r4], #1 + 8009508: 484e ldr r0, [pc, #312] @ (8009644 <_svfiprintf_r+0x1e4>) + 800950a: f000 fa5f bl 80099cc + 800950e: 9a04 ldr r2, [sp, #16] + 8009510: b9d8 cbnz r0, 800954a <_svfiprintf_r+0xea> + 8009512: 06d0 lsls r0, r2, #27 + 8009514: bf44 itt mi + 8009516: 2320 movmi r3, #32 + 8009518: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 + 800951c: 0711 lsls r1, r2, #28 + 800951e: bf44 itt mi + 8009520: 232b movmi r3, #43 @ 0x2b + 8009522: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 + 8009526: f89a 3000 ldrb.w r3, [sl] + 800952a: 2b2a cmp r3, #42 @ 0x2a + 800952c: d015 beq.n 800955a <_svfiprintf_r+0xfa> + 800952e: 4654 mov r4, sl + 8009530: 2000 movs r0, #0 + 8009532: f04f 0c0a mov.w ip, #10 + 8009536: 9a07 ldr r2, [sp, #28] + 8009538: 4621 mov r1, r4 + 800953a: f811 3b01 ldrb.w r3, [r1], #1 + 800953e: 3b30 subs r3, #48 @ 0x30 + 8009540: 2b09 cmp r3, #9 + 8009542: d94b bls.n 80095dc <_svfiprintf_r+0x17c> + 8009544: b1b0 cbz r0, 8009574 <_svfiprintf_r+0x114> + 8009546: 9207 str r2, [sp, #28] + 8009548: e014 b.n 8009574 <_svfiprintf_r+0x114> + 800954a: eba0 0308 sub.w r3, r0, r8 + 800954e: fa09 f303 lsl.w r3, r9, r3 + 8009552: 4313 orrs r3, r2 + 8009554: 46a2 mov sl, r4 + 8009556: 9304 str r3, [sp, #16] + 8009558: e7d2 b.n 8009500 <_svfiprintf_r+0xa0> + 800955a: 9b03 ldr r3, [sp, #12] + 800955c: 1d19 adds r1, r3, #4 + 800955e: 681b ldr r3, [r3, #0] + 8009560: 9103 str r1, [sp, #12] + 8009562: 2b00 cmp r3, #0 + 8009564: bfbb ittet lt + 8009566: 425b neglt r3, r3 + 8009568: f042 0202 orrlt.w r2, r2, #2 + 800956c: 9307 strge r3, [sp, #28] + 800956e: 9307 strlt r3, [sp, #28] + 8009570: bfb8 it lt + 8009572: 9204 strlt r2, [sp, #16] + 8009574: 7823 ldrb r3, [r4, #0] + 8009576: 2b2e cmp r3, #46 @ 0x2e + 8009578: d10a bne.n 8009590 <_svfiprintf_r+0x130> + 800957a: 7863 ldrb r3, [r4, #1] + 800957c: 2b2a cmp r3, #42 @ 0x2a + 800957e: d132 bne.n 80095e6 <_svfiprintf_r+0x186> + 8009580: 9b03 ldr r3, [sp, #12] + 8009582: 3402 adds r4, #2 + 8009584: 1d1a adds r2, r3, #4 + 8009586: 681b ldr r3, [r3, #0] + 8009588: 9203 str r2, [sp, #12] + 800958a: ea43 73e3 orr.w r3, r3, r3, asr #31 + 800958e: 9305 str r3, [sp, #20] + 8009590: f8df a0b4 ldr.w sl, [pc, #180] @ 8009648 <_svfiprintf_r+0x1e8> + 8009594: 2203 movs r2, #3 + 8009596: 4650 mov r0, sl + 8009598: 7821 ldrb r1, [r4, #0] + 800959a: f000 fa17 bl 80099cc + 800959e: b138 cbz r0, 80095b0 <_svfiprintf_r+0x150> + 80095a0: 2240 movs r2, #64 @ 0x40 + 80095a2: 9b04 ldr r3, [sp, #16] + 80095a4: eba0 000a sub.w r0, r0, sl + 80095a8: 4082 lsls r2, r0 + 80095aa: 4313 orrs r3, r2 + 80095ac: 3401 adds r4, #1 + 80095ae: 9304 str r3, [sp, #16] + 80095b0: f814 1b01 ldrb.w r1, [r4], #1 + 80095b4: 2206 movs r2, #6 + 80095b6: 4825 ldr r0, [pc, #148] @ (800964c <_svfiprintf_r+0x1ec>) + 80095b8: f88d 1028 strb.w r1, [sp, #40] @ 0x28 + 80095bc: f000 fa06 bl 80099cc + 80095c0: 2800 cmp r0, #0 + 80095c2: d036 beq.n 8009632 <_svfiprintf_r+0x1d2> + 80095c4: 4b22 ldr r3, [pc, #136] @ (8009650 <_svfiprintf_r+0x1f0>) + 80095c6: bb1b cbnz r3, 8009610 <_svfiprintf_r+0x1b0> + 80095c8: 9b03 ldr r3, [sp, #12] + 80095ca: 3307 adds r3, #7 + 80095cc: f023 0307 bic.w r3, r3, #7 + 80095d0: 3308 adds r3, #8 + 80095d2: 9303 str r3, [sp, #12] + 80095d4: 9b09 ldr r3, [sp, #36] @ 0x24 + 80095d6: 4433 add r3, r6 + 80095d8: 9309 str r3, [sp, #36] @ 0x24 + 80095da: e76a b.n 80094b2 <_svfiprintf_r+0x52> + 80095dc: 460c mov r4, r1 + 80095de: 2001 movs r0, #1 + 80095e0: fb0c 3202 mla r2, ip, r2, r3 + 80095e4: e7a8 b.n 8009538 <_svfiprintf_r+0xd8> + 80095e6: 2300 movs r3, #0 + 80095e8: f04f 0c0a mov.w ip, #10 + 80095ec: 4619 mov r1, r3 + 80095ee: 3401 adds r4, #1 + 80095f0: 9305 str r3, [sp, #20] + 80095f2: 4620 mov r0, r4 + 80095f4: f810 2b01 ldrb.w r2, [r0], #1 + 80095f8: 3a30 subs r2, #48 @ 0x30 + 80095fa: 2a09 cmp r2, #9 + 80095fc: d903 bls.n 8009606 <_svfiprintf_r+0x1a6> + 80095fe: 2b00 cmp r3, #0 + 8009600: d0c6 beq.n 8009590 <_svfiprintf_r+0x130> + 8009602: 9105 str r1, [sp, #20] + 8009604: e7c4 b.n 8009590 <_svfiprintf_r+0x130> + 8009606: 4604 mov r4, r0 + 8009608: 2301 movs r3, #1 + 800960a: fb0c 2101 mla r1, ip, r1, r2 + 800960e: e7f0 b.n 80095f2 <_svfiprintf_r+0x192> + 8009610: ab03 add r3, sp, #12 + 8009612: 9300 str r3, [sp, #0] + 8009614: 462a mov r2, r5 + 8009616: 4638 mov r0, r7 + 8009618: 4b0e ldr r3, [pc, #56] @ (8009654 <_svfiprintf_r+0x1f4>) + 800961a: a904 add r1, sp, #16 + 800961c: f3af 8000 nop.w + 8009620: 1c42 adds r2, r0, #1 + 8009622: 4606 mov r6, r0 + 8009624: d1d6 bne.n 80095d4 <_svfiprintf_r+0x174> + 8009626: 89ab ldrh r3, [r5, #12] + 8009628: 065b lsls r3, r3, #25 + 800962a: f53f af2d bmi.w 8009488 <_svfiprintf_r+0x28> + 800962e: 9809 ldr r0, [sp, #36] @ 0x24 + 8009630: e72c b.n 800948c <_svfiprintf_r+0x2c> + 8009632: ab03 add r3, sp, #12 + 8009634: 9300 str r3, [sp, #0] + 8009636: 462a mov r2, r5 + 8009638: 4638 mov r0, r7 + 800963a: 4b06 ldr r3, [pc, #24] @ (8009654 <_svfiprintf_r+0x1f4>) + 800963c: a904 add r1, sp, #16 + 800963e: f000 f87d bl 800973c <_printf_i> + 8009642: e7ed b.n 8009620 <_svfiprintf_r+0x1c0> + 8009644: 08009b02 .word 0x08009b02 + 8009648: 08009b08 .word 0x08009b08 + 800964c: 08009b0c .word 0x08009b0c + 8009650: 00000000 .word 0x00000000 + 8009654: 080093a9 .word 0x080093a9 + +08009658 <_printf_common>: + 8009658: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 800965c: 4616 mov r6, r2 + 800965e: 4698 mov r8, r3 + 8009660: 688a ldr r2, [r1, #8] + 8009662: 690b ldr r3, [r1, #16] + 8009664: 4607 mov r7, r0 + 8009666: 4293 cmp r3, r2 + 8009668: bfb8 it lt + 800966a: 4613 movlt r3, r2 + 800966c: 6033 str r3, [r6, #0] + 800966e: f891 2043 ldrb.w r2, [r1, #67] @ 0x43 + 8009672: 460c mov r4, r1 + 8009674: f8dd 9020 ldr.w r9, [sp, #32] + 8009678: b10a cbz r2, 800967e <_printf_common+0x26> + 800967a: 3301 adds r3, #1 + 800967c: 6033 str r3, [r6, #0] + 800967e: 6823 ldr r3, [r4, #0] + 8009680: 0699 lsls r1, r3, #26 + 8009682: bf42 ittt mi + 8009684: 6833 ldrmi r3, [r6, #0] + 8009686: 3302 addmi r3, #2 + 8009688: 6033 strmi r3, [r6, #0] + 800968a: 6825 ldr r5, [r4, #0] + 800968c: f015 0506 ands.w r5, r5, #6 + 8009690: d106 bne.n 80096a0 <_printf_common+0x48> + 8009692: f104 0a19 add.w sl, r4, #25 + 8009696: 68e3 ldr r3, [r4, #12] + 8009698: 6832 ldr r2, [r6, #0] + 800969a: 1a9b subs r3, r3, r2 + 800969c: 42ab cmp r3, r5 + 800969e: dc2b bgt.n 80096f8 <_printf_common+0xa0> + 80096a0: f894 3043 ldrb.w r3, [r4, #67] @ 0x43 + 80096a4: 6822 ldr r2, [r4, #0] + 80096a6: 3b00 subs r3, #0 + 80096a8: bf18 it ne + 80096aa: 2301 movne r3, #1 + 80096ac: 0692 lsls r2, r2, #26 + 80096ae: d430 bmi.n 8009712 <_printf_common+0xba> + 80096b0: 4641 mov r1, r8 + 80096b2: 4638 mov r0, r7 + 80096b4: f104 0243 add.w r2, r4, #67 @ 0x43 + 80096b8: 47c8 blx r9 + 80096ba: 3001 adds r0, #1 + 80096bc: d023 beq.n 8009706 <_printf_common+0xae> + 80096be: 6823 ldr r3, [r4, #0] + 80096c0: 6922 ldr r2, [r4, #16] + 80096c2: f003 0306 and.w r3, r3, #6 + 80096c6: 2b04 cmp r3, #4 + 80096c8: bf14 ite ne + 80096ca: 2500 movne r5, #0 + 80096cc: 6833 ldreq r3, [r6, #0] + 80096ce: f04f 0600 mov.w r6, #0 + 80096d2: bf08 it eq + 80096d4: 68e5 ldreq r5, [r4, #12] + 80096d6: f104 041a add.w r4, r4, #26 + 80096da: bf08 it eq + 80096dc: 1aed subeq r5, r5, r3 + 80096de: f854 3c12 ldr.w r3, [r4, #-18] + 80096e2: bf08 it eq + 80096e4: ea25 75e5 biceq.w r5, r5, r5, asr #31 + 80096e8: 4293 cmp r3, r2 + 80096ea: bfc4 itt gt + 80096ec: 1a9b subgt r3, r3, r2 + 80096ee: 18ed addgt r5, r5, r3 + 80096f0: 42b5 cmp r5, r6 + 80096f2: d11a bne.n 800972a <_printf_common+0xd2> + 80096f4: 2000 movs r0, #0 + 80096f6: e008 b.n 800970a <_printf_common+0xb2> + 80096f8: 2301 movs r3, #1 + 80096fa: 4652 mov r2, sl + 80096fc: 4641 mov r1, r8 + 80096fe: 4638 mov r0, r7 + 8009700: 47c8 blx r9 + 8009702: 3001 adds r0, #1 + 8009704: d103 bne.n 800970e <_printf_common+0xb6> + 8009706: f04f 30ff mov.w r0, #4294967295 + 800970a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 800970e: 3501 adds r5, #1 + 8009710: e7c1 b.n 8009696 <_printf_common+0x3e> + 8009712: 2030 movs r0, #48 @ 0x30 + 8009714: 18e1 adds r1, r4, r3 + 8009716: f881 0043 strb.w r0, [r1, #67] @ 0x43 + 800971a: 1c5a adds r2, r3, #1 + 800971c: f894 1045 ldrb.w r1, [r4, #69] @ 0x45 + 8009720: 4422 add r2, r4 + 8009722: 3302 adds r3, #2 + 8009724: f882 1043 strb.w r1, [r2, #67] @ 0x43 + 8009728: e7c2 b.n 80096b0 <_printf_common+0x58> + 800972a: 2301 movs r3, #1 + 800972c: 4622 mov r2, r4 + 800972e: 4641 mov r1, r8 + 8009730: 4638 mov r0, r7 + 8009732: 47c8 blx r9 + 8009734: 3001 adds r0, #1 + 8009736: d0e6 beq.n 8009706 <_printf_common+0xae> + 8009738: 3601 adds r6, #1 + 800973a: e7d9 b.n 80096f0 <_printf_common+0x98> + +0800973c <_printf_i>: + 800973c: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} + 8009740: 7e0f ldrb r7, [r1, #24] + 8009742: 4691 mov r9, r2 + 8009744: 2f78 cmp r7, #120 @ 0x78 + 8009746: 4680 mov r8, r0 + 8009748: 460c mov r4, r1 + 800974a: 469a mov sl, r3 + 800974c: 9e0c ldr r6, [sp, #48] @ 0x30 + 800974e: f101 0243 add.w r2, r1, #67 @ 0x43 + 8009752: d807 bhi.n 8009764 <_printf_i+0x28> + 8009754: 2f62 cmp r7, #98 @ 0x62 + 8009756: d80a bhi.n 800976e <_printf_i+0x32> + 8009758: 2f00 cmp r7, #0 + 800975a: f000 80d1 beq.w 8009900 <_printf_i+0x1c4> + 800975e: 2f58 cmp r7, #88 @ 0x58 + 8009760: f000 80b8 beq.w 80098d4 <_printf_i+0x198> + 8009764: f104 0642 add.w r6, r4, #66 @ 0x42 + 8009768: f884 7042 strb.w r7, [r4, #66] @ 0x42 + 800976c: e03a b.n 80097e4 <_printf_i+0xa8> + 800976e: f1a7 0363 sub.w r3, r7, #99 @ 0x63 + 8009772: 2b15 cmp r3, #21 + 8009774: d8f6 bhi.n 8009764 <_printf_i+0x28> + 8009776: a101 add r1, pc, #4 @ (adr r1, 800977c <_printf_i+0x40>) + 8009778: f851 f023 ldr.w pc, [r1, r3, lsl #2] + 800977c: 080097d5 .word 0x080097d5 + 8009780: 080097e9 .word 0x080097e9 + 8009784: 08009765 .word 0x08009765 + 8009788: 08009765 .word 0x08009765 + 800978c: 08009765 .word 0x08009765 + 8009790: 08009765 .word 0x08009765 + 8009794: 080097e9 .word 0x080097e9 + 8009798: 08009765 .word 0x08009765 + 800979c: 08009765 .word 0x08009765 + 80097a0: 08009765 .word 0x08009765 + 80097a4: 08009765 .word 0x08009765 + 80097a8: 080098e7 .word 0x080098e7 + 80097ac: 08009813 .word 0x08009813 + 80097b0: 080098a1 .word 0x080098a1 + 80097b4: 08009765 .word 0x08009765 + 80097b8: 08009765 .word 0x08009765 + 80097bc: 08009909 .word 0x08009909 + 80097c0: 08009765 .word 0x08009765 + 80097c4: 08009813 .word 0x08009813 + 80097c8: 08009765 .word 0x08009765 + 80097cc: 08009765 .word 0x08009765 + 80097d0: 080098a9 .word 0x080098a9 + 80097d4: 6833 ldr r3, [r6, #0] + 80097d6: 1d1a adds r2, r3, #4 + 80097d8: 681b ldr r3, [r3, #0] + 80097da: 6032 str r2, [r6, #0] + 80097dc: f104 0642 add.w r6, r4, #66 @ 0x42 + 80097e0: f884 3042 strb.w r3, [r4, #66] @ 0x42 + 80097e4: 2301 movs r3, #1 + 80097e6: e09c b.n 8009922 <_printf_i+0x1e6> + 80097e8: 6833 ldr r3, [r6, #0] + 80097ea: 6820 ldr r0, [r4, #0] + 80097ec: 1d19 adds r1, r3, #4 + 80097ee: 6031 str r1, [r6, #0] + 80097f0: 0606 lsls r6, r0, #24 + 80097f2: d501 bpl.n 80097f8 <_printf_i+0xbc> + 80097f4: 681d ldr r5, [r3, #0] + 80097f6: e003 b.n 8009800 <_printf_i+0xc4> + 80097f8: 0645 lsls r5, r0, #25 + 80097fa: d5fb bpl.n 80097f4 <_printf_i+0xb8> + 80097fc: f9b3 5000 ldrsh.w r5, [r3] + 8009800: 2d00 cmp r5, #0 + 8009802: da03 bge.n 800980c <_printf_i+0xd0> + 8009804: 232d movs r3, #45 @ 0x2d + 8009806: 426d negs r5, r5 + 8009808: f884 3043 strb.w r3, [r4, #67] @ 0x43 + 800980c: 230a movs r3, #10 + 800980e: 4858 ldr r0, [pc, #352] @ (8009970 <_printf_i+0x234>) + 8009810: e011 b.n 8009836 <_printf_i+0xfa> + 8009812: 6821 ldr r1, [r4, #0] + 8009814: 6833 ldr r3, [r6, #0] + 8009816: 0608 lsls r0, r1, #24 + 8009818: f853 5b04 ldr.w r5, [r3], #4 + 800981c: d402 bmi.n 8009824 <_printf_i+0xe8> + 800981e: 0649 lsls r1, r1, #25 + 8009820: bf48 it mi + 8009822: b2ad uxthmi r5, r5 + 8009824: 2f6f cmp r7, #111 @ 0x6f + 8009826: 6033 str r3, [r6, #0] + 8009828: bf14 ite ne + 800982a: 230a movne r3, #10 + 800982c: 2308 moveq r3, #8 + 800982e: 4850 ldr r0, [pc, #320] @ (8009970 <_printf_i+0x234>) + 8009830: 2100 movs r1, #0 + 8009832: f884 1043 strb.w r1, [r4, #67] @ 0x43 + 8009836: 6866 ldr r6, [r4, #4] + 8009838: 2e00 cmp r6, #0 + 800983a: 60a6 str r6, [r4, #8] + 800983c: db05 blt.n 800984a <_printf_i+0x10e> + 800983e: 6821 ldr r1, [r4, #0] + 8009840: 432e orrs r6, r5 + 8009842: f021 0104 bic.w r1, r1, #4 + 8009846: 6021 str r1, [r4, #0] + 8009848: d04b beq.n 80098e2 <_printf_i+0x1a6> + 800984a: 4616 mov r6, r2 + 800984c: fbb5 f1f3 udiv r1, r5, r3 + 8009850: fb03 5711 mls r7, r3, r1, r5 + 8009854: 5dc7 ldrb r7, [r0, r7] + 8009856: f806 7d01 strb.w r7, [r6, #-1]! + 800985a: 462f mov r7, r5 + 800985c: 42bb cmp r3, r7 + 800985e: 460d mov r5, r1 + 8009860: d9f4 bls.n 800984c <_printf_i+0x110> + 8009862: 2b08 cmp r3, #8 + 8009864: d10b bne.n 800987e <_printf_i+0x142> + 8009866: 6823 ldr r3, [r4, #0] + 8009868: 07df lsls r7, r3, #31 + 800986a: d508 bpl.n 800987e <_printf_i+0x142> + 800986c: 6923 ldr r3, [r4, #16] + 800986e: 6861 ldr r1, [r4, #4] + 8009870: 4299 cmp r1, r3 + 8009872: bfde ittt le + 8009874: 2330 movle r3, #48 @ 0x30 + 8009876: f806 3c01 strble.w r3, [r6, #-1] + 800987a: f106 36ff addle.w r6, r6, #4294967295 + 800987e: 1b92 subs r2, r2, r6 + 8009880: 6122 str r2, [r4, #16] + 8009882: 464b mov r3, r9 + 8009884: 4621 mov r1, r4 + 8009886: 4640 mov r0, r8 + 8009888: f8cd a000 str.w sl, [sp] + 800988c: aa03 add r2, sp, #12 + 800988e: f7ff fee3 bl 8009658 <_printf_common> + 8009892: 3001 adds r0, #1 + 8009894: d14a bne.n 800992c <_printf_i+0x1f0> + 8009896: f04f 30ff mov.w r0, #4294967295 + 800989a: b004 add sp, #16 + 800989c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 80098a0: 6823 ldr r3, [r4, #0] + 80098a2: f043 0320 orr.w r3, r3, #32 + 80098a6: 6023 str r3, [r4, #0] + 80098a8: 2778 movs r7, #120 @ 0x78 + 80098aa: 4832 ldr r0, [pc, #200] @ (8009974 <_printf_i+0x238>) + 80098ac: f884 7045 strb.w r7, [r4, #69] @ 0x45 + 80098b0: 6823 ldr r3, [r4, #0] + 80098b2: 6831 ldr r1, [r6, #0] + 80098b4: 061f lsls r7, r3, #24 + 80098b6: f851 5b04 ldr.w r5, [r1], #4 + 80098ba: d402 bmi.n 80098c2 <_printf_i+0x186> + 80098bc: 065f lsls r7, r3, #25 + 80098be: bf48 it mi + 80098c0: b2ad uxthmi r5, r5 + 80098c2: 6031 str r1, [r6, #0] + 80098c4: 07d9 lsls r1, r3, #31 + 80098c6: bf44 itt mi + 80098c8: f043 0320 orrmi.w r3, r3, #32 + 80098cc: 6023 strmi r3, [r4, #0] + 80098ce: b11d cbz r5, 80098d8 <_printf_i+0x19c> + 80098d0: 2310 movs r3, #16 + 80098d2: e7ad b.n 8009830 <_printf_i+0xf4> + 80098d4: 4826 ldr r0, [pc, #152] @ (8009970 <_printf_i+0x234>) + 80098d6: e7e9 b.n 80098ac <_printf_i+0x170> + 80098d8: 6823 ldr r3, [r4, #0] + 80098da: f023 0320 bic.w r3, r3, #32 + 80098de: 6023 str r3, [r4, #0] + 80098e0: e7f6 b.n 80098d0 <_printf_i+0x194> + 80098e2: 4616 mov r6, r2 + 80098e4: e7bd b.n 8009862 <_printf_i+0x126> + 80098e6: 6833 ldr r3, [r6, #0] + 80098e8: 6825 ldr r5, [r4, #0] + 80098ea: 1d18 adds r0, r3, #4 + 80098ec: 6961 ldr r1, [r4, #20] + 80098ee: 6030 str r0, [r6, #0] + 80098f0: 062e lsls r6, r5, #24 + 80098f2: 681b ldr r3, [r3, #0] + 80098f4: d501 bpl.n 80098fa <_printf_i+0x1be> + 80098f6: 6019 str r1, [r3, #0] + 80098f8: e002 b.n 8009900 <_printf_i+0x1c4> + 80098fa: 0668 lsls r0, r5, #25 + 80098fc: d5fb bpl.n 80098f6 <_printf_i+0x1ba> + 80098fe: 8019 strh r1, [r3, #0] + 8009900: 2300 movs r3, #0 + 8009902: 4616 mov r6, r2 + 8009904: 6123 str r3, [r4, #16] + 8009906: e7bc b.n 8009882 <_printf_i+0x146> + 8009908: 6833 ldr r3, [r6, #0] + 800990a: 2100 movs r1, #0 + 800990c: 1d1a adds r2, r3, #4 + 800990e: 6032 str r2, [r6, #0] + 8009910: 681e ldr r6, [r3, #0] + 8009912: 6862 ldr r2, [r4, #4] + 8009914: 4630 mov r0, r6 + 8009916: f000 f859 bl 80099cc + 800991a: b108 cbz r0, 8009920 <_printf_i+0x1e4> + 800991c: 1b80 subs r0, r0, r6 + 800991e: 6060 str r0, [r4, #4] + 8009920: 6863 ldr r3, [r4, #4] + 8009922: 6123 str r3, [r4, #16] + 8009924: 2300 movs r3, #0 + 8009926: f884 3043 strb.w r3, [r4, #67] @ 0x43 + 800992a: e7aa b.n 8009882 <_printf_i+0x146> + 800992c: 4632 mov r2, r6 + 800992e: 4649 mov r1, r9 + 8009930: 4640 mov r0, r8 + 8009932: 6923 ldr r3, [r4, #16] + 8009934: 47d0 blx sl + 8009936: 3001 adds r0, #1 + 8009938: d0ad beq.n 8009896 <_printf_i+0x15a> + 800993a: 6823 ldr r3, [r4, #0] + 800993c: 079b lsls r3, r3, #30 + 800993e: d413 bmi.n 8009968 <_printf_i+0x22c> + 8009940: 68e0 ldr r0, [r4, #12] + 8009942: 9b03 ldr r3, [sp, #12] + 8009944: 4298 cmp r0, r3 + 8009946: bfb8 it lt + 8009948: 4618 movlt r0, r3 + 800994a: e7a6 b.n 800989a <_printf_i+0x15e> + 800994c: 2301 movs r3, #1 + 800994e: 4632 mov r2, r6 + 8009950: 4649 mov r1, r9 + 8009952: 4640 mov r0, r8 + 8009954: 47d0 blx sl + 8009956: 3001 adds r0, #1 + 8009958: d09d beq.n 8009896 <_printf_i+0x15a> + 800995a: 3501 adds r5, #1 + 800995c: 68e3 ldr r3, [r4, #12] + 800995e: 9903 ldr r1, [sp, #12] + 8009960: 1a5b subs r3, r3, r1 + 8009962: 42ab cmp r3, r5 + 8009964: dcf2 bgt.n 800994c <_printf_i+0x210> + 8009966: e7eb b.n 8009940 <_printf_i+0x204> + 8009968: 2500 movs r5, #0 + 800996a: f104 0619 add.w r6, r4, #25 + 800996e: e7f5 b.n 800995c <_printf_i+0x220> + 8009970: 08009b13 .word 0x08009b13 + 8009974: 08009b24 .word 0x08009b24 + +08009978 : + 8009978: 4288 cmp r0, r1 + 800997a: b510 push {r4, lr} + 800997c: eb01 0402 add.w r4, r1, r2 + 8009980: d902 bls.n 8009988 + 8009982: 4284 cmp r4, r0 + 8009984: 4623 mov r3, r4 + 8009986: d807 bhi.n 8009998 + 8009988: 1e43 subs r3, r0, #1 + 800998a: 42a1 cmp r1, r4 + 800998c: d008 beq.n 80099a0 + 800998e: f811 2b01 ldrb.w r2, [r1], #1 + 8009992: f803 2f01 strb.w r2, [r3, #1]! + 8009996: e7f8 b.n 800998a + 8009998: 4601 mov r1, r0 + 800999a: 4402 add r2, r0 + 800999c: 428a cmp r2, r1 + 800999e: d100 bne.n 80099a2 + 80099a0: bd10 pop {r4, pc} + 80099a2: f813 4d01 ldrb.w r4, [r3, #-1]! + 80099a6: f802 4d01 strb.w r4, [r2, #-1]! + 80099aa: e7f7 b.n 800999c + +080099ac <_sbrk_r>: + 80099ac: b538 push {r3, r4, r5, lr} + 80099ae: 2300 movs r3, #0 + 80099b0: 4d05 ldr r5, [pc, #20] @ (80099c8 <_sbrk_r+0x1c>) + 80099b2: 4604 mov r4, r0 + 80099b4: 4608 mov r0, r1 + 80099b6: 602b str r3, [r5, #0] + 80099b8: f7f7 f9c6 bl 8000d48 <_sbrk> + 80099bc: 1c43 adds r3, r0, #1 + 80099be: d102 bne.n 80099c6 <_sbrk_r+0x1a> + 80099c0: 682b ldr r3, [r5, #0] + 80099c2: b103 cbz r3, 80099c6 <_sbrk_r+0x1a> + 80099c4: 6023 str r3, [r4, #0] + 80099c6: bd38 pop {r3, r4, r5, pc} + 80099c8: 20001740 .word 0x20001740 + +080099cc : + 80099cc: 4603 mov r3, r0 + 80099ce: b510 push {r4, lr} + 80099d0: b2c9 uxtb r1, r1 + 80099d2: 4402 add r2, r0 + 80099d4: 4293 cmp r3, r2 + 80099d6: 4618 mov r0, r3 + 80099d8: d101 bne.n 80099de + 80099da: 2000 movs r0, #0 + 80099dc: e003 b.n 80099e6 + 80099de: 7804 ldrb r4, [r0, #0] + 80099e0: 3301 adds r3, #1 + 80099e2: 428c cmp r4, r1 + 80099e4: d1f6 bne.n 80099d4 + 80099e6: bd10 pop {r4, pc} + +080099e8 : + 80099e8: 440a add r2, r1 + 80099ea: 4291 cmp r1, r2 + 80099ec: f100 33ff add.w r3, r0, #4294967295 + 80099f0: d100 bne.n 80099f4 + 80099f2: 4770 bx lr + 80099f4: b510 push {r4, lr} + 80099f6: f811 4b01 ldrb.w r4, [r1], #1 + 80099fa: 4291 cmp r1, r2 + 80099fc: f803 4f01 strb.w r4, [r3, #1]! + 8009a00: d1f9 bne.n 80099f6 + 8009a02: bd10 pop {r4, pc} + +08009a04 <_realloc_r>: + 8009a04: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8009a08: 4607 mov r7, r0 + 8009a0a: 4614 mov r4, r2 + 8009a0c: 460d mov r5, r1 + 8009a0e: b921 cbnz r1, 8009a1a <_realloc_r+0x16> + 8009a10: 4611 mov r1, r2 + 8009a12: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 8009a16: f7ff bc3b b.w 8009290 <_malloc_r> + 8009a1a: b92a cbnz r2, 8009a28 <_realloc_r+0x24> + 8009a1c: f7ff fbce bl 80091bc <_free_r> + 8009a20: 4625 mov r5, r4 + 8009a22: 4628 mov r0, r5 + 8009a24: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8009a28: f000 f81a bl 8009a60 <_malloc_usable_size_r> + 8009a2c: 4284 cmp r4, r0 + 8009a2e: 4606 mov r6, r0 + 8009a30: d802 bhi.n 8009a38 <_realloc_r+0x34> + 8009a32: ebb4 0f50 cmp.w r4, r0, lsr #1 + 8009a36: d8f4 bhi.n 8009a22 <_realloc_r+0x1e> + 8009a38: 4621 mov r1, r4 + 8009a3a: 4638 mov r0, r7 + 8009a3c: f7ff fc28 bl 8009290 <_malloc_r> + 8009a40: 4680 mov r8, r0 + 8009a42: b908 cbnz r0, 8009a48 <_realloc_r+0x44> + 8009a44: 4645 mov r5, r8 + 8009a46: e7ec b.n 8009a22 <_realloc_r+0x1e> + 8009a48: 42b4 cmp r4, r6 + 8009a4a: 4622 mov r2, r4 + 8009a4c: 4629 mov r1, r5 + 8009a4e: bf28 it cs + 8009a50: 4632 movcs r2, r6 + 8009a52: f7ff ffc9 bl 80099e8 + 8009a56: 4629 mov r1, r5 + 8009a58: 4638 mov r0, r7 + 8009a5a: f7ff fbaf bl 80091bc <_free_r> + 8009a5e: e7f1 b.n 8009a44 <_realloc_r+0x40> + +08009a60 <_malloc_usable_size_r>: + 8009a60: f851 3c04 ldr.w r3, [r1, #-4] + 8009a64: 1f18 subs r0, r3, #4 + 8009a66: 2b00 cmp r3, #0 + 8009a68: bfbc itt lt + 8009a6a: 580b ldrlt r3, [r1, r0] + 8009a6c: 18c0 addlt r0, r0, r3 + 8009a6e: 4770 bx lr + +08009a70 <_init>: + 8009a70: b5f8 push {r3, r4, r5, r6, r7, lr} + 8009a72: bf00 nop + 8009a74: bcf8 pop {r3, r4, r5, r6, r7} + 8009a76: bc08 pop {r3} + 8009a78: 469e mov lr, r3 + 8009a7a: 4770 bx lr + +08009a7c <_fini>: + 8009a7c: b5f8 push {r3, r4, r5, r6, r7, lr} + 8009a7e: bf00 nop + 8009a80: bcf8 pop {r3, r4, r5, r6, r7} + 8009a82: bc08 pop {r3} + 8009a84: 469e mov lr, r3 + 8009a86: 4770 bx lr diff --git a/workspace/AUTOM10/Debug/AUTOM10.map b/workspace/AUTOM10/Debug/AUTOM10.map index 7f311f0..5226be3 100644 --- a/workspace/AUTOM10/Debug/AUTOM10.map +++ b/workspace/AUTOM10/Debug/AUTOM10.map @@ -1,5594 +1,5596 @@ -Archive member included to satisfy reference by file (symbol) - -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (exit) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) (__stdio_exit_handler) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (_fwalk_sglue) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - ./Core/Src/main.o (sprintf) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (__sread) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (memset) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_close_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) (errno) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) (_impure_ptr) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_lseek_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_read_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_write_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - ./Core/Src/syscalls.o (__errno) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (__libc_init_array) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (__retarget_lock_init_recursive) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) (_free_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (_malloc_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) (__malloc_lock) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) (_svfprintf_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (_printf_i) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (_fflush_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (memmove) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) (_sbrk_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (memchr) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (memcpy) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (_realloc_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) (_malloc_usable_size_r) - -Discarded input sections - - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o - .data 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - .rodata 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - .text 0x00000000 0x7c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .ARM.extab 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .ARM.exidx 0x00000000 0x10 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .ARM.attributes - 0x00000000 0x1b C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .text 0x00000000 0x0 ./Core/Src/main.o - .data 0x00000000 0x0 ./Core/Src/main.o - .bss 0x00000000 0x0 ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .text 0x00000000 0x0 ./Core/Src/stm32f1xx_hal_msp.o - .data 0x00000000 0x0 ./Core/Src/stm32f1xx_hal_msp.o - .bss 0x00000000 0x0 ./Core/Src/stm32f1xx_hal_msp.o - .text.HAL_ADC_MspDeInit - 0x00000000 0x3c ./Core/Src/stm32f1xx_hal_msp.o - .text.HAL_TIM_Base_MspDeInit - 0x00000000 0x80 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0xacc ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x221 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x2e ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x8e ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x51 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x103 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x6a ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x1df ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x1c ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0xbd ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0xd23 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0xe09e ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x6d ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x34a2 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x190 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x5c ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x5bc ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x289 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x1cb ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x114 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x1b2 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x27 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x136 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x1bc ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x34 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x3c ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x57 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x46a ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x1b5 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x87 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x240 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x140 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x8ed ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0xb7 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x242 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x83 ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .text 0x00000000 0x0 ./Core/Src/stm32f1xx_it.o - .data 0x00000000 0x0 ./Core/Src/stm32f1xx_it.o - .bss 0x00000000 0x0 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0xacc ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x221 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x2e ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x8e ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x51 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x103 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x6a ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x1df ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x1c ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0xbd ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0xd23 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0xe09e ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x6d ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x34a2 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x190 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x5c ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x5bc ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x289 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x1cb ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x114 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x1b2 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x27 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x136 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x1bc ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x34 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x3c ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x57 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x46a ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x1b5 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x87 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x240 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x140 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x8ed ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0xb7 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x242 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x83 ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .text 0x00000000 0x0 ./Core/Src/syscalls.o - .data 0x00000000 0x0 ./Core/Src/syscalls.o - .bss 0x00000000 0x0 ./Core/Src/syscalls.o - .bss.__env 0x00000000 0x4 ./Core/Src/syscalls.o - .data.environ 0x00000000 0x4 ./Core/Src/syscalls.o - .text.initialise_monitor_handles - 0x00000000 0xc ./Core/Src/syscalls.o - .text._getpid 0x00000000 0xe ./Core/Src/syscalls.o - .text._kill 0x00000000 0x20 ./Core/Src/syscalls.o - .text._exit 0x00000000 0x16 ./Core/Src/syscalls.o - .text._read 0x00000000 0x3a ./Core/Src/syscalls.o - .text._write 0x00000000 0x38 ./Core/Src/syscalls.o - .text._close 0x00000000 0x16 ./Core/Src/syscalls.o - .text._fstat 0x00000000 0x1e ./Core/Src/syscalls.o - .text._isatty 0x00000000 0x14 ./Core/Src/syscalls.o - .text._lseek 0x00000000 0x18 ./Core/Src/syscalls.o - .text._open 0x00000000 0x1a ./Core/Src/syscalls.o - .text._wait 0x00000000 0x1e ./Core/Src/syscalls.o - .text._unlink 0x00000000 0x1e ./Core/Src/syscalls.o - .text._times 0x00000000 0x16 ./Core/Src/syscalls.o - .text._stat 0x00000000 0x1e ./Core/Src/syscalls.o - .text._link 0x00000000 0x20 ./Core/Src/syscalls.o - .text._fork 0x00000000 0x16 ./Core/Src/syscalls.o - .text._execve 0x00000000 0x22 ./Core/Src/syscalls.o - .debug_info 0x00000000 0x6a3 ./Core/Src/syscalls.o - .debug_abbrev 0x00000000 0x1b6 ./Core/Src/syscalls.o - .debug_aranges - 0x00000000 0xa8 ./Core/Src/syscalls.o - .debug_rnglists - 0x00000000 0x79 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x274 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0xacc ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x5b ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x24 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x94 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x43 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x57 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x190 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x370 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x4a ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x58 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x8e ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x185 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x3c ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x6a ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0xcf ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x3d ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x35 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x12c ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x29 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x242 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x146 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x103 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x1df ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x18a ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0xce ./Core/Src/syscalls.o - .debug_line 0x00000000 0x8ac ./Core/Src/syscalls.o - .debug_str 0x00000000 0x9977 ./Core/Src/syscalls.o - .comment 0x00000000 0x44 ./Core/Src/syscalls.o - .debug_frame 0x00000000 0x2ac ./Core/Src/syscalls.o - .ARM.attributes - 0x00000000 0x2d ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .text 0x00000000 0x0 ./Core/Src/sysmem.o - .data 0x00000000 0x0 ./Core/Src/sysmem.o - .bss 0x00000000 0x0 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0xacc ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x22 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x5b ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x24 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x94 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x43 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x190 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x57 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x370 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x16 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x4a ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x58 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x8e ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x1c ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x185 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x103 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x6a ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x1df ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .text 0x00000000 0x0 ./Core/Src/system_stm32f1xx.o - .data 0x00000000 0x0 ./Core/Src/system_stm32f1xx.o - .bss 0x00000000 0x0 ./Core/Src/system_stm32f1xx.o - .rodata.APBPrescTable - 0x00000000 0x8 ./Core/Src/system_stm32f1xx.o - .text.SystemCoreClockUpdate - 0x00000000 0xe4 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0xacc ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x2e ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x8e ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x51 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x103 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x6a ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x1df ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x1c ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0xbd ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0xd23 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0xe09e ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x6d ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x221 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x34a2 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x190 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x5c ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x5bc ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x289 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x1cb ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x114 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x1b2 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x27 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x136 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x1bc ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x34 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x3c ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x57 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x46a ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x1b5 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x87 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x240 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x140 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x8ed ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0xb7 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x242 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x83 ./Core/Src/system_stm32f1xx.o - .text 0x00000000 0x14 ./Core/Startup/startup_stm32f103c8tx.o - .data 0x00000000 0x0 ./Core/Startup/startup_stm32f103c8tx.o - .bss 0x00000000 0x0 ./Core/Startup/startup_stm32f103c8tx.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_DeInit - 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_MspInit - 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_MspDeInit - 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetTickPrio - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_SetTickFreq - 0x00000000 0x50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetTickFreq - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_Delay - 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_SuspendTick - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_ResumeTick - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetHalVersion - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetREVID - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetDEVID - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetUIDw0 - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetUIDw1 - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetUIDw2 - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_DBGMCU_EnableDBGSleepMode - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_DBGMCU_DisableDBGSleepMode - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_DBGMCU_EnableDBGStopMode - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_DBGMCU_DisableDBGStopMode - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_DBGMCU_EnableDBGStandbyMode - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_DBGMCU_DisableDBGStandbyMode - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_DeInit - 0x00000000 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_MspInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_Start - 0x00000000 0x15c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_Stop - 0x00000000 0x58 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_PollForConversion - 0x00000000 0x20c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_PollForEvent - 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_Start_IT - 0x00000000 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_Stop_IT - 0x00000000 0x68 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_Start_DMA - 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_Stop_DMA - 0x00000000 0x98 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_GetValue - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_IRQHandler - 0x00000000 0x17e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_ConvCpltCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_ConvHalfCpltCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_LevelOutOfWindowCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_ErrorCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_AnalogWDGConfig - 0x00000000 0xac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_GetState - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.HAL_ADC_GetError - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.ADC_Enable - 0x00000000 0xb4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.ADC_DMAConvCplt - 0x00000000 0x7c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.ADC_DMAHalfConvCplt - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .text.ADC_DMAError - 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .text.HAL_ADCEx_Calibration_Start - 0x00000000 0x15c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .text.HAL_ADCEx_InjectedStart - 0x00000000 0x10c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .text.HAL_ADCEx_InjectedStop - 0x00000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .text.HAL_ADCEx_InjectedPollForConversion - 0x00000000 0x1f0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .text.HAL_ADCEx_InjectedStart_IT - 0x00000000 0x11c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .text.HAL_ADCEx_InjectedStop_IT - 0x00000000 0x94 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .text.HAL_ADCEx_MultiModeStart_DMA - 0x00000000 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .text.HAL_ADCEx_MultiModeStop_DMA - 0x00000000 0xd8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .text.HAL_ADCEx_InjectedGetValue - 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .text.HAL_ADCEx_MultiModeGetValue - 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .text.HAL_ADCEx_InjectedConvCpltCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .text.HAL_ADCEx_InjectedConfigChannel - 0x00000000 0x334 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .text.HAL_ADCEx_MultiModeConfigChannel - 0x00000000 0xa4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_info 0x00000000 0xa10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_abbrev 0x00000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_aranges - 0x00000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_rnglists - 0x00000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x1e3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_line 0x00000000 0xd53 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_str 0x00000000 0x895e1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .debug_frame 0x00000000 0x200 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .ARM.attributes - 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_DisableIRQ - 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_GetPendingIRQ - 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_SetPendingIRQ - 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_ClearPendingIRQ - 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_GetActive - 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_GetPriority - 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.NVIC_DecodePriority - 0x00000000 0x6c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_SystemReset - 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_DisableIRQ - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_SystemReset - 0x00000000 0x8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_GetPriorityGrouping - 0x00000000 0xe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_GetPriority - 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_SetPendingIRQ - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_GetPendingIRQ - 0x00000000 0x1e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_ClearPendingIRQ - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_GetActive - 0x00000000 0x1e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_SYSTICK_CLKSourceConfig - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_SYSTICK_Callback - 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_Init - 0x00000000 0xb4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_DeInit - 0x00000000 0xb8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_Start - 0x00000000 0x86 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_Start_IT - 0x00000000 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_Abort - 0x00000000 0x76 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_Abort_IT - 0x00000000 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_PollForTransfer - 0x00000000 0x324 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_IRQHandler - 0x00000000 0x20c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_RegisterCallback - 0x00000000 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_UnRegisterCallback - 0x00000000 0xac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_GetError - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.DMA_SetConfig - 0x00000000 0x5a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_info 0x00000000 0x6d2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_abbrev 0x00000000 0x20b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_aranges - 0x00000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_rnglists - 0x00000000 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_line 0x00000000 0xe16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_str 0x00000000 0x892d6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_frame 0x00000000 0x208 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .ARM.attributes - 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_SetConfigLine - 0x00000000 0x14c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_GetConfigLine - 0x00000000 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_ClearConfigLine - 0x00000000 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_RegisterCallback - 0x00000000 0x32 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_GetHandle - 0x00000000 0x26 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_IRQHandler - 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_GetPending - 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_ClearPending - 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_GenerateSWI - 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_info 0x00000000 0x4ec ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_abbrev 0x00000000 0x1c5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_aranges - 0x00000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_rnglists - 0x00000000 0x46 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_line 0x00000000 0xa56 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_str 0x00000000 0x890af ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_frame 0x00000000 0x174 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .ARM.attributes - 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .bss.pFlash 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_Program - 0x00000000 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_Program_IT - 0x00000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_IRQHandler - 0x00000000 0x1c0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_EndOfOperationCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_OperationErrorCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_Unlock - 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_Lock - 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_OB_Unlock - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_OB_Lock - 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_OB_Launch - 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_GetError - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.FLASH_Program_HalfWord - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.FLASH_WaitForLastOperation - 0x00000000 0x8c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.FLASH_SetErrorCode - 0x00000000 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_info 0x00000000 0x4f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_abbrev 0x00000000 0x250 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_aranges - 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_rnglists - 0x00000000 0x66 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_line 0x00000000 0xac0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_str 0x00000000 0x89208 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_frame 0x00000000 0x20c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .ARM.attributes - 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.HAL_FLASHEx_Erase - 0x00000000 0xd8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.HAL_FLASHEx_Erase_IT - 0x00000000 0x74 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.HAL_FLASHEx_OBErase - 0x00000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.HAL_FLASHEx_OBProgram - 0x00000000 0xf8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.HAL_FLASHEx_OBGetConfig - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.HAL_FLASHEx_OBGetUserData - 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_MassErase - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_EnableWRP - 0x00000000 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_DisableWRP - 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_RDP_LevelConfig - 0x00000000 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_UserConfig - 0x00000000 0x6c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_ProgramData - 0x00000000 0x68 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_GetWRP - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_GetRDP - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_GetUser - 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_PageErase - 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_info 0x00000000 0x777 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_abbrev 0x00000000 0x247 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_aranges - 0x00000000 0x98 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_rnglists - 0x00000000 0x73 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x1e3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_line 0x00000000 0xbd3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_str 0x00000000 0x893b6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_frame 0x00000000 0x258 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .ARM.attributes - 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .text.HAL_GPIO_DeInit - 0x00000000 0x178 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .text.HAL_GPIO_ReadPin - 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .text.HAL_GPIO_LockPin - 0x00000000 0x4e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .text.HAL_GPIO_EXTI_IRQHandler - 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .text.HAL_GPIO_EXTI_Callback - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .text.HAL_GPIOEx_ConfigEventout - 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .text.HAL_GPIOEx_EnableEventout - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .text.HAL_GPIOEx_DisableEventout - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_info 0x00000000 0x152 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_abbrev 0x00000000 0xca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_aranges - 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_rnglists - 0x00000000 0x1f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_line 0x00000000 0x79e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_str 0x00000000 0x88f30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_frame 0x00000000 0x78 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .ARM.attributes - 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_DeInit - 0x00000000 0x46 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_MspInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_Stop - 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_WKUP_IRQHandler - 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_DataOutStageCallback - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_DataInStageCallback - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_SetupStageCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_SOFCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_ResetCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_SuspendCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_ResumeCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_ISOOUTIncompleteCallback - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_ISOINIncompleteCallback - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_ConnectCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_DisconnectCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_DevConnect - 0x00000000 0x42 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_DevDisconnect - 0x00000000 0x42 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_EP_Abort - 0x00000000 0x5e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_EP_Flush - 0x00000000 0x5a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_ActivateRemoteWakeup - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_DeActivateRemoteWakeup - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .text.HAL_PCDEx_SetConnectionState - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .text.HAL_PCDEx_LPM_Callback - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .text.HAL_PCDEx_BCD_Callback - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.PWR_OverloadWfe - 0x00000000 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_DeInit - 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnableBkUpAccess - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_DisableBkUpAccess - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_ConfigPVD - 0x00000000 0xbc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnablePVD - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_DisablePVD - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnableWakeUpPin - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_DisableWakeUpPin - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnterSLEEPMode - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnterSTOPMode - 0x00000000 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnterSTANDBYMode - 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnableSleepOnExit - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_DisableSleepOnExit - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnableSEVOnPend - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_DisableSEVOnPend - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_PVD_IRQHandler - 0x00000000 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_PVDCallback - 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_info 0x00000000 0x628 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_abbrev 0x00000000 0x1f6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_aranges - 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_rnglists - 0x00000000 0x7a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x231 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_line 0x00000000 0x9b0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_str 0x00000000 0x89464 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_frame 0x00000000 0x270 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .ARM.attributes - 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_DeInit - 0x00000000 0x134 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_MCOConfig - 0x00000000 0x70 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_EnableCSS - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_DisableCSS - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_GetHCLKFreq - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_GetPCLK1Freq - 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_GetPCLK2Freq - 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_GetOscConfig - 0x00000000 0x104 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_GetClockConfig - 0x00000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_NMI_IRQHandler - 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_CSSCallback - 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .text.HAL_RCCEx_GetPeriphCLKConfig - 0x00000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .text.HAL_RCCEx_GetPeriphCLKFreq - 0x00000000 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .rodata.aPLLMULFactorTable.1 - 0x00000000 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .rodata.aPredivFactorTable.0 - 0x00000000 0x2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_DeInit - 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_MspInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_Start - 0x00000000 0x94 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_Stop - 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_Start_IT - 0x00000000 0xa4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_Stop_IT - 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_Start_DMA - 0x00000000 0x10c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_Stop_DMA - 0x00000000 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_Init - 0x00000000 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_DeInit - 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_MspInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_Start - 0x00000000 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_Stop - 0x00000000 0xc8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_Start_IT - 0x00000000 0x1e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_Stop_IT - 0x00000000 0x164 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_Start_DMA - 0x00000000 0x344 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_Stop_DMA - 0x00000000 0x18c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_DeInit - 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_Start - 0x00000000 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_Stop - 0x00000000 0xc8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_Start_IT - 0x00000000 0x1e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_Stop_IT - 0x00000000 0x164 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_Start_DMA - 0x00000000 0x344 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_Stop_DMA - 0x00000000 0x18c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_Init - 0x00000000 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_DeInit - 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_MspInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_Start - 0x00000000 0x180 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_Stop - 0x00000000 0xc2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_Start_IT - 0x00000000 0x218 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_Stop_IT - 0x00000000 0x15c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_Start_DMA - 0x00000000 0x31c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_Stop_DMA - 0x00000000 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_Init - 0x00000000 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_DeInit - 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_MspInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_Start - 0x00000000 0xac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_Stop - 0x00000000 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_Start_IT - 0x00000000 0xcc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_Stop_IT - 0x00000000 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_Init - 0x00000000 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_DeInit - 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_MspInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_Start - 0x00000000 0x11c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_Stop - 0x00000000 0x12e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_Start_IT - 0x00000000 0x15c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_Stop_IT - 0x00000000 0x16a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_Start_DMA - 0x00000000 0x2d8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_Stop_DMA - 0x00000000 0x192 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IRQHandler - 0x00000000 0x1e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_ConfigChannel - 0x00000000 0xb8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_ConfigChannel - 0x00000000 0x138 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_ConfigChannel - 0x00000000 0x1a4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_DMABurst_WriteStart - 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_DMABurst_MultiWriteStart - 0x00000000 0x2a8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_DMABurst_WriteStop - 0x00000000 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_DMABurst_ReadStart - 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_DMABurst_MultiReadStart - 0x00000000 0x2a8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_DMABurst_ReadStop - 0x00000000 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_GenerateEvent - 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_ConfigOCrefClear - 0x00000000 0x198 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_ConfigTI1Input - 0x00000000 0x36 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_SlaveConfigSynchro - 0x00000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_SlaveConfigSynchro_IT - 0x00000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_ReadCapturedValue - 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PeriodElapsedCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PeriodElapsedHalfCpltCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_DelayElapsedCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_CaptureCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_CaptureHalfCpltCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_PulseFinishedCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_PulseFinishedHalfCpltCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_TriggerCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_TriggerHalfCpltCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_ErrorCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_GetActiveChannel - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_GetChannelState - 0x00000000 0x50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_DMABurstState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMAError - 0x00000000 0x92 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMADelayPulseCplt - 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMADelayPulseHalfCplt - 0x00000000 0x68 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMACaptureCplt - 0x00000000 0xc8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMACaptureHalfCplt - 0x00000000 0x68 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMAPeriodElapsedCplt - 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMAPeriodElapsedHalfCplt - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMATriggerCplt - 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMATriggerHalfCplt - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_SlaveTimer_SetConfig - 0x00000000 0x122 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_TI1_SetConfig - 0x00000000 0xb4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_TI2_SetConfig - 0x00000000 0x78 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_TI3_SetConfig - 0x00000000 0x76 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_TI4_SetConfig - 0x00000000 0x78 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_CCxChannelCmd - 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_Init - 0x00000000 0x152 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_DeInit - 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_MspInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_Start - 0x00000000 0xe4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_Stop - 0x00000000 0x70 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_Start_IT - 0x00000000 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_Stop_IT - 0x00000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_Start_DMA - 0x00000000 0x134 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_Stop_DMA - 0x00000000 0x7a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OCN_Start - 0x00000000 0x13c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OCN_Stop - 0x00000000 0xba ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OCN_Start_IT - 0x00000000 0x1ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OCN_Stop_IT - 0x00000000 0x13e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OCN_Start_DMA - 0x00000000 0x2c8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OCN_Stop_DMA - 0x00000000 0x138 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_PWMN_Start - 0x00000000 0x13c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_PWMN_Stop - 0x00000000 0xba ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_PWMN_Start_IT - 0x00000000 0x1ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_PWMN_Stop_IT - 0x00000000 0x13e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_PWMN_Start_DMA - 0x00000000 0x2c8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_PWMN_Stop_DMA - 0x00000000 0x138 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OnePulseN_Start - 0x00000000 0xaa ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OnePulseN_Stop - 0x00000000 0xbe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OnePulseN_Start_IT - 0x00000000 0xca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OnePulseN_Stop_IT - 0x00000000 0xde ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_ConfigCommutEvent - 0x00000000 0xbe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_ConfigCommutEvent_IT - 0x00000000 0xbe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_ConfigCommutEvent_DMA - 0x00000000 0xe4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_RemapConfig - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_CommutCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_CommutHalfCpltCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_BreakCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_GetChannelNState - 0x00000000 0x50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.TIMEx_DMACommutationCplt - 0x00000000 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.TIMEx_DMACommutationHalfCplt - 0x00000000 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.TIM_DMADelayPulseNCplt - 0x00000000 0x86 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.TIM_DMAErrorCCxN - 0x00000000 0x6e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.TIM_CCxNChannelCmd - 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_FlushTxFifo - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_FlushRxFifo - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_EPStopXfer - 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_StopDevice - 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_ReadDevAllOutEpInterrupt - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_ReadDevAllInEpInterrupt - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_ReadDevOutEPInterrupt - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_ReadDevInEPInterrupt - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_ClearInterrupts - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_ActivateRemoteWakeup - 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_DeActivateRemoteWakeup - 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x221 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x46a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x1b5 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x1c8 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x8f ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .text.USBD_DeInit - 0x00000000 0x3a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .text.USBD_Stop - 0x00000000 0x2c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .text.USBD_LL_IsoINIncomplete - 0x00000000 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .text.USBD_LL_IsoOUTIncomplete - 0x00000000 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .text.USBD_LL_DevConnected - 0x00000000 0x14 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .text.USBD_LL_DevDisconnected - 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x221 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x46a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x1b5 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x221 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x46a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x1b5 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x1c8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .text.USBD_GetRxCount - 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x221 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x46a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x1b5 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x1c8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .text 0x00000000 0x0 ./USB_DEVICE/App/usb_device.o - .data 0x00000000 0x0 ./USB_DEVICE/App/usb_device.o - .bss 0x00000000 0x0 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0xacc ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x2e ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x51 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x103 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x6a ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x1df ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0xbd ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0xd23 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0xe09e ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x6d ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x221 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x190 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x5c ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x5bc ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x289 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x1cb ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x114 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x27 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x136 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x1bc ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x46a ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x1b5 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x87 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x240 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x140 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x8ed ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0xb7 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x242 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x83 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x61 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x24 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x43 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x370 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x4a ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x58 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x185 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x146 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x29 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x20 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x5f ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x1c8 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x8f ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .text 0x00000000 0x0 ./USB_DEVICE/App/usbd_cdc_if.o - .data 0x00000000 0x0 ./USB_DEVICE/App/usbd_cdc_if.o - .bss 0x00000000 0x0 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0xacc ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x5b ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x24 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x94 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x43 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x9e ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x370 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x112 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x4a ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x58 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x185 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x146 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x29 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x20 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x221 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x2e ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x103 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x6a ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x1df ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0xbd ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0xd23 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0xe09e ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x6d ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x56 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x5bc ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x289 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x1cb ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x114 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x27 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x136 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x1bc ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x46a ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x1b5 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x87 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x240 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x140 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x8ed ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0xb7 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x242 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x83 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x5f ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x1c8 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x8f ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .text 0x00000000 0x0 ./USB_DEVICE/App/usbd_desc.o - .data 0x00000000 0x0 ./USB_DEVICE/App/usbd_desc.o - .bss 0x00000000 0x0 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0xacc ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x5b ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x24 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x94 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x43 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x9e ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x370 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x112 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x4a ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x58 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x185 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x146 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x29 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x20 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x221 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x2e ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x103 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x6a ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x1df ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0xbd ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0xd23 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0xe09e ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x6d ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x56 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x5bc ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x289 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x1cb ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x114 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x27 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x136 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x1bc ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x46a ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x1b5 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x87 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x240 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x140 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x8ed ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0xb7 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x242 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x83 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x5f ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x1ce ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .text 0x00000000 0x0 ./USB_DEVICE/Target/usbd_conf.o - .data 0x00000000 0x0 ./USB_DEVICE/Target/usbd_conf.o - .bss 0x00000000 0x0 ./USB_DEVICE/Target/usbd_conf.o - .text.HAL_PCD_MspDeInit - 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o - .text.HAL_PCD_ISOOUTIncompleteCallback - 0x00000000 0x24 ./USB_DEVICE/Target/usbd_conf.o - .text.HAL_PCD_ISOINIncompleteCallback - 0x00000000 0x24 ./USB_DEVICE/Target/usbd_conf.o - .text.HAL_PCD_ConnectCallback - 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o - .text.HAL_PCD_DisconnectCallback - 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o - .text.USBD_LL_DeInit - 0x00000000 0x36 ./USB_DEVICE/Target/usbd_conf.o - .text.USBD_LL_Stop - 0x00000000 0x36 ./USB_DEVICE/Target/usbd_conf.o - .text.USBD_LL_FlushEP - 0x00000000 0x3e ./USB_DEVICE/Target/usbd_conf.o - .text.USBD_LL_Delay - 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0xacc ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x2e ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x8e ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x51 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x103 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x6a ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x1df ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0xbd ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0xd23 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0xe09e ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x6d ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x221 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x190 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x5c ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x5bc ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x289 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x1cb ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x114 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x27 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x136 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x1bc ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x57 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x46a ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x1b5 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x87 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x240 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x140 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x8ed ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0xb7 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x242 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x83 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x61 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x24 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x43 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x370 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x4a ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x58 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x8e ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x185 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x146 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x29 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x20 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x5f ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x1c8 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x8f ./USB_DEVICE/Target/usbd_conf.o - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) - .text.exit 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) - .debug_frame 0x00000000 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.std 0x00000000 0x6c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.stdio_exit_handler - 0x00000000 0x18 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.cleanup_stdio - 0x00000000 0x40 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__fp_lock - 0x00000000 0x18 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__fp_unlock - 0x00000000 0x18 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.global_stdio_init.part.0 - 0x00000000 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__sfp_lock_acquire - 0x00000000 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__sfp_lock_release - 0x00000000 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__sfp 0x00000000 0xa4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__sinit 0x00000000 0x30 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__fp_lock_all - 0x00000000 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__fp_unlock_all - 0x00000000 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .data.__sglue 0x00000000 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .bss.__stdio_exit_handler - 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) - .text._fwalk_sglue - 0x00000000 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) - .debug_frame 0x00000000 0x34 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - .text._sprintf_r - 0x00000000 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .text.__sread 0x00000000 0x22 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .text.__seofread - 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .text.__swrite - 0x00000000 0x38 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .text.__sseek 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .text.__sclose - 0x00000000 0x8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .debug_frame 0x00000000 0x88 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) - .text._close_r - 0x00000000 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) - .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - .text._reclaim_reent - 0x00000000 0xbc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) - .text._lseek_r - 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) - .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) - .text._read_r 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) - .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) - .text._write_r - 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) - .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_init - 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_init_recursive - 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_close - 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_close_recursive - 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_acquire - 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_try_acquire - 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_try_acquire_recursive - 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_release - 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss.__lock___arc4random_mutex - 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss.__lock___dd_hash_mutex - 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss.__lock___tz_mutex - 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss.__lock___env_recursive_mutex - 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss.__lock___at_quick_exit_mutex - 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss.__lock___atexit_recursive_mutex - 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss.__lock___sfp_recursive_mutex - 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - .text.__ssprint_r - 0x00000000 0xfa C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .text.__sflush_r - 0x00000000 0x100 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .text._fflush_r - 0x00000000 0x50 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .text.fflush 0x00000000 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .debug_frame 0x00000000 0x5c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o - .rodata 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o - .eh_frame 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o - -Memory Configuration - -Name Origin Length Attributes -RAM 0x20000000 0x00005000 xrw -FLASH 0x08000000 0x00010000 xr -*default* 0x00000000 0xffffffff - -Linker script and memory map - -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o -LOAD ./Core/Src/main.o -LOAD ./Core/Src/stm32f1xx_hal_msp.o -LOAD ./Core/Src/stm32f1xx_it.o -LOAD ./Core/Src/syscalls.o -LOAD ./Core/Src/sysmem.o -LOAD ./Core/Src/system_stm32f1xx.o -LOAD ./Core/Startup/startup_stm32f103c8tx.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o -LOAD ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o -LOAD ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o -LOAD ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o -LOAD ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o -LOAD ./USB_DEVICE/App/usb_device.o -LOAD ./USB_DEVICE/App/usbd_cdc_if.o -LOAD ./USB_DEVICE/App/usbd_desc.o -LOAD ./USB_DEVICE/Target/usbd_conf.o -START GROUP -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a -END GROUP -START GROUP -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a -END GROUP -START GROUP -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libnosys.a -END GROUP -START GROUP -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libnosys.a -END GROUP -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o - 0x20005000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) - 0x00000200 _Min_Heap_Size = 0x200 - 0x00000400 _Min_Stack_Size = 0x400 - -.isr_vector 0x08000000 0x10c - 0x08000000 . = ALIGN (0x4) - *(.isr_vector) - .isr_vector 0x08000000 0x10c ./Core/Startup/startup_stm32f103c8tx.o - 0x08000000 g_pfnVectors - 0x0800010c . = ALIGN (0x4) - -.text 0x0800010c 0x9768 - 0x0800010c . = ALIGN (0x4) - *(.text) - .text 0x0800010c 0x40 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - *(.text*) - .text.HAL_SYSTICK_Callback - 0x0800014c 0x70 ./Core/Src/main.o - 0x0800014c HAL_SYSTICK_Callback - .text.main 0x080001bc 0x6c ./Core/Src/main.o - 0x080001bc main - .text.SystemClock_Config - 0x08000228 0xba ./Core/Src/main.o - 0x08000228 SystemClock_Config - *fill* 0x080002e2 0x2 - .text.MX_ADC1_Init - 0x080002e4 0x7c ./Core/Src/main.o - .text.MX_TIM1_Init - 0x08000360 0x180 ./Core/Src/main.o - .text.MX_TIM2_Init - 0x080004e0 0x148 ./Core/Src/main.o - .text.MX_TIM3_Init - 0x08000628 0x144 ./Core/Src/main.o - .text.MX_TIM4_Init - 0x0800076c 0x144 ./Core/Src/main.o - .text.MX_GPIO_Init - 0x080008b0 0xb0 ./Core/Src/main.o - .text.Error_Handler - 0x08000960 0xc ./Core/Src/main.o - 0x08000960 Error_Handler - .text.HAL_MspInit - 0x0800096c 0x64 ./Core/Src/stm32f1xx_hal_msp.o - 0x0800096c HAL_MspInit - .text.HAL_ADC_MspInit - 0x080009d0 0x78 ./Core/Src/stm32f1xx_hal_msp.o - 0x080009d0 HAL_ADC_MspInit - .text.HAL_TIM_Base_MspInit - 0x08000a48 0xb0 ./Core/Src/stm32f1xx_hal_msp.o - 0x08000a48 HAL_TIM_Base_MspInit - .text.HAL_TIM_MspPostInit - 0x08000af8 0x158 ./Core/Src/stm32f1xx_hal_msp.o - 0x08000af8 HAL_TIM_MspPostInit - .text.NMI_Handler - 0x08000c50 0x8 ./Core/Src/stm32f1xx_it.o - 0x08000c50 NMI_Handler - .text.HardFault_Handler - 0x08000c58 0x8 ./Core/Src/stm32f1xx_it.o - 0x08000c58 HardFault_Handler - .text.MemManage_Handler - 0x08000c60 0x8 ./Core/Src/stm32f1xx_it.o - 0x08000c60 MemManage_Handler - .text.BusFault_Handler - 0x08000c68 0x8 ./Core/Src/stm32f1xx_it.o - 0x08000c68 BusFault_Handler - .text.UsageFault_Handler - 0x08000c70 0x8 ./Core/Src/stm32f1xx_it.o - 0x08000c70 UsageFault_Handler - .text.SVC_Handler - 0x08000c78 0xc ./Core/Src/stm32f1xx_it.o - 0x08000c78 SVC_Handler - .text.DebugMon_Handler - 0x08000c84 0xc ./Core/Src/stm32f1xx_it.o - 0x08000c84 DebugMon_Handler - .text.PendSV_Handler - 0x08000c90 0xc ./Core/Src/stm32f1xx_it.o - 0x08000c90 PendSV_Handler - .text.SysTick_Handler - 0x08000c9c 0x10 ./Core/Src/stm32f1xx_it.o - 0x08000c9c SysTick_Handler - .text.USB_LP_CAN1_RX0_IRQHandler - 0x08000cac 0x14 ./Core/Src/stm32f1xx_it.o - 0x08000cac USB_LP_CAN1_RX0_IRQHandler - .text._sbrk 0x08000cc0 0x6c ./Core/Src/sysmem.o - 0x08000cc0 _sbrk - .text.SystemInit - 0x08000d2c 0xc ./Core/Src/system_stm32f1xx.o - 0x08000d2c SystemInit - .text.Reset_Handler - 0x08000d38 0x48 ./Core/Startup/startup_stm32f103c8tx.o - 0x08000d38 Reset_Handler - .text.Default_Handler - 0x08000d80 0x2 ./Core/Startup/startup_stm32f103c8tx.o - 0x08000d80 RTC_Alarm_IRQHandler - 0x08000d80 EXTI2_IRQHandler - 0x08000d80 TIM1_CC_IRQHandler - 0x08000d80 PVD_IRQHandler - 0x08000d80 EXTI3_IRQHandler - 0x08000d80 EXTI0_IRQHandler - 0x08000d80 I2C2_EV_IRQHandler - 0x08000d80 ADC1_2_IRQHandler - 0x08000d80 SPI1_IRQHandler - 0x08000d80 TAMPER_IRQHandler - 0x08000d80 DMA1_Channel4_IRQHandler - 0x08000d80 USART3_IRQHandler - 0x08000d80 RTC_IRQHandler - 0x08000d80 DMA1_Channel7_IRQHandler - 0x08000d80 CAN1_RX1_IRQHandler - 0x08000d80 TIM4_IRQHandler - 0x08000d80 I2C1_EV_IRQHandler - 0x08000d80 DMA1_Channel6_IRQHandler - 0x08000d80 TIM3_IRQHandler - 0x08000d80 RCC_IRQHandler - 0x08000d80 TIM1_TRG_COM_IRQHandler - 0x08000d80 DMA1_Channel1_IRQHandler - 0x08000d80 Default_Handler - 0x08000d80 EXTI15_10_IRQHandler - 0x08000d80 EXTI9_5_IRQHandler - 0x08000d80 SPI2_IRQHandler - 0x08000d80 DMA1_Channel5_IRQHandler - 0x08000d80 EXTI4_IRQHandler - 0x08000d80 USB_HP_CAN1_TX_IRQHandler - 0x08000d80 DMA1_Channel3_IRQHandler - 0x08000d80 TIM1_UP_IRQHandler - 0x08000d80 WWDG_IRQHandler - 0x08000d80 TIM2_IRQHandler - 0x08000d80 TIM1_BRK_IRQHandler - 0x08000d80 EXTI1_IRQHandler - 0x08000d80 USART2_IRQHandler - 0x08000d80 I2C2_ER_IRQHandler - 0x08000d80 DMA1_Channel2_IRQHandler - 0x08000d80 CAN1_SCE_IRQHandler - 0x08000d80 FLASH_IRQHandler - 0x08000d80 USART1_IRQHandler - 0x08000d80 I2C1_ER_IRQHandler - 0x08000d80 USBWakeUp_IRQHandler - *fill* 0x08000d82 0x2 - .text.HAL_Init - 0x08000d84 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x08000d84 HAL_Init - .text.HAL_InitTick - 0x08000db0 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x08000db0 HAL_InitTick - .text.HAL_IncTick - 0x08000e10 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x08000e10 HAL_IncTick - .text.HAL_GetTick - 0x08000e34 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x08000e34 HAL_GetTick - .text.HAL_ADC_Init - 0x08000e48 0x1b0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - 0x08000e48 HAL_ADC_Init - .text.HAL_ADC_ConfigChannel - 0x08000ff8 0x1f0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - 0x08000ff8 HAL_ADC_ConfigChannel - .text.ADC_ConversionStop_Disable - 0x080011e8 0x82 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - 0x080011e8 ADC_ConversionStop_Disable - *fill* 0x0800126a 0x2 - .text.__NVIC_SetPriorityGrouping - 0x0800126c 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_GetPriorityGrouping - 0x080012b4 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_EnableIRQ - 0x080012d0 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_SetPriority - 0x08001308 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.NVIC_EncodePriority - 0x0800135c 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.SysTick_Config - 0x080013c0 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_SetPriorityGrouping - 0x08001404 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x08001404 HAL_NVIC_SetPriorityGrouping - .text.HAL_NVIC_SetPriority - 0x0800141a 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x0800141a HAL_NVIC_SetPriority - .text.HAL_NVIC_EnableIRQ - 0x08001452 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x08001452 HAL_NVIC_EnableIRQ - .text.HAL_SYSTICK_Config - 0x0800146e 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x0800146e HAL_SYSTICK_Config - .text.HAL_SYSTICK_IRQHandler - 0x08001486 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x08001486 HAL_SYSTICK_IRQHandler - *fill* 0x08001492 0x2 - .text.HAL_GPIO_Init - 0x08001494 0x308 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - 0x08001494 HAL_GPIO_Init - .text.HAL_GPIO_WritePin - 0x0800179c 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - 0x0800179c HAL_GPIO_WritePin - .text.HAL_GPIO_TogglePin - 0x080017cc 0x32 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - 0x080017cc HAL_GPIO_TogglePin - .text.HAL_PCD_Init - 0x080017fe 0x1ec ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x080017fe HAL_PCD_Init - .text.HAL_PCD_Start - 0x080019ea 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x080019ea HAL_PCD_Start - .text.HAL_PCD_IRQHandler - 0x08001a36 0x260 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x08001a36 HAL_PCD_IRQHandler - .text.HAL_PCD_SetAddress - 0x08001c96 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x08001c96 HAL_PCD_SetAddress - .text.HAL_PCD_EP_Open - 0x08001cde 0xba ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x08001cde HAL_PCD_EP_Open - .text.HAL_PCD_EP_Close - 0x08001d98 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x08001d98 HAL_PCD_EP_Close - .text.HAL_PCD_EP_Receive - 0x08001e28 0x62 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x08001e28 HAL_PCD_EP_Receive - .text.HAL_PCD_EP_GetRxCount - 0x08001e8a 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x08001e8a HAL_PCD_EP_GetRxCount - .text.HAL_PCD_EP_Transmit - 0x08001eb8 0x6e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x08001eb8 HAL_PCD_EP_Transmit - .text.HAL_PCD_EP_SetStall - 0x08001f26 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x08001f26 HAL_PCD_EP_SetStall - .text.HAL_PCD_EP_ClrStall - 0x08001fe6 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x08001fe6 HAL_PCD_EP_ClrStall - .text.PCD_EP_ISR_Handler - 0x0800208e 0x79e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_EP_DB_Receive - 0x0800282c 0x21a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_EP_DB_Transmit - 0x08002a46 0x7f4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCDEx_PMAConfig - 0x0800323a 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - 0x0800323a HAL_PCDEx_PMAConfig - *fill* 0x080032be 0x2 - .text.HAL_RCC_OscConfig - 0x080032c0 0x504 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x080032c0 HAL_RCC_OscConfig - .text.HAL_RCC_ClockConfig - 0x080037c4 0x1d4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x080037c4 HAL_RCC_ClockConfig - .text.HAL_RCC_GetSysClockFreq - 0x08003998 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x08003998 HAL_RCC_GetSysClockFreq - .text.RCC_Delay - 0x08003a40 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCCEx_PeriphCLKConfig - 0x08003a7c 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - 0x08003a7c HAL_RCCEx_PeriphCLKConfig - .text.HAL_TIM_Base_Init - 0x08003be8 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x08003be8 HAL_TIM_Base_Init - .text.HAL_TIM_PWM_Init - 0x08003c86 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x08003c86 HAL_TIM_PWM_Init - .text.HAL_TIM_PWM_MspInit - 0x08003d24 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x08003d24 HAL_TIM_PWM_MspInit - *fill* 0x08003d36 0x2 - .text.HAL_TIM_PWM_ConfigChannel - 0x08003d38 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x08003d38 HAL_TIM_PWM_ConfigChannel - .text.HAL_TIM_ConfigClockSource - 0x08003ebc 0x18e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x08003ebc HAL_TIM_ConfigClockSource - *fill* 0x0800404a 0x2 - .text.TIM_Base_SetConfig - 0x0800404c 0xdc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x0800404c TIM_Base_SetConfig - .text.TIM_OC1_SetConfig - 0x08004128 0xcc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_OC2_SetConfig - 0x080041f4 0xd4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x080041f4 TIM_OC2_SetConfig - .text.TIM_OC3_SetConfig - 0x080042c8 0xd4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_OC4_SetConfig - 0x0800439c 0x9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_TI1_ConfigInputStage - 0x08004438 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_TI2_ConfigInputStage - 0x08004494 0x5e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_ITRx_SetConfig - 0x080044f2 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_ETR_SetConfig - 0x08004526 0x3e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x08004526 TIM_ETR_SetConfig - .text.HAL_TIMEx_MasterConfigSynchronization - 0x08004564 0xbc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - 0x08004564 HAL_TIMEx_MasterConfigSynchronization - .text.HAL_TIMEx_ConfigBreakDeadTime - 0x08004620 0xa2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - 0x08004620 HAL_TIMEx_ConfigBreakDeadTime - .text.USB_CoreInit - 0x080046c2 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x080046c2 USB_CoreInit - .text.USB_EnableGlobalInt - 0x080046dc 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x080046dc USB_EnableGlobalInt - .text.USB_DisableGlobalInt - 0x08004708 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08004708 USB_DisableGlobalInt - .text.USB_SetCurrentMode - 0x0800473c 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x0800473c USB_SetCurrentMode - .text.USB_DevInit - 0x08004754 0x3a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08004754 USB_DevInit - *fill* 0x0800478e 0x2 - .text.USB_ActivateEndpoint - 0x08004790 0x780 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08004790 USB_ActivateEndpoint - .text.USB_DeactivateEndpoint - 0x08004f10 0x3d8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08004f10 USB_DeactivateEndpoint - .text.USB_EPStartXfer - 0x080052e8 0x1762 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x080052e8 USB_EPStartXfer - .text.USB_EPSetStall - 0x08006a4a 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08006a4a USB_EPSetStall - .text.USB_EPClearStall - 0x08006aea 0x15a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08006aea USB_EPClearStall - .text.USB_SetDevAddress - 0x08006c44 0x26 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08006c44 USB_SetDevAddress - .text.USB_DevConnect - 0x08006c6a 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08006c6a USB_DevConnect - .text.USB_DevDisconnect - 0x08006c7e 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08006c7e USB_DevDisconnect - .text.USB_ReadInterrupts - 0x08006c92 0x1e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08006c92 USB_ReadInterrupts - .text.USB_EP0_OutStart - 0x08006cb0 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08006cb0 USB_EP0_OutStart - .text.USB_WritePMA - 0x08006cc6 0x8c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08006cc6 USB_WritePMA - .text.USB_ReadPMA - 0x08006d52 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08006d52 USB_ReadPMA - .text.USBD_CDC_Init - 0x08006df0 0xf4 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_DeInit - 0x08006ee4 0x6e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_Setup - 0x08006f52 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_DataIn - 0x08007098 0xa6 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_DataOut - 0x0800713e 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_EP0_RxReady - 0x08007194 0x4e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - *fill* 0x080071e2 0x2 - .text.USBD_CDC_GetFSCfgDesc - 0x080071e4 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_GetHSCfgDesc - 0x08007204 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_GetOtherSpeedCfgDesc - 0x08007224 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_GetDeviceQualifierDescriptor - 0x08007244 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x08007244 USBD_CDC_GetDeviceQualifierDescriptor - .text.USBD_CDC_RegisterInterface - 0x08007264 0x2c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x08007264 USBD_CDC_RegisterInterface - .text.USBD_CDC_SetTxBuffer - 0x08007290 0x32 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x08007290 USBD_CDC_SetTxBuffer - .text.USBD_CDC_SetRxBuffer - 0x080072c2 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x080072c2 USBD_CDC_SetRxBuffer - .text.USBD_CDC_TransmitPacket - 0x080072e8 0x5e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x080072e8 USBD_CDC_TransmitPacket - .text.USBD_CDC_ReceivePacket - 0x08007346 0x54 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x08007346 USBD_CDC_ReceivePacket - .text.USBD_Init - 0x0800739a 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x0800739a USBD_Init - .text.USBD_RegisterClass - 0x080073f0 0x32 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x080073f0 USBD_RegisterClass - .text.USBD_Start - 0x08007422 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08007422 USBD_Start - .text.USBD_RunTestMode - 0x0800743a 0x14 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x0800743a USBD_RunTestMode - .text.USBD_SetClassConfig - 0x0800744e 0x3e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x0800744e USBD_SetClassConfig - .text.USBD_ClrClassConfig - 0x0800748c 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x0800748c USBD_ClrClassConfig - .text.USBD_LL_SetupStage - 0x080074b2 0x9a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x080074b2 USBD_LL_SetupStage - .text.USBD_LL_DataOutStage - 0x0800754c 0xe2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x0800754c USBD_LL_DataOutStage - .text.USBD_LL_DataInStage - 0x0800762e 0x14a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x0800762e USBD_LL_DataInStage - .text.USBD_LL_Reset - 0x08007778 0x82 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08007778 USBD_LL_Reset - .text.USBD_LL_SetSpeed - 0x080077fa 0x1e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x080077fa USBD_LL_SetSpeed - .text.USBD_LL_Suspend - 0x08007818 0x28 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08007818 USBD_LL_Suspend - .text.USBD_LL_Resume - 0x08007840 0x2a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08007840 USBD_LL_Resume - .text.USBD_LL_SOF - 0x0800786a 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x0800786a USBD_LL_SOF - *fill* 0x0800789e 0x2 - .text.USBD_StdDevReq - 0x080078a0 0xd4 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x080078a0 USBD_StdDevReq - .text.USBD_StdItfReq - 0x08007974 0x90 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x08007974 USBD_StdItfReq - .text.USBD_StdEPReq - 0x08007a04 0x2c6 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x08007a04 USBD_StdEPReq - *fill* 0x08007cca 0x2 - .text.USBD_GetDescriptor - 0x08007ccc 0x2d0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text.USBD_SetAddress - 0x08007f9c 0x86 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - *fill* 0x08008022 0x2 - .text.USBD_SetConfig - 0x08008024 0x11c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text.USBD_GetConfig - 0x08008140 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text.USBD_GetStatus - 0x080081aa 0x66 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text.USBD_SetFeature - 0x08008210 0x28 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text.USBD_ClrFeature - 0x08008238 0x42 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text.USBD_ParseSetupRequest - 0x0800827a 0x72 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x0800827a USBD_ParseSetupRequest - .text.USBD_CtlError - 0x080082ec 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x080082ec USBD_CtlError - .text.USBD_GetString - 0x0800830e 0x84 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x0800830e USBD_GetString - .text.USBD_GetLen - 0x08008392 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text.USBD_CtlSendData - 0x080083c0 0x38 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x080083c0 USBD_CtlSendData - .text.USBD_CtlContinueSendData - 0x080083f8 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x080083f8 USBD_CtlContinueSendData - .text.USBD_CtlPrepareRx - 0x0800841c 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x0800841c USBD_CtlPrepareRx - .text.USBD_CtlContinueRx - 0x08008458 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x08008458 USBD_CtlContinueRx - .text.USBD_CtlSendStatus - 0x0800847c 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x0800847c USBD_CtlSendStatus - .text.USBD_CtlReceiveStatus - 0x080084a2 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x080084a2 USBD_CtlReceiveStatus - .text.MX_USB_DEVICE_Init - 0x080084c8 0x60 ./USB_DEVICE/App/usb_device.o - 0x080084c8 MX_USB_DEVICE_Init - .text.fifo_push - 0x08008528 0x6c ./USB_DEVICE/App/usbd_cdc_if.o - .text.CDC_Available - 0x08008594 0x28 ./USB_DEVICE/App/usbd_cdc_if.o - 0x08008594 CDC_Available - .text.CDC_ReadByte - 0x080085bc 0x54 ./USB_DEVICE/App/usbd_cdc_if.o - 0x080085bc CDC_ReadByte - .text.CDC_Init_FS - 0x08008610 0x28 ./USB_DEVICE/App/usbd_cdc_if.o - .text.CDC_DeInit_FS - 0x08008638 0xe ./USB_DEVICE/App/usbd_cdc_if.o - *fill* 0x08008646 0x2 - .text.CDC_Control_FS - 0x08008648 0xbc ./USB_DEVICE/App/usbd_cdc_if.o - .text.CDC_Receive_FS - 0x08008704 0x3c ./USB_DEVICE/App/usbd_cdc_if.o - .text.CDC_Transmit_FS - 0x08008740 0x4c ./USB_DEVICE/App/usbd_cdc_if.o - 0x08008740 CDC_Transmit_FS - .text.USBD_FS_DeviceDescriptor - 0x0800878c 0x24 ./USB_DEVICE/App/usbd_desc.o - 0x0800878c USBD_FS_DeviceDescriptor - .text.USBD_FS_LangIDStrDescriptor - 0x080087b0 0x24 ./USB_DEVICE/App/usbd_desc.o - 0x080087b0 USBD_FS_LangIDStrDescriptor - .text.USBD_FS_ProductStrDescriptor - 0x080087d4 0x3c ./USB_DEVICE/App/usbd_desc.o - 0x080087d4 USBD_FS_ProductStrDescriptor - .text.USBD_FS_ManufacturerStrDescriptor - 0x08008810 0x28 ./USB_DEVICE/App/usbd_desc.o - 0x08008810 USBD_FS_ManufacturerStrDescriptor - .text.USBD_FS_SerialStrDescriptor - 0x08008838 0x24 ./USB_DEVICE/App/usbd_desc.o - 0x08008838 USBD_FS_SerialStrDescriptor - .text.USBD_FS_ConfigStrDescriptor - 0x0800885c 0x3c ./USB_DEVICE/App/usbd_desc.o - 0x0800885c USBD_FS_ConfigStrDescriptor - .text.USBD_FS_InterfaceStrDescriptor - 0x08008898 0x3c ./USB_DEVICE/App/usbd_desc.o - 0x08008898 USBD_FS_InterfaceStrDescriptor - .text.Get_SerialNum - 0x080088d4 0x58 ./USB_DEVICE/App/usbd_desc.o - .text.IntToUnicode - 0x0800892c 0x7c ./USB_DEVICE/App/usbd_desc.o - .text.HAL_PCD_MspInit - 0x080089a8 0x4c ./USB_DEVICE/Target/usbd_conf.o - 0x080089a8 HAL_PCD_MspInit - .text.HAL_PCD_SetupStageCallback - 0x080089f4 0x24 ./USB_DEVICE/Target/usbd_conf.o - 0x080089f4 HAL_PCD_SetupStageCallback - .text.HAL_PCD_DataOutStageCallback - 0x08008a18 0x36 ./USB_DEVICE/Target/usbd_conf.o - 0x08008a18 HAL_PCD_DataOutStageCallback - .text.HAL_PCD_DataInStageCallback - 0x08008a4e 0x34 ./USB_DEVICE/Target/usbd_conf.o - 0x08008a4e HAL_PCD_DataInStageCallback - .text.HAL_PCD_SOFCallback - 0x08008a82 0x1c ./USB_DEVICE/Target/usbd_conf.o - 0x08008a82 HAL_PCD_SOFCallback - .text.HAL_PCD_ResetCallback - 0x08008a9e 0x3c ./USB_DEVICE/Target/usbd_conf.o - 0x08008a9e HAL_PCD_ResetCallback - *fill* 0x08008ada 0x2 - .text.HAL_PCD_SuspendCallback - 0x08008adc 0x34 ./USB_DEVICE/Target/usbd_conf.o - 0x08008adc HAL_PCD_SuspendCallback - .text.HAL_PCD_ResumeCallback - 0x08008b10 0x1c ./USB_DEVICE/Target/usbd_conf.o - 0x08008b10 HAL_PCD_ResumeCallback - .text.USBD_LL_Init - 0x08008b2c 0xb4 ./USB_DEVICE/Target/usbd_conf.o - 0x08008b2c USBD_LL_Init - .text.USBD_LL_Start - 0x08008be0 0x36 ./USB_DEVICE/Target/usbd_conf.o - 0x08008be0 USBD_LL_Start - .text.USBD_LL_OpenEP - 0x08008c16 0x4c ./USB_DEVICE/Target/usbd_conf.o - 0x08008c16 USBD_LL_OpenEP - .text.USBD_LL_CloseEP - 0x08008c62 0x3e ./USB_DEVICE/Target/usbd_conf.o - 0x08008c62 USBD_LL_CloseEP - .text.USBD_LL_StallEP - 0x08008ca0 0x3e ./USB_DEVICE/Target/usbd_conf.o - 0x08008ca0 USBD_LL_StallEP - .text.USBD_LL_ClearStallEP - 0x08008cde 0x3e ./USB_DEVICE/Target/usbd_conf.o - 0x08008cde USBD_LL_ClearStallEP - .text.USBD_LL_IsStallEP - 0x08008d1c 0x56 ./USB_DEVICE/Target/usbd_conf.o - 0x08008d1c USBD_LL_IsStallEP - .text.USBD_LL_SetUSBAddress - 0x08008d72 0x3e ./USB_DEVICE/Target/usbd_conf.o - 0x08008d72 USBD_LL_SetUSBAddress - .text.USBD_LL_Transmit - 0x08008db0 0x46 ./USB_DEVICE/Target/usbd_conf.o - 0x08008db0 USBD_LL_Transmit - .text.USBD_LL_PrepareReceive - 0x08008df6 0x46 ./USB_DEVICE/Target/usbd_conf.o - 0x08008df6 USBD_LL_PrepareReceive - .text.USBD_LL_GetRxDataSize - 0x08008e3c 0x26 ./USB_DEVICE/Target/usbd_conf.o - 0x08008e3c USBD_LL_GetRxDataSize - *fill* 0x08008e62 0x2 - .text.USBD_static_malloc - 0x08008e64 0x18 ./USB_DEVICE/Target/usbd_conf.o - 0x08008e64 USBD_static_malloc - .text.USBD_static_free - 0x08008e7c 0x12 ./USB_DEVICE/Target/usbd_conf.o - 0x08008e7c USBD_static_free - .text.HAL_PCDEx_SetConnectionState - 0x08008e8e 0x16 ./USB_DEVICE/Target/usbd_conf.o - 0x08008e8e HAL_PCDEx_SetConnectionState - .text.USBD_Get_USB_Status - 0x08008ea4 0x58 ./USB_DEVICE/Target/usbd_conf.o - .text.sprintf 0x08008efc 0x44 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - 0x08008efc siprintf - 0x08008efc sprintf - .text.memset 0x08008f40 0x10 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - 0x08008f40 memset - .text.__errno 0x08008f50 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - 0x08008f50 __errno - .text.__libc_init_array - 0x08008f5c 0x48 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - 0x08008f5c __libc_init_array - .text.__retarget_lock_acquire_recursive - 0x08008fa4 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - 0x08008fa4 __retarget_lock_acquire_recursive - .text.__retarget_lock_release_recursive - 0x08008fa6 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - 0x08008fa6 __retarget_lock_release_recursive - .text._free_r 0x08008fa8 0x90 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) - 0x08008fa8 _free_r - .text.sbrk_aligned - 0x08009038 0x44 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - .text._malloc_r - 0x0800907c 0x100 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - 0x0800907c _malloc_r - .text.__malloc_lock - 0x0800917c 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - 0x0800917c __malloc_lock - .text.__malloc_unlock - 0x08009188 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - 0x08009188 __malloc_unlock - .text.__ssputs_r - 0x08009194 0xb6 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - 0x08009194 __ssputs_r - *fill* 0x0800924a 0x2 - .text._svfprintf_r - 0x0800924c 0x1f8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - 0x0800924c _svfiprintf_r - 0x0800924c _svfprintf_r - .text._printf_common - 0x08009444 0xe4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - 0x08009444 _printf_common - .text._printf_i - 0x08009528 0x23c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - 0x08009528 _printf_i - .text.memmove 0x08009764 0x34 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) - 0x08009764 memmove - .text._sbrk_r 0x08009798 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) - 0x08009798 _sbrk_r - .text.memchr 0x080097b8 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - 0x080097b8 memchr - .text.memcpy 0x080097d4 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - 0x080097d4 memcpy - .text._realloc_r - 0x080097f0 0x5c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) - 0x080097f0 _realloc_r - .text._malloc_usable_size_r - 0x0800984c 0x10 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) - 0x0800984c _malloc_usable_size_r - *(.glue_7) - .glue_7 0x0800985c 0x0 linker stubs - *(.glue_7t) - .glue_7t 0x0800985c 0x0 linker stubs - *(.eh_frame) - .eh_frame 0x0800985c 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - *(.init) - .init 0x0800985c 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o - 0x0800985c _init - .init 0x08009860 0x8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o - *(.fini) - .fini 0x08009868 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o - 0x08009868 _fini - .fini 0x0800986c 0x8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o - 0x08009874 . = ALIGN (0x4) - 0x08009874 _etext = . - -.vfp11_veneer 0x08009874 0x0 - .vfp11_veneer 0x08009874 0x0 linker stubs - -.v4_bx 0x08009874 0x0 - .v4_bx 0x08009874 0x0 linker stubs - -.iplt 0x08009874 0x0 - .iplt 0x08009874 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - -.rodata 0x08009874 0xb0 - 0x08009874 . = ALIGN (0x4) - *(.rodata) - .rodata 0x08009874 0x10 ./Core/Src/main.o - .rodata 0x08009884 0x46 ./USB_DEVICE/App/usbd_desc.o - *(.rodata*) - *fill* 0x080098ca 0x2 - .rodata.AHBPrescTable - 0x080098cc 0x10 ./Core/Src/system_stm32f1xx.o - 0x080098cc AHBPrescTable - .rodata.aPLLMULFactorTable.1 - 0x080098dc 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .rodata.aPredivFactorTable.0 - 0x080098ec 0x2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .rodata._svfprintf_r.str1.1 - 0x080098ee 0x33 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - 0x11 (size before relaxing) - .rodata._printf_i.str1.1 - 0x08009921 0x22 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - 0x08009944 . = ALIGN (0x4) - *fill* 0x08009921 0x3 - -.ARM.extab 0x08009924 0x0 - 0x08009924 . = ALIGN (0x4) - *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x08009924 . = ALIGN (0x4) - -.ARM 0x08009924 0x0 - 0x08009924 . = ALIGN (0x4) - 0x08009924 __exidx_start = . - *(.ARM.exidx*) - 0x08009924 __exidx_end = . - 0x08009924 . = ALIGN (0x4) - -.preinit_array 0x08009924 0x0 - 0x08009924 . = ALIGN (0x4) - 0x08009924 PROVIDE (__preinit_array_start = .) - *(.preinit_array*) - 0x08009924 PROVIDE (__preinit_array_end = .) - 0x08009924 . = ALIGN (0x4) - -.init_array 0x08009924 0x4 - 0x08009924 . = ALIGN (0x4) - 0x08009924 PROVIDE (__init_array_start = .) - *(SORT_BY_NAME(.init_array.*)) - *(.init_array*) - .init_array 0x08009924 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - 0x08009928 PROVIDE (__init_array_end = .) - 0x08009928 . = ALIGN (0x4) - -.fini_array 0x08009928 0x4 - 0x08009928 . = ALIGN (0x4) - [!provide] PROVIDE (__fini_array_start = .) - *(SORT_BY_NAME(.fini_array.*)) - *(.fini_array*) - .fini_array 0x08009928 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - [!provide] PROVIDE (__fini_array_end = .) - 0x0800992c . = ALIGN (0x4) - 0x0800992c _sidata = LOADADDR (.data) - -.rel.dyn 0x0800992c 0x0 - .rel.iplt 0x0800992c 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - -.data 0x20000000 0x1cc load address 0x0800992c - 0x20000000 . = ALIGN (0x4) - 0x20000000 _sdata = . - *(.data) - *(.data*) - .data.SystemCoreClock - 0x20000000 0x4 ./Core/Src/system_stm32f1xx.o - 0x20000000 SystemCoreClock - .data.uwTickPrio - 0x20000004 0x4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x20000004 uwTickPrio - .data.uwTickFreq - 0x20000008 0x1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x20000008 uwTickFreq - *fill* 0x20000009 0x3 - .data.USBD_CDC_DeviceQualifierDesc - 0x2000000c 0xa ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - *fill* 0x20000016 0x2 - .data.USBD_CDC - 0x20000018 0x38 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x20000018 USBD_CDC - .data.USBD_CDC_CfgHSDesc - 0x20000050 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x20000050 USBD_CDC_CfgHSDesc - *fill* 0x20000093 0x1 - .data.USBD_CDC_CfgFSDesc - 0x20000094 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x20000094 USBD_CDC_CfgFSDesc - *fill* 0x200000d7 0x1 - .data.USBD_CDC_OtherSpeedCfgDesc - 0x200000d8 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x200000d8 USBD_CDC_OtherSpeedCfgDesc - *fill* 0x2000011b 0x1 - .data.USBD_Interface_fops_FS - 0x2000011c 0x10 ./USB_DEVICE/App/usbd_cdc_if.o - 0x2000011c USBD_Interface_fops_FS - .data.FS_Desc 0x2000012c 0x1c ./USB_DEVICE/App/usbd_desc.o - 0x2000012c FS_Desc - .data.USBD_FS_DeviceDesc - 0x20000148 0x12 ./USB_DEVICE/App/usbd_desc.o - 0x20000148 USBD_FS_DeviceDesc - *fill* 0x2000015a 0x2 - .data.USBD_LangIDDesc - 0x2000015c 0x4 ./USB_DEVICE/App/usbd_desc.o - 0x2000015c USBD_LangIDDesc - .data.USBD_StringSerial - 0x20000160 0x1a ./USB_DEVICE/App/usbd_desc.o - 0x20000160 USBD_StringSerial - *fill* 0x2000017a 0x2 - .data._impure_ptr - 0x2000017c 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - 0x2000017c _impure_ptr - .data._impure_data - 0x20000180 0x4c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - 0x20000180 _impure_data - *(.RamFunc) - *(.RamFunc*) - 0x200001cc . = ALIGN (0x4) - 0x200001cc _edata = . - -.igot.plt 0x200001cc 0x0 load address 0x08009af8 - .igot.plt 0x200001cc 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - 0x200001cc . = ALIGN (0x4) - -.bss 0x200001cc 0x1584 load address 0x08009af8 - 0x200001cc _sbss = . - 0x200001cc __bss_start__ = _sbss - *(.bss) - .bss 0x200001cc 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - *(.bss*) - .bss.hadc1 0x200001e8 0x30 ./Core/Src/main.o - 0x200001e8 hadc1 - .bss.htim1 0x20000218 0x48 ./Core/Src/main.o - 0x20000218 htim1 - .bss.htim2 0x20000260 0x48 ./Core/Src/main.o - 0x20000260 htim2 - .bss.htim3 0x200002a8 0x48 ./Core/Src/main.o - 0x200002a8 htim3 - .bss.htim4 0x200002f0 0x48 ./Core/Src/main.o - 0x200002f0 htim4 - .bss.c10ms.2 0x20000338 0x1 ./Core/Src/main.o - .bss.c100ms.1 0x20000339 0x1 ./Core/Src/main.o - .bss.c1s.0 0x2000033a 0x1 ./Core/Src/main.o - *fill* 0x2000033b 0x1 - .bss.__sbrk_heap_end - 0x2000033c 0x4 ./Core/Src/sysmem.o - .bss.uwTick 0x20000340 0x4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x20000340 uwTick - .bss.cfgidx.0 0x20000344 0x1 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - *fill* 0x20000345 0x3 - .bss.hUsbDeviceFS - 0x20000348 0x2c4 ./USB_DEVICE/App/usb_device.o - 0x20000348 hUsbDeviceFS - .bss.UserRxBufferFS - 0x2000060c 0x400 ./USB_DEVICE/App/usbd_cdc_if.o - 0x2000060c UserRxBufferFS - .bss.UserTxBufferFS - 0x20000a0c 0x400 ./USB_DEVICE/App/usbd_cdc_if.o - 0x20000a0c UserTxBufferFS - .bss.rx_fifo 0x20000e0c 0x100 ./USB_DEVICE/App/usbd_cdc_if.o - .bss.rx_head 0x20000f0c 0x2 ./USB_DEVICE/App/usbd_cdc_if.o - .bss.rx_tail 0x20000f0e 0x2 ./USB_DEVICE/App/usbd_cdc_if.o - .bss.USBD_StrDesc - 0x20000f10 0x200 ./USB_DEVICE/App/usbd_desc.o - 0x20000f10 USBD_StrDesc - .bss.hpcd_USB_FS - 0x20001110 0x2d8 ./USB_DEVICE/Target/usbd_conf.o - 0x20001110 hpcd_USB_FS - .bss.mem.0 0x200013e8 0x220 ./USB_DEVICE/Target/usbd_conf.o - .bss.__sf 0x20001608 0x138 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - 0x20001608 __sf - .bss.errno 0x20001740 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - 0x20001740 errno - .bss.__lock___malloc_recursive_mutex - 0x20001744 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - 0x20001744 __lock___malloc_recursive_mutex - *fill* 0x20001745 0x3 - .bss.__malloc_sbrk_start - 0x20001748 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - 0x20001748 __malloc_sbrk_start - .bss.__malloc_free_list - 0x2000174c 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - 0x2000174c __malloc_free_list - *(COMMON) - 0x20001750 . = ALIGN (0x4) - 0x20001750 _ebss = . - 0x20001750 __bss_end__ = _ebss - -._user_heap_stack - 0x20001750 0x600 load address 0x08009af8 - 0x20001750 . = ALIGN (0x8) - [!provide] PROVIDE (end = .) - 0x20001750 PROVIDE (_end = .) - 0x20001950 . = (. + _Min_Heap_Size) - *fill* 0x20001750 0x200 - 0x20001d50 . = (. + _Min_Stack_Size) - *fill* 0x20001950 0x400 - 0x20001d50 . = ALIGN (0x8) - -/DISCARD/ - libc.a(*) - libm.a(*) - libgcc.a(*) - -.ARM.attributes - 0x00000000 0x29 - *(.ARM.attributes) - .ARM.attributes - 0x00000000 0x1d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o - .ARM.attributes - 0x0000001d 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - .ARM.attributes - 0x0000004a 0x2d ./Core/Src/main.o - .ARM.attributes - 0x00000077 0x2d ./Core/Src/stm32f1xx_hal_msp.o - .ARM.attributes - 0x000000a4 0x2d ./Core/Src/stm32f1xx_it.o - .ARM.attributes - 0x000000d1 0x2d ./Core/Src/sysmem.o - .ARM.attributes - 0x000000fe 0x2d ./Core/Src/system_stm32f1xx.o - .ARM.attributes - 0x0000012b 0x21 ./Core/Startup/startup_stm32f103c8tx.o - .ARM.attributes - 0x0000014c 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .ARM.attributes - 0x00000179 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .ARM.attributes - 0x000001a6 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .ARM.attributes - 0x000001d3 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .ARM.attributes - 0x00000200 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .ARM.attributes - 0x0000022d 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .ARM.attributes - 0x0000025a 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .ARM.attributes - 0x00000287 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .ARM.attributes - 0x000002b4 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .ARM.attributes - 0x000002e1 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .ARM.attributes - 0x0000030e 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .ARM.attributes - 0x0000033b 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .ARM.attributes - 0x00000368 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .ARM.attributes - 0x00000395 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .ARM.attributes - 0x000003c2 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .ARM.attributes - 0x000003ef 0x2d ./USB_DEVICE/App/usb_device.o - .ARM.attributes - 0x0000041c 0x2d ./USB_DEVICE/App/usbd_cdc_if.o - .ARM.attributes - 0x00000449 0x2d ./USB_DEVICE/App/usbd_desc.o - .ARM.attributes - 0x00000476 0x2d ./USB_DEVICE/Target/usbd_conf.o - .ARM.attributes - 0x000004a3 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .ARM.attributes - 0x000004d0 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - .ARM.attributes - 0x000004fd 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - .ARM.attributes - 0x0000052a 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - .ARM.attributes - 0x00000557 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - .ARM.attributes - 0x00000584 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - .ARM.attributes - 0x000005b1 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - .ARM.attributes - 0x000005de 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .ARM.attributes - 0x0000060b 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) - .ARM.attributes - 0x00000638 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - .ARM.attributes - 0x00000665 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - .ARM.attributes - 0x00000692 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - .ARM.attributes - 0x000006bf 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - .ARM.attributes - 0x000006ec 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) - .ARM.attributes - 0x00000719 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) - .ARM.attributes - 0x00000746 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - .ARM.attributes - 0x00000773 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - .ARM.attributes - 0x000007a0 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) - .ARM.attributes - 0x000007cd 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) - .ARM.attributes - 0x000007fa 0x1d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o -OUTPUT(AUTOM10.elf elf32-littlearm) -LOAD linker stubs -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a - -.debug_info 0x00000000 0x120e1 - .debug_info 0x00000000 0x125d ./Core/Src/main.o - .debug_info 0x0000125d 0xc63 ./Core/Src/stm32f1xx_hal_msp.o - .debug_info 0x00001ec0 0x609 ./Core/Src/stm32f1xx_it.o - .debug_info 0x000024c9 0x168 ./Core/Src/sysmem.o - .debug_info 0x00002631 0x222 ./Core/Src/system_stm32f1xx.o - .debug_info 0x00002853 0x30 ./Core/Startup/startup_stm32f103c8tx.o - .debug_info 0x00002883 0x704 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_info 0x00002f87 0xc50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_info 0x00003bd7 0xa87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_info 0x0000465e 0x5ab ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_info 0x00004c09 0x16dc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_info 0x000062e5 0x6c3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_info 0x000069a8 0x7d5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_info 0x0000717d 0x3c0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_info 0x0000753d 0x2959 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_info 0x00009e96 0x149b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_info 0x0000b331 0x17ae ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_info 0x0000cadf 0x1043 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_info 0x0000db22 0xa52 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_info 0x0000e574 0x91c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_info 0x0000ee90 0x6a0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_info 0x0000f530 0x63d ./USB_DEVICE/App/usb_device.o - .debug_info 0x0000fb6d 0x8c6 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_info 0x00010433 0x44a ./USB_DEVICE/App/usbd_desc.o - .debug_info 0x0001087d 0x1864 ./USB_DEVICE/Target/usbd_conf.o - -.debug_abbrev 0x00000000 0x3385 - .debug_abbrev 0x00000000 0x2cb ./Core/Src/main.o - .debug_abbrev 0x000002cb 0x211 ./Core/Src/stm32f1xx_hal_msp.o - .debug_abbrev 0x000004dc 0x193 ./Core/Src/stm32f1xx_it.o - .debug_abbrev 0x0000066f 0xbc ./Core/Src/sysmem.o - .debug_abbrev 0x0000072b 0x13f ./Core/Src/system_stm32f1xx.o - .debug_abbrev 0x0000086a 0x24 ./Core/Startup/startup_stm32f103c8tx.o - .debug_abbrev 0x0000088e 0x201 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_abbrev 0x00000a8f 0x225 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_abbrev 0x00000cb4 0x2f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_abbrev 0x00000fac 0x1ca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_abbrev 0x00001176 0x2d6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_abbrev 0x0000144c 0x189 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_abbrev 0x000015d5 0x2b3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_abbrev 0x00001888 0x188 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_abbrev 0x00001a10 0x277 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_abbrev 0x00001c87 0x282 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_abbrev 0x00001f09 0x1de ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_abbrev 0x000020e7 0x2d3 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_abbrev 0x000023ba 0x24a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_abbrev 0x00002604 0x26b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_abbrev 0x0000286f 0x192 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_abbrev 0x00002a01 0x18d ./USB_DEVICE/App/usb_device.o - .debug_abbrev 0x00002b8e 0x2e2 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_abbrev 0x00002e70 0x1ff ./USB_DEVICE/App/usbd_desc.o - .debug_abbrev 0x0000306f 0x316 ./USB_DEVICE/Target/usbd_conf.o - -.debug_aranges 0x00000000 0x1128 - .debug_aranges - 0x00000000 0x68 ./Core/Src/main.o - .debug_aranges - 0x00000068 0x48 ./Core/Src/stm32f1xx_hal_msp.o - .debug_aranges - 0x000000b0 0x68 ./Core/Src/stm32f1xx_it.o - .debug_aranges - 0x00000118 0x20 ./Core/Src/sysmem.o - .debug_aranges - 0x00000138 0x28 ./Core/Src/system_stm32f1xx.o - .debug_aranges - 0x00000160 0x28 ./Core/Startup/startup_stm32f103c8tx.o - .debug_aranges - 0x00000188 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_aranges - 0x00000268 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_aranges - 0x00000358 0x100 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_aranges - 0x00000458 0x58 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_aranges - 0x000004b0 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_aranges - 0x000005f0 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_aranges - 0x00000628 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_aranges - 0x000006b8 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_aranges - 0x000006e8 0x3d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_aranges - 0x00000ab8 0x168 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_aranges - 0x00000c20 0xf8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_aranges - 0x00000d18 0x90 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_aranges - 0x00000da8 0xb8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_aranges - 0x00000e60 0x88 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_aranges - 0x00000ee8 0x50 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_aranges - 0x00000f38 0x20 ./USB_DEVICE/App/usb_device.o - .debug_aranges - 0x00000f58 0x58 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_aranges - 0x00000fb0 0x60 ./USB_DEVICE/App/usbd_desc.o - .debug_aranges - 0x00001010 0x118 ./USB_DEVICE/Target/usbd_conf.o - -.debug_rnglists - 0x00000000 0xd02 - .debug_rnglists - 0x00000000 0x4f ./Core/Src/main.o - .debug_rnglists - 0x0000004f 0x34 ./Core/Src/stm32f1xx_hal_msp.o - .debug_rnglists - 0x00000083 0x49 ./Core/Src/stm32f1xx_it.o - .debug_rnglists - 0x000000cc 0x13 ./Core/Src/sysmem.o - .debug_rnglists - 0x000000df 0x1a ./Core/Src/system_stm32f1xx.o - .debug_rnglists - 0x000000f9 0x19 ./Core/Startup/startup_stm32f103c8tx.o - .debug_rnglists - 0x00000112 0xa3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_rnglists - 0x000001b5 0xbc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_rnglists - 0x00000271 0xbb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_rnglists - 0x0000032c 0x3f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_rnglists - 0x0000036b 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_rnglists - 0x0000045f 0x26 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_rnglists - 0x00000485 0x6c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_rnglists - 0x000004f1 0x21 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_rnglists - 0x00000512 0x31a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_rnglists - 0x0000082c 0x125 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_rnglists - 0x00000951 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_rnglists - 0x00000a0e 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_rnglists - 0x00000a78 0x89 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_rnglists - 0x00000b01 0x68 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_rnglists - 0x00000b69 0x37 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_rnglists - 0x00000ba0 0x13 ./USB_DEVICE/App/usb_device.o - .debug_rnglists - 0x00000bb3 0x3e ./USB_DEVICE/App/usbd_cdc_if.o - .debug_rnglists - 0x00000bf1 0x43 ./USB_DEVICE/App/usbd_desc.o - .debug_rnglists - 0x00000c34 0xce ./USB_DEVICE/Target/usbd_conf.o - -.debug_macro 0x00000000 0x1ac13 - .debug_macro 0x00000000 0x389 ./Core/Src/main.o - .debug_macro 0x00000389 0xacc ./Core/Src/main.o - .debug_macro 0x00000e55 0x221 ./Core/Src/main.o - .debug_macro 0x00001076 0x2e ./Core/Src/main.o - .debug_macro 0x000010a4 0x22 ./Core/Src/main.o - .debug_macro 0x000010c6 0x22 ./Core/Src/main.o - .debug_macro 0x000010e8 0x8e ./Core/Src/main.o - .debug_macro 0x00001176 0x51 ./Core/Src/main.o - .debug_macro 0x000011c7 0x103 ./Core/Src/main.o - .debug_macro 0x000012ca 0x6a ./Core/Src/main.o - .debug_macro 0x00001334 0x1df ./Core/Src/main.o - .debug_macro 0x00001513 0x1c ./Core/Src/main.o - .debug_macro 0x0000152f 0x22 ./Core/Src/main.o - .debug_macro 0x00001551 0xbd ./Core/Src/main.o - .debug_macro 0x0000160e 0xd23 ./Core/Src/main.o - .debug_macro 0x00002331 0xe09e ./Core/Src/main.o - .debug_macro 0x000103cf 0x6d ./Core/Src/main.o - .debug_macro 0x0001043c 0x34a2 ./Core/Src/main.o - .debug_macro 0x000138de 0x190 ./Core/Src/main.o - .debug_macro 0x00013a6e 0x5c ./Core/Src/main.o - .debug_macro 0x00013aca 0x5bc ./Core/Src/main.o - .debug_macro 0x00014086 0x289 ./Core/Src/main.o - .debug_macro 0x0001430f 0x1cb ./Core/Src/main.o - .debug_macro 0x000144da 0x114 ./Core/Src/main.o - .debug_macro 0x000145ee 0x1b2 ./Core/Src/main.o - .debug_macro 0x000147a0 0x27 ./Core/Src/main.o - .debug_macro 0x000147c7 0x136 ./Core/Src/main.o - .debug_macro 0x000148fd 0x1bc ./Core/Src/main.o - .debug_macro 0x00014ab9 0x34 ./Core/Src/main.o - .debug_macro 0x00014aed 0x3c ./Core/Src/main.o - .debug_macro 0x00014b29 0x57 ./Core/Src/main.o - .debug_macro 0x00014b80 0x46a ./Core/Src/main.o - .debug_macro 0x00014fea 0x1b5 ./Core/Src/main.o - .debug_macro 0x0001519f 0x87 ./Core/Src/main.o - .debug_macro 0x00015226 0x240 ./Core/Src/main.o - .debug_macro 0x00015466 0x140 ./Core/Src/main.o - .debug_macro 0x000155a6 0x8ed ./Core/Src/main.o - .debug_macro 0x00015e93 0xb7 ./Core/Src/main.o - .debug_macro 0x00015f4a 0x242 ./Core/Src/main.o - .debug_macro 0x0001618c 0x83 ./Core/Src/main.o - .debug_macro 0x0001620f 0x61 ./Core/Src/main.o - .debug_macro 0x00016270 0x24 ./Core/Src/main.o - .debug_macro 0x00016294 0x43 ./Core/Src/main.o - .debug_macro 0x000162d7 0x34 ./Core/Src/main.o - .debug_macro 0x0001630b 0x16 ./Core/Src/main.o - .debug_macro 0x00016321 0x3c ./Core/Src/main.o - .debug_macro 0x0001635d 0x370 ./Core/Src/main.o - .debug_macro 0x000166cd 0x10 ./Core/Src/main.o - .debug_macro 0x000166dd 0x16 ./Core/Src/main.o - .debug_macro 0x000166f3 0x4a ./Core/Src/main.o - .debug_macro 0x0001673d 0x34 ./Core/Src/main.o - .debug_macro 0x00016771 0x10 ./Core/Src/main.o - .debug_macro 0x00016781 0x58 ./Core/Src/main.o - .debug_macro 0x000167d9 0x8e ./Core/Src/main.o - .debug_macro 0x00016867 0x1c ./Core/Src/main.o - .debug_macro 0x00016883 0x185 ./Core/Src/main.o - .debug_macro 0x00016a08 0x16 ./Core/Src/main.o - .debug_macro 0x00016a1e 0x16 ./Core/Src/main.o - .debug_macro 0x00016a34 0x146 ./Core/Src/main.o - .debug_macro 0x00016b7a 0x16 ./Core/Src/main.o - .debug_macro 0x00016b90 0x16 ./Core/Src/main.o - .debug_macro 0x00016ba6 0x29 ./Core/Src/main.o - .debug_macro 0x00016bcf 0x16 ./Core/Src/main.o - .debug_macro 0x00016be5 0x20 ./Core/Src/main.o - .debug_macro 0x00016c05 0x5f ./Core/Src/main.o - .debug_macro 0x00016c64 0x1c8 ./Core/Src/main.o - .debug_macro 0x00016e2c 0x8f ./Core/Src/main.o - .debug_macro 0x00016ebb 0x10 ./Core/Src/main.o - .debug_macro 0x00016ecb 0x1db ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x000170a6 0x1e5 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x0001728b 0x112 ./Core/Src/sysmem.o - .debug_macro 0x0001739d 0x23c ./Core/Src/sysmem.o - .debug_macro 0x000175d9 0x1d1 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x000177aa 0x1f5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x0001799f 0x1ee ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_macro 0x00017b8d 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00017d5e 0x23c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00017f9a 0x1dd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00018177 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00018348 0x1e3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x0001852b 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x000186fc 0x1d2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x000188ce 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00018a9f 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00018c70 0x36a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00018fda 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00019078 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x0001918a 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x000191e0 0x351 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00019531 0x1ce ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x000196ff 0x35b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00019a5a 0x357 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00019db1 0x390 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x0001a141 0x22 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x0001a163 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x0001a179 0x37c ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x0001a4f5 0x38e ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x0001a883 0x1c ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x0001a89f 0x374 ./USB_DEVICE/Target/usbd_conf.o - -.debug_line 0x00000000 0x154ad - .debug_line 0x00000000 0xe8e ./Core/Src/main.o - .debug_line 0x00000e8e 0x8ca ./Core/Src/stm32f1xx_hal_msp.o - .debug_line 0x00001758 0x824 ./Core/Src/stm32f1xx_it.o - .debug_line 0x00001f7c 0x588 ./Core/Src/sysmem.o - .debug_line 0x00002504 0x7db ./Core/Src/system_stm32f1xx.o - .debug_line 0x00002cdf 0x78 ./Core/Startup/startup_stm32f103c8tx.o - .debug_line 0x00002d57 0xa0c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_line 0x00003763 0x1031 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_line 0x00004794 0xbd6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_line 0x0000536a 0xa69 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_line 0x00005dd3 0x1391 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_line 0x00007164 0x7d6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_line 0x0000793a 0xec5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_line 0x000087ff 0x976 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_line 0x00009175 0x34fa ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_line 0x0000c66f 0x18d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_line 0x0000df3f 0x117c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_line 0x0000f0bb 0xd65 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_line 0x0000fe20 0xdba ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_line 0x00010bda 0x1004 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_line 0x00011bde 0xa70 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_line 0x0001264e 0xa40 ./USB_DEVICE/App/usb_device.o - .debug_line 0x0001308e 0xb1a ./USB_DEVICE/App/usbd_cdc_if.o - .debug_line 0x00013ba8 0xae9 ./USB_DEVICE/App/usbd_desc.o - .debug_line 0x00014691 0xe1c ./USB_DEVICE/Target/usbd_conf.o - -.debug_str 0x00000000 0x9207d - .debug_str 0x00000000 0x9207d ./Core/Src/main.o - 0x8e120 (size before relaxing) - .debug_str 0x0009207d 0x895ce ./Core/Src/stm32f1xx_hal_msp.o - .debug_str 0x0009207d 0x892f8 ./Core/Src/stm32f1xx_it.o - .debug_str 0x0009207d 0x7715 ./Core/Src/sysmem.o - .debug_str 0x0009207d 0x88f2d ./Core/Src/system_stm32f1xx.o - .debug_str 0x0009207d 0x6f ./Core/Startup/startup_stm32f103c8tx.o - .debug_str 0x0009207d 0x89660 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_str 0x0009207d 0x89611 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_str 0x0009207d 0x895ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_str 0x0009207d 0x892b3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_str 0x0009207d 0x8984a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_str 0x0009207d 0x893ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_str 0x0009207d 0x8935c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_str 0x0009207d 0x890ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_str 0x0009207d 0x8a35e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_str 0x0009207d 0x89b6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_str 0x0009207d 0x893fe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_str 0x0009207d 0x8de99 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_str 0x0009207d 0x8d7c9 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_str 0x0009207d 0x8d6e3 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_str 0x0009207d 0x8d610 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_str 0x0009207d 0x8d99b ./USB_DEVICE/App/usb_device.o - .debug_str 0x0009207d 0x8da12 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_str 0x0009207d 0x8d54c ./USB_DEVICE/App/usbd_desc.o - .debug_str 0x0009207d 0x8e426 ./USB_DEVICE/Target/usbd_conf.o - -.comment 0x00000000 0x43 - .comment 0x00000000 0x43 ./Core/Src/main.o - 0x44 (size before relaxing) - .comment 0x00000043 0x44 ./Core/Src/stm32f1xx_hal_msp.o - .comment 0x00000043 0x44 ./Core/Src/stm32f1xx_it.o - .comment 0x00000043 0x44 ./Core/Src/sysmem.o - .comment 0x00000043 0x44 ./Core/Src/system_stm32f1xx.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .comment 0x00000043 0x44 ./USB_DEVICE/App/usb_device.o - .comment 0x00000043 0x44 ./USB_DEVICE/App/usbd_cdc_if.o - .comment 0x00000043 0x44 ./USB_DEVICE/App/usbd_desc.o - .comment 0x00000043 0x44 ./USB_DEVICE/Target/usbd_conf.o - -.debug_frame 0x00000000 0x4b6c - .debug_frame 0x00000000 0x160 ./Core/Src/main.o - .debug_frame 0x00000160 0xf4 ./Core/Src/stm32f1xx_hal_msp.o - .debug_frame 0x00000254 0x120 ./Core/Src/stm32f1xx_it.o - .debug_frame 0x00000374 0x34 ./Core/Src/sysmem.o - .debug_frame 0x000003a8 0x58 ./Core/Src/system_stm32f1xx.o - .debug_frame 0x00000400 0x334 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_frame 0x00000734 0x40c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o - .debug_frame 0x00000b40 0x428 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_frame 0x00000f68 0x14c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_frame 0x000010b4 0x594 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_frame 0x00001648 0xb0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_frame 0x000016f8 0x218 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_frame 0x00001910 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_frame 0x00001990 0x11b8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_frame 0x00002b48 0x638 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_frame 0x00003180 0x470 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_frame 0x000035f0 0x248 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_frame 0x00003838 0x300 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_frame 0x00003b38 0x218 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_frame 0x00003d50 0x10c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_frame 0x00003e5c 0x2c ./USB_DEVICE/App/usb_device.o - .debug_frame 0x00003e88 0x12c ./USB_DEVICE/App/usbd_cdc_if.o - .debug_frame 0x00003fb4 0x160 ./USB_DEVICE/App/usbd_desc.o - .debug_frame 0x00004114 0x4a4 ./USB_DEVICE/Target/usbd_conf.o - .debug_frame 0x000045b8 0x144 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .debug_frame 0x000046fc 0x74 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - .debug_frame 0x00004770 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - .debug_frame 0x00004790 0x38 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - .debug_frame 0x000047c8 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - .debug_frame 0x000047e8 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - .debug_frame 0x00004814 0xb0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .debug_frame 0x000048c4 0x38 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) - .debug_frame 0x000048fc 0x50 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - .debug_frame 0x0000494c 0x30 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - .debug_frame 0x0000497c 0x90 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - .debug_frame 0x00004a0c 0x60 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - .debug_frame 0x00004a6c 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) - .debug_frame 0x00004a94 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) - .debug_frame 0x00004ac0 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - .debug_frame 0x00004ae8 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - .debug_frame 0x00004b10 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) - .debug_frame 0x00004b4c 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) - -.debug_line_str - 0x00000000 0x53 - .debug_line_str - 0x00000000 0x53 ./Core/Startup/startup_stm32f103c8tx.o +Archive member included to satisfy reference by file (symbol) + +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (exit) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) (__stdio_exit_handler) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (_fwalk_sglue) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + ./Core/Src/main.o (sprintf) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (__sread) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (memset) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_close_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) (errno) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) (_impure_ptr) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_lseek_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_read_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_write_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + ./Core/Src/syscalls.o (__errno) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (__libc_init_array) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (__retarget_lock_init_recursive) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) (_free_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (_malloc_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) (__malloc_lock) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) (_svfprintf_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (_printf_i) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (_fflush_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (memmove) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) (_sbrk_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (memchr) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (memcpy) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (_realloc_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) (_malloc_usable_size_r) + +Discarded input sections + + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .rodata 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x00000000 0x7c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.extab 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.exidx 0x00000000 0x10 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.attributes + 0x00000000 0x1b C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .text 0x00000000 0x0 ./Core/Src/main.o + .data 0x00000000 0x0 ./Core/Src/main.o + .bss 0x00000000 0x0 ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .text 0x00000000 0x0 ./Core/Src/stm32f1xx_hal_msp.o + .data 0x00000000 0x0 ./Core/Src/stm32f1xx_hal_msp.o + .bss 0x00000000 0x0 ./Core/Src/stm32f1xx_hal_msp.o + .text.HAL_ADC_MspDeInit + 0x00000000 0x3c ./Core/Src/stm32f1xx_hal_msp.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x80 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x221 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0xd23 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0xe09e ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x34a2 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x5c ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x5bc ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x289 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x1cb ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x114 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x1b2 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x27 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x136 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x1bc ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x34 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x3c ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x57 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x46a ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x1b5 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x87 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x240 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x140 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x8ed ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0xb7 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x242 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x83 ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .text 0x00000000 0x0 ./Core/Src/stm32f1xx_it.o + .data 0x00000000 0x0 ./Core/Src/stm32f1xx_it.o + .bss 0x00000000 0x0 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x221 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0xd23 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0xe09e ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x34a2 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x5c ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x5bc ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x289 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x1cb ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x114 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x1b2 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x27 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x136 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x1bc ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x34 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x3c ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x57 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x46a ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x1b5 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x87 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x240 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x140 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x8ed ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0xb7 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x242 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x83 ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .text 0x00000000 0x0 ./Core/Src/syscalls.o + .data 0x00000000 0x0 ./Core/Src/syscalls.o + .bss 0x00000000 0x0 ./Core/Src/syscalls.o + .bss.__env 0x00000000 0x4 ./Core/Src/syscalls.o + .data.environ 0x00000000 0x4 ./Core/Src/syscalls.o + .text.initialise_monitor_handles + 0x00000000 0xc ./Core/Src/syscalls.o + .text._getpid 0x00000000 0xe ./Core/Src/syscalls.o + .text._kill 0x00000000 0x20 ./Core/Src/syscalls.o + .text._exit 0x00000000 0x16 ./Core/Src/syscalls.o + .text._read 0x00000000 0x3a ./Core/Src/syscalls.o + .text._write 0x00000000 0x38 ./Core/Src/syscalls.o + .text._close 0x00000000 0x16 ./Core/Src/syscalls.o + .text._fstat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._isatty 0x00000000 0x14 ./Core/Src/syscalls.o + .text._lseek 0x00000000 0x18 ./Core/Src/syscalls.o + .text._open 0x00000000 0x1a ./Core/Src/syscalls.o + .text._wait 0x00000000 0x1e ./Core/Src/syscalls.o + .text._unlink 0x00000000 0x1e ./Core/Src/syscalls.o + .text._times 0x00000000 0x16 ./Core/Src/syscalls.o + .text._stat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._link 0x00000000 0x20 ./Core/Src/syscalls.o + .text._fork 0x00000000 0x16 ./Core/Src/syscalls.o + .text._execve 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_info 0x00000000 0x6a3 ./Core/Src/syscalls.o + .debug_abbrev 0x00000000 0x1b6 ./Core/Src/syscalls.o + .debug_aranges + 0x00000000 0xa8 ./Core/Src/syscalls.o + .debug_rnglists + 0x00000000 0x79 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x274 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xacc ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x5b ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x24 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x94 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x43 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x57 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x190 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x370 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x4a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x58 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x8e ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x185 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x6a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xcf ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3d ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x35 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x12c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x29 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x242 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x146 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x103 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1df ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x18a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xce ./Core/Src/syscalls.o + .debug_line 0x00000000 0x8ac ./Core/Src/syscalls.o + .debug_str 0x00000000 0x9977 ./Core/Src/syscalls.o + .comment 0x00000000 0x44 ./Core/Src/syscalls.o + .debug_frame 0x00000000 0x2ac ./Core/Src/syscalls.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .text 0x00000000 0x0 ./Core/Src/sysmem.o + .data 0x00000000 0x0 ./Core/Src/sysmem.o + .bss 0x00000000 0x0 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0xacc ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x22 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x5b ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x24 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x94 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x43 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x190 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x57 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x370 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x16 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x4a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x58 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x8e ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x185 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x103 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x6a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1df ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .text 0x00000000 0x0 ./Core/Src/system_stm32f1xx.o + .data 0x00000000 0x0 ./Core/Src/system_stm32f1xx.o + .bss 0x00000000 0x0 ./Core/Src/system_stm32f1xx.o + .rodata.APBPrescTable + 0x00000000 0x8 ./Core/Src/system_stm32f1xx.o + .text.SystemCoreClockUpdate + 0x00000000 0xe4 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0xacc ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x2e ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x8e ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x51 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x103 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x6a ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x1df ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x1c ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0xbd ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0xd23 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0xe09e ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x6d ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x221 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x34a2 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x190 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x5c ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x5bc ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x289 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x1cb ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x114 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x1b2 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x27 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x136 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x1bc ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x34 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x3c ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x57 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x46a ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x1b5 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x87 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x240 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x140 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x8ed ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0xb7 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x242 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x83 ./Core/Src/system_stm32f1xx.o + .text 0x00000000 0x14 ./Core/Startup/startup_stm32f103c8tx.o + .data 0x00000000 0x0 ./Core/Startup/startup_stm32f103c8tx.o + .bss 0x00000000 0x0 ./Core/Startup/startup_stm32f103c8tx.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_DeInit + 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_MspInit + 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_MspDeInit + 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetTickPrio + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_SetTickFreq + 0x00000000 0x50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetTickFreq + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_Delay + 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_SuspendTick + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_ResumeTick + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetHalVersion + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetREVID + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetDEVID + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetUIDw0 + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetUIDw1 + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetUIDw2 + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_DBGMCU_EnableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_DBGMCU_DisableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_DeInit + 0x00000000 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_MspInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_Start + 0x00000000 0x15c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_Stop + 0x00000000 0x58 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_PollForConversion + 0x00000000 0x20c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_PollForEvent + 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_Start_IT + 0x00000000 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_Stop_IT + 0x00000000 0x68 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_Start_DMA + 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_Stop_DMA + 0x00000000 0x98 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_GetValue + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_IRQHandler + 0x00000000 0x17e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_ConvCpltCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_ConvHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_LevelOutOfWindowCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_AnalogWDGConfig + 0x00000000 0xac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_GetState + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.HAL_ADC_GetError + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.ADC_Enable + 0x00000000 0xb4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.ADC_DMAConvCplt + 0x00000000 0x7c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.ADC_DMAHalfConvCplt + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .text.ADC_DMAError + 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_Calibration_Start + 0x00000000 0x15c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedStart + 0x00000000 0x10c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedStop + 0x00000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedPollForConversion + 0x00000000 0x1f0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedStart_IT + 0x00000000 0x11c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedStop_IT + 0x00000000 0x94 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_MultiModeStart_DMA + 0x00000000 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_MultiModeStop_DMA + 0x00000000 0xd8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedGetValue + 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_MultiModeGetValue + 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedConvCpltCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedConfigChannel + 0x00000000 0x334 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .text.HAL_ADCEx_MultiModeConfigChannel + 0x00000000 0xa4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_info 0x00000000 0xa10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_abbrev 0x00000000 0x249 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_rnglists + 0x00000000 0x65 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x1e3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_line 0x00000000 0xd53 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_str 0x00000000 0x895e1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .debug_frame 0x00000000 0x200 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_DisableIRQ + 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_GetPendingIRQ + 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_SetPendingIRQ + 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_ClearPendingIRQ + 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_GetActive + 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_GetPriority + 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.NVIC_DecodePriority + 0x00000000 0x6c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_SystemReset + 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_DisableIRQ + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_SystemReset + 0x00000000 0x8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_GetPriorityGrouping + 0x00000000 0xe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_GetPriority + 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_SetPendingIRQ + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_GetPendingIRQ + 0x00000000 0x1e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_ClearPendingIRQ + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_GetActive + 0x00000000 0x1e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_SYSTICK_CLKSourceConfig + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_SYSTICK_Callback + 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_Init + 0x00000000 0xb4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_DeInit + 0x00000000 0xb8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_Start + 0x00000000 0x86 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_Start_IT + 0x00000000 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_Abort + 0x00000000 0x76 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_Abort_IT + 0x00000000 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_PollForTransfer + 0x00000000 0x324 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_IRQHandler + 0x00000000 0x20c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_RegisterCallback + 0x00000000 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_UnRegisterCallback + 0x00000000 0xac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_GetError + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.DMA_SetConfig + 0x00000000 0x5a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_info 0x00000000 0x6d2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_abbrev 0x00000000 0x20b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_rnglists + 0x00000000 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_line 0x00000000 0xe16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_str 0x00000000 0x892d6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_frame 0x00000000 0x208 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_SetConfigLine + 0x00000000 0x14c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_GetConfigLine + 0x00000000 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_ClearConfigLine + 0x00000000 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_RegisterCallback + 0x00000000 0x32 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_GetHandle + 0x00000000 0x26 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_IRQHandler + 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_GetPending + 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_ClearPending + 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_GenerateSWI + 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_info 0x00000000 0x4ec ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_abbrev 0x00000000 0x1c5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_aranges + 0x00000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_rnglists + 0x00000000 0x46 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_line 0x00000000 0xa56 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_str 0x00000000 0x890af ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_frame 0x00000000 0x174 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .bss.pFlash 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_Program + 0x00000000 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_Program_IT + 0x00000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_IRQHandler + 0x00000000 0x1c0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_EndOfOperationCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_OperationErrorCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_Unlock + 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_Lock + 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_OB_Unlock + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_OB_Lock + 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_OB_Launch + 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_GetError + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.FLASH_Program_HalfWord + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.FLASH_WaitForLastOperation + 0x00000000 0x8c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.FLASH_SetErrorCode + 0x00000000 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_info 0x00000000 0x4f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_abbrev 0x00000000 0x250 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_aranges + 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_rnglists + 0x00000000 0x66 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_line 0x00000000 0xac0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_str 0x00000000 0x89208 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_frame 0x00000000 0x20c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase + 0x00000000 0xd8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase_IT + 0x00000000 0x74 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBErase + 0x00000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBProgram + 0x00000000 0xf8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBGetConfig + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBGetUserData + 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_MassErase + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_EnableWRP + 0x00000000 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_DisableWRP + 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_RDP_LevelConfig + 0x00000000 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_UserConfig + 0x00000000 0x6c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_ProgramData + 0x00000000 0x68 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_GetWRP + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_GetRDP + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_GetUser + 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_PageErase + 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_info 0x00000000 0x777 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_abbrev 0x00000000 0x247 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_aranges + 0x00000000 0x98 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_rnglists + 0x00000000 0x73 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1e3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_line 0x00000000 0xbd3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_str 0x00000000 0x893b6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_frame 0x00000000 0x258 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .text.HAL_GPIO_DeInit + 0x00000000 0x178 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .text.HAL_GPIO_ReadPin + 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .text.HAL_GPIO_LockPin + 0x00000000 0x4e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .text.HAL_GPIO_EXTI_IRQHandler + 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .text.HAL_GPIO_EXTI_Callback + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .text.HAL_GPIOEx_ConfigEventout + 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .text.HAL_GPIOEx_EnableEventout + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .text.HAL_GPIOEx_DisableEventout + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_info 0x00000000 0x152 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_abbrev 0x00000000 0xca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_aranges + 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_rnglists + 0x00000000 0x1f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_line 0x00000000 0x79e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_str 0x00000000 0x88f30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_frame 0x00000000 0x78 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DeInit + 0x00000000 0x46 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_MspInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_Stop + 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_WKUP_IRQHandler + 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DataOutStageCallback + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DataInStageCallback + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_SetupStageCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_SOFCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ResetCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_SuspendCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ResumeCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ISOOUTIncompleteCallback + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ISOINIncompleteCallback + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ConnectCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DisconnectCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DevConnect + 0x00000000 0x42 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DevDisconnect + 0x00000000 0x42 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_EP_Abort + 0x00000000 0x5e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_EP_Flush + 0x00000000 0x5a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ActivateRemoteWakeup + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DeActivateRemoteWakeup + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .text.HAL_PCDEx_SetConnectionState + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .text.HAL_PCDEx_LPM_Callback + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .text.HAL_PCDEx_BCD_Callback + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.PWR_OverloadWfe + 0x00000000 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_DeInit + 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnableBkUpAccess + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_DisableBkUpAccess + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_ConfigPVD + 0x00000000 0xbc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnablePVD + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_DisablePVD + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_DisableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnterSLEEPMode + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnterSTOPMode + 0x00000000 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnterSTANDBYMode + 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_DisableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_DisableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_PVD_IRQHandler + 0x00000000 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_PVDCallback + 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_info 0x00000000 0x628 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_abbrev 0x00000000 0x1f6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_aranges + 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_rnglists + 0x00000000 0x7a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x231 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_line 0x00000000 0x9b0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_str 0x00000000 0x89464 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_frame 0x00000000 0x270 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_DeInit + 0x00000000 0x134 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_MCOConfig + 0x00000000 0x70 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_EnableCSS + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_DisableCSS + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_GetHCLKFreq + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK1Freq + 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK2Freq + 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_GetOscConfig + 0x00000000 0x104 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_GetClockConfig + 0x00000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_NMI_IRQHandler + 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_CSSCallback + 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKConfig + 0x00000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKFreq + 0x00000000 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .rodata.aPLLMULFactorTable.1 + 0x00000000 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .rodata.aPredivFactorTable.0 + 0x00000000 0x2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_DeInit + 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_MspInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_Start + 0x00000000 0x94 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_Stop + 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_Start_IT + 0x00000000 0xa4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_IT + 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_Start_DMA + 0x00000000 0x10c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_DMA + 0x00000000 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_Init + 0x00000000 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_DeInit + 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_MspInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_Start + 0x00000000 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_Stop + 0x00000000 0xc8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_Start_IT + 0x00000000 0x1e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_IT + 0x00000000 0x164 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_Start_DMA + 0x00000000 0x344 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_DMA + 0x00000000 0x18c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_DeInit + 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop + 0x00000000 0xc8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_IT + 0x00000000 0x1e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_IT + 0x00000000 0x164 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_DMA + 0x00000000 0x344 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_DMA + 0x00000000 0x18c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_Init + 0x00000000 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_DeInit + 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_MspInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_Start + 0x00000000 0x180 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_Stop + 0x00000000 0xc2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_Start_IT + 0x00000000 0x218 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_IT + 0x00000000 0x15c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_Start_DMA + 0x00000000 0x31c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_DMA + 0x00000000 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Init + 0x00000000 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_DeInit + 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start + 0x00000000 0xac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop + 0x00000000 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start_IT + 0x00000000 0xcc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop_IT + 0x00000000 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_Init + 0x00000000 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_DeInit + 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start + 0x00000000 0x11c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop + 0x00000000 0x12e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_IT + 0x00000000 0x15c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_IT + 0x00000000 0x16a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_DMA + 0x00000000 0x2d8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_DMA + 0x00000000 0x192 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IRQHandler + 0x00000000 0x1e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_ConfigChannel + 0x00000000 0xb8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_ConfigChannel + 0x00000000 0x138 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_ConfigChannel + 0x00000000 0x1a4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStart + 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiWriteStart + 0x00000000 0x2a8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStop + 0x00000000 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStart + 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiReadStart + 0x00000000 0x2a8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStop + 0x00000000 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_GenerateEvent + 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_ConfigOCrefClear + 0x00000000 0x198 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_ConfigTI1Input + 0x00000000 0x36 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro + 0x00000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro_IT + 0x00000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_ReadCapturedValue + 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_DelayElapsedCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_CaptureCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_CaptureHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_PulseFinishedCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_PulseFinishedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_TriggerCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_TriggerHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_GetActiveChannel + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_GetChannelState + 0x00000000 0x50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_DMABurstState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMAError + 0x00000000 0x92 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMADelayPulseCplt + 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMADelayPulseHalfCplt + 0x00000000 0x68 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMACaptureCplt + 0x00000000 0xc8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMACaptureHalfCplt + 0x00000000 0x68 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedCplt + 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedHalfCplt + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMATriggerCplt + 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMATriggerHalfCplt + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_SlaveTimer_SetConfig + 0x00000000 0x122 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_TI1_SetConfig + 0x00000000 0xb4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_TI2_SetConfig + 0x00000000 0x78 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_TI3_SetConfig + 0x00000000 0x76 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_TI4_SetConfig + 0x00000000 0x78 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Init + 0x00000000 0x152 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_DeInit + 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_MspInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Start + 0x00000000 0xe4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Stop + 0x00000000 0x70 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Start_IT + 0x00000000 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Stop_IT + 0x00000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Start_DMA + 0x00000000 0x134 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Stop_DMA + 0x00000000 0x7a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Start + 0x00000000 0x13c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Stop + 0x00000000 0xba ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Start_IT + 0x00000000 0x1ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Stop_IT + 0x00000000 0x13e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Start_DMA + 0x00000000 0x2c8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Stop_DMA + 0x00000000 0x138 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Start + 0x00000000 0x13c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Stop + 0x00000000 0xba ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Start_IT + 0x00000000 0x1ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Stop_IT + 0x00000000 0x13e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Start_DMA + 0x00000000 0x2c8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Stop_DMA + 0x00000000 0x138 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OnePulseN_Start + 0x00000000 0xaa ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OnePulseN_Stop + 0x00000000 0xbe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OnePulseN_Start_IT + 0x00000000 0xca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OnePulseN_Stop_IT + 0x00000000 0xde ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_ConfigCommutEvent + 0x00000000 0xbe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_ConfigCommutEvent_IT + 0x00000000 0xbe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_ConfigCommutEvent_DMA + 0x00000000 0xe4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_RemapConfig + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_CommutCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_CommutHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_BreakCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_GetChannelNState + 0x00000000 0x50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.TIMEx_DMACommutationCplt + 0x00000000 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.TIMEx_DMACommutationHalfCplt + 0x00000000 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.TIM_DMADelayPulseNCplt + 0x00000000 0x86 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.TIM_DMAErrorCCxN + 0x00000000 0x6e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.TIM_CCxNChannelCmd + 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_FlushTxFifo + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_FlushRxFifo + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_EPStopXfer + 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_StopDevice + 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ReadDevAllOutEpInterrupt + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ReadDevAllInEpInterrupt + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ReadDevOutEPInterrupt + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ReadDevInEPInterrupt + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ClearInterrupts + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ActivateRemoteWakeup + 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_DeActivateRemoteWakeup + 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x221 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x46a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x1b5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x221 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x46a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x1b5 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x1c8 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x8f ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_DeInit + 0x00000000 0x3a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_Stop + 0x00000000 0x2c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_LL_IsoINIncomplete + 0x00000000 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_LL_IsoOUTIncomplete + 0x00000000 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_LL_DevConnected + 0x00000000 0x14 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_LL_DevDisconnected + 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x221 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x46a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x1b5 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x221 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x46a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x1b5 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x1c8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .text.USBD_GetRxCount + 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x221 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x46a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x1b5 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x1c8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .text 0x00000000 0x0 ./USB_DEVICE/App/usb_device.o + .data 0x00000000 0x0 ./USB_DEVICE/App/usb_device.o + .bss 0x00000000 0x0 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0xacc ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x2e ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x51 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x103 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x6a ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x1df ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0xbd ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0xd23 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0xe09e ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x6d ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x221 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x190 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x5c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x5bc ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x289 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x1cb ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x114 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x27 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x136 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x1bc ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x46a ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x1b5 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x87 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x240 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x140 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x8ed ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0xb7 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x242 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x83 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x61 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x24 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x43 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x370 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x4a ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x58 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x185 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x146 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x29 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x20 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x5f ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x1c8 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x8f ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .text 0x00000000 0x0 ./USB_DEVICE/App/usbd_cdc_if.o + .data 0x00000000 0x0 ./USB_DEVICE/App/usbd_cdc_if.o + .bss 0x00000000 0x0 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0xacc ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x5b ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x24 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x94 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x43 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x9e ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x370 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x112 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x4a ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x58 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x185 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x146 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x29 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x20 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x221 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x2e ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x103 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x6a ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x1df ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0xbd ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0xd23 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0xe09e ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x6d ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x56 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x5bc ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x289 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x1cb ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x114 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x27 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x136 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x1bc ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x46a ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x1b5 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x87 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x240 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x140 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x8ed ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0xb7 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x242 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x83 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x5f ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x1c8 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x8f ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .text 0x00000000 0x0 ./USB_DEVICE/App/usbd_desc.o + .data 0x00000000 0x0 ./USB_DEVICE/App/usbd_desc.o + .bss 0x00000000 0x0 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0xacc ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x5b ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x24 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x94 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x43 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x9e ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x370 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x112 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x4a ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x58 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x185 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x146 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x29 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x20 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x221 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x2e ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x103 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x6a ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x1df ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0xbd ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0xd23 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0xe09e ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x6d ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x56 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x5bc ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x289 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x1cb ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x114 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x27 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x136 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x1bc ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x46a ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x1b5 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x87 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x240 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x140 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x8ed ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0xb7 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x242 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x83 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x5f ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x1ce ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .text 0x00000000 0x0 ./USB_DEVICE/Target/usbd_conf.o + .data 0x00000000 0x0 ./USB_DEVICE/Target/usbd_conf.o + .bss 0x00000000 0x0 ./USB_DEVICE/Target/usbd_conf.o + .text.HAL_PCD_MspDeInit + 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o + .text.HAL_PCD_ISOOUTIncompleteCallback + 0x00000000 0x24 ./USB_DEVICE/Target/usbd_conf.o + .text.HAL_PCD_ISOINIncompleteCallback + 0x00000000 0x24 ./USB_DEVICE/Target/usbd_conf.o + .text.HAL_PCD_ConnectCallback + 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o + .text.HAL_PCD_DisconnectCallback + 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o + .text.USBD_LL_DeInit + 0x00000000 0x36 ./USB_DEVICE/Target/usbd_conf.o + .text.USBD_LL_Stop + 0x00000000 0x36 ./USB_DEVICE/Target/usbd_conf.o + .text.USBD_LL_FlushEP + 0x00000000 0x3e ./USB_DEVICE/Target/usbd_conf.o + .text.USBD_LL_Delay + 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0xacc ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x2e ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x8e ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x51 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x103 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x6a ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x1df ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0xbd ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0xd23 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0xe09e ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x6d ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x221 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x190 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x5c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x5bc ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x289 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x1cb ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x114 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x27 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x136 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x1bc ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x57 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x46a ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x1b5 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x87 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x240 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x140 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x8ed ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0xb7 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x242 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x83 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x61 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x24 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x43 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x370 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x4a ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x58 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x8e ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x185 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x146 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x29 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x20 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x5f ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x1c8 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x8f ./USB_DEVICE/Target/usbd_conf.o + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) + .text.exit 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) + .debug_frame 0x00000000 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.std 0x00000000 0x6c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.stdio_exit_handler + 0x00000000 0x18 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.cleanup_stdio + 0x00000000 0x40 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__fp_lock + 0x00000000 0x18 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock + 0x00000000 0x18 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.global_stdio_init.part.0 + 0x00000000 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_acquire + 0x00000000 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_release + 0x00000000 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__sfp 0x00000000 0xa4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__sinit 0x00000000 0x30 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__fp_lock_all + 0x00000000 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock_all + 0x00000000 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .data.__sglue 0x00000000 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .bss.__stdio_exit_handler + 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) + .text._fwalk_sglue + 0x00000000 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) + .debug_frame 0x00000000 0x34 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + .text._sprintf_r + 0x00000000 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .text.__sread 0x00000000 0x22 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .text.__seofread + 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .text.__swrite + 0x00000000 0x38 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .text.__sseek 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .text.__sclose + 0x00000000 0x8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .debug_frame 0x00000000 0x88 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) + .text._close_r + 0x00000000 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) + .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + .text._reclaim_reent + 0x00000000 0xbc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) + .text._lseek_r + 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) + .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) + .text._read_r 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) + .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) + .text._write_r + 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) + .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init + 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init_recursive + 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close + 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close_recursive + 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire + 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire + 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire_recursive + 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release + 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss.__lock___arc4random_mutex + 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss.__lock___dd_hash_mutex + 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss.__lock___tz_mutex + 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss.__lock___env_recursive_mutex + 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss.__lock___at_quick_exit_mutex + 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss.__lock___atexit_recursive_mutex + 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss.__lock___sfp_recursive_mutex + 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + .text.__ssprint_r + 0x00000000 0xfa C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .text.__sflush_r + 0x00000000 0x100 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .text._fflush_r + 0x00000000 0x50 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .text.fflush 0x00000000 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .debug_frame 0x00000000 0x5c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .rodata 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .eh_frame 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x20000000 0x00005000 xrw +FLASH 0x08000000 0x00010000 xr +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o +LOAD ./Core/Src/main.o +LOAD ./Core/Src/stm32f1xx_hal_msp.o +LOAD ./Core/Src/stm32f1xx_it.o +LOAD ./Core/Src/syscalls.o +LOAD ./Core/Src/sysmem.o +LOAD ./Core/Src/system_stm32f1xx.o +LOAD ./Core/Startup/startup_stm32f103c8tx.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o +LOAD ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o +LOAD ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o +LOAD ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o +LOAD ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o +LOAD ./USB_DEVICE/App/usb_device.o +LOAD ./USB_DEVICE/App/usbd_cdc_if.o +LOAD ./USB_DEVICE/App/usbd_desc.o +LOAD ./USB_DEVICE/Target/usbd_conf.o +START GROUP +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a +END GROUP +START GROUP +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a +END GROUP +START GROUP +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libnosys.a +END GROUP +START GROUP +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libnosys.a +END GROUP +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x20005000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x00000200 _Min_Heap_Size = 0x200 + 0x00000400 _Min_Stack_Size = 0x400 + +.isr_vector 0x08000000 0x10c + 0x08000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x08000000 0x10c ./Core/Startup/startup_stm32f103c8tx.o + 0x08000000 g_pfnVectors + 0x0800010c . = ALIGN (0x4) + +.text 0x0800010c 0x997c + 0x0800010c . = ALIGN (0x4) + *(.text) + .text 0x0800010c 0x40 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.text*) + .text.HAL_SYSTICK_Callback + 0x0800014c 0x70 ./Core/Src/main.o + 0x0800014c HAL_SYSTICK_Callback + .text.main 0x080001bc 0xf4 ./Core/Src/main.o + 0x080001bc main + .text.SystemClock_Config + 0x080002b0 0xba ./Core/Src/main.o + 0x080002b0 SystemClock_Config + *fill* 0x0800036a 0x2 + .text.MX_ADC1_Init + 0x0800036c 0x7c ./Core/Src/main.o + .text.MX_TIM1_Init + 0x080003e8 0x180 ./Core/Src/main.o + .text.MX_TIM2_Init + 0x08000568 0x148 ./Core/Src/main.o + .text.MX_TIM3_Init + 0x080006b0 0x144 ./Core/Src/main.o + .text.MX_TIM4_Init + 0x080007f4 0x144 ./Core/Src/main.o + .text.MX_GPIO_Init + 0x08000938 0xb0 ./Core/Src/main.o + .text.Error_Handler + 0x080009e8 0xc ./Core/Src/main.o + 0x080009e8 Error_Handler + .text.HAL_MspInit + 0x080009f4 0x64 ./Core/Src/stm32f1xx_hal_msp.o + 0x080009f4 HAL_MspInit + .text.HAL_ADC_MspInit + 0x08000a58 0x78 ./Core/Src/stm32f1xx_hal_msp.o + 0x08000a58 HAL_ADC_MspInit + .text.HAL_TIM_Base_MspInit + 0x08000ad0 0xb0 ./Core/Src/stm32f1xx_hal_msp.o + 0x08000ad0 HAL_TIM_Base_MspInit + .text.HAL_TIM_MspPostInit + 0x08000b80 0x158 ./Core/Src/stm32f1xx_hal_msp.o + 0x08000b80 HAL_TIM_MspPostInit + .text.NMI_Handler + 0x08000cd8 0x8 ./Core/Src/stm32f1xx_it.o + 0x08000cd8 NMI_Handler + .text.HardFault_Handler + 0x08000ce0 0x8 ./Core/Src/stm32f1xx_it.o + 0x08000ce0 HardFault_Handler + .text.MemManage_Handler + 0x08000ce8 0x8 ./Core/Src/stm32f1xx_it.o + 0x08000ce8 MemManage_Handler + .text.BusFault_Handler + 0x08000cf0 0x8 ./Core/Src/stm32f1xx_it.o + 0x08000cf0 BusFault_Handler + .text.UsageFault_Handler + 0x08000cf8 0x8 ./Core/Src/stm32f1xx_it.o + 0x08000cf8 UsageFault_Handler + .text.SVC_Handler + 0x08000d00 0xc ./Core/Src/stm32f1xx_it.o + 0x08000d00 SVC_Handler + .text.DebugMon_Handler + 0x08000d0c 0xc ./Core/Src/stm32f1xx_it.o + 0x08000d0c DebugMon_Handler + .text.PendSV_Handler + 0x08000d18 0xc ./Core/Src/stm32f1xx_it.o + 0x08000d18 PendSV_Handler + .text.SysTick_Handler + 0x08000d24 0x10 ./Core/Src/stm32f1xx_it.o + 0x08000d24 SysTick_Handler + .text.USB_LP_CAN1_RX0_IRQHandler + 0x08000d34 0x14 ./Core/Src/stm32f1xx_it.o + 0x08000d34 USB_LP_CAN1_RX0_IRQHandler + .text._sbrk 0x08000d48 0x6c ./Core/Src/sysmem.o + 0x08000d48 _sbrk + .text.SystemInit + 0x08000db4 0xc ./Core/Src/system_stm32f1xx.o + 0x08000db4 SystemInit + .text.Reset_Handler + 0x08000dc0 0x48 ./Core/Startup/startup_stm32f103c8tx.o + 0x08000dc0 Reset_Handler + .text.Default_Handler + 0x08000e08 0x2 ./Core/Startup/startup_stm32f103c8tx.o + 0x08000e08 RTC_Alarm_IRQHandler + 0x08000e08 EXTI2_IRQHandler + 0x08000e08 TIM1_CC_IRQHandler + 0x08000e08 PVD_IRQHandler + 0x08000e08 EXTI3_IRQHandler + 0x08000e08 EXTI0_IRQHandler + 0x08000e08 I2C2_EV_IRQHandler + 0x08000e08 ADC1_2_IRQHandler + 0x08000e08 SPI1_IRQHandler + 0x08000e08 TAMPER_IRQHandler + 0x08000e08 DMA1_Channel4_IRQHandler + 0x08000e08 USART3_IRQHandler + 0x08000e08 RTC_IRQHandler + 0x08000e08 DMA1_Channel7_IRQHandler + 0x08000e08 CAN1_RX1_IRQHandler + 0x08000e08 TIM4_IRQHandler + 0x08000e08 I2C1_EV_IRQHandler + 0x08000e08 DMA1_Channel6_IRQHandler + 0x08000e08 TIM3_IRQHandler + 0x08000e08 RCC_IRQHandler + 0x08000e08 TIM1_TRG_COM_IRQHandler + 0x08000e08 DMA1_Channel1_IRQHandler + 0x08000e08 Default_Handler + 0x08000e08 EXTI15_10_IRQHandler + 0x08000e08 EXTI9_5_IRQHandler + 0x08000e08 SPI2_IRQHandler + 0x08000e08 DMA1_Channel5_IRQHandler + 0x08000e08 EXTI4_IRQHandler + 0x08000e08 USB_HP_CAN1_TX_IRQHandler + 0x08000e08 DMA1_Channel3_IRQHandler + 0x08000e08 TIM1_UP_IRQHandler + 0x08000e08 WWDG_IRQHandler + 0x08000e08 TIM2_IRQHandler + 0x08000e08 TIM1_BRK_IRQHandler + 0x08000e08 EXTI1_IRQHandler + 0x08000e08 USART2_IRQHandler + 0x08000e08 I2C2_ER_IRQHandler + 0x08000e08 DMA1_Channel2_IRQHandler + 0x08000e08 CAN1_SCE_IRQHandler + 0x08000e08 FLASH_IRQHandler + 0x08000e08 USART1_IRQHandler + 0x08000e08 I2C1_ER_IRQHandler + 0x08000e08 USBWakeUp_IRQHandler + *fill* 0x08000e0a 0x2 + .text.HAL_Init + 0x08000e0c 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x08000e0c HAL_Init + .text.HAL_InitTick + 0x08000e38 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x08000e38 HAL_InitTick + .text.HAL_IncTick + 0x08000e98 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x08000e98 HAL_IncTick + .text.HAL_GetTick + 0x08000ebc 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x08000ebc HAL_GetTick + .text.HAL_ADC_Init + 0x08000ed0 0x1b0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + 0x08000ed0 HAL_ADC_Init + .text.HAL_ADC_ConfigChannel + 0x08001080 0x1f0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + 0x08001080 HAL_ADC_ConfigChannel + .text.ADC_ConversionStop_Disable + 0x08001270 0x82 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + 0x08001270 ADC_ConversionStop_Disable + *fill* 0x080012f2 0x2 + .text.__NVIC_SetPriorityGrouping + 0x080012f4 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_GetPriorityGrouping + 0x0800133c 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_EnableIRQ + 0x08001358 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_SetPriority + 0x08001390 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.NVIC_EncodePriority + 0x080013e4 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.SysTick_Config + 0x08001448 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_SetPriorityGrouping + 0x0800148c 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x0800148c HAL_NVIC_SetPriorityGrouping + .text.HAL_NVIC_SetPriority + 0x080014a2 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x080014a2 HAL_NVIC_SetPriority + .text.HAL_NVIC_EnableIRQ + 0x080014da 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x080014da HAL_NVIC_EnableIRQ + .text.HAL_SYSTICK_Config + 0x080014f6 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x080014f6 HAL_SYSTICK_Config + .text.HAL_SYSTICK_IRQHandler + 0x0800150e 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x0800150e HAL_SYSTICK_IRQHandler + *fill* 0x0800151a 0x2 + .text.HAL_GPIO_Init + 0x0800151c 0x308 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + 0x0800151c HAL_GPIO_Init + .text.HAL_GPIO_WritePin + 0x08001824 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + 0x08001824 HAL_GPIO_WritePin + .text.HAL_GPIO_TogglePin + 0x08001854 0x32 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + 0x08001854 HAL_GPIO_TogglePin + .text.HAL_PCD_Init + 0x08001886 0x1ec ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x08001886 HAL_PCD_Init + .text.HAL_PCD_Start + 0x08001a72 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x08001a72 HAL_PCD_Start + .text.HAL_PCD_IRQHandler + 0x08001abe 0x260 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x08001abe HAL_PCD_IRQHandler + .text.HAL_PCD_SetAddress + 0x08001d1e 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x08001d1e HAL_PCD_SetAddress + .text.HAL_PCD_EP_Open + 0x08001d66 0xba ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x08001d66 HAL_PCD_EP_Open + .text.HAL_PCD_EP_Close + 0x08001e20 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x08001e20 HAL_PCD_EP_Close + .text.HAL_PCD_EP_Receive + 0x08001eb0 0x62 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x08001eb0 HAL_PCD_EP_Receive + .text.HAL_PCD_EP_GetRxCount + 0x08001f12 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x08001f12 HAL_PCD_EP_GetRxCount + .text.HAL_PCD_EP_Transmit + 0x08001f40 0x6e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x08001f40 HAL_PCD_EP_Transmit + .text.HAL_PCD_EP_SetStall + 0x08001fae 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x08001fae HAL_PCD_EP_SetStall + .text.HAL_PCD_EP_ClrStall + 0x0800206e 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x0800206e HAL_PCD_EP_ClrStall + .text.PCD_EP_ISR_Handler + 0x08002116 0x79e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_EP_DB_Receive + 0x080028b4 0x21a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_EP_DB_Transmit + 0x08002ace 0x7f4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCDEx_PMAConfig + 0x080032c2 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + 0x080032c2 HAL_PCDEx_PMAConfig + *fill* 0x08003346 0x2 + .text.HAL_RCC_OscConfig + 0x08003348 0x504 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x08003348 HAL_RCC_OscConfig + .text.HAL_RCC_ClockConfig + 0x0800384c 0x1d4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x0800384c HAL_RCC_ClockConfig + .text.HAL_RCC_GetSysClockFreq + 0x08003a20 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x08003a20 HAL_RCC_GetSysClockFreq + .text.RCC_Delay + 0x08003ac8 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCCEx_PeriphCLKConfig + 0x08003b04 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + 0x08003b04 HAL_RCCEx_PeriphCLKConfig + .text.HAL_TIM_Base_Init + 0x08003c70 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08003c70 HAL_TIM_Base_Init + .text.HAL_TIM_PWM_Init + 0x08003d0e 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08003d0e HAL_TIM_PWM_Init + .text.HAL_TIM_PWM_MspInit + 0x08003dac 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08003dac HAL_TIM_PWM_MspInit + *fill* 0x08003dbe 0x2 + .text.HAL_TIM_PWM_Start + 0x08003dc0 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08003dc0 HAL_TIM_PWM_Start + .text.HAL_TIM_PWM_ConfigChannel + 0x08003f04 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08003f04 HAL_TIM_PWM_ConfigChannel + .text.HAL_TIM_ConfigClockSource + 0x08004088 0x18e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08004088 HAL_TIM_ConfigClockSource + *fill* 0x08004216 0x2 + .text.TIM_Base_SetConfig + 0x08004218 0xdc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08004218 TIM_Base_SetConfig + .text.TIM_OC1_SetConfig + 0x080042f4 0xcc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_OC2_SetConfig + 0x080043c0 0xd4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x080043c0 TIM_OC2_SetConfig + .text.TIM_OC3_SetConfig + 0x08004494 0xd4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_OC4_SetConfig + 0x08004568 0x9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_TI1_ConfigInputStage + 0x08004604 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_TI2_ConfigInputStage + 0x08004660 0x5e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_ITRx_SetConfig + 0x080046be 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_ETR_SetConfig + 0x080046f2 0x3e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x080046f2 TIM_ETR_SetConfig + .text.TIM_CCxChannelCmd + 0x08004730 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08004730 TIM_CCxChannelCmd + .text.HAL_TIMEx_MasterConfigSynchronization + 0x08004778 0xbc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + 0x08004778 HAL_TIMEx_MasterConfigSynchronization + .text.HAL_TIMEx_ConfigBreakDeadTime + 0x08004834 0xa2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + 0x08004834 HAL_TIMEx_ConfigBreakDeadTime + .text.USB_CoreInit + 0x080048d6 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x080048d6 USB_CoreInit + .text.USB_EnableGlobalInt + 0x080048f0 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x080048f0 USB_EnableGlobalInt + .text.USB_DisableGlobalInt + 0x0800491c 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x0800491c USB_DisableGlobalInt + .text.USB_SetCurrentMode + 0x08004950 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08004950 USB_SetCurrentMode + .text.USB_DevInit + 0x08004968 0x3a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08004968 USB_DevInit + *fill* 0x080049a2 0x2 + .text.USB_ActivateEndpoint + 0x080049a4 0x780 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x080049a4 USB_ActivateEndpoint + .text.USB_DeactivateEndpoint + 0x08005124 0x3d8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08005124 USB_DeactivateEndpoint + .text.USB_EPStartXfer + 0x080054fc 0x1762 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x080054fc USB_EPStartXfer + .text.USB_EPSetStall + 0x08006c5e 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08006c5e USB_EPSetStall + .text.USB_EPClearStall + 0x08006cfe 0x15a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08006cfe USB_EPClearStall + .text.USB_SetDevAddress + 0x08006e58 0x26 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08006e58 USB_SetDevAddress + .text.USB_DevConnect + 0x08006e7e 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08006e7e USB_DevConnect + .text.USB_DevDisconnect + 0x08006e92 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08006e92 USB_DevDisconnect + .text.USB_ReadInterrupts + 0x08006ea6 0x1e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08006ea6 USB_ReadInterrupts + .text.USB_EP0_OutStart + 0x08006ec4 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08006ec4 USB_EP0_OutStart + .text.USB_WritePMA + 0x08006eda 0x8c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08006eda USB_WritePMA + .text.USB_ReadPMA + 0x08006f66 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08006f66 USB_ReadPMA + .text.USBD_CDC_Init + 0x08007004 0xf4 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_DeInit + 0x080070f8 0x6e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_Setup + 0x08007166 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_DataIn + 0x080072ac 0xa6 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_DataOut + 0x08007352 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_EP0_RxReady + 0x080073a8 0x4e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + *fill* 0x080073f6 0x2 + .text.USBD_CDC_GetFSCfgDesc + 0x080073f8 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_GetHSCfgDesc + 0x08007418 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_GetOtherSpeedCfgDesc + 0x08007438 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_GetDeviceQualifierDescriptor + 0x08007458 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x08007458 USBD_CDC_GetDeviceQualifierDescriptor + .text.USBD_CDC_RegisterInterface + 0x08007478 0x2c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x08007478 USBD_CDC_RegisterInterface + .text.USBD_CDC_SetTxBuffer + 0x080074a4 0x32 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x080074a4 USBD_CDC_SetTxBuffer + .text.USBD_CDC_SetRxBuffer + 0x080074d6 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x080074d6 USBD_CDC_SetRxBuffer + .text.USBD_CDC_TransmitPacket + 0x080074fc 0x5e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x080074fc USBD_CDC_TransmitPacket + .text.USBD_CDC_ReceivePacket + 0x0800755a 0x54 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x0800755a USBD_CDC_ReceivePacket + .text.USBD_Init + 0x080075ae 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x080075ae USBD_Init + .text.USBD_RegisterClass + 0x08007604 0x32 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08007604 USBD_RegisterClass + .text.USBD_Start + 0x08007636 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08007636 USBD_Start + .text.USBD_RunTestMode + 0x0800764e 0x14 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x0800764e USBD_RunTestMode + .text.USBD_SetClassConfig + 0x08007662 0x3e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08007662 USBD_SetClassConfig + .text.USBD_ClrClassConfig + 0x080076a0 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x080076a0 USBD_ClrClassConfig + .text.USBD_LL_SetupStage + 0x080076c6 0x9a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x080076c6 USBD_LL_SetupStage + .text.USBD_LL_DataOutStage + 0x08007760 0xe2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08007760 USBD_LL_DataOutStage + .text.USBD_LL_DataInStage + 0x08007842 0x14a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08007842 USBD_LL_DataInStage + .text.USBD_LL_Reset + 0x0800798c 0x82 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x0800798c USBD_LL_Reset + .text.USBD_LL_SetSpeed + 0x08007a0e 0x1e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08007a0e USBD_LL_SetSpeed + .text.USBD_LL_Suspend + 0x08007a2c 0x28 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08007a2c USBD_LL_Suspend + .text.USBD_LL_Resume + 0x08007a54 0x2a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08007a54 USBD_LL_Resume + .text.USBD_LL_SOF + 0x08007a7e 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08007a7e USBD_LL_SOF + *fill* 0x08007ab2 0x2 + .text.USBD_StdDevReq + 0x08007ab4 0xd4 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08007ab4 USBD_StdDevReq + .text.USBD_StdItfReq + 0x08007b88 0x90 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08007b88 USBD_StdItfReq + .text.USBD_StdEPReq + 0x08007c18 0x2c6 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08007c18 USBD_StdEPReq + *fill* 0x08007ede 0x2 + .text.USBD_GetDescriptor + 0x08007ee0 0x2d0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_SetAddress + 0x080081b0 0x86 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + *fill* 0x08008236 0x2 + .text.USBD_SetConfig + 0x08008238 0x11c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_GetConfig + 0x08008354 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_GetStatus + 0x080083be 0x66 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_SetFeature + 0x08008424 0x28 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_ClrFeature + 0x0800844c 0x42 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_ParseSetupRequest + 0x0800848e 0x72 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x0800848e USBD_ParseSetupRequest + .text.USBD_CtlError + 0x08008500 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08008500 USBD_CtlError + .text.USBD_GetString + 0x08008522 0x84 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08008522 USBD_GetString + .text.USBD_GetLen + 0x080085a6 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_CtlSendData + 0x080085d4 0x38 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x080085d4 USBD_CtlSendData + .text.USBD_CtlContinueSendData + 0x0800860c 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x0800860c USBD_CtlContinueSendData + .text.USBD_CtlPrepareRx + 0x08008630 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x08008630 USBD_CtlPrepareRx + .text.USBD_CtlContinueRx + 0x0800866c 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x0800866c USBD_CtlContinueRx + .text.USBD_CtlSendStatus + 0x08008690 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x08008690 USBD_CtlSendStatus + .text.USBD_CtlReceiveStatus + 0x080086b6 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x080086b6 USBD_CtlReceiveStatus + .text.MX_USB_DEVICE_Init + 0x080086dc 0x60 ./USB_DEVICE/App/usb_device.o + 0x080086dc MX_USB_DEVICE_Init + .text.fifo_push + 0x0800873c 0x6c ./USB_DEVICE/App/usbd_cdc_if.o + .text.CDC_Available + 0x080087a8 0x28 ./USB_DEVICE/App/usbd_cdc_if.o + 0x080087a8 CDC_Available + .text.CDC_ReadByte + 0x080087d0 0x54 ./USB_DEVICE/App/usbd_cdc_if.o + 0x080087d0 CDC_ReadByte + .text.CDC_Init_FS + 0x08008824 0x28 ./USB_DEVICE/App/usbd_cdc_if.o + .text.CDC_DeInit_FS + 0x0800884c 0xe ./USB_DEVICE/App/usbd_cdc_if.o + *fill* 0x0800885a 0x2 + .text.CDC_Control_FS + 0x0800885c 0xbc ./USB_DEVICE/App/usbd_cdc_if.o + .text.CDC_Receive_FS + 0x08008918 0x3c ./USB_DEVICE/App/usbd_cdc_if.o + .text.CDC_Transmit_FS + 0x08008954 0x4c ./USB_DEVICE/App/usbd_cdc_if.o + 0x08008954 CDC_Transmit_FS + .text.USBD_FS_DeviceDescriptor + 0x080089a0 0x24 ./USB_DEVICE/App/usbd_desc.o + 0x080089a0 USBD_FS_DeviceDescriptor + .text.USBD_FS_LangIDStrDescriptor + 0x080089c4 0x24 ./USB_DEVICE/App/usbd_desc.o + 0x080089c4 USBD_FS_LangIDStrDescriptor + .text.USBD_FS_ProductStrDescriptor + 0x080089e8 0x3c ./USB_DEVICE/App/usbd_desc.o + 0x080089e8 USBD_FS_ProductStrDescriptor + .text.USBD_FS_ManufacturerStrDescriptor + 0x08008a24 0x28 ./USB_DEVICE/App/usbd_desc.o + 0x08008a24 USBD_FS_ManufacturerStrDescriptor + .text.USBD_FS_SerialStrDescriptor + 0x08008a4c 0x24 ./USB_DEVICE/App/usbd_desc.o + 0x08008a4c USBD_FS_SerialStrDescriptor + .text.USBD_FS_ConfigStrDescriptor + 0x08008a70 0x3c ./USB_DEVICE/App/usbd_desc.o + 0x08008a70 USBD_FS_ConfigStrDescriptor + .text.USBD_FS_InterfaceStrDescriptor + 0x08008aac 0x3c ./USB_DEVICE/App/usbd_desc.o + 0x08008aac USBD_FS_InterfaceStrDescriptor + .text.Get_SerialNum + 0x08008ae8 0x58 ./USB_DEVICE/App/usbd_desc.o + .text.IntToUnicode + 0x08008b40 0x7c ./USB_DEVICE/App/usbd_desc.o + .text.HAL_PCD_MspInit + 0x08008bbc 0x4c ./USB_DEVICE/Target/usbd_conf.o + 0x08008bbc HAL_PCD_MspInit + .text.HAL_PCD_SetupStageCallback + 0x08008c08 0x24 ./USB_DEVICE/Target/usbd_conf.o + 0x08008c08 HAL_PCD_SetupStageCallback + .text.HAL_PCD_DataOutStageCallback + 0x08008c2c 0x36 ./USB_DEVICE/Target/usbd_conf.o + 0x08008c2c HAL_PCD_DataOutStageCallback + .text.HAL_PCD_DataInStageCallback + 0x08008c62 0x34 ./USB_DEVICE/Target/usbd_conf.o + 0x08008c62 HAL_PCD_DataInStageCallback + .text.HAL_PCD_SOFCallback + 0x08008c96 0x1c ./USB_DEVICE/Target/usbd_conf.o + 0x08008c96 HAL_PCD_SOFCallback + .text.HAL_PCD_ResetCallback + 0x08008cb2 0x3c ./USB_DEVICE/Target/usbd_conf.o + 0x08008cb2 HAL_PCD_ResetCallback + *fill* 0x08008cee 0x2 + .text.HAL_PCD_SuspendCallback + 0x08008cf0 0x34 ./USB_DEVICE/Target/usbd_conf.o + 0x08008cf0 HAL_PCD_SuspendCallback + .text.HAL_PCD_ResumeCallback + 0x08008d24 0x1c ./USB_DEVICE/Target/usbd_conf.o + 0x08008d24 HAL_PCD_ResumeCallback + .text.USBD_LL_Init + 0x08008d40 0xb4 ./USB_DEVICE/Target/usbd_conf.o + 0x08008d40 USBD_LL_Init + .text.USBD_LL_Start + 0x08008df4 0x36 ./USB_DEVICE/Target/usbd_conf.o + 0x08008df4 USBD_LL_Start + .text.USBD_LL_OpenEP + 0x08008e2a 0x4c ./USB_DEVICE/Target/usbd_conf.o + 0x08008e2a USBD_LL_OpenEP + .text.USBD_LL_CloseEP + 0x08008e76 0x3e ./USB_DEVICE/Target/usbd_conf.o + 0x08008e76 USBD_LL_CloseEP + .text.USBD_LL_StallEP + 0x08008eb4 0x3e ./USB_DEVICE/Target/usbd_conf.o + 0x08008eb4 USBD_LL_StallEP + .text.USBD_LL_ClearStallEP + 0x08008ef2 0x3e ./USB_DEVICE/Target/usbd_conf.o + 0x08008ef2 USBD_LL_ClearStallEP + .text.USBD_LL_IsStallEP + 0x08008f30 0x56 ./USB_DEVICE/Target/usbd_conf.o + 0x08008f30 USBD_LL_IsStallEP + .text.USBD_LL_SetUSBAddress + 0x08008f86 0x3e ./USB_DEVICE/Target/usbd_conf.o + 0x08008f86 USBD_LL_SetUSBAddress + .text.USBD_LL_Transmit + 0x08008fc4 0x46 ./USB_DEVICE/Target/usbd_conf.o + 0x08008fc4 USBD_LL_Transmit + .text.USBD_LL_PrepareReceive + 0x0800900a 0x46 ./USB_DEVICE/Target/usbd_conf.o + 0x0800900a USBD_LL_PrepareReceive + .text.USBD_LL_GetRxDataSize + 0x08009050 0x26 ./USB_DEVICE/Target/usbd_conf.o + 0x08009050 USBD_LL_GetRxDataSize + *fill* 0x08009076 0x2 + .text.USBD_static_malloc + 0x08009078 0x18 ./USB_DEVICE/Target/usbd_conf.o + 0x08009078 USBD_static_malloc + .text.USBD_static_free + 0x08009090 0x12 ./USB_DEVICE/Target/usbd_conf.o + 0x08009090 USBD_static_free + .text.HAL_PCDEx_SetConnectionState + 0x080090a2 0x16 ./USB_DEVICE/Target/usbd_conf.o + 0x080090a2 HAL_PCDEx_SetConnectionState + .text.USBD_Get_USB_Status + 0x080090b8 0x58 ./USB_DEVICE/Target/usbd_conf.o + .text.sprintf 0x08009110 0x44 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + 0x08009110 siprintf + 0x08009110 sprintf + .text.memset 0x08009154 0x10 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + 0x08009154 memset + .text.__errno 0x08009164 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + 0x08009164 __errno + .text.__libc_init_array + 0x08009170 0x48 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + 0x08009170 __libc_init_array + .text.__retarget_lock_acquire_recursive + 0x080091b8 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + 0x080091b8 __retarget_lock_acquire_recursive + .text.__retarget_lock_release_recursive + 0x080091ba 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + 0x080091ba __retarget_lock_release_recursive + .text._free_r 0x080091bc 0x90 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) + 0x080091bc _free_r + .text.sbrk_aligned + 0x0800924c 0x44 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + .text._malloc_r + 0x08009290 0x100 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + 0x08009290 _malloc_r + .text.__malloc_lock + 0x08009390 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + 0x08009390 __malloc_lock + .text.__malloc_unlock + 0x0800939c 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + 0x0800939c __malloc_unlock + .text.__ssputs_r + 0x080093a8 0xb6 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + 0x080093a8 __ssputs_r + *fill* 0x0800945e 0x2 + .text._svfprintf_r + 0x08009460 0x1f8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + 0x08009460 _svfiprintf_r + 0x08009460 _svfprintf_r + .text._printf_common + 0x08009658 0xe4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x08009658 _printf_common + .text._printf_i + 0x0800973c 0x23c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x0800973c _printf_i + .text.memmove 0x08009978 0x34 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) + 0x08009978 memmove + .text._sbrk_r 0x080099ac 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) + 0x080099ac _sbrk_r + .text.memchr 0x080099cc 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + 0x080099cc memchr + .text.memcpy 0x080099e8 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + 0x080099e8 memcpy + .text._realloc_r + 0x08009a04 0x5c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) + 0x08009a04 _realloc_r + .text._malloc_usable_size_r + 0x08009a60 0x10 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) + 0x08009a60 _malloc_usable_size_r + *(.glue_7) + .glue_7 0x08009a70 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x08009a70 0x0 linker stubs + *(.eh_frame) + .eh_frame 0x08009a70 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.init) + .init 0x08009a70 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08009a70 _init + .init 0x08009a74 0x8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + *(.fini) + .fini 0x08009a7c 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08009a7c _fini + .fini 0x08009a80 0x8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x08009a88 . = ALIGN (0x4) + 0x08009a88 _etext = . + +.vfp11_veneer 0x08009a88 0x0 + .vfp11_veneer 0x08009a88 0x0 linker stubs + +.v4_bx 0x08009a88 0x0 + .v4_bx 0x08009a88 0x0 linker stubs + +.iplt 0x08009a88 0x0 + .iplt 0x08009a88 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.rodata 0x08009a88 0xb0 + 0x08009a88 . = ALIGN (0x4) + *(.rodata) + .rodata 0x08009a88 0x10 ./Core/Src/main.o + .rodata 0x08009a98 0x46 ./USB_DEVICE/App/usbd_desc.o + *(.rodata*) + *fill* 0x08009ade 0x2 + .rodata.AHBPrescTable + 0x08009ae0 0x10 ./Core/Src/system_stm32f1xx.o + 0x08009ae0 AHBPrescTable + .rodata.aPLLMULFactorTable.1 + 0x08009af0 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .rodata.aPredivFactorTable.0 + 0x08009b00 0x2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .rodata._svfprintf_r.str1.1 + 0x08009b02 0x33 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + 0x11 (size before relaxing) + .rodata._printf_i.str1.1 + 0x08009b35 0x22 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x08009b58 . = ALIGN (0x4) + *fill* 0x08009b35 0x3 + +.ARM.extab 0x08009b38 0x0 + 0x08009b38 . = ALIGN (0x4) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x08009b38 . = ALIGN (0x4) + +.ARM 0x08009b38 0x0 + 0x08009b38 . = ALIGN (0x4) + 0x08009b38 __exidx_start = . + *(.ARM.exidx*) + 0x08009b38 __exidx_end = . + 0x08009b38 . = ALIGN (0x4) + +.preinit_array 0x08009b38 0x0 + 0x08009b38 . = ALIGN (0x4) + 0x08009b38 PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x08009b38 PROVIDE (__preinit_array_end = .) + 0x08009b38 . = ALIGN (0x4) + +.init_array 0x08009b38 0x4 + 0x08009b38 . = ALIGN (0x4) + 0x08009b38 PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x08009b38 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x08009b3c PROVIDE (__init_array_end = .) + 0x08009b3c . = ALIGN (0x4) + +.fini_array 0x08009b3c 0x4 + 0x08009b3c . = ALIGN (0x4) + [!provide] PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x08009b3c 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + [!provide] PROVIDE (__fini_array_end = .) + 0x08009b40 . = ALIGN (0x4) + 0x08009b40 _sidata = LOADADDR (.data) + +.rel.dyn 0x08009b40 0x0 + .rel.iplt 0x08009b40 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.data 0x20000000 0x1cc load address 0x08009b40 + 0x20000000 . = ALIGN (0x4) + 0x20000000 _sdata = . + *(.data) + *(.data*) + .data.SystemCoreClock + 0x20000000 0x4 ./Core/Src/system_stm32f1xx.o + 0x20000000 SystemCoreClock + .data.uwTickPrio + 0x20000004 0x4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x20000004 uwTickPrio + .data.uwTickFreq + 0x20000008 0x1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x20000008 uwTickFreq + *fill* 0x20000009 0x3 + .data.USBD_CDC_DeviceQualifierDesc + 0x2000000c 0xa ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + *fill* 0x20000016 0x2 + .data.USBD_CDC + 0x20000018 0x38 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x20000018 USBD_CDC + .data.USBD_CDC_CfgHSDesc + 0x20000050 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x20000050 USBD_CDC_CfgHSDesc + *fill* 0x20000093 0x1 + .data.USBD_CDC_CfgFSDesc + 0x20000094 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x20000094 USBD_CDC_CfgFSDesc + *fill* 0x200000d7 0x1 + .data.USBD_CDC_OtherSpeedCfgDesc + 0x200000d8 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x200000d8 USBD_CDC_OtherSpeedCfgDesc + *fill* 0x2000011b 0x1 + .data.USBD_Interface_fops_FS + 0x2000011c 0x10 ./USB_DEVICE/App/usbd_cdc_if.o + 0x2000011c USBD_Interface_fops_FS + .data.FS_Desc 0x2000012c 0x1c ./USB_DEVICE/App/usbd_desc.o + 0x2000012c FS_Desc + .data.USBD_FS_DeviceDesc + 0x20000148 0x12 ./USB_DEVICE/App/usbd_desc.o + 0x20000148 USBD_FS_DeviceDesc + *fill* 0x2000015a 0x2 + .data.USBD_LangIDDesc + 0x2000015c 0x4 ./USB_DEVICE/App/usbd_desc.o + 0x2000015c USBD_LangIDDesc + .data.USBD_StringSerial + 0x20000160 0x1a ./USB_DEVICE/App/usbd_desc.o + 0x20000160 USBD_StringSerial + *fill* 0x2000017a 0x2 + .data._impure_ptr + 0x2000017c 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + 0x2000017c _impure_ptr + .data._impure_data + 0x20000180 0x4c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + 0x20000180 _impure_data + *(.RamFunc) + *(.RamFunc*) + 0x200001cc . = ALIGN (0x4) + 0x200001cc _edata = . + +.igot.plt 0x200001cc 0x0 load address 0x08009d0c + .igot.plt 0x200001cc 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x200001cc . = ALIGN (0x4) + +.bss 0x200001cc 0x1584 load address 0x08009d0c + 0x200001cc _sbss = . + 0x200001cc __bss_start__ = _sbss + *(.bss) + .bss 0x200001cc 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.bss*) + .bss.hadc1 0x200001e8 0x30 ./Core/Src/main.o + 0x200001e8 hadc1 + .bss.htim1 0x20000218 0x48 ./Core/Src/main.o + 0x20000218 htim1 + .bss.htim2 0x20000260 0x48 ./Core/Src/main.o + 0x20000260 htim2 + .bss.htim3 0x200002a8 0x48 ./Core/Src/main.o + 0x200002a8 htim3 + .bss.htim4 0x200002f0 0x48 ./Core/Src/main.o + 0x200002f0 htim4 + .bss.c10ms.2 0x20000338 0x1 ./Core/Src/main.o + .bss.c100ms.1 0x20000339 0x1 ./Core/Src/main.o + .bss.c1s.0 0x2000033a 0x1 ./Core/Src/main.o + *fill* 0x2000033b 0x1 + .bss.__sbrk_heap_end + 0x2000033c 0x4 ./Core/Src/sysmem.o + .bss.uwTick 0x20000340 0x4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x20000340 uwTick + .bss.cfgidx.0 0x20000344 0x1 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + *fill* 0x20000345 0x3 + .bss.hUsbDeviceFS + 0x20000348 0x2c4 ./USB_DEVICE/App/usb_device.o + 0x20000348 hUsbDeviceFS + .bss.UserRxBufferFS + 0x2000060c 0x400 ./USB_DEVICE/App/usbd_cdc_if.o + 0x2000060c UserRxBufferFS + .bss.UserTxBufferFS + 0x20000a0c 0x400 ./USB_DEVICE/App/usbd_cdc_if.o + 0x20000a0c UserTxBufferFS + .bss.rx_fifo 0x20000e0c 0x100 ./USB_DEVICE/App/usbd_cdc_if.o + .bss.rx_head 0x20000f0c 0x2 ./USB_DEVICE/App/usbd_cdc_if.o + .bss.rx_tail 0x20000f0e 0x2 ./USB_DEVICE/App/usbd_cdc_if.o + .bss.USBD_StrDesc + 0x20000f10 0x200 ./USB_DEVICE/App/usbd_desc.o + 0x20000f10 USBD_StrDesc + .bss.hpcd_USB_FS + 0x20001110 0x2d8 ./USB_DEVICE/Target/usbd_conf.o + 0x20001110 hpcd_USB_FS + .bss.mem.0 0x200013e8 0x220 ./USB_DEVICE/Target/usbd_conf.o + .bss.__sf 0x20001608 0x138 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + 0x20001608 __sf + .bss.errno 0x20001740 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + 0x20001740 errno + .bss.__lock___malloc_recursive_mutex + 0x20001744 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + 0x20001744 __lock___malloc_recursive_mutex + *fill* 0x20001745 0x3 + .bss.__malloc_sbrk_start + 0x20001748 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + 0x20001748 __malloc_sbrk_start + .bss.__malloc_free_list + 0x2000174c 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + 0x2000174c __malloc_free_list + *(COMMON) + 0x20001750 . = ALIGN (0x4) + 0x20001750 _ebss = . + 0x20001750 __bss_end__ = _ebss + +._user_heap_stack + 0x20001750 0x600 load address 0x08009d0c + 0x20001750 . = ALIGN (0x8) + [!provide] PROVIDE (end = .) + 0x20001750 PROVIDE (_end = .) + 0x20001950 . = (. + _Min_Heap_Size) + *fill* 0x20001750 0x200 + 0x20001d50 . = (. + _Min_Stack_Size) + *fill* 0x20001950 0x400 + 0x20001d50 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) + +.ARM.attributes + 0x00000000 0x29 + *(.ARM.attributes) + .ARM.attributes + 0x00000000 0x1d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .ARM.attributes + 0x0000001d 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .ARM.attributes + 0x0000004a 0x2d ./Core/Src/main.o + .ARM.attributes + 0x00000077 0x2d ./Core/Src/stm32f1xx_hal_msp.o + .ARM.attributes + 0x000000a4 0x2d ./Core/Src/stm32f1xx_it.o + .ARM.attributes + 0x000000d1 0x2d ./Core/Src/sysmem.o + .ARM.attributes + 0x000000fe 0x2d ./Core/Src/system_stm32f1xx.o + .ARM.attributes + 0x0000012b 0x21 ./Core/Startup/startup_stm32f103c8tx.o + .ARM.attributes + 0x0000014c 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .ARM.attributes + 0x00000179 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .ARM.attributes + 0x000001a6 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .ARM.attributes + 0x000001d3 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .ARM.attributes + 0x00000200 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .ARM.attributes + 0x0000022d 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .ARM.attributes + 0x0000025a 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .ARM.attributes + 0x00000287 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .ARM.attributes + 0x000002b4 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .ARM.attributes + 0x000002e1 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .ARM.attributes + 0x0000030e 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .ARM.attributes + 0x0000033b 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .ARM.attributes + 0x00000368 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .ARM.attributes + 0x00000395 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .ARM.attributes + 0x000003c2 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .ARM.attributes + 0x000003ef 0x2d ./USB_DEVICE/App/usb_device.o + .ARM.attributes + 0x0000041c 0x2d ./USB_DEVICE/App/usbd_cdc_if.o + .ARM.attributes + 0x00000449 0x2d ./USB_DEVICE/App/usbd_desc.o + .ARM.attributes + 0x00000476 0x2d ./USB_DEVICE/Target/usbd_conf.o + .ARM.attributes + 0x000004a3 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .ARM.attributes + 0x000004d0 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + .ARM.attributes + 0x000004fd 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + .ARM.attributes + 0x0000052a 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + .ARM.attributes + 0x00000557 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + .ARM.attributes + 0x00000584 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + .ARM.attributes + 0x000005b1 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + .ARM.attributes + 0x000005de 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .ARM.attributes + 0x0000060b 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) + .ARM.attributes + 0x00000638 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + .ARM.attributes + 0x00000665 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + .ARM.attributes + 0x00000692 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + .ARM.attributes + 0x000006bf 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + .ARM.attributes + 0x000006ec 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) + .ARM.attributes + 0x00000719 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) + .ARM.attributes + 0x00000746 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + .ARM.attributes + 0x00000773 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + .ARM.attributes + 0x000007a0 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) + .ARM.attributes + 0x000007cd 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) + .ARM.attributes + 0x000007fa 0x1d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o +OUTPUT(AUTOM10.elf elf32-littlearm) +LOAD linker stubs +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a + +.debug_info 0x00000000 0x12100 + .debug_info 0x00000000 0x127c ./Core/Src/main.o + .debug_info 0x0000127c 0xc63 ./Core/Src/stm32f1xx_hal_msp.o + .debug_info 0x00001edf 0x609 ./Core/Src/stm32f1xx_it.o + .debug_info 0x000024e8 0x168 ./Core/Src/sysmem.o + .debug_info 0x00002650 0x222 ./Core/Src/system_stm32f1xx.o + .debug_info 0x00002872 0x30 ./Core/Startup/startup_stm32f103c8tx.o + .debug_info 0x000028a2 0x704 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_info 0x00002fa6 0xc50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_info 0x00003bf6 0xa87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_info 0x0000467d 0x5ab ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_info 0x00004c28 0x16dc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_info 0x00006304 0x6c3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_info 0x000069c7 0x7d5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_info 0x0000719c 0x3c0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_info 0x0000755c 0x2959 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_info 0x00009eb5 0x149b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_info 0x0000b350 0x17ae ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_info 0x0000cafe 0x1043 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_info 0x0000db41 0xa52 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_info 0x0000e593 0x91c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_info 0x0000eeaf 0x6a0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_info 0x0000f54f 0x63d ./USB_DEVICE/App/usb_device.o + .debug_info 0x0000fb8c 0x8c6 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_info 0x00010452 0x44a ./USB_DEVICE/App/usbd_desc.o + .debug_info 0x0001089c 0x1864 ./USB_DEVICE/Target/usbd_conf.o + +.debug_abbrev 0x00000000 0x3383 + .debug_abbrev 0x00000000 0x2c9 ./Core/Src/main.o + .debug_abbrev 0x000002c9 0x211 ./Core/Src/stm32f1xx_hal_msp.o + .debug_abbrev 0x000004da 0x193 ./Core/Src/stm32f1xx_it.o + .debug_abbrev 0x0000066d 0xbc ./Core/Src/sysmem.o + .debug_abbrev 0x00000729 0x13f ./Core/Src/system_stm32f1xx.o + .debug_abbrev 0x00000868 0x24 ./Core/Startup/startup_stm32f103c8tx.o + .debug_abbrev 0x0000088c 0x201 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_abbrev 0x00000a8d 0x225 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_abbrev 0x00000cb2 0x2f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_abbrev 0x00000faa 0x1ca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_abbrev 0x00001174 0x2d6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_abbrev 0x0000144a 0x189 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_abbrev 0x000015d3 0x2b3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_abbrev 0x00001886 0x188 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_abbrev 0x00001a0e 0x277 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_abbrev 0x00001c85 0x282 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_abbrev 0x00001f07 0x1de ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_abbrev 0x000020e5 0x2d3 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_abbrev 0x000023b8 0x24a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_abbrev 0x00002602 0x26b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_abbrev 0x0000286d 0x192 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_abbrev 0x000029ff 0x18d ./USB_DEVICE/App/usb_device.o + .debug_abbrev 0x00002b8c 0x2e2 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_abbrev 0x00002e6e 0x1ff ./USB_DEVICE/App/usbd_desc.o + .debug_abbrev 0x0000306d 0x316 ./USB_DEVICE/Target/usbd_conf.o + +.debug_aranges 0x00000000 0x1128 + .debug_aranges + 0x00000000 0x68 ./Core/Src/main.o + .debug_aranges + 0x00000068 0x48 ./Core/Src/stm32f1xx_hal_msp.o + .debug_aranges + 0x000000b0 0x68 ./Core/Src/stm32f1xx_it.o + .debug_aranges + 0x00000118 0x20 ./Core/Src/sysmem.o + .debug_aranges + 0x00000138 0x28 ./Core/Src/system_stm32f1xx.o + .debug_aranges + 0x00000160 0x28 ./Core/Startup/startup_stm32f103c8tx.o + .debug_aranges + 0x00000188 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_aranges + 0x00000268 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_aranges + 0x00000358 0x100 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_aranges + 0x00000458 0x58 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_aranges + 0x000004b0 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_aranges + 0x000005f0 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_aranges + 0x00000628 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_aranges + 0x000006b8 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_aranges + 0x000006e8 0x3d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_aranges + 0x00000ab8 0x168 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_aranges + 0x00000c20 0xf8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_aranges + 0x00000d18 0x90 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_aranges + 0x00000da8 0xb8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_aranges + 0x00000e60 0x88 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_aranges + 0x00000ee8 0x50 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_aranges + 0x00000f38 0x20 ./USB_DEVICE/App/usb_device.o + .debug_aranges + 0x00000f58 0x58 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_aranges + 0x00000fb0 0x60 ./USB_DEVICE/App/usbd_desc.o + .debug_aranges + 0x00001010 0x118 ./USB_DEVICE/Target/usbd_conf.o + +.debug_rnglists + 0x00000000 0xd03 + .debug_rnglists + 0x00000000 0x50 ./Core/Src/main.o + .debug_rnglists + 0x00000050 0x34 ./Core/Src/stm32f1xx_hal_msp.o + .debug_rnglists + 0x00000084 0x49 ./Core/Src/stm32f1xx_it.o + .debug_rnglists + 0x000000cd 0x13 ./Core/Src/sysmem.o + .debug_rnglists + 0x000000e0 0x1a ./Core/Src/system_stm32f1xx.o + .debug_rnglists + 0x000000fa 0x19 ./Core/Startup/startup_stm32f103c8tx.o + .debug_rnglists + 0x00000113 0xa3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_rnglists + 0x000001b6 0xbc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_rnglists + 0x00000272 0xbb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_rnglists + 0x0000032d 0x3f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_rnglists + 0x0000036c 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_rnglists + 0x00000460 0x26 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_rnglists + 0x00000486 0x6c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_rnglists + 0x000004f2 0x21 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_rnglists + 0x00000513 0x31a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_rnglists + 0x0000082d 0x125 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_rnglists + 0x00000952 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_rnglists + 0x00000a0f 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_rnglists + 0x00000a79 0x89 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_rnglists + 0x00000b02 0x68 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_rnglists + 0x00000b6a 0x37 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_rnglists + 0x00000ba1 0x13 ./USB_DEVICE/App/usb_device.o + .debug_rnglists + 0x00000bb4 0x3e ./USB_DEVICE/App/usbd_cdc_if.o + .debug_rnglists + 0x00000bf2 0x43 ./USB_DEVICE/App/usbd_desc.o + .debug_rnglists + 0x00000c35 0xce ./USB_DEVICE/Target/usbd_conf.o + +.debug_macro 0x00000000 0x1ac13 + .debug_macro 0x00000000 0x389 ./Core/Src/main.o + .debug_macro 0x00000389 0xacc ./Core/Src/main.o + .debug_macro 0x00000e55 0x221 ./Core/Src/main.o + .debug_macro 0x00001076 0x2e ./Core/Src/main.o + .debug_macro 0x000010a4 0x22 ./Core/Src/main.o + .debug_macro 0x000010c6 0x22 ./Core/Src/main.o + .debug_macro 0x000010e8 0x8e ./Core/Src/main.o + .debug_macro 0x00001176 0x51 ./Core/Src/main.o + .debug_macro 0x000011c7 0x103 ./Core/Src/main.o + .debug_macro 0x000012ca 0x6a ./Core/Src/main.o + .debug_macro 0x00001334 0x1df ./Core/Src/main.o + .debug_macro 0x00001513 0x1c ./Core/Src/main.o + .debug_macro 0x0000152f 0x22 ./Core/Src/main.o + .debug_macro 0x00001551 0xbd ./Core/Src/main.o + .debug_macro 0x0000160e 0xd23 ./Core/Src/main.o + .debug_macro 0x00002331 0xe09e ./Core/Src/main.o + .debug_macro 0x000103cf 0x6d ./Core/Src/main.o + .debug_macro 0x0001043c 0x34a2 ./Core/Src/main.o + .debug_macro 0x000138de 0x190 ./Core/Src/main.o + .debug_macro 0x00013a6e 0x5c ./Core/Src/main.o + .debug_macro 0x00013aca 0x5bc ./Core/Src/main.o + .debug_macro 0x00014086 0x289 ./Core/Src/main.o + .debug_macro 0x0001430f 0x1cb ./Core/Src/main.o + .debug_macro 0x000144da 0x114 ./Core/Src/main.o + .debug_macro 0x000145ee 0x1b2 ./Core/Src/main.o + .debug_macro 0x000147a0 0x27 ./Core/Src/main.o + .debug_macro 0x000147c7 0x136 ./Core/Src/main.o + .debug_macro 0x000148fd 0x1bc ./Core/Src/main.o + .debug_macro 0x00014ab9 0x34 ./Core/Src/main.o + .debug_macro 0x00014aed 0x3c ./Core/Src/main.o + .debug_macro 0x00014b29 0x57 ./Core/Src/main.o + .debug_macro 0x00014b80 0x46a ./Core/Src/main.o + .debug_macro 0x00014fea 0x1b5 ./Core/Src/main.o + .debug_macro 0x0001519f 0x87 ./Core/Src/main.o + .debug_macro 0x00015226 0x240 ./Core/Src/main.o + .debug_macro 0x00015466 0x140 ./Core/Src/main.o + .debug_macro 0x000155a6 0x8ed ./Core/Src/main.o + .debug_macro 0x00015e93 0xb7 ./Core/Src/main.o + .debug_macro 0x00015f4a 0x242 ./Core/Src/main.o + .debug_macro 0x0001618c 0x83 ./Core/Src/main.o + .debug_macro 0x0001620f 0x61 ./Core/Src/main.o + .debug_macro 0x00016270 0x24 ./Core/Src/main.o + .debug_macro 0x00016294 0x43 ./Core/Src/main.o + .debug_macro 0x000162d7 0x34 ./Core/Src/main.o + .debug_macro 0x0001630b 0x16 ./Core/Src/main.o + .debug_macro 0x00016321 0x3c ./Core/Src/main.o + .debug_macro 0x0001635d 0x370 ./Core/Src/main.o + .debug_macro 0x000166cd 0x10 ./Core/Src/main.o + .debug_macro 0x000166dd 0x16 ./Core/Src/main.o + .debug_macro 0x000166f3 0x4a ./Core/Src/main.o + .debug_macro 0x0001673d 0x34 ./Core/Src/main.o + .debug_macro 0x00016771 0x10 ./Core/Src/main.o + .debug_macro 0x00016781 0x58 ./Core/Src/main.o + .debug_macro 0x000167d9 0x8e ./Core/Src/main.o + .debug_macro 0x00016867 0x1c ./Core/Src/main.o + .debug_macro 0x00016883 0x185 ./Core/Src/main.o + .debug_macro 0x00016a08 0x16 ./Core/Src/main.o + .debug_macro 0x00016a1e 0x16 ./Core/Src/main.o + .debug_macro 0x00016a34 0x146 ./Core/Src/main.o + .debug_macro 0x00016b7a 0x16 ./Core/Src/main.o + .debug_macro 0x00016b90 0x16 ./Core/Src/main.o + .debug_macro 0x00016ba6 0x29 ./Core/Src/main.o + .debug_macro 0x00016bcf 0x16 ./Core/Src/main.o + .debug_macro 0x00016be5 0x20 ./Core/Src/main.o + .debug_macro 0x00016c05 0x5f ./Core/Src/main.o + .debug_macro 0x00016c64 0x1c8 ./Core/Src/main.o + .debug_macro 0x00016e2c 0x8f ./Core/Src/main.o + .debug_macro 0x00016ebb 0x10 ./Core/Src/main.o + .debug_macro 0x00016ecb 0x1db ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x000170a6 0x1e5 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x0001728b 0x112 ./Core/Src/sysmem.o + .debug_macro 0x0001739d 0x23c ./Core/Src/sysmem.o + .debug_macro 0x000175d9 0x1d1 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x000177aa 0x1f5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x0001799f 0x1ee ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_macro 0x00017b8d 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00017d5e 0x23c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00017f9a 0x1dd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00018177 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00018348 0x1e3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x0001852b 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x000186fc 0x1d2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x000188ce 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00018a9f 0x1d1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00018c70 0x36a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00018fda 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00019078 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x0001918a 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x000191e0 0x351 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00019531 0x1ce ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x000196ff 0x35b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00019a5a 0x357 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00019db1 0x390 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0001a141 0x22 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0001a163 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x0001a179 0x37c ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x0001a4f5 0x38e ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0001a883 0x1c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x0001a89f 0x374 ./USB_DEVICE/Target/usbd_conf.o + +.debug_line 0x00000000 0x154bc + .debug_line 0x00000000 0xe9d ./Core/Src/main.o + .debug_line 0x00000e9d 0x8ca ./Core/Src/stm32f1xx_hal_msp.o + .debug_line 0x00001767 0x824 ./Core/Src/stm32f1xx_it.o + .debug_line 0x00001f8b 0x588 ./Core/Src/sysmem.o + .debug_line 0x00002513 0x7db ./Core/Src/system_stm32f1xx.o + .debug_line 0x00002cee 0x78 ./Core/Startup/startup_stm32f103c8tx.o + .debug_line 0x00002d66 0xa0c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_line 0x00003772 0x1031 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_line 0x000047a3 0xbd6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_line 0x00005379 0xa69 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_line 0x00005de2 0x1391 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_line 0x00007173 0x7d6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_line 0x00007949 0xec5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_line 0x0000880e 0x976 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_line 0x00009184 0x34fa ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_line 0x0000c67e 0x18d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_line 0x0000df4e 0x117c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_line 0x0000f0ca 0xd65 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_line 0x0000fe2f 0xdba ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_line 0x00010be9 0x1004 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_line 0x00011bed 0xa70 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_line 0x0001265d 0xa40 ./USB_DEVICE/App/usb_device.o + .debug_line 0x0001309d 0xb1a ./USB_DEVICE/App/usbd_cdc_if.o + .debug_line 0x00013bb7 0xae9 ./USB_DEVICE/App/usbd_desc.o + .debug_line 0x000146a0 0xe1c ./USB_DEVICE/Target/usbd_conf.o + +.debug_str 0x00000000 0x9207d + .debug_str 0x00000000 0x9207d ./Core/Src/main.o + 0x8e132 (size before relaxing) + .debug_str 0x0009207d 0x895ce ./Core/Src/stm32f1xx_hal_msp.o + .debug_str 0x0009207d 0x892f8 ./Core/Src/stm32f1xx_it.o + .debug_str 0x0009207d 0x7715 ./Core/Src/sysmem.o + .debug_str 0x0009207d 0x88f2d ./Core/Src/system_stm32f1xx.o + .debug_str 0x0009207d 0x6f ./Core/Startup/startup_stm32f103c8tx.o + .debug_str 0x0009207d 0x89660 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_str 0x0009207d 0x89611 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_str 0x0009207d 0x895ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_str 0x0009207d 0x892b3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_str 0x0009207d 0x8984a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_str 0x0009207d 0x893ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_str 0x0009207d 0x8935c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_str 0x0009207d 0x890ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_str 0x0009207d 0x8a35e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_str 0x0009207d 0x89b6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_str 0x0009207d 0x893fe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_str 0x0009207d 0x8de99 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_str 0x0009207d 0x8d7c9 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_str 0x0009207d 0x8d6e3 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_str 0x0009207d 0x8d610 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_str 0x0009207d 0x8d99b ./USB_DEVICE/App/usb_device.o + .debug_str 0x0009207d 0x8da12 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_str 0x0009207d 0x8d54c ./USB_DEVICE/App/usbd_desc.o + .debug_str 0x0009207d 0x8e426 ./USB_DEVICE/Target/usbd_conf.o + +.comment 0x00000000 0x43 + .comment 0x00000000 0x43 ./Core/Src/main.o + 0x44 (size before relaxing) + .comment 0x00000043 0x44 ./Core/Src/stm32f1xx_hal_msp.o + .comment 0x00000043 0x44 ./Core/Src/stm32f1xx_it.o + .comment 0x00000043 0x44 ./Core/Src/sysmem.o + .comment 0x00000043 0x44 ./Core/Src/system_stm32f1xx.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .comment 0x00000043 0x44 ./USB_DEVICE/App/usb_device.o + .comment 0x00000043 0x44 ./USB_DEVICE/App/usbd_cdc_if.o + .comment 0x00000043 0x44 ./USB_DEVICE/App/usbd_desc.o + .comment 0x00000043 0x44 ./USB_DEVICE/Target/usbd_conf.o + +.debug_frame 0x00000000 0x4b6c + .debug_frame 0x00000000 0x160 ./Core/Src/main.o + .debug_frame 0x00000160 0xf4 ./Core/Src/stm32f1xx_hal_msp.o + .debug_frame 0x00000254 0x120 ./Core/Src/stm32f1xx_it.o + .debug_frame 0x00000374 0x34 ./Core/Src/sysmem.o + .debug_frame 0x000003a8 0x58 ./Core/Src/system_stm32f1xx.o + .debug_frame 0x00000400 0x334 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_frame 0x00000734 0x40c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o + .debug_frame 0x00000b40 0x428 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_frame 0x00000f68 0x14c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_frame 0x000010b4 0x594 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_frame 0x00001648 0xb0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_frame 0x000016f8 0x218 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_frame 0x00001910 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_frame 0x00001990 0x11b8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_frame 0x00002b48 0x638 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_frame 0x00003180 0x470 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_frame 0x000035f0 0x248 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_frame 0x00003838 0x300 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_frame 0x00003b38 0x218 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_frame 0x00003d50 0x10c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_frame 0x00003e5c 0x2c ./USB_DEVICE/App/usb_device.o + .debug_frame 0x00003e88 0x12c ./USB_DEVICE/App/usbd_cdc_if.o + .debug_frame 0x00003fb4 0x160 ./USB_DEVICE/App/usbd_desc.o + .debug_frame 0x00004114 0x4a4 ./USB_DEVICE/Target/usbd_conf.o + .debug_frame 0x000045b8 0x144 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .debug_frame 0x000046fc 0x74 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + .debug_frame 0x00004770 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + .debug_frame 0x00004790 0x38 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + .debug_frame 0x000047c8 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + .debug_frame 0x000047e8 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + .debug_frame 0x00004814 0xb0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .debug_frame 0x000048c4 0x38 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) + .debug_frame 0x000048fc 0x50 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + .debug_frame 0x0000494c 0x30 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + .debug_frame 0x0000497c 0x90 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + .debug_frame 0x00004a0c 0x60 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + .debug_frame 0x00004a6c 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) + .debug_frame 0x00004a94 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) + .debug_frame 0x00004ac0 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + .debug_frame 0x00004ae8 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + .debug_frame 0x00004b10 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) + .debug_frame 0x00004b4c 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) + +.debug_line_str + 0x00000000 0x53 + .debug_line_str + 0x00000000 0x53 ./Core/Startup/startup_stm32f103c8tx.o diff --git a/workspace/AUTOM10/Debug/Core/Src/main.cyclo b/workspace/AUTOM10/Debug/Core/Src/main.cyclo index a98fed8..17209eb 100644 --- a/workspace/AUTOM10/Debug/Core/Src/main.cyclo +++ b/workspace/AUTOM10/Debug/Core/Src/main.cyclo @@ -1,10 +1,10 @@ -../Core/Src/main.c:69:6:HAL_SYSTICK_Callback 4 -../Core/Src/main.c:92:5:main 3 -../Core/Src/main.c:159:6:SystemClock_Config 4 -../Core/Src/main.c:207:13:MX_ADC1_Init 3 -../Core/Src/main.c:254:13:MX_TIM1_Init 9 -../Core/Src/main.c:339:13:MX_TIM2_Init 9 -../Core/Src/main.c:415:13:MX_TIM3_Init 9 -../Core/Src/main.c:489:13:MX_TIM4_Init 9 -../Core/Src/main.c:563:13:MX_GPIO_Init 1 -../Core/Src/main.c:599:6:Error_Handler 1 +../Core/Src/main.c:69:6:HAL_SYSTICK_Callback 4 +../Core/Src/main.c:92:5:main 3 +../Core/Src/main.c:175:6:SystemClock_Config 4 +../Core/Src/main.c:223:13:MX_ADC1_Init 3 +../Core/Src/main.c:270:13:MX_TIM1_Init 9 +../Core/Src/main.c:355:13:MX_TIM2_Init 9 +../Core/Src/main.c:431:13:MX_TIM3_Init 9 +../Core/Src/main.c:505:13:MX_TIM4_Init 9 +../Core/Src/main.c:579:13:MX_GPIO_Init 1 +../Core/Src/main.c:615:6:Error_Handler 1 diff --git a/workspace/AUTOM10/Debug/Core/Src/main.d b/workspace/AUTOM10/Debug/Core/Src/main.d index fd30f88..12a3b9a 100644 --- a/workspace/AUTOM10/Debug/Core/Src/main.d +++ b/workspace/AUTOM10/Debug/Core/Src/main.d @@ -1,79 +1,79 @@ -Core/Src/main.o: ../Core/Src/main.c ../Core/Inc/main.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ - ../Core/Inc/stm32f1xx_hal_conf.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ - ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ - ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ - ../Drivers/CMSIS/Include/core_cm3.h \ - ../Drivers/CMSIS/Include/cmsis_version.h \ - ../Drivers/CMSIS/Include/cmsis_compiler.h \ - ../Drivers/CMSIS/Include/cmsis_gcc.h \ - ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \ - ../USB_DEVICE/App/usb_device.h \ - ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ - ../USB_DEVICE/Target/usbd_conf.h ../USB_DEVICE/App/usbd_cdc_if.h \ - ../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h \ - ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ - ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ - ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ - ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ - ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h -../Core/Inc/main.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: -../Core/Inc/stm32f1xx_hal_conf.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: -../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: -../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: -../Drivers/CMSIS/Include/core_cm3.h: -../Drivers/CMSIS/Include/cmsis_version.h: -../Drivers/CMSIS/Include/cmsis_compiler.h: -../Drivers/CMSIS/Include/cmsis_gcc.h: -../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: -../USB_DEVICE/App/usb_device.h: -../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: -../USB_DEVICE/Target/usbd_conf.h: -../USB_DEVICE/App/usbd_cdc_if.h: -../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h: -../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: -../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: -../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: -../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: -../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: +Core/Src/main.o: ../Core/Src/main.c ../Core/Inc/main.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \ + ../USB_DEVICE/App/usb_device.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ + ../USB_DEVICE/Target/usbd_conf.h ../USB_DEVICE/App/usbd_cdc_if.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h +../Core/Inc/main.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: +../Core/Inc/stm32f1xx_hal_conf.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: +../Drivers/CMSIS/Include/core_cm3.h: +../Drivers/CMSIS/Include/cmsis_version.h: +../Drivers/CMSIS/Include/cmsis_compiler.h: +../Drivers/CMSIS/Include/cmsis_gcc.h: +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: +../USB_DEVICE/App/usb_device.h: +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: +../USB_DEVICE/Target/usbd_conf.h: +../USB_DEVICE/App/usbd_cdc_if.h: +../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h: +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: diff --git a/workspace/AUTOM10/Debug/Core/Src/main.o b/workspace/AUTOM10/Debug/Core/Src/main.o index df05a62520f23816d0cdec1aca0c6f29af640e14..08bfe969a25eb5e0f91ffea2b787b2fd03022453 100644 GIT binary patch delta 26414 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 z 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 z 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 "AUTOM10.list" - @echo 'Finished building: $@' - @echo ' ' - -# Other Targets -clean: - -$(RM) AUTOM10.elf AUTOM10.list AUTOM10.map default.size.stdout - -@echo ' ' - -secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST) - -fail-specified-linker-script-missing: - @echo 'Error: Cannot find the specified linker script. Check the linker settings in the build configuration.' - @exit 2 - -warn-no-linker-script-specified: - @echo 'Warning: No linker script specified. Check the linker settings in the build configuration.' - -.PHONY: all clean dependents main-build fail-specified-linker-script-missing warn-no-linker-script-specified - --include ../makefile.targets + + +# All Target +all: main-build + +# Main-build Target +main-build: AUTOM10.elf secondary-outputs + +# Tool invocations +AUTOM10.elf AUTOM10.map: $(OBJS) $(USER_OBJS) C:\progetti\AUTOM1\workspace\AUTOM10\STM32F103C8TX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-gcc -o "AUTOM10.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m3 -T"C:\progetti\AUTOM1\workspace\AUTOM10\STM32F103C8TX_FLASH.ld" --specs=nosys.specs -Wl,-Map="AUTOM10.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group + @echo 'Finished building target: $@' + @echo ' ' + +default.size.stdout: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-size $(EXECUTABLES) + @echo 'Finished building: $@' + @echo ' ' + +AUTOM10.list: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-objdump -h -S $(EXECUTABLES) > "AUTOM10.list" + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) AUTOM10.elf AUTOM10.list AUTOM10.map default.size.stdout + -@echo ' ' + +secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST) + +fail-specified-linker-script-missing: + @echo 'Error: Cannot find the specified linker script. Check the linker settings in the build configuration.' + @exit 2 + +warn-no-linker-script-specified: + @echo 'Warning: No linker script specified. Check the linker settings in the build configuration.' + +.PHONY: all clean dependents main-build fail-specified-linker-script-missing warn-no-linker-script-specified + +-include ../makefile.targets diff --git a/workspace/AUTOM10/Debug/objects.list b/workspace/AUTOM10/Debug/objects.list index 8356e14..033ced3 100644 --- a/workspace/AUTOM10/Debug/objects.list +++ b/workspace/AUTOM10/Debug/objects.list @@ -1,33 +1,33 @@ -"./Core/Src/main.o" -"./Core/Src/stm32f1xx_hal_msp.o" -"./Core/Src/stm32f1xx_it.o" -"./Core/Src/syscalls.o" -"./Core/Src/sysmem.o" -"./Core/Src/system_stm32f1xx.o" -"./Core/Startup/startup_stm32f103c8tx.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o" -"./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o" -"./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o" -"./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o" -"./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o" -"./USB_DEVICE/App/usb_device.o" -"./USB_DEVICE/App/usbd_cdc_if.o" -"./USB_DEVICE/App/usbd_desc.o" -"./USB_DEVICE/Target/usbd_conf.o" +"./Core/Src/main.o" +"./Core/Src/stm32f1xx_hal_msp.o" +"./Core/Src/stm32f1xx_it.o" +"./Core/Src/syscalls.o" +"./Core/Src/sysmem.o" +"./Core/Src/system_stm32f1xx.o" +"./Core/Startup/startup_stm32f103c8tx.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o" +"./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o" +"./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o" +"./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o" +"./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o" +"./USB_DEVICE/App/usb_device.o" +"./USB_DEVICE/App/usbd_cdc_if.o" +"./USB_DEVICE/App/usbd_desc.o" +"./USB_DEVICE/Target/usbd_conf.o" diff --git a/workspace/AUTOM10/Debug/objects.mk b/workspace/AUTOM10/Debug/objects.mk index b471e98..fca83df 100644 --- a/workspace/AUTOM10/Debug/objects.mk +++ b/workspace/AUTOM10/Debug/objects.mk @@ -1,9 +1,9 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (13.3.rel1) -################################################################################ - -USER_OBJS := - -LIBS := - +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (13.3.rel1) +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/workspace/AUTOM10/Debug/sources.mk b/workspace/AUTOM10/Debug/sources.mk index 353abfb..f1de920 100644 --- a/workspace/AUTOM10/Debug/sources.mk +++ b/workspace/AUTOM10/Debug/sources.mk @@ -1,26 +1,26 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (13.3.rel1) -################################################################################ - -ELF_SRCS := -OBJ_SRCS := -S_SRCS := -C_SRCS := -S_UPPER_SRCS := -O_SRCS := -CYCLO_FILES := -SIZE_OUTPUT := -OBJDUMP_LIST := -SU_FILES := -EXECUTABLES := -OBJS := -MAP_FILES := -S_DEPS := -S_UPPER_DEPS := -C_DEPS := - -# Every subdirectory with source files must be described here +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (13.3.rel1) +################################################################################ + +ELF_SRCS := +OBJ_SRCS := +S_SRCS := +C_SRCS := +S_UPPER_SRCS := +O_SRCS := +CYCLO_FILES := +SIZE_OUTPUT := +OBJDUMP_LIST := +SU_FILES := +EXECUTABLES := +OBJS := +MAP_FILES := +S_DEPS := +S_UPPER_DEPS := +C_DEPS := + +# Every subdirectory with source files must be described here SUBDIRS := \ Core/Src \ Core/Startup \ @@ -29,4 +29,4 @@ Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src \ Middlewares/ST/STM32_USB_Device_Library/Core/Src \ USB_DEVICE/App \ USB_DEVICE/Target \ - + diff --git a/workspace/AUTOM7/.settings/language.settings.xml b/workspace/AUTOM7/.settings/language.settings.xml index c5dc6af..dd96082 100644 --- a/workspace/AUTOM7/.settings/language.settings.xml +++ b/workspace/AUTOM7/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/workspace/AUTOM7/Core/Src/main.c b/workspace/AUTOM7/Core/Src/main.c index 06fd54e..c880d9b 100644 --- a/workspace/AUTOM7/Core/Src/main.c +++ b/workspace/AUTOM7/Core/Src/main.c @@ -120,6 +120,9 @@ int main(void) MX_USB_DEVICE_Init(); /* USER CODE BEGIN 2 */ //Force_TIM_GPIO_AFPP(); + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2); + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3); HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); diff --git a/workspace/AUTOM7/Debug/AUTOM7.elf b/workspace/AUTOM7/Debug/AUTOM7.elf deleted file mode 100644 index d405ca9c311632b3e6affe2b69037d703ddb9f3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 938356 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

cYSCot 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 bt9u!V!iRkLxe$MrZvWI)?&pm@`t$z)l!^@- diff --git a/workspace/AUTOM7/Debug/AUTOM7.list b/workspace/AUTOM7/Debug/AUTOM7.list index fcb04fc..4bfb758 100644 --- a/workspace/AUTOM7/Debug/AUTOM7.list +++ b/workspace/AUTOM7/Debug/AUTOM7.list @@ -1,22155 +1,22155 @@ - -AUTOM7.elf: file format elf32-littlearm - -Sections: -Idx Name Size VMA LMA File off Algn - 0 .isr_vector 0000010c 08000000 08000000 00001000 2**0 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 1 .text 00009080 0800010c 0800010c 0000110c 2**2 - CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .rodata 000000b0 0800918c 0800918c 0000a18c 2**2 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 3 .ARM.extab 00000000 0800923c 0800923c 0000b1cc 2**0 - CONTENTS, READONLY - 4 .ARM 00000000 0800923c 0800923c 0000b1cc 2**0 - CONTENTS, READONLY - 5 .preinit_array 00000000 0800923c 0800923c 0000b1cc 2**0 - CONTENTS, ALLOC, LOAD, DATA - 6 .init_array 00000004 0800923c 0800923c 0000a23c 2**2 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 7 .fini_array 00000004 08009240 08009240 0000a240 2**2 - CONTENTS, ALLOC, LOAD, READONLY, DATA - 8 .data 000001cc 20000000 08009244 0000b000 2**2 - CONTENTS, ALLOC, LOAD, DATA - 9 .bss 00001508 200001cc 08009410 0000b1cc 2**2 - ALLOC - 10 ._user_heap_stack 00000604 200016d4 08009410 0000b6d4 2**0 - ALLOC - 11 .ARM.attributes 00000029 00000000 00000000 0000b1cc 2**0 - CONTENTS, READONLY - 12 .debug_info 00010d1f 00000000 00000000 0000b1f5 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 13 .debug_abbrev 00003119 00000000 00000000 0001bf14 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 14 .debug_aranges 00001010 00000000 00000000 0001f030 2**3 - CONTENTS, READONLY, DEBUGGING, OCTETS - 15 .debug_rnglists 00000c27 00000000 00000000 00020040 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 16 .debug_macro 0001a248 00000000 00000000 00020c67 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 17 .debug_line 00013e43 00000000 00000000 0003aeaf 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 18 .debug_str 0008d17e 00000000 00000000 0004ecf2 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - 19 .comment 00000043 00000000 00000000 000dbe70 2**0 - CONTENTS, READONLY - 20 .debug_frame 000046b4 00000000 00000000 000dbeb4 2**2 - CONTENTS, READONLY, DEBUGGING, OCTETS - 21 .debug_line_str 00000052 00000000 00000000 000e0568 2**0 - CONTENTS, READONLY, DEBUGGING, OCTETS - -Disassembly of section .text: - -0800010c <__do_global_dtors_aux>: - 800010c: b510 push {r4, lr} - 800010e: 4c05 ldr r4, [pc, #20] @ (8000124 <__do_global_dtors_aux+0x18>) - 8000110: 7823 ldrb r3, [r4, #0] - 8000112: b933 cbnz r3, 8000122 <__do_global_dtors_aux+0x16> - 8000114: 4b04 ldr r3, [pc, #16] @ (8000128 <__do_global_dtors_aux+0x1c>) - 8000116: b113 cbz r3, 800011e <__do_global_dtors_aux+0x12> - 8000118: 4804 ldr r0, [pc, #16] @ (800012c <__do_global_dtors_aux+0x20>) - 800011a: f3af 8000 nop.w - 800011e: 2301 movs r3, #1 - 8000120: 7023 strb r3, [r4, #0] - 8000122: bd10 pop {r4, pc} - 8000124: 200001cc .word 0x200001cc - 8000128: 00000000 .word 0x00000000 - 800012c: 08009174 .word 0x08009174 - -08000130 : - 8000130: b508 push {r3, lr} - 8000132: 4b03 ldr r3, [pc, #12] @ (8000140 ) - 8000134: b11b cbz r3, 800013e - 8000136: 4903 ldr r1, [pc, #12] @ (8000144 ) - 8000138: 4803 ldr r0, [pc, #12] @ (8000148 ) - 800013a: f3af 8000 nop.w - 800013e: bd08 pop {r3, pc} - 8000140: 00000000 .word 0x00000000 - 8000144: 200001d0 .word 0x200001d0 - 8000148: 08009174 .word 0x08009174 - -0800014c

: -/** - * @brief The application entry point. - * @retval int - */ -int main(void) -{ - 800014c: b580 push {r7, lr} - 800014e: b09a sub sp, #104 @ 0x68 - 8000150: af00 add r7, sp, #0 - /* USER CODE END 1 */ - - /* MCU Configuration--------------------------------------------------------*/ - - /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ - HAL_Init(); - 8000152: f000 fc79 bl 8000a48 - /* USER CODE BEGIN Init */ - - /* USER CODE END Init */ - - /* Configure the system clock */ - SystemClock_Config(); - 8000156: f000 f861 bl 800021c - /* USER CODE BEGIN SysInit */ - - /* USER CODE END SysInit */ - - /* Initialize all configured peripherals */ - MX_GPIO_Init(); - 800015a: f000 fa99 bl 8000690 - MX_TIM2_Init(); - 800015e: f000 f8b7 bl 80002d0 - MX_TIM4_Init(); - 8000162: f000 f9f3 bl 800054c - MX_TIM3_Init(); - 8000166: f000 f94f bl 8000408 - MX_USB_DEVICE_Init(); - 800016a: f007 fe39 bl 8007de0 - /* USER CODE BEGIN 2 */ - //Force_TIM_GPIO_AFPP(); - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - 800016e: 2100 movs r1, #0 - 8000170: 4825 ldr r0, [pc, #148] @ (8000208 ) - 8000172: f003 f9f9 bl 8003568 - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); - 8000176: 2104 movs r1, #4 - 8000178: 4823 ldr r0, [pc, #140] @ (8000208 ) - 800017a: f003 f9f5 bl 8003568 - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); - 800017e: 2108 movs r1, #8 - 8000180: 4821 ldr r0, [pc, #132] @ (8000208 ) - 8000182: f003 f9f1 bl 8003568 - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); - 8000186: 210c movs r1, #12 - 8000188: 481f ldr r0, [pc, #124] @ (8000208 ) - 800018a: f003 f9ed bl 8003568 - HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); - 800018e: 2100 movs r1, #0 - 8000190: 481e ldr r0, [pc, #120] @ (800020c ) - 8000192: f003 f9e9 bl 8003568 - HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2); - 8000196: 2104 movs r1, #4 - 8000198: 481c ldr r0, [pc, #112] @ (800020c ) - 800019a: f003 f9e5 bl 8003568 - HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3); - 800019e: 2108 movs r1, #8 - 80001a0: 481a ldr r0, [pc, #104] @ (800020c ) - 80001a2: f003 f9e1 bl 8003568 - HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4); - 80001a6: 210c movs r1, #12 - 80001a8: 4818 ldr r0, [pc, #96] @ (800020c ) - 80001aa: f003 f9dd bl 8003568 - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); - 80001ae: 2100 movs r1, #0 - 80001b0: 4817 ldr r0, [pc, #92] @ (8000210 ) - 80001b2: f003 f9d9 bl 8003568 - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2); - 80001b6: 2104 movs r1, #4 - 80001b8: 4815 ldr r0, [pc, #84] @ (8000210 ) - 80001ba: f003 f9d5 bl 8003568 - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3); - 80001be: 2108 movs r1, #8 - 80001c0: 4813 ldr r0, [pc, #76] @ (8000210 ) - 80001c2: f003 f9d1 bl 8003568 - HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4); - 80001c6: 210c movs r1, #12 - 80001c8: 4811 ldr r0, [pc, #68] @ (8000210 ) - 80001ca: f003 f9cd bl 8003568 - CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); - 80001ce: 2107 movs r1, #7 - 80001d0: 4810 ldr r0, [pc, #64] @ (8000214 ) - 80001d2: f007 ff41 bl 8008058 - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - while (CDC_Available()) { - 80001d6: e011 b.n 80001fc - int c = CDC_ReadByte(); - 80001d8: f007 fe7c bl 8007ed4 - 80001dc: 6678 str r0, [r7, #100] @ 0x64 - -// uint8_t out = (uint8_t)c; -// if (out >= 'a' && out <= 'z') out -= 32; // to upper - - unsigned char s[100]; - sprintf((char*)s,"\nc=%03d",c); - 80001de: 463b mov r3, r7 - 80001e0: 6e7a ldr r2, [r7, #100] @ 0x64 - 80001e2: 490d ldr r1, [pc, #52] @ (8000218 ) - 80001e4: 4618 mov r0, r3 - 80001e6: f008 fb15 bl 8008814 - while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { - 80001ea: bf00 nop - 80001ec: 463b mov r3, r7 - 80001ee: 2106 movs r1, #6 - 80001f0: 4618 mov r0, r3 - 80001f2: f007 ff31 bl 8008058 - 80001f6: 4603 mov r3, r0 - 80001f8: 2b01 cmp r3, #1 - 80001fa: d0f7 beq.n 80001ec - while (CDC_Available()) { - 80001fc: f007 fe56 bl 8007eac - 8000200: 4603 mov r3, r0 - 8000202: 2b00 cmp r3, #0 - 8000204: d1e8 bne.n 80001d8 - 8000206: e7f9 b.n 80001fc - 8000208: 200001e8 .word 0x200001e8 - 800020c: 20000230 .word 0x20000230 - 8000210: 20000278 .word 0x20000278 - 8000214: 0800918c .word 0x0800918c - 8000218: 08009194 .word 0x08009194 - -0800021c : -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - 800021c: b580 push {r7, lr} - 800021e: b094 sub sp, #80 @ 0x50 - 8000220: af00 add r7, sp, #0 - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - 8000222: f107 0328 add.w r3, r7, #40 @ 0x28 - 8000226: 2228 movs r2, #40 @ 0x28 - 8000228: 2100 movs r1, #0 - 800022a: 4618 mov r0, r3 - 800022c: f008 fb14 bl 8008858 - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - 8000230: f107 0314 add.w r3, r7, #20 - 8000234: 2200 movs r2, #0 - 8000236: 601a str r2, [r3, #0] - 8000238: 605a str r2, [r3, #4] - 800023a: 609a str r2, [r3, #8] - 800023c: 60da str r2, [r3, #12] - 800023e: 611a str r2, [r3, #16] - RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - 8000240: 1d3b adds r3, r7, #4 - 8000242: 2200 movs r2, #0 - 8000244: 601a str r2, [r3, #0] - 8000246: 605a str r2, [r3, #4] - 8000248: 609a str r2, [r3, #8] - 800024a: 60da str r2, [r3, #12] - - /** Initializes the RCC Oscillators according to the specified parameters - * in the RCC_OscInitTypeDef structure. - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; - 800024c: 2301 movs r3, #1 - 800024e: 62bb str r3, [r7, #40] @ 0x28 - RCC_OscInitStruct.HSEState = RCC_HSE_ON; - 8000250: f44f 3380 mov.w r3, #65536 @ 0x10000 - 8000254: 62fb str r3, [r7, #44] @ 0x2c - RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; - 8000256: 2300 movs r3, #0 - 8000258: 633b str r3, [r7, #48] @ 0x30 - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - 800025a: 2301 movs r3, #1 - 800025c: 63bb str r3, [r7, #56] @ 0x38 - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - 800025e: 2302 movs r3, #2 - 8000260: 647b str r3, [r7, #68] @ 0x44 - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - 8000262: f44f 3380 mov.w r3, #65536 @ 0x10000 - 8000266: 64bb str r3, [r7, #72] @ 0x48 - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; - 8000268: f44f 13e0 mov.w r3, #1835008 @ 0x1c0000 - 800026c: 64fb str r3, [r7, #76] @ 0x4c - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 800026e: f107 0328 add.w r3, r7, #40 @ 0x28 - 8000272: 4618 mov r0, r3 - 8000274: f002 fc3c bl 8002af0 - 8000278: 4603 mov r3, r0 - 800027a: 2b00 cmp r3, #0 - 800027c: d001 beq.n 8000282 - { - Error_Handler(); - 800027e: f000 fa47 bl 8000710 - } - - /** Initializes the CPU, AHB and APB buses clocks - */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - 8000282: 230f movs r3, #15 - 8000284: 617b str r3, [r7, #20] - |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - 8000286: 2302 movs r3, #2 - 8000288: 61bb str r3, [r7, #24] - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - 800028a: 2300 movs r3, #0 - 800028c: 61fb str r3, [r7, #28] - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; - 800028e: f44f 6380 mov.w r3, #1024 @ 0x400 - 8000292: 623b str r3, [r7, #32] - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - 8000294: 2300 movs r3, #0 - 8000296: 627b str r3, [r7, #36] @ 0x24 - - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) - 8000298: f107 0314 add.w r3, r7, #20 - 800029c: 2102 movs r1, #2 - 800029e: 4618 mov r0, r3 - 80002a0: f002 fea8 bl 8002ff4 - 80002a4: 4603 mov r3, r0 - 80002a6: 2b00 cmp r3, #0 - 80002a8: d001 beq.n 80002ae - { - Error_Handler(); - 80002aa: f000 fa31 bl 8000710 - } - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; - 80002ae: 2310 movs r3, #16 - 80002b0: 607b str r3, [r7, #4] - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; - 80002b2: 2300 movs r3, #0 - 80002b4: 613b str r3, [r7, #16] - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - 80002b6: 1d3b adds r3, r7, #4 - 80002b8: 4618 mov r0, r3 - 80002ba: f002 fff7 bl 80032ac - 80002be: 4603 mov r3, r0 - 80002c0: 2b00 cmp r3, #0 - 80002c2: d001 beq.n 80002c8 - { - Error_Handler(); - 80002c4: f000 fa24 bl 8000710 - } -} - 80002c8: bf00 nop - 80002ca: 3750 adds r7, #80 @ 0x50 - 80002cc: 46bd mov sp, r7 - 80002ce: bd80 pop {r7, pc} - -080002d0 : - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - 80002d0: b580 push {r7, lr} - 80002d2: b08e sub sp, #56 @ 0x38 - 80002d4: af00 add r7, sp, #0 - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 80002d6: f107 0328 add.w r3, r7, #40 @ 0x28 - 80002da: 2200 movs r2, #0 - 80002dc: 601a str r2, [r3, #0] - 80002de: 605a str r2, [r3, #4] - 80002e0: 609a str r2, [r3, #8] - 80002e2: 60da str r2, [r3, #12] - TIM_MasterConfigTypeDef sMasterConfig = {0}; - 80002e4: f107 0320 add.w r3, r7, #32 - 80002e8: 2200 movs r2, #0 - 80002ea: 601a str r2, [r3, #0] - 80002ec: 605a str r2, [r3, #4] - TIM_OC_InitTypeDef sConfigOC = {0}; - 80002ee: 1d3b adds r3, r7, #4 - 80002f0: 2200 movs r2, #0 - 80002f2: 601a str r2, [r3, #0] - 80002f4: 605a str r2, [r3, #4] - 80002f6: 609a str r2, [r3, #8] - 80002f8: 60da str r2, [r3, #12] - 80002fa: 611a str r2, [r3, #16] - 80002fc: 615a str r2, [r3, #20] - 80002fe: 619a str r2, [r3, #24] - - /* USER CODE BEGIN TIM2_Init 1 */ - - /* USER CODE END TIM2_Init 1 */ - htim2.Instance = TIM2; - 8000300: 4b40 ldr r3, [pc, #256] @ (8000404 ) - 8000302: f04f 4280 mov.w r2, #1073741824 @ 0x40000000 - 8000306: 601a str r2, [r3, #0] - htim2.Init.Prescaler = 71; - 8000308: 4b3e ldr r3, [pc, #248] @ (8000404 ) - 800030a: 2247 movs r2, #71 @ 0x47 - 800030c: 605a str r2, [r3, #4] - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - 800030e: 4b3d ldr r3, [pc, #244] @ (8000404 ) - 8000310: 2200 movs r2, #0 - 8000312: 609a str r2, [r3, #8] - htim2.Init.Period = 249; - 8000314: 4b3b ldr r3, [pc, #236] @ (8000404 ) - 8000316: 22f9 movs r2, #249 @ 0xf9 - 8000318: 60da str r2, [r3, #12] - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 800031a: 4b3a ldr r3, [pc, #232] @ (8000404 ) - 800031c: 2200 movs r2, #0 - 800031e: 611a str r2, [r3, #16] - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8000320: 4b38 ldr r3, [pc, #224] @ (8000404 ) - 8000322: 2200 movs r2, #0 - 8000324: 619a str r2, [r3, #24] - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - 8000326: 4837 ldr r0, [pc, #220] @ (8000404 ) - 8000328: f003 f876 bl 8003418 - 800032c: 4603 mov r3, r0 - 800032e: 2b00 cmp r3, #0 - 8000330: d001 beq.n 8000336 - { - Error_Handler(); - 8000332: f000 f9ed bl 8000710 - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 8000336: f44f 5380 mov.w r3, #4096 @ 0x1000 - 800033a: 62bb str r3, [r7, #40] @ 0x28 - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - 800033c: f107 0328 add.w r3, r7, #40 @ 0x28 - 8000340: 4619 mov r1, r3 - 8000342: 4830 ldr r0, [pc, #192] @ (8000404 ) - 8000344: f003 fa74 bl 8003830 - 8000348: 4603 mov r3, r0 - 800034a: 2b00 cmp r3, #0 - 800034c: d001 beq.n 8000352 - { - Error_Handler(); - 800034e: f000 f9df bl 8000710 - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - 8000352: 482c ldr r0, [pc, #176] @ (8000404 ) - 8000354: f003 f8af bl 80034b6 - 8000358: 4603 mov r3, r0 - 800035a: 2b00 cmp r3, #0 - 800035c: d001 beq.n 8000362 - { - Error_Handler(); - 800035e: f000 f9d7 bl 8000710 - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 8000362: 2300 movs r3, #0 - 8000364: 623b str r3, [r7, #32] - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 8000366: 2300 movs r3, #0 - 8000368: 627b str r3, [r7, #36] @ 0x24 - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - 800036a: f107 0320 add.w r3, r7, #32 - 800036e: 4619 mov r1, r3 - 8000370: 4824 ldr r0, [pc, #144] @ (8000404 ) - 8000372: f003 fdd5 bl 8003f20 - 8000376: 4603 mov r3, r0 - 8000378: 2b00 cmp r3, #0 - 800037a: d001 beq.n 8000380 - { - Error_Handler(); - 800037c: f000 f9c8 bl 8000710 - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - 8000380: 2360 movs r3, #96 @ 0x60 - 8000382: 607b str r3, [r7, #4] - sConfigOC.Pulse = 180; - 8000384: 23b4 movs r3, #180 @ 0xb4 - 8000386: 60bb str r3, [r7, #8] - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 8000388: 2300 movs r3, #0 - 800038a: 60fb str r3, [r7, #12] - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - 800038c: 2304 movs r3, #4 - 800038e: 617b str r3, [r7, #20] - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - 8000390: 1d3b adds r3, r7, #4 - 8000392: 2200 movs r2, #0 - 8000394: 4619 mov r1, r3 - 8000396: 481b ldr r0, [pc, #108] @ (8000404 ) - 8000398: f003 f988 bl 80036ac - 800039c: 4603 mov r3, r0 - 800039e: 2b00 cmp r3, #0 - 80003a0: d001 beq.n 80003a6 - { - Error_Handler(); - 80003a2: f000 f9b5 bl 8000710 - } - sConfigOC.Pulse = 200; - 80003a6: 23c8 movs r3, #200 @ 0xc8 - 80003a8: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - 80003aa: 1d3b adds r3, r7, #4 - 80003ac: 2204 movs r2, #4 - 80003ae: 4619 mov r1, r3 - 80003b0: 4814 ldr r0, [pc, #80] @ (8000404 ) - 80003b2: f003 f97b bl 80036ac - 80003b6: 4603 mov r3, r0 - 80003b8: 2b00 cmp r3, #0 - 80003ba: d001 beq.n 80003c0 - { - Error_Handler(); - 80003bc: f000 f9a8 bl 8000710 - } - sConfigOC.Pulse = 25; - 80003c0: 2319 movs r3, #25 - 80003c2: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - 80003c4: 1d3b adds r3, r7, #4 - 80003c6: 2208 movs r2, #8 - 80003c8: 4619 mov r1, r3 - 80003ca: 480e ldr r0, [pc, #56] @ (8000404 ) - 80003cc: f003 f96e bl 80036ac - 80003d0: 4603 mov r3, r0 - 80003d2: 2b00 cmp r3, #0 - 80003d4: d001 beq.n 80003da - { - Error_Handler(); - 80003d6: f000 f99b bl 8000710 - } - sConfigOC.Pulse = 50; - 80003da: 2332 movs r3, #50 @ 0x32 - 80003dc: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - 80003de: 1d3b adds r3, r7, #4 - 80003e0: 220c movs r2, #12 - 80003e2: 4619 mov r1, r3 - 80003e4: 4807 ldr r0, [pc, #28] @ (8000404 ) - 80003e6: f003 f961 bl 80036ac - 80003ea: 4603 mov r3, r0 - 80003ec: 2b00 cmp r3, #0 - 80003ee: d001 beq.n 80003f4 - { - Error_Handler(); - 80003f0: f000 f98e bl 8000710 - } - /* USER CODE BEGIN TIM2_Init 2 */ - - /* USER CODE END TIM2_Init 2 */ - HAL_TIM_MspPostInit(&htim2); - 80003f4: 4803 ldr r0, [pc, #12] @ (8000404 ) - 80003f6: f000 fa07 bl 8000808 - -} - 80003fa: bf00 nop - 80003fc: 3738 adds r7, #56 @ 0x38 - 80003fe: 46bd mov sp, r7 - 8000400: bd80 pop {r7, pc} - 8000402: bf00 nop - 8000404: 200001e8 .word 0x200001e8 - -08000408 : - * @brief TIM3 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM3_Init(void) -{ - 8000408: b580 push {r7, lr} - 800040a: b08e sub sp, #56 @ 0x38 - 800040c: af00 add r7, sp, #0 - - /* USER CODE BEGIN TIM3_Init 0 */ - - /* USER CODE END TIM3_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 800040e: f107 0328 add.w r3, r7, #40 @ 0x28 - 8000412: 2200 movs r2, #0 - 8000414: 601a str r2, [r3, #0] - 8000416: 605a str r2, [r3, #4] - 8000418: 609a str r2, [r3, #8] - 800041a: 60da str r2, [r3, #12] - TIM_MasterConfigTypeDef sMasterConfig = {0}; - 800041c: f107 0320 add.w r3, r7, #32 - 8000420: 2200 movs r2, #0 - 8000422: 601a str r2, [r3, #0] - 8000424: 605a str r2, [r3, #4] - TIM_OC_InitTypeDef sConfigOC = {0}; - 8000426: 1d3b adds r3, r7, #4 - 8000428: 2200 movs r2, #0 - 800042a: 601a str r2, [r3, #0] - 800042c: 605a str r2, [r3, #4] - 800042e: 609a str r2, [r3, #8] - 8000430: 60da str r2, [r3, #12] - 8000432: 611a str r2, [r3, #16] - 8000434: 615a str r2, [r3, #20] - 8000436: 619a str r2, [r3, #24] - - /* USER CODE BEGIN TIM3_Init 1 */ - - /* USER CODE END TIM3_Init 1 */ - htim3.Instance = TIM3; - 8000438: 4b42 ldr r3, [pc, #264] @ (8000544 ) - 800043a: 4a43 ldr r2, [pc, #268] @ (8000548 ) - 800043c: 601a str r2, [r3, #0] - htim3.Init.Prescaler = 0; - 800043e: 4b41 ldr r3, [pc, #260] @ (8000544 ) - 8000440: 2200 movs r2, #0 - 8000442: 605a str r2, [r3, #4] - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - 8000444: 4b3f ldr r3, [pc, #252] @ (8000544 ) - 8000446: 2200 movs r2, #0 - 8000448: 609a str r2, [r3, #8] - htim3.Init.Period = 17999; - 800044a: 4b3e ldr r3, [pc, #248] @ (8000544 ) - 800044c: f244 624f movw r2, #17999 @ 0x464f - 8000450: 60da str r2, [r3, #12] - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 8000452: 4b3c ldr r3, [pc, #240] @ (8000544 ) - 8000454: 2200 movs r2, #0 - 8000456: 611a str r2, [r3, #16] - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 8000458: 4b3a ldr r3, [pc, #232] @ (8000544 ) - 800045a: 2200 movs r2, #0 - 800045c: 619a str r2, [r3, #24] - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - 800045e: 4839 ldr r0, [pc, #228] @ (8000544 ) - 8000460: f002 ffda bl 8003418 - 8000464: 4603 mov r3, r0 - 8000466: 2b00 cmp r3, #0 - 8000468: d001 beq.n 800046e - { - Error_Handler(); - 800046a: f000 f951 bl 8000710 - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 800046e: f44f 5380 mov.w r3, #4096 @ 0x1000 - 8000472: 62bb str r3, [r7, #40] @ 0x28 - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - 8000474: f107 0328 add.w r3, r7, #40 @ 0x28 - 8000478: 4619 mov r1, r3 - 800047a: 4832 ldr r0, [pc, #200] @ (8000544 ) - 800047c: f003 f9d8 bl 8003830 - 8000480: 4603 mov r3, r0 - 8000482: 2b00 cmp r3, #0 - 8000484: d001 beq.n 800048a - { - Error_Handler(); - 8000486: f000 f943 bl 8000710 - } - if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) - 800048a: 482e ldr r0, [pc, #184] @ (8000544 ) - 800048c: f003 f813 bl 80034b6 - 8000490: 4603 mov r3, r0 - 8000492: 2b00 cmp r3, #0 - 8000494: d001 beq.n 800049a - { - Error_Handler(); - 8000496: f000 f93b bl 8000710 - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 800049a: 2300 movs r3, #0 - 800049c: 623b str r3, [r7, #32] - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 800049e: 2300 movs r3, #0 - 80004a0: 627b str r3, [r7, #36] @ 0x24 - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - 80004a2: f107 0320 add.w r3, r7, #32 - 80004a6: 4619 mov r1, r3 - 80004a8: 4826 ldr r0, [pc, #152] @ (8000544 ) - 80004aa: f003 fd39 bl 8003f20 - 80004ae: 4603 mov r3, r0 - 80004b0: 2b00 cmp r3, #0 - 80004b2: d001 beq.n 80004b8 - { - Error_Handler(); - 80004b4: f000 f92c bl 8000710 - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - 80004b8: 2360 movs r3, #96 @ 0x60 - 80004ba: 607b str r3, [r7, #4] - sConfigOC.Pulse = 2000; - 80004bc: f44f 63fa mov.w r3, #2000 @ 0x7d0 - 80004c0: 60bb str r3, [r7, #8] - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 80004c2: 2300 movs r3, #0 - 80004c4: 60fb str r3, [r7, #12] - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - 80004c6: 2304 movs r3, #4 - 80004c8: 617b str r3, [r7, #20] - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - 80004ca: 1d3b adds r3, r7, #4 - 80004cc: 2200 movs r2, #0 - 80004ce: 4619 mov r1, r3 - 80004d0: 481c ldr r0, [pc, #112] @ (8000544 ) - 80004d2: f003 f8eb bl 80036ac - 80004d6: 4603 mov r3, r0 - 80004d8: 2b00 cmp r3, #0 - 80004da: d001 beq.n 80004e0 - { - Error_Handler(); - 80004dc: f000 f918 bl 8000710 - } - sConfigOC.Pulse = 3000; - 80004e0: f640 33b8 movw r3, #3000 @ 0xbb8 - 80004e4: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - 80004e6: 1d3b adds r3, r7, #4 - 80004e8: 2204 movs r2, #4 - 80004ea: 4619 mov r1, r3 - 80004ec: 4815 ldr r0, [pc, #84] @ (8000544 ) - 80004ee: f003 f8dd bl 80036ac - 80004f2: 4603 mov r3, r0 - 80004f4: 2b00 cmp r3, #0 - 80004f6: d001 beq.n 80004fc - { - Error_Handler(); - 80004f8: f000 f90a bl 8000710 - } - sConfigOC.Pulse = 5000; - 80004fc: f241 3388 movw r3, #5000 @ 0x1388 - 8000500: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - 8000502: 1d3b adds r3, r7, #4 - 8000504: 2208 movs r2, #8 - 8000506: 4619 mov r1, r3 - 8000508: 480e ldr r0, [pc, #56] @ (8000544 ) - 800050a: f003 f8cf bl 80036ac - 800050e: 4603 mov r3, r0 - 8000510: 2b00 cmp r3, #0 - 8000512: d001 beq.n 8000518 - { - Error_Handler(); - 8000514: f000 f8fc bl 8000710 - } - sConfigOC.Pulse = 7000; - 8000518: f641 3358 movw r3, #7000 @ 0x1b58 - 800051c: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - 800051e: 1d3b adds r3, r7, #4 - 8000520: 220c movs r2, #12 - 8000522: 4619 mov r1, r3 - 8000524: 4807 ldr r0, [pc, #28] @ (8000544 ) - 8000526: f003 f8c1 bl 80036ac - 800052a: 4603 mov r3, r0 - 800052c: 2b00 cmp r3, #0 - 800052e: d001 beq.n 8000534 - { - Error_Handler(); - 8000530: f000 f8ee bl 8000710 - } - /* USER CODE BEGIN TIM3_Init 2 */ - - /* USER CODE END TIM3_Init 2 */ - HAL_TIM_MspPostInit(&htim3); - 8000534: 4803 ldr r0, [pc, #12] @ (8000544 ) - 8000536: f000 f967 bl 8000808 - -} - 800053a: bf00 nop - 800053c: 3738 adds r7, #56 @ 0x38 - 800053e: 46bd mov sp, r7 - 8000540: bd80 pop {r7, pc} - 8000542: bf00 nop - 8000544: 20000230 .word 0x20000230 - 8000548: 40000400 .word 0x40000400 - -0800054c : - * @brief TIM4 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM4_Init(void) -{ - 800054c: b580 push {r7, lr} - 800054e: b08e sub sp, #56 @ 0x38 - 8000550: af00 add r7, sp, #0 - - /* USER CODE BEGIN TIM4_Init 0 */ - - /* USER CODE END TIM4_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 8000552: f107 0328 add.w r3, r7, #40 @ 0x28 - 8000556: 2200 movs r2, #0 - 8000558: 601a str r2, [r3, #0] - 800055a: 605a str r2, [r3, #4] - 800055c: 609a str r2, [r3, #8] - 800055e: 60da str r2, [r3, #12] - TIM_MasterConfigTypeDef sMasterConfig = {0}; - 8000560: f107 0320 add.w r3, r7, #32 - 8000564: 2200 movs r2, #0 - 8000566: 601a str r2, [r3, #0] - 8000568: 605a str r2, [r3, #4] - TIM_OC_InitTypeDef sConfigOC = {0}; - 800056a: 1d3b adds r3, r7, #4 - 800056c: 2200 movs r2, #0 - 800056e: 601a str r2, [r3, #0] - 8000570: 605a str r2, [r3, #4] - 8000572: 609a str r2, [r3, #8] - 8000574: 60da str r2, [r3, #12] - 8000576: 611a str r2, [r3, #16] - 8000578: 615a str r2, [r3, #20] - 800057a: 619a str r2, [r3, #24] - - /* USER CODE BEGIN TIM4_Init 1 */ - - /* USER CODE END TIM4_Init 1 */ - htim4.Instance = TIM4; - 800057c: 4b42 ldr r3, [pc, #264] @ (8000688 ) - 800057e: 4a43 ldr r2, [pc, #268] @ (800068c ) - 8000580: 601a str r2, [r3, #0] - htim4.Init.Prescaler = 0; - 8000582: 4b41 ldr r3, [pc, #260] @ (8000688 ) - 8000584: 2200 movs r2, #0 - 8000586: 605a str r2, [r3, #4] - htim4.Init.CounterMode = TIM_COUNTERMODE_UP; - 8000588: 4b3f ldr r3, [pc, #252] @ (8000688 ) - 800058a: 2200 movs r2, #0 - 800058c: 609a str r2, [r3, #8] - htim4.Init.Period = 17999; - 800058e: 4b3e ldr r3, [pc, #248] @ (8000688 ) - 8000590: f244 624f movw r2, #17999 @ 0x464f - 8000594: 60da str r2, [r3, #12] - htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 8000596: 4b3c ldr r3, [pc, #240] @ (8000688 ) - 8000598: 2200 movs r2, #0 - 800059a: 611a str r2, [r3, #16] - htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 800059c: 4b3a ldr r3, [pc, #232] @ (8000688 ) - 800059e: 2200 movs r2, #0 - 80005a0: 619a str r2, [r3, #24] - if (HAL_TIM_Base_Init(&htim4) != HAL_OK) - 80005a2: 4839 ldr r0, [pc, #228] @ (8000688 ) - 80005a4: f002 ff38 bl 8003418 - 80005a8: 4603 mov r3, r0 - 80005aa: 2b00 cmp r3, #0 - 80005ac: d001 beq.n 80005b2 - { - Error_Handler(); - 80005ae: f000 f8af bl 8000710 - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 80005b2: f44f 5380 mov.w r3, #4096 @ 0x1000 - 80005b6: 62bb str r3, [r7, #40] @ 0x28 - if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) - 80005b8: f107 0328 add.w r3, r7, #40 @ 0x28 - 80005bc: 4619 mov r1, r3 - 80005be: 4832 ldr r0, [pc, #200] @ (8000688 ) - 80005c0: f003 f936 bl 8003830 - 80005c4: 4603 mov r3, r0 - 80005c6: 2b00 cmp r3, #0 - 80005c8: d001 beq.n 80005ce - { - Error_Handler(); - 80005ca: f000 f8a1 bl 8000710 - } - if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) - 80005ce: 482e ldr r0, [pc, #184] @ (8000688 ) - 80005d0: f002 ff71 bl 80034b6 - 80005d4: 4603 mov r3, r0 - 80005d6: 2b00 cmp r3, #0 - 80005d8: d001 beq.n 80005de - { - Error_Handler(); - 80005da: f000 f899 bl 8000710 - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 80005de: 2300 movs r3, #0 - 80005e0: 623b str r3, [r7, #32] - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 80005e2: 2300 movs r3, #0 - 80005e4: 627b str r3, [r7, #36] @ 0x24 - if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) - 80005e6: f107 0320 add.w r3, r7, #32 - 80005ea: 4619 mov r1, r3 - 80005ec: 4826 ldr r0, [pc, #152] @ (8000688 ) - 80005ee: f003 fc97 bl 8003f20 - 80005f2: 4603 mov r3, r0 - 80005f4: 2b00 cmp r3, #0 - 80005f6: d001 beq.n 80005fc - { - Error_Handler(); - 80005f8: f000 f88a bl 8000710 - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - 80005fc: 2360 movs r3, #96 @ 0x60 - 80005fe: 607b str r3, [r7, #4] - sConfigOC.Pulse = 7000; - 8000600: f641 3358 movw r3, #7000 @ 0x1b58 - 8000604: 60bb str r3, [r7, #8] - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 8000606: 2300 movs r3, #0 - 8000608: 60fb str r3, [r7, #12] - sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; - 800060a: 2304 movs r3, #4 - 800060c: 617b str r3, [r7, #20] - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - 800060e: 1d3b adds r3, r7, #4 - 8000610: 2200 movs r2, #0 - 8000612: 4619 mov r1, r3 - 8000614: 481c ldr r0, [pc, #112] @ (8000688 ) - 8000616: f003 f849 bl 80036ac - 800061a: 4603 mov r3, r0 - 800061c: 2b00 cmp r3, #0 - 800061e: d001 beq.n 8000624 - { - Error_Handler(); - 8000620: f000 f876 bl 8000710 - } - sConfigOC.Pulse = 10000; - 8000624: f242 7310 movw r3, #10000 @ 0x2710 - 8000628: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - 800062a: 1d3b adds r3, r7, #4 - 800062c: 2204 movs r2, #4 - 800062e: 4619 mov r1, r3 - 8000630: 4815 ldr r0, [pc, #84] @ (8000688 ) - 8000632: f003 f83b bl 80036ac - 8000636: 4603 mov r3, r0 - 8000638: 2b00 cmp r3, #0 - 800063a: d001 beq.n 8000640 - { - Error_Handler(); - 800063c: f000 f868 bl 8000710 - } - sConfigOC.Pulse = 3000; - 8000640: f640 33b8 movw r3, #3000 @ 0xbb8 - 8000644: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - 8000646: 1d3b adds r3, r7, #4 - 8000648: 2208 movs r2, #8 - 800064a: 4619 mov r1, r3 - 800064c: 480e ldr r0, [pc, #56] @ (8000688 ) - 800064e: f003 f82d bl 80036ac - 8000652: 4603 mov r3, r0 - 8000654: 2b00 cmp r3, #0 - 8000656: d001 beq.n 800065c - { - Error_Handler(); - 8000658: f000 f85a bl 8000710 - } - sConfigOC.Pulse = 12000; - 800065c: f642 63e0 movw r3, #12000 @ 0x2ee0 - 8000660: 60bb str r3, [r7, #8] - if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - 8000662: 1d3b adds r3, r7, #4 - 8000664: 220c movs r2, #12 - 8000666: 4619 mov r1, r3 - 8000668: 4807 ldr r0, [pc, #28] @ (8000688 ) - 800066a: f003 f81f bl 80036ac - 800066e: 4603 mov r3, r0 - 8000670: 2b00 cmp r3, #0 - 8000672: d001 beq.n 8000678 - { - Error_Handler(); - 8000674: f000 f84c bl 8000710 - } - /* USER CODE BEGIN TIM4_Init 2 */ - - /* USER CODE END TIM4_Init 2 */ - HAL_TIM_MspPostInit(&htim4); - 8000678: 4803 ldr r0, [pc, #12] @ (8000688 ) - 800067a: f000 f8c5 bl 8000808 - -} - 800067e: bf00 nop - 8000680: 3738 adds r7, #56 @ 0x38 - 8000682: 46bd mov sp, r7 - 8000684: bd80 pop {r7, pc} - 8000686: bf00 nop - 8000688: 20000278 .word 0x20000278 - 800068c: 40000800 .word 0x40000800 - -08000690 : - * @brief GPIO Initialization Function - * @param None - * @retval None - */ -static void MX_GPIO_Init(void) -{ - 8000690: b580 push {r7, lr} - 8000692: b088 sub sp, #32 - 8000694: af00 add r7, sp, #0 - GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8000696: f107 0310 add.w r3, r7, #16 - 800069a: 2200 movs r2, #0 - 800069c: 601a str r2, [r3, #0] - 800069e: 605a str r2, [r3, #4] - 80006a0: 609a str r2, [r3, #8] - 80006a2: 60da str r2, [r3, #12] - /* USER CODE BEGIN MX_GPIO_Init_1 */ - - /* USER CODE END MX_GPIO_Init_1 */ - - /* GPIO Ports Clock Enable */ - __HAL_RCC_GPIOD_CLK_ENABLE(); - 80006a4: 4b18 ldr r3, [pc, #96] @ (8000708 ) - 80006a6: 699b ldr r3, [r3, #24] - 80006a8: 4a17 ldr r2, [pc, #92] @ (8000708 ) - 80006aa: f043 0320 orr.w r3, r3, #32 - 80006ae: 6193 str r3, [r2, #24] - 80006b0: 4b15 ldr r3, [pc, #84] @ (8000708 ) - 80006b2: 699b ldr r3, [r3, #24] - 80006b4: f003 0320 and.w r3, r3, #32 - 80006b8: 60fb str r3, [r7, #12] - 80006ba: 68fb ldr r3, [r7, #12] - __HAL_RCC_GPIOA_CLK_ENABLE(); - 80006bc: 4b12 ldr r3, [pc, #72] @ (8000708 ) - 80006be: 699b ldr r3, [r3, #24] - 80006c0: 4a11 ldr r2, [pc, #68] @ (8000708 ) - 80006c2: f043 0304 orr.w r3, r3, #4 - 80006c6: 6193 str r3, [r2, #24] - 80006c8: 4b0f ldr r3, [pc, #60] @ (8000708 ) - 80006ca: 699b ldr r3, [r3, #24] - 80006cc: f003 0304 and.w r3, r3, #4 - 80006d0: 60bb str r3, [r7, #8] - 80006d2: 68bb ldr r3, [r7, #8] - __HAL_RCC_GPIOB_CLK_ENABLE(); - 80006d4: 4b0c ldr r3, [pc, #48] @ (8000708 ) - 80006d6: 699b ldr r3, [r3, #24] - 80006d8: 4a0b ldr r2, [pc, #44] @ (8000708 ) - 80006da: f043 0308 orr.w r3, r3, #8 - 80006de: 6193 str r3, [r2, #24] - 80006e0: 4b09 ldr r3, [pc, #36] @ (8000708 ) - 80006e2: 699b ldr r3, [r3, #24] - 80006e4: f003 0308 and.w r3, r3, #8 - 80006e8: 607b str r3, [r7, #4] - 80006ea: 687b ldr r3, [r7, #4] - - /*Configure GPIO pins : PA4 PA5 PA6 PA7 */ - GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; - 80006ec: 23f0 movs r3, #240 @ 0xf0 - 80006ee: 613b str r3, [r7, #16] - GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - 80006f0: 2303 movs r3, #3 - 80006f2: 617b str r3, [r7, #20] - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 80006f4: f107 0310 add.w r3, r7, #16 - 80006f8: 4619 mov r1, r3 - 80006fa: 4804 ldr r0, [pc, #16] @ (800070c ) - 80006fc: f000 fb14 bl 8000d28 - - /* USER CODE BEGIN MX_GPIO_Init_2 */ - - /* USER CODE END MX_GPIO_Init_2 */ -} - 8000700: bf00 nop - 8000702: 3720 adds r7, #32 - 8000704: 46bd mov sp, r7 - 8000706: bd80 pop {r7, pc} - 8000708: 40021000 .word 0x40021000 - 800070c: 40010800 .word 0x40010800 - -08000710 : -/** - * @brief This function is executed in case of error occurrence. - * @retval None - */ -void Error_Handler(void) -{ - 8000710: b480 push {r7} - 8000712: af00 add r7, sp, #0 - \details Disables IRQ interrupts by setting the I-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__STATIC_FORCEINLINE void __disable_irq(void) -{ - __ASM volatile ("cpsid i" : : : "memory"); - 8000714: b672 cpsid i -} - 8000716: 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) - 8000718: bf00 nop - 800071a: e7fd b.n 8000718 - -0800071c : -void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); - /** - * Initializes the Global MSP. - */ -void HAL_MspInit(void) -{ - 800071c: b480 push {r7} - 800071e: b085 sub sp, #20 - 8000720: af00 add r7, sp, #0 - - /* USER CODE BEGIN MspInit 0 */ - - /* USER CODE END MspInit 0 */ - - __HAL_RCC_AFIO_CLK_ENABLE(); - 8000722: 4b15 ldr r3, [pc, #84] @ (8000778 ) - 8000724: 699b ldr r3, [r3, #24] - 8000726: 4a14 ldr r2, [pc, #80] @ (8000778 ) - 8000728: f043 0301 orr.w r3, r3, #1 - 800072c: 6193 str r3, [r2, #24] - 800072e: 4b12 ldr r3, [pc, #72] @ (8000778 ) - 8000730: 699b ldr r3, [r3, #24] - 8000732: f003 0301 and.w r3, r3, #1 - 8000736: 60bb str r3, [r7, #8] - 8000738: 68bb ldr r3, [r7, #8] - __HAL_RCC_PWR_CLK_ENABLE(); - 800073a: 4b0f ldr r3, [pc, #60] @ (8000778 ) - 800073c: 69db ldr r3, [r3, #28] - 800073e: 4a0e ldr r2, [pc, #56] @ (8000778 ) - 8000740: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 8000744: 61d3 str r3, [r2, #28] - 8000746: 4b0c ldr r3, [pc, #48] @ (8000778 ) - 8000748: 69db ldr r3, [r3, #28] - 800074a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 800074e: 607b str r3, [r7, #4] - 8000750: 687b ldr r3, [r7, #4] - - /* System interrupt init*/ - - /** DISABLE: JTAG-DP Disabled and SW-DP Disabled - */ - __HAL_AFIO_REMAP_SWJ_DISABLE(); - 8000752: 4b0a ldr r3, [pc, #40] @ (800077c ) - 8000754: 685b ldr r3, [r3, #4] - 8000756: 60fb str r3, [r7, #12] - 8000758: 68fb ldr r3, [r7, #12] - 800075a: f023 63e0 bic.w r3, r3, #117440512 @ 0x7000000 - 800075e: 60fb str r3, [r7, #12] - 8000760: 68fb ldr r3, [r7, #12] - 8000762: f043 6380 orr.w r3, r3, #67108864 @ 0x4000000 - 8000766: 60fb str r3, [r7, #12] - 8000768: 4a04 ldr r2, [pc, #16] @ (800077c ) - 800076a: 68fb ldr r3, [r7, #12] - 800076c: 6053 str r3, [r2, #4] - - /* USER CODE BEGIN MspInit 1 */ - - /* USER CODE END MspInit 1 */ -} - 800076e: bf00 nop - 8000770: 3714 adds r7, #20 - 8000772: 46bd mov sp, r7 - 8000774: bc80 pop {r7} - 8000776: 4770 bx lr - 8000778: 40021000 .word 0x40021000 - 800077c: 40010000 .word 0x40010000 - -08000780 : - * 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) -{ - 8000780: b480 push {r7} - 8000782: b087 sub sp, #28 - 8000784: af00 add r7, sp, #0 - 8000786: 6078 str r0, [r7, #4] - if(htim_base->Instance==TIM2) - 8000788: 687b ldr r3, [r7, #4] - 800078a: 681b ldr r3, [r3, #0] - 800078c: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8000790: d10c bne.n 80007ac - { - /* USER CODE BEGIN TIM2_MspInit 0 */ - - /* USER CODE END TIM2_MspInit 0 */ - /* Peripheral clock enable */ - __HAL_RCC_TIM2_CLK_ENABLE(); - 8000792: 4b1a ldr r3, [pc, #104] @ (80007fc ) - 8000794: 69db ldr r3, [r3, #28] - 8000796: 4a19 ldr r2, [pc, #100] @ (80007fc ) - 8000798: f043 0301 orr.w r3, r3, #1 - 800079c: 61d3 str r3, [r2, #28] - 800079e: 4b17 ldr r3, [pc, #92] @ (80007fc ) - 80007a0: 69db ldr r3, [r3, #28] - 80007a2: f003 0301 and.w r3, r3, #1 - 80007a6: 617b str r3, [r7, #20] - 80007a8: 697b ldr r3, [r7, #20] - /* USER CODE BEGIN TIM4_MspInit 1 */ - - /* USER CODE END TIM4_MspInit 1 */ - } - -} - 80007aa: e022 b.n 80007f2 - else if(htim_base->Instance==TIM3) - 80007ac: 687b ldr r3, [r7, #4] - 80007ae: 681b ldr r3, [r3, #0] - 80007b0: 4a13 ldr r2, [pc, #76] @ (8000800 ) - 80007b2: 4293 cmp r3, r2 - 80007b4: d10c bne.n 80007d0 - __HAL_RCC_TIM3_CLK_ENABLE(); - 80007b6: 4b11 ldr r3, [pc, #68] @ (80007fc ) - 80007b8: 69db ldr r3, [r3, #28] - 80007ba: 4a10 ldr r2, [pc, #64] @ (80007fc ) - 80007bc: f043 0302 orr.w r3, r3, #2 - 80007c0: 61d3 str r3, [r2, #28] - 80007c2: 4b0e ldr r3, [pc, #56] @ (80007fc ) - 80007c4: 69db ldr r3, [r3, #28] - 80007c6: f003 0302 and.w r3, r3, #2 - 80007ca: 613b str r3, [r7, #16] - 80007cc: 693b ldr r3, [r7, #16] -} - 80007ce: e010 b.n 80007f2 - else if(htim_base->Instance==TIM4) - 80007d0: 687b ldr r3, [r7, #4] - 80007d2: 681b ldr r3, [r3, #0] - 80007d4: 4a0b ldr r2, [pc, #44] @ (8000804 ) - 80007d6: 4293 cmp r3, r2 - 80007d8: d10b bne.n 80007f2 - __HAL_RCC_TIM4_CLK_ENABLE(); - 80007da: 4b08 ldr r3, [pc, #32] @ (80007fc ) - 80007dc: 69db ldr r3, [r3, #28] - 80007de: 4a07 ldr r2, [pc, #28] @ (80007fc ) - 80007e0: f043 0304 orr.w r3, r3, #4 - 80007e4: 61d3 str r3, [r2, #28] - 80007e6: 4b05 ldr r3, [pc, #20] @ (80007fc ) - 80007e8: 69db ldr r3, [r3, #28] - 80007ea: f003 0304 and.w r3, r3, #4 - 80007ee: 60fb str r3, [r7, #12] - 80007f0: 68fb ldr r3, [r7, #12] -} - 80007f2: bf00 nop - 80007f4: 371c adds r7, #28 - 80007f6: 46bd mov sp, r7 - 80007f8: bc80 pop {r7} - 80007fa: 4770 bx lr - 80007fc: 40021000 .word 0x40021000 - 8000800: 40000400 .word 0x40000400 - 8000804: 40000800 .word 0x40000800 - -08000808 : - -void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) -{ - 8000808: b580 push {r7, lr} - 800080a: b08a sub sp, #40 @ 0x28 - 800080c: af00 add r7, sp, #0 - 800080e: 6078 str r0, [r7, #4] - GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8000810: f107 0314 add.w r3, r7, #20 - 8000814: 2200 movs r2, #0 - 8000816: 601a str r2, [r3, #0] - 8000818: 605a str r2, [r3, #4] - 800081a: 609a str r2, [r3, #8] - 800081c: 60da str r2, [r3, #12] - if(htim->Instance==TIM2) - 800081e: 687b ldr r3, [r7, #4] - 8000820: 681b ldr r3, [r3, #0] - 8000822: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8000826: d118 bne.n 800085a - { - /* USER CODE BEGIN TIM2_MspPostInit 0 */ - - /* USER CODE END TIM2_MspPostInit 0 */ - __HAL_RCC_GPIOA_CLK_ENABLE(); - 8000828: 4b35 ldr r3, [pc, #212] @ (8000900 ) - 800082a: 699b ldr r3, [r3, #24] - 800082c: 4a34 ldr r2, [pc, #208] @ (8000900 ) - 800082e: f043 0304 orr.w r3, r3, #4 - 8000832: 6193 str r3, [r2, #24] - 8000834: 4b32 ldr r3, [pc, #200] @ (8000900 ) - 8000836: 699b ldr r3, [r3, #24] - 8000838: f003 0304 and.w r3, r3, #4 - 800083c: 613b str r3, [r7, #16] - 800083e: 693b ldr r3, [r7, #16] - PA0-WKUP ------> TIM2_CH1 - PA1 ------> TIM2_CH2 - PA2 ------> TIM2_CH3 - PA3 ------> TIM2_CH4 - */ - GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3; - 8000840: 230f movs r3, #15 - 8000842: 617b str r3, [r7, #20] - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8000844: 2302 movs r3, #2 - 8000846: 61bb str r3, [r7, #24] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; - 8000848: 2303 movs r3, #3 - 800084a: 623b str r3, [r7, #32] - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 800084c: f107 0314 add.w r3, r7, #20 - 8000850: 4619 mov r1, r3 - 8000852: 482c ldr r0, [pc, #176] @ (8000904 ) - 8000854: f000 fa68 bl 8000d28 - /* USER CODE BEGIN TIM4_MspPostInit 1 */ - - /* USER CODE END TIM4_MspPostInit 1 */ - } - -} - 8000858: e04d b.n 80008f6 - else if(htim->Instance==TIM3) - 800085a: 687b ldr r3, [r7, #4] - 800085c: 681b ldr r3, [r3, #0] - 800085e: 4a2a ldr r2, [pc, #168] @ (8000908 ) - 8000860: 4293 cmp r3, r2 - 8000862: d12a bne.n 80008ba - __HAL_RCC_GPIOB_CLK_ENABLE(); - 8000864: 4b26 ldr r3, [pc, #152] @ (8000900 ) - 8000866: 699b ldr r3, [r3, #24] - 8000868: 4a25 ldr r2, [pc, #148] @ (8000900 ) - 800086a: f043 0308 orr.w r3, r3, #8 - 800086e: 6193 str r3, [r2, #24] - 8000870: 4b23 ldr r3, [pc, #140] @ (8000900 ) - 8000872: 699b ldr r3, [r3, #24] - 8000874: f003 0308 and.w r3, r3, #8 - 8000878: 60fb str r3, [r7, #12] - 800087a: 68fb ldr r3, [r7, #12] - GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5; - 800087c: 2333 movs r3, #51 @ 0x33 - 800087e: 617b str r3, [r7, #20] - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8000880: 2302 movs r3, #2 - 8000882: 61bb str r3, [r7, #24] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000884: 2302 movs r3, #2 - 8000886: 623b str r3, [r7, #32] - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8000888: f107 0314 add.w r3, r7, #20 - 800088c: 4619 mov r1, r3 - 800088e: 481f ldr r0, [pc, #124] @ (800090c ) - 8000890: f000 fa4a bl 8000d28 - __HAL_AFIO_REMAP_TIM3_PARTIAL(); - 8000894: 4b1e ldr r3, [pc, #120] @ (8000910 ) - 8000896: 685b ldr r3, [r3, #4] - 8000898: 627b str r3, [r7, #36] @ 0x24 - 800089a: 6a7b ldr r3, [r7, #36] @ 0x24 - 800089c: f423 6340 bic.w r3, r3, #3072 @ 0xc00 - 80008a0: 627b str r3, [r7, #36] @ 0x24 - 80008a2: 6a7b ldr r3, [r7, #36] @ 0x24 - 80008a4: f043 63e0 orr.w r3, r3, #117440512 @ 0x7000000 - 80008a8: 627b str r3, [r7, #36] @ 0x24 - 80008aa: 6a7b ldr r3, [r7, #36] @ 0x24 - 80008ac: f443 6300 orr.w r3, r3, #2048 @ 0x800 - 80008b0: 627b str r3, [r7, #36] @ 0x24 - 80008b2: 4a17 ldr r2, [pc, #92] @ (8000910 ) - 80008b4: 6a7b ldr r3, [r7, #36] @ 0x24 - 80008b6: 6053 str r3, [r2, #4] -} - 80008b8: e01d b.n 80008f6 - else if(htim->Instance==TIM4) - 80008ba: 687b ldr r3, [r7, #4] - 80008bc: 681b ldr r3, [r3, #0] - 80008be: 4a15 ldr r2, [pc, #84] @ (8000914 ) - 80008c0: 4293 cmp r3, r2 - 80008c2: d118 bne.n 80008f6 - __HAL_RCC_GPIOB_CLK_ENABLE(); - 80008c4: 4b0e ldr r3, [pc, #56] @ (8000900 ) - 80008c6: 699b ldr r3, [r3, #24] - 80008c8: 4a0d ldr r2, [pc, #52] @ (8000900 ) - 80008ca: f043 0308 orr.w r3, r3, #8 - 80008ce: 6193 str r3, [r2, #24] - 80008d0: 4b0b ldr r3, [pc, #44] @ (8000900 ) - 80008d2: 699b ldr r3, [r3, #24] - 80008d4: f003 0308 and.w r3, r3, #8 - 80008d8: 60bb str r3, [r7, #8] - 80008da: 68bb ldr r3, [r7, #8] - GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9; - 80008dc: f44f 7370 mov.w r3, #960 @ 0x3c0 - 80008e0: 617b str r3, [r7, #20] - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 80008e2: 2302 movs r3, #2 - 80008e4: 61bb str r3, [r7, #24] - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; - 80008e6: 2303 movs r3, #3 - 80008e8: 623b str r3, [r7, #32] - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 80008ea: f107 0314 add.w r3, r7, #20 - 80008ee: 4619 mov r1, r3 - 80008f0: 4806 ldr r0, [pc, #24] @ (800090c ) - 80008f2: f000 fa19 bl 8000d28 -} - 80008f6: bf00 nop - 80008f8: 3728 adds r7, #40 @ 0x28 - 80008fa: 46bd mov sp, r7 - 80008fc: bd80 pop {r7, pc} - 80008fe: bf00 nop - 8000900: 40021000 .word 0x40021000 - 8000904: 40010800 .word 0x40010800 - 8000908: 40000400 .word 0x40000400 - 800090c: 40010c00 .word 0x40010c00 - 8000910: 40010000 .word 0x40010000 - 8000914: 40000800 .word 0x40000800 - -08000918 : -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - 8000918: b480 push {r7} - 800091a: 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) - 800091c: bf00 nop - 800091e: e7fd b.n 800091c - -08000920 : - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - 8000920: b480 push {r7} - 8000922: af00 add r7, sp, #0 - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - 8000924: bf00 nop - 8000926: e7fd b.n 8000924 - -08000928 : - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - 8000928: b480 push {r7} - 800092a: af00 add r7, sp, #0 - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - 800092c: bf00 nop - 800092e: e7fd b.n 800092c - -08000930 : - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - 8000930: b480 push {r7} - 8000932: af00 add r7, sp, #0 - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - 8000934: bf00 nop - 8000936: e7fd b.n 8000934 - -08000938 : - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - 8000938: b480 push {r7} - 800093a: af00 add r7, sp, #0 - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - 800093c: bf00 nop - 800093e: e7fd b.n 800093c - -08000940 : - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - 8000940: b480 push {r7} - 8000942: af00 add r7, sp, #0 - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - 8000944: bf00 nop - 8000946: 46bd mov sp, r7 - 8000948: bc80 pop {r7} - 800094a: 4770 bx lr - -0800094c : - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - 800094c: b480 push {r7} - 800094e: af00 add r7, sp, #0 - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - 8000950: bf00 nop - 8000952: 46bd mov sp, r7 - 8000954: bc80 pop {r7} - 8000956: 4770 bx lr - -08000958 : - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - 8000958: b480 push {r7} - 800095a: af00 add r7, sp, #0 - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - 800095c: bf00 nop - 800095e: 46bd mov sp, r7 - 8000960: bc80 pop {r7} - 8000962: 4770 bx lr - -08000964 : - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - 8000964: b580 push {r7, lr} - 8000966: af00 add r7, sp, #0 - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - 8000968: f000 f8b4 bl 8000ad4 - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - 800096c: bf00 nop - 800096e: bd80 pop {r7, pc} - -08000970 : - -/** - * @brief This function handles USB low priority or CAN RX0 interrupts. - */ -void USB_LP_CAN1_RX0_IRQHandler(void) -{ - 8000970: b580 push {r7, lr} - 8000972: af00 add r7, sp, #0 - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ - HAL_PCD_IRQHandler(&hpcd_USB_FS); - 8000974: 4802 ldr r0, [pc, #8] @ (8000980 ) - 8000976: f000 fc77 bl 8001268 - /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ - - /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ -} - 800097a: bf00 nop - 800097c: bd80 pop {r7, pc} - 800097e: bf00 nop - 8000980: 20001094 .word 0x20001094 - -08000984 <_sbrk>: - * - * @param incr Memory size - * @return Pointer to allocated memory - */ -void *_sbrk(ptrdiff_t incr) -{ - 8000984: b580 push {r7, lr} - 8000986: b086 sub sp, #24 - 8000988: af00 add r7, sp, #0 - 800098a: 6078 str r0, [r7, #4] - extern uint8_t _end; /* Symbol defined in the linker script */ - extern uint8_t _estack; /* Symbol defined in the linker script */ - extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ - const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; - 800098c: 4a14 ldr r2, [pc, #80] @ (80009e0 <_sbrk+0x5c>) - 800098e: 4b15 ldr r3, [pc, #84] @ (80009e4 <_sbrk+0x60>) - 8000990: 1ad3 subs r3, r2, r3 - 8000992: 617b str r3, [r7, #20] - const uint8_t *max_heap = (uint8_t *)stack_limit; - 8000994: 697b ldr r3, [r7, #20] - 8000996: 613b str r3, [r7, #16] - uint8_t *prev_heap_end; - - /* Initialize heap end at first call */ - if (NULL == __sbrk_heap_end) - 8000998: 4b13 ldr r3, [pc, #76] @ (80009e8 <_sbrk+0x64>) - 800099a: 681b ldr r3, [r3, #0] - 800099c: 2b00 cmp r3, #0 - 800099e: d102 bne.n 80009a6 <_sbrk+0x22> - { - __sbrk_heap_end = &_end; - 80009a0: 4b11 ldr r3, [pc, #68] @ (80009e8 <_sbrk+0x64>) - 80009a2: 4a12 ldr r2, [pc, #72] @ (80009ec <_sbrk+0x68>) - 80009a4: 601a str r2, [r3, #0] - } - - /* Protect heap from growing into the reserved MSP stack */ - if (__sbrk_heap_end + incr > max_heap) - 80009a6: 4b10 ldr r3, [pc, #64] @ (80009e8 <_sbrk+0x64>) - 80009a8: 681a ldr r2, [r3, #0] - 80009aa: 687b ldr r3, [r7, #4] - 80009ac: 4413 add r3, r2 - 80009ae: 693a ldr r2, [r7, #16] - 80009b0: 429a cmp r2, r3 - 80009b2: d207 bcs.n 80009c4 <_sbrk+0x40> - { - errno = ENOMEM; - 80009b4: f007 ff58 bl 8008868 <__errno> - 80009b8: 4603 mov r3, r0 - 80009ba: 220c movs r2, #12 - 80009bc: 601a str r2, [r3, #0] - return (void *)-1; - 80009be: f04f 33ff mov.w r3, #4294967295 - 80009c2: e009 b.n 80009d8 <_sbrk+0x54> - } - - prev_heap_end = __sbrk_heap_end; - 80009c4: 4b08 ldr r3, [pc, #32] @ (80009e8 <_sbrk+0x64>) - 80009c6: 681b ldr r3, [r3, #0] - 80009c8: 60fb str r3, [r7, #12] - __sbrk_heap_end += incr; - 80009ca: 4b07 ldr r3, [pc, #28] @ (80009e8 <_sbrk+0x64>) - 80009cc: 681a ldr r2, [r3, #0] - 80009ce: 687b ldr r3, [r7, #4] - 80009d0: 4413 add r3, r2 - 80009d2: 4a05 ldr r2, [pc, #20] @ (80009e8 <_sbrk+0x64>) - 80009d4: 6013 str r3, [r2, #0] - - return (void *)prev_heap_end; - 80009d6: 68fb ldr r3, [r7, #12] -} - 80009d8: 4618 mov r0, r3 - 80009da: 3718 adds r7, #24 - 80009dc: 46bd mov sp, r7 - 80009de: bd80 pop {r7, pc} - 80009e0: 20005000 .word 0x20005000 - 80009e4: 00000400 .word 0x00000400 - 80009e8: 200002c0 .word 0x200002c0 - 80009ec: 200016d8 .word 0x200016d8 - -080009f0 : - * @note This function should be used only after reset. - * @param None - * @retval None - */ -void SystemInit (void) -{ - 80009f0: b480 push {r7} - 80009f2: af00 add r7, sp, #0 - - /* Configure the Vector Table location -------------------------------------*/ -#if defined(USER_VECT_TAB_ADDRESS) - SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ -#endif /* USER_VECT_TAB_ADDRESS */ -} - 80009f4: bf00 nop - 80009f6: 46bd mov sp, r7 - 80009f8: bc80 pop {r7} - 80009fa: 4770 bx lr - -080009fc : - .weak Reset_Handler - .type Reset_Handler, %function -Reset_Handler: - -/* Call the clock system initialization function.*/ - bl SystemInit - 80009fc: f7ff fff8 bl 80009f0 - -/* Copy the data segment initializers from flash to SRAM */ - ldr r0, =_sdata - 8000a00: 480b ldr r0, [pc, #44] @ (8000a30 ) - ldr r1, =_edata - 8000a02: 490c ldr r1, [pc, #48] @ (8000a34 ) - ldr r2, =_sidata - 8000a04: 4a0c ldr r2, [pc, #48] @ (8000a38 ) - movs r3, #0 - 8000a06: 2300 movs r3, #0 - b LoopCopyDataInit - 8000a08: e002 b.n 8000a10 - -08000a0a : - -CopyDataInit: - ldr r4, [r2, r3] - 8000a0a: 58d4 ldr r4, [r2, r3] - str r4, [r0, r3] - 8000a0c: 50c4 str r4, [r0, r3] - adds r3, r3, #4 - 8000a0e: 3304 adds r3, #4 - -08000a10 : - -LoopCopyDataInit: - adds r4, r0, r3 - 8000a10: 18c4 adds r4, r0, r3 - cmp r4, r1 - 8000a12: 428c cmp r4, r1 - bcc CopyDataInit - 8000a14: d3f9 bcc.n 8000a0a - -/* Zero fill the bss segment. */ - ldr r2, =_sbss - 8000a16: 4a09 ldr r2, [pc, #36] @ (8000a3c ) - ldr r4, =_ebss - 8000a18: 4c09 ldr r4, [pc, #36] @ (8000a40 ) - movs r3, #0 - 8000a1a: 2300 movs r3, #0 - b LoopFillZerobss - 8000a1c: e001 b.n 8000a22 - -08000a1e : - -FillZerobss: - str r3, [r2] - 8000a1e: 6013 str r3, [r2, #0] - adds r2, r2, #4 - 8000a20: 3204 adds r2, #4 - -08000a22 : - -LoopFillZerobss: - cmp r2, r4 - 8000a22: 42a2 cmp r2, r4 - bcc FillZerobss - 8000a24: d3fb bcc.n 8000a1e - -/* Call static constructors */ - bl __libc_init_array - 8000a26: f007 ff25 bl 8008874 <__libc_init_array> -/* Call the application's entry point.*/ - bl main - 8000a2a: f7ff fb8f bl 800014c
- bx lr - 8000a2e: 4770 bx lr - ldr r0, =_sdata - 8000a30: 20000000 .word 0x20000000 - ldr r1, =_edata - 8000a34: 200001cc .word 0x200001cc - ldr r2, =_sidata - 8000a38: 08009244 .word 0x08009244 - ldr r2, =_sbss - 8000a3c: 200001cc .word 0x200001cc - ldr r4, =_ebss - 8000a40: 200016d4 .word 0x200016d4 - -08000a44 : - * @retval : None -*/ - .section .text.Default_Handler,"ax",%progbits -Default_Handler: -Infinite_Loop: - b Infinite_Loop - 8000a44: e7fe b.n 8000a44 - ... - -08000a48 : - * 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) -{ - 8000a48: b580 push {r7, lr} - 8000a4a: af00 add r7, sp, #0 - defined(STM32F102x6) || defined(STM32F102xB) || \ - defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || \ - defined(STM32F105xC) || defined(STM32F107xC) - - /* Prefetch buffer is not available on value line devices */ - __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); - 8000a4c: 4b08 ldr r3, [pc, #32] @ (8000a70 ) - 8000a4e: 681b ldr r3, [r3, #0] - 8000a50: 4a07 ldr r2, [pc, #28] @ (8000a70 ) - 8000a52: f043 0310 orr.w r3, r3, #16 - 8000a56: 6013 str r3, [r2, #0] -#endif -#endif /* PREFETCH_ENABLE */ - - /* Set Interrupt Group Priority */ - HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); - 8000a58: 2003 movs r0, #3 - 8000a5a: f000 f923 bl 8000ca4 - - /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */ - HAL_InitTick(TICK_INT_PRIORITY); - 8000a5e: 200f movs r0, #15 - 8000a60: f000 f808 bl 8000a74 - - /* Init the low level hardware */ - HAL_MspInit(); - 8000a64: f7ff fe5a bl 800071c - - /* Return function status */ - return HAL_OK; - 8000a68: 2300 movs r3, #0 -} - 8000a6a: 4618 mov r0, r3 - 8000a6c: bd80 pop {r7, pc} - 8000a6e: bf00 nop - 8000a70: 40022000 .word 0x40022000 - -08000a74 : - * implementation in user file. - * @param TickPriority Tick interrupt priority. - * @retval HAL status - */ -__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) -{ - 8000a74: b580 push {r7, lr} - 8000a76: b082 sub sp, #8 - 8000a78: af00 add r7, sp, #0 - 8000a7a: 6078 str r0, [r7, #4] - /* Configure the SysTick to have interrupt in 1ms time basis*/ - if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U) - 8000a7c: 4b12 ldr r3, [pc, #72] @ (8000ac8 ) - 8000a7e: 681a ldr r2, [r3, #0] - 8000a80: 4b12 ldr r3, [pc, #72] @ (8000acc ) - 8000a82: 781b ldrb r3, [r3, #0] - 8000a84: 4619 mov r1, r3 - 8000a86: f44f 737a mov.w r3, #1000 @ 0x3e8 - 8000a8a: fbb3 f3f1 udiv r3, r3, r1 - 8000a8e: fbb2 f3f3 udiv r3, r2, r3 - 8000a92: 4618 mov r0, r3 - 8000a94: f000 f93b bl 8000d0e - 8000a98: 4603 mov r3, r0 - 8000a9a: 2b00 cmp r3, #0 - 8000a9c: d001 beq.n 8000aa2 - { - return HAL_ERROR; - 8000a9e: 2301 movs r3, #1 - 8000aa0: e00e b.n 8000ac0 - } - - /* Configure the SysTick IRQ priority */ - if (TickPriority < (1UL << __NVIC_PRIO_BITS)) - 8000aa2: 687b ldr r3, [r7, #4] - 8000aa4: 2b0f cmp r3, #15 - 8000aa6: d80a bhi.n 8000abe - { - HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); - 8000aa8: 2200 movs r2, #0 - 8000aaa: 6879 ldr r1, [r7, #4] - 8000aac: f04f 30ff mov.w r0, #4294967295 - 8000ab0: f000 f903 bl 8000cba - uwTickPrio = TickPriority; - 8000ab4: 4a06 ldr r2, [pc, #24] @ (8000ad0 ) - 8000ab6: 687b ldr r3, [r7, #4] - 8000ab8: 6013 str r3, [r2, #0] - { - return HAL_ERROR; - } - - /* Return function status */ - return HAL_OK; - 8000aba: 2300 movs r3, #0 - 8000abc: e000 b.n 8000ac0 - return HAL_ERROR; - 8000abe: 2301 movs r3, #1 -} - 8000ac0: 4618 mov r0, r3 - 8000ac2: 3708 adds r7, #8 - 8000ac4: 46bd mov sp, r7 - 8000ac6: bd80 pop {r7, pc} - 8000ac8: 20000000 .word 0x20000000 - 8000acc: 20000008 .word 0x20000008 - 8000ad0: 20000004 .word 0x20000004 - -08000ad4 : - * @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) -{ - 8000ad4: b480 push {r7} - 8000ad6: af00 add r7, sp, #0 - uwTick += uwTickFreq; - 8000ad8: 4b05 ldr r3, [pc, #20] @ (8000af0 ) - 8000ada: 781b ldrb r3, [r3, #0] - 8000adc: 461a mov r2, r3 - 8000ade: 4b05 ldr r3, [pc, #20] @ (8000af4 ) - 8000ae0: 681b ldr r3, [r3, #0] - 8000ae2: 4413 add r3, r2 - 8000ae4: 4a03 ldr r2, [pc, #12] @ (8000af4 ) - 8000ae6: 6013 str r3, [r2, #0] -} - 8000ae8: bf00 nop - 8000aea: 46bd mov sp, r7 - 8000aec: bc80 pop {r7} - 8000aee: 4770 bx lr - 8000af0: 20000008 .word 0x20000008 - 8000af4: 200002c4 .word 0x200002c4 - -08000af8 : - * @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) -{ - 8000af8: b480 push {r7} - 8000afa: af00 add r7, sp, #0 - return uwTick; - 8000afc: 4b02 ldr r3, [pc, #8] @ (8000b08 ) - 8000afe: 681b ldr r3, [r3, #0] -} - 8000b00: 4618 mov r0, r3 - 8000b02: 46bd mov sp, r7 - 8000b04: bc80 pop {r7} - 8000b06: 4770 bx lr - 8000b08: 200002c4 .word 0x200002c4 - -08000b0c <__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) -{ - 8000b0c: b480 push {r7} - 8000b0e: b085 sub sp, #20 - 8000b10: af00 add r7, sp, #0 - 8000b12: 6078 str r0, [r7, #4] - uint32_t reg_value; - uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 8000b14: 687b ldr r3, [r7, #4] - 8000b16: f003 0307 and.w r3, r3, #7 - 8000b1a: 60fb str r3, [r7, #12] - - reg_value = SCB->AIRCR; /* read old register configuration */ - 8000b1c: 4b0c ldr r3, [pc, #48] @ (8000b50 <__NVIC_SetPriorityGrouping+0x44>) - 8000b1e: 68db ldr r3, [r3, #12] - 8000b20: 60bb str r3, [r7, #8] - reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ - 8000b22: 68ba ldr r2, [r7, #8] - 8000b24: f64f 03ff movw r3, #63743 @ 0xf8ff - 8000b28: 4013 ands r3, r2 - 8000b2a: 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 */ - 8000b2c: 68fb ldr r3, [r7, #12] - 8000b2e: 021a lsls r2, r3, #8 - ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | - 8000b30: 68bb ldr r3, [r7, #8] - 8000b32: 4313 orrs r3, r2 - reg_value = (reg_value | - 8000b34: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 - 8000b38: f443 3300 orr.w r3, r3, #131072 @ 0x20000 - 8000b3c: 60bb str r3, [r7, #8] - SCB->AIRCR = reg_value; - 8000b3e: 4a04 ldr r2, [pc, #16] @ (8000b50 <__NVIC_SetPriorityGrouping+0x44>) - 8000b40: 68bb ldr r3, [r7, #8] - 8000b42: 60d3 str r3, [r2, #12] -} - 8000b44: bf00 nop - 8000b46: 3714 adds r7, #20 - 8000b48: 46bd mov sp, r7 - 8000b4a: bc80 pop {r7} - 8000b4c: 4770 bx lr - 8000b4e: bf00 nop - 8000b50: e000ed00 .word 0xe000ed00 - -08000b54 <__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) -{ - 8000b54: b480 push {r7} - 8000b56: af00 add r7, sp, #0 - return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); - 8000b58: 4b04 ldr r3, [pc, #16] @ (8000b6c <__NVIC_GetPriorityGrouping+0x18>) - 8000b5a: 68db ldr r3, [r3, #12] - 8000b5c: 0a1b lsrs r3, r3, #8 - 8000b5e: f003 0307 and.w r3, r3, #7 -} - 8000b62: 4618 mov r0, r3 - 8000b64: 46bd mov sp, r7 - 8000b66: bc80 pop {r7} - 8000b68: 4770 bx lr - 8000b6a: bf00 nop - 8000b6c: e000ed00 .word 0xe000ed00 - -08000b70 <__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) -{ - 8000b70: b480 push {r7} - 8000b72: b083 sub sp, #12 - 8000b74: af00 add r7, sp, #0 - 8000b76: 4603 mov r3, r0 - 8000b78: 71fb strb r3, [r7, #7] - if ((int32_t)(IRQn) >= 0) - 8000b7a: f997 3007 ldrsb.w r3, [r7, #7] - 8000b7e: 2b00 cmp r3, #0 - 8000b80: db0b blt.n 8000b9a <__NVIC_EnableIRQ+0x2a> - { - NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); - 8000b82: 79fb ldrb r3, [r7, #7] - 8000b84: f003 021f and.w r2, r3, #31 - 8000b88: 4906 ldr r1, [pc, #24] @ (8000ba4 <__NVIC_EnableIRQ+0x34>) - 8000b8a: f997 3007 ldrsb.w r3, [r7, #7] - 8000b8e: 095b lsrs r3, r3, #5 - 8000b90: 2001 movs r0, #1 - 8000b92: fa00 f202 lsl.w r2, r0, r2 - 8000b96: f841 2023 str.w r2, [r1, r3, lsl #2] - } -} - 8000b9a: bf00 nop - 8000b9c: 370c adds r7, #12 - 8000b9e: 46bd mov sp, r7 - 8000ba0: bc80 pop {r7} - 8000ba2: 4770 bx lr - 8000ba4: e000e100 .word 0xe000e100 - -08000ba8 <__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) -{ - 8000ba8: b480 push {r7} - 8000baa: b083 sub sp, #12 - 8000bac: af00 add r7, sp, #0 - 8000bae: 4603 mov r3, r0 - 8000bb0: 6039 str r1, [r7, #0] - 8000bb2: 71fb strb r3, [r7, #7] - if ((int32_t)(IRQn) >= 0) - 8000bb4: f997 3007 ldrsb.w r3, [r7, #7] - 8000bb8: 2b00 cmp r3, #0 - 8000bba: db0a blt.n 8000bd2 <__NVIC_SetPriority+0x2a> - { - NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 8000bbc: 683b ldr r3, [r7, #0] - 8000bbe: b2da uxtb r2, r3 - 8000bc0: 490c ldr r1, [pc, #48] @ (8000bf4 <__NVIC_SetPriority+0x4c>) - 8000bc2: f997 3007 ldrsb.w r3, [r7, #7] - 8000bc6: 0112 lsls r2, r2, #4 - 8000bc8: b2d2 uxtb r2, r2 - 8000bca: 440b add r3, r1 - 8000bcc: 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); - } -} - 8000bd0: e00a b.n 8000be8 <__NVIC_SetPriority+0x40> - SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 8000bd2: 683b ldr r3, [r7, #0] - 8000bd4: b2da uxtb r2, r3 - 8000bd6: 4908 ldr r1, [pc, #32] @ (8000bf8 <__NVIC_SetPriority+0x50>) - 8000bd8: 79fb ldrb r3, [r7, #7] - 8000bda: f003 030f and.w r3, r3, #15 - 8000bde: 3b04 subs r3, #4 - 8000be0: 0112 lsls r2, r2, #4 - 8000be2: b2d2 uxtb r2, r2 - 8000be4: 440b add r3, r1 - 8000be6: 761a strb r2, [r3, #24] -} - 8000be8: bf00 nop - 8000bea: 370c adds r7, #12 - 8000bec: 46bd mov sp, r7 - 8000bee: bc80 pop {r7} - 8000bf0: 4770 bx lr - 8000bf2: bf00 nop - 8000bf4: e000e100 .word 0xe000e100 - 8000bf8: e000ed00 .word 0xe000ed00 - -08000bfc : - \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) -{ - 8000bfc: b480 push {r7} - 8000bfe: b089 sub sp, #36 @ 0x24 - 8000c00: af00 add r7, sp, #0 - 8000c02: 60f8 str r0, [r7, #12] - 8000c04: 60b9 str r1, [r7, #8] - 8000c06: 607a str r2, [r7, #4] - uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 8000c08: 68fb ldr r3, [r7, #12] - 8000c0a: f003 0307 and.w r3, r3, #7 - 8000c0e: 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); - 8000c10: 69fb ldr r3, [r7, #28] - 8000c12: f1c3 0307 rsb r3, r3, #7 - 8000c16: 2b04 cmp r3, #4 - 8000c18: bf28 it cs - 8000c1a: 2304 movcs r3, #4 - 8000c1c: 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)); - 8000c1e: 69fb ldr r3, [r7, #28] - 8000c20: 3304 adds r3, #4 - 8000c22: 2b06 cmp r3, #6 - 8000c24: d902 bls.n 8000c2c - 8000c26: 69fb ldr r3, [r7, #28] - 8000c28: 3b03 subs r3, #3 - 8000c2a: e000 b.n 8000c2e - 8000c2c: 2300 movs r3, #0 - 8000c2e: 617b str r3, [r7, #20] - - return ( - ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 8000c30: f04f 32ff mov.w r2, #4294967295 - 8000c34: 69bb ldr r3, [r7, #24] - 8000c36: fa02 f303 lsl.w r3, r2, r3 - 8000c3a: 43da mvns r2, r3 - 8000c3c: 68bb ldr r3, [r7, #8] - 8000c3e: 401a ands r2, r3 - 8000c40: 697b ldr r3, [r7, #20] - 8000c42: 409a lsls r2, r3 - ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) - 8000c44: f04f 31ff mov.w r1, #4294967295 - 8000c48: 697b ldr r3, [r7, #20] - 8000c4a: fa01 f303 lsl.w r3, r1, r3 - 8000c4e: 43d9 mvns r1, r3 - 8000c50: 687b ldr r3, [r7, #4] - 8000c52: 400b ands r3, r1 - ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 8000c54: 4313 orrs r3, r2 - ); -} - 8000c56: 4618 mov r0, r3 - 8000c58: 3724 adds r7, #36 @ 0x24 - 8000c5a: 46bd mov sp, r7 - 8000c5c: bc80 pop {r7} - 8000c5e: 4770 bx lr - -08000c60 : - \note When the variable __Vendor_SysTickConfig is set to 1, then the - function SysTick_Config is not included. In this case, the file device.h - must contain a vendor-specific implementation of this function. - */ -__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) -{ - 8000c60: b580 push {r7, lr} - 8000c62: b082 sub sp, #8 - 8000c64: af00 add r7, sp, #0 - 8000c66: 6078 str r0, [r7, #4] - if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) - 8000c68: 687b ldr r3, [r7, #4] - 8000c6a: 3b01 subs r3, #1 - 8000c6c: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 - 8000c70: d301 bcc.n 8000c76 - { - return (1UL); /* Reload value impossible */ - 8000c72: 2301 movs r3, #1 - 8000c74: e00f b.n 8000c96 - } - - SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ - 8000c76: 4a0a ldr r2, [pc, #40] @ (8000ca0 ) - 8000c78: 687b ldr r3, [r7, #4] - 8000c7a: 3b01 subs r3, #1 - 8000c7c: 6053 str r3, [r2, #4] - NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ - 8000c7e: 210f movs r1, #15 - 8000c80: f04f 30ff mov.w r0, #4294967295 - 8000c84: f7ff ff90 bl 8000ba8 <__NVIC_SetPriority> - SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ - 8000c88: 4b05 ldr r3, [pc, #20] @ (8000ca0 ) - 8000c8a: 2200 movs r2, #0 - 8000c8c: 609a str r2, [r3, #8] - SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - 8000c8e: 4b04 ldr r3, [pc, #16] @ (8000ca0 ) - 8000c90: 2207 movs r2, #7 - 8000c92: 601a str r2, [r3, #0] - SysTick_CTRL_TICKINT_Msk | - SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ - return (0UL); /* Function successful */ - 8000c94: 2300 movs r3, #0 -} - 8000c96: 4618 mov r0, r3 - 8000c98: 3708 adds r7, #8 - 8000c9a: 46bd mov sp, r7 - 8000c9c: bd80 pop {r7, pc} - 8000c9e: bf00 nop - 8000ca0: e000e010 .word 0xe000e010 - -08000ca4 : - * @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) -{ - 8000ca4: b580 push {r7, lr} - 8000ca6: b082 sub sp, #8 - 8000ca8: af00 add r7, sp, #0 - 8000caa: 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); - 8000cac: 6878 ldr r0, [r7, #4] - 8000cae: f7ff ff2d bl 8000b0c <__NVIC_SetPriorityGrouping> -} - 8000cb2: bf00 nop - 8000cb4: 3708 adds r7, #8 - 8000cb6: 46bd mov sp, r7 - 8000cb8: bd80 pop {r7, pc} - -08000cba : - * 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) -{ - 8000cba: b580 push {r7, lr} - 8000cbc: b086 sub sp, #24 - 8000cbe: af00 add r7, sp, #0 - 8000cc0: 4603 mov r3, r0 - 8000cc2: 60b9 str r1, [r7, #8] - 8000cc4: 607a str r2, [r7, #4] - 8000cc6: 73fb strb r3, [r7, #15] - uint32_t prioritygroup = 0x00U; - 8000cc8: 2300 movs r3, #0 - 8000cca: 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(); - 8000ccc: f7ff ff42 bl 8000b54 <__NVIC_GetPriorityGrouping> - 8000cd0: 6178 str r0, [r7, #20] - - NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); - 8000cd2: 687a ldr r2, [r7, #4] - 8000cd4: 68b9 ldr r1, [r7, #8] - 8000cd6: 6978 ldr r0, [r7, #20] - 8000cd8: f7ff ff90 bl 8000bfc - 8000cdc: 4602 mov r2, r0 - 8000cde: f997 300f ldrsb.w r3, [r7, #15] - 8000ce2: 4611 mov r1, r2 - 8000ce4: 4618 mov r0, r3 - 8000ce6: f7ff ff5f bl 8000ba8 <__NVIC_SetPriority> -} - 8000cea: bf00 nop - 8000cec: 3718 adds r7, #24 - 8000cee: 46bd mov sp, r7 - 8000cf0: bd80 pop {r7, pc} - -08000cf2 : - * This parameter can be an enumerator of IRQn_Type enumeration - * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h)) - * @retval None - */ -void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) -{ - 8000cf2: b580 push {r7, lr} - 8000cf4: b082 sub sp, #8 - 8000cf6: af00 add r7, sp, #0 - 8000cf8: 4603 mov r3, r0 - 8000cfa: 71fb strb r3, [r7, #7] - /* Check the parameters */ - assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); - - /* Enable interrupt */ - NVIC_EnableIRQ(IRQn); - 8000cfc: f997 3007 ldrsb.w r3, [r7, #7] - 8000d00: 4618 mov r0, r3 - 8000d02: f7ff ff35 bl 8000b70 <__NVIC_EnableIRQ> -} - 8000d06: bf00 nop - 8000d08: 3708 adds r7, #8 - 8000d0a: 46bd mov sp, r7 - 8000d0c: bd80 pop {r7, pc} - -08000d0e : - * @param TicksNumb: Specifies the ticks Number of ticks between two interrupts. - * @retval status: - 0 Function succeeded. - * - 1 Function failed. - */ -uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) -{ - 8000d0e: b580 push {r7, lr} - 8000d10: b082 sub sp, #8 - 8000d12: af00 add r7, sp, #0 - 8000d14: 6078 str r0, [r7, #4] - return SysTick_Config(TicksNumb); - 8000d16: 6878 ldr r0, [r7, #4] - 8000d18: f7ff ffa2 bl 8000c60 - 8000d1c: 4603 mov r3, r0 -} - 8000d1e: 4618 mov r0, r3 - 8000d20: 3708 adds r7, #8 - 8000d22: 46bd mov sp, r7 - 8000d24: bd80 pop {r7, pc} - ... - -08000d28 : - * @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) -{ - 8000d28: b480 push {r7} - 8000d2a: b08b sub sp, #44 @ 0x2c - 8000d2c: af00 add r7, sp, #0 - 8000d2e: 6078 str r0, [r7, #4] - 8000d30: 6039 str r1, [r7, #0] - uint32_t position = 0x00u; - 8000d32: 2300 movs r3, #0 - 8000d34: 627b str r3, [r7, #36] @ 0x24 - uint32_t ioposition; - uint32_t iocurrent; - uint32_t temp; - uint32_t config = 0x00u; - 8000d36: 2300 movs r3, #0 - 8000d38: 623b str r3, [r7, #32] - assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); - assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); - assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); - - /* Configure the port pins */ - while (((GPIO_Init->Pin) >> position) != 0x00u) - 8000d3a: e169 b.n 8001010 - { - /* Get the IO position */ - ioposition = (0x01uL << position); - 8000d3c: 2201 movs r2, #1 - 8000d3e: 6a7b ldr r3, [r7, #36] @ 0x24 - 8000d40: fa02 f303 lsl.w r3, r2, r3 - 8000d44: 61fb str r3, [r7, #28] - - /* Get the current IO position */ - iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition; - 8000d46: 683b ldr r3, [r7, #0] - 8000d48: 681b ldr r3, [r3, #0] - 8000d4a: 69fa ldr r2, [r7, #28] - 8000d4c: 4013 ands r3, r2 - 8000d4e: 61bb str r3, [r7, #24] - - if (iocurrent == ioposition) - 8000d50: 69ba ldr r2, [r7, #24] - 8000d52: 69fb ldr r3, [r7, #28] - 8000d54: 429a cmp r2, r3 - 8000d56: f040 8158 bne.w 800100a - { - /* Check the Alternate function parameters */ - assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); - - /* Based on the required mode, filling config variable with MODEy[1:0] and CNFy[3:2] corresponding bits */ - switch (GPIO_Init->Mode) - 8000d5a: 683b ldr r3, [r7, #0] - 8000d5c: 685b ldr r3, [r3, #4] - 8000d5e: 4a9a ldr r2, [pc, #616] @ (8000fc8 ) - 8000d60: 4293 cmp r3, r2 - 8000d62: d05e beq.n 8000e22 - 8000d64: 4a98 ldr r2, [pc, #608] @ (8000fc8 ) - 8000d66: 4293 cmp r3, r2 - 8000d68: d875 bhi.n 8000e56 - 8000d6a: 4a98 ldr r2, [pc, #608] @ (8000fcc ) - 8000d6c: 4293 cmp r3, r2 - 8000d6e: d058 beq.n 8000e22 - 8000d70: 4a96 ldr r2, [pc, #600] @ (8000fcc ) - 8000d72: 4293 cmp r3, r2 - 8000d74: d86f bhi.n 8000e56 - 8000d76: 4a96 ldr r2, [pc, #600] @ (8000fd0 ) - 8000d78: 4293 cmp r3, r2 - 8000d7a: d052 beq.n 8000e22 - 8000d7c: 4a94 ldr r2, [pc, #592] @ (8000fd0 ) - 8000d7e: 4293 cmp r3, r2 - 8000d80: d869 bhi.n 8000e56 - 8000d82: 4a94 ldr r2, [pc, #592] @ (8000fd4 ) - 8000d84: 4293 cmp r3, r2 - 8000d86: d04c beq.n 8000e22 - 8000d88: 4a92 ldr r2, [pc, #584] @ (8000fd4 ) - 8000d8a: 4293 cmp r3, r2 - 8000d8c: d863 bhi.n 8000e56 - 8000d8e: 4a92 ldr r2, [pc, #584] @ (8000fd8 ) - 8000d90: 4293 cmp r3, r2 - 8000d92: d046 beq.n 8000e22 - 8000d94: 4a90 ldr r2, [pc, #576] @ (8000fd8 ) - 8000d96: 4293 cmp r3, r2 - 8000d98: d85d bhi.n 8000e56 - 8000d9a: 2b12 cmp r3, #18 - 8000d9c: d82a bhi.n 8000df4 - 8000d9e: 2b12 cmp r3, #18 - 8000da0: d859 bhi.n 8000e56 - 8000da2: a201 add r2, pc, #4 @ (adr r2, 8000da8 ) - 8000da4: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8000da8: 08000e23 .word 0x08000e23 - 8000dac: 08000dfd .word 0x08000dfd - 8000db0: 08000e0f .word 0x08000e0f - 8000db4: 08000e51 .word 0x08000e51 - 8000db8: 08000e57 .word 0x08000e57 - 8000dbc: 08000e57 .word 0x08000e57 - 8000dc0: 08000e57 .word 0x08000e57 - 8000dc4: 08000e57 .word 0x08000e57 - 8000dc8: 08000e57 .word 0x08000e57 - 8000dcc: 08000e57 .word 0x08000e57 - 8000dd0: 08000e57 .word 0x08000e57 - 8000dd4: 08000e57 .word 0x08000e57 - 8000dd8: 08000e57 .word 0x08000e57 - 8000ddc: 08000e57 .word 0x08000e57 - 8000de0: 08000e57 .word 0x08000e57 - 8000de4: 08000e57 .word 0x08000e57 - 8000de8: 08000e57 .word 0x08000e57 - 8000dec: 08000e05 .word 0x08000e05 - 8000df0: 08000e19 .word 0x08000e19 - 8000df4: 4a79 ldr r2, [pc, #484] @ (8000fdc ) - 8000df6: 4293 cmp r3, r2 - 8000df8: d013 beq.n 8000e22 - config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG; - break; - - /* Parameters are checked with assert_param */ - default: - break; - 8000dfa: e02c b.n 8000e56 - config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_PP; - 8000dfc: 683b ldr r3, [r7, #0] - 8000dfe: 68db ldr r3, [r3, #12] - 8000e00: 623b str r3, [r7, #32] - break; - 8000e02: e029 b.n 8000e58 - config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_OD; - 8000e04: 683b ldr r3, [r7, #0] - 8000e06: 68db ldr r3, [r3, #12] - 8000e08: 3304 adds r3, #4 - 8000e0a: 623b str r3, [r7, #32] - break; - 8000e0c: e024 b.n 8000e58 - config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_PP; - 8000e0e: 683b ldr r3, [r7, #0] - 8000e10: 68db ldr r3, [r3, #12] - 8000e12: 3308 adds r3, #8 - 8000e14: 623b str r3, [r7, #32] - break; - 8000e16: e01f b.n 8000e58 - config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_OD; - 8000e18: 683b ldr r3, [r7, #0] - 8000e1a: 68db ldr r3, [r3, #12] - 8000e1c: 330c adds r3, #12 - 8000e1e: 623b str r3, [r7, #32] - break; - 8000e20: e01a b.n 8000e58 - if (GPIO_Init->Pull == GPIO_NOPULL) - 8000e22: 683b ldr r3, [r7, #0] - 8000e24: 689b ldr r3, [r3, #8] - 8000e26: 2b00 cmp r3, #0 - 8000e28: d102 bne.n 8000e30 - config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_FLOATING; - 8000e2a: 2304 movs r3, #4 - 8000e2c: 623b str r3, [r7, #32] - break; - 8000e2e: e013 b.n 8000e58 - else if (GPIO_Init->Pull == GPIO_PULLUP) - 8000e30: 683b ldr r3, [r7, #0] - 8000e32: 689b ldr r3, [r3, #8] - 8000e34: 2b01 cmp r3, #1 - 8000e36: d105 bne.n 8000e44 - config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD; - 8000e38: 2308 movs r3, #8 - 8000e3a: 623b str r3, [r7, #32] - GPIOx->BSRR = ioposition; - 8000e3c: 687b ldr r3, [r7, #4] - 8000e3e: 69fa ldr r2, [r7, #28] - 8000e40: 611a str r2, [r3, #16] - break; - 8000e42: e009 b.n 8000e58 - config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD; - 8000e44: 2308 movs r3, #8 - 8000e46: 623b str r3, [r7, #32] - GPIOx->BRR = ioposition; - 8000e48: 687b ldr r3, [r7, #4] - 8000e4a: 69fa ldr r2, [r7, #28] - 8000e4c: 615a str r2, [r3, #20] - break; - 8000e4e: e003 b.n 8000e58 - config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG; - 8000e50: 2300 movs r3, #0 - 8000e52: 623b str r3, [r7, #32] - break; - 8000e54: e000 b.n 8000e58 - break; - 8000e56: bf00 nop - } - - /* Check if the current bit belongs to first half or last half of the pin count number - in order to address CRH or CRL register*/ - configregister = (iocurrent < GPIO_PIN_8) ? &GPIOx->CRL : &GPIOx->CRH; - 8000e58: 69bb ldr r3, [r7, #24] - 8000e5a: 2bff cmp r3, #255 @ 0xff - 8000e5c: d801 bhi.n 8000e62 - 8000e5e: 687b ldr r3, [r7, #4] - 8000e60: e001 b.n 8000e66 - 8000e62: 687b ldr r3, [r7, #4] - 8000e64: 3304 adds r3, #4 - 8000e66: 617b str r3, [r7, #20] - registeroffset = (iocurrent < GPIO_PIN_8) ? (position << 2u) : ((position - 8u) << 2u); - 8000e68: 69bb ldr r3, [r7, #24] - 8000e6a: 2bff cmp r3, #255 @ 0xff - 8000e6c: d802 bhi.n 8000e74 - 8000e6e: 6a7b ldr r3, [r7, #36] @ 0x24 - 8000e70: 009b lsls r3, r3, #2 - 8000e72: e002 b.n 8000e7a - 8000e74: 6a7b ldr r3, [r7, #36] @ 0x24 - 8000e76: 3b08 subs r3, #8 - 8000e78: 009b lsls r3, r3, #2 - 8000e7a: 613b str r3, [r7, #16] - - /* Apply the new configuration of the pin to the register */ - MODIFY_REG((*configregister), ((GPIO_CRL_MODE0 | GPIO_CRL_CNF0) << registeroffset), (config << registeroffset)); - 8000e7c: 697b ldr r3, [r7, #20] - 8000e7e: 681a ldr r2, [r3, #0] - 8000e80: 210f movs r1, #15 - 8000e82: 693b ldr r3, [r7, #16] - 8000e84: fa01 f303 lsl.w r3, r1, r3 - 8000e88: 43db mvns r3, r3 - 8000e8a: 401a ands r2, r3 - 8000e8c: 6a39 ldr r1, [r7, #32] - 8000e8e: 693b ldr r3, [r7, #16] - 8000e90: fa01 f303 lsl.w r3, r1, r3 - 8000e94: 431a orrs r2, r3 - 8000e96: 697b ldr r3, [r7, #20] - 8000e98: 601a str r2, [r3, #0] - - /*--------------------- EXTI Mode Configuration ------------------------*/ - /* Configure the External Interrupt or event for the current IO */ - if ((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE) - 8000e9a: 683b ldr r3, [r7, #0] - 8000e9c: 685b ldr r3, [r3, #4] - 8000e9e: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8000ea2: 2b00 cmp r3, #0 - 8000ea4: f000 80b1 beq.w 800100a - { - /* Enable AFIO Clock */ - __HAL_RCC_AFIO_CLK_ENABLE(); - 8000ea8: 4b4d ldr r3, [pc, #308] @ (8000fe0 ) - 8000eaa: 699b ldr r3, [r3, #24] - 8000eac: 4a4c ldr r2, [pc, #304] @ (8000fe0 ) - 8000eae: f043 0301 orr.w r3, r3, #1 - 8000eb2: 6193 str r3, [r2, #24] - 8000eb4: 4b4a ldr r3, [pc, #296] @ (8000fe0 ) - 8000eb6: 699b ldr r3, [r3, #24] - 8000eb8: f003 0301 and.w r3, r3, #1 - 8000ebc: 60bb str r3, [r7, #8] - 8000ebe: 68bb ldr r3, [r7, #8] - temp = AFIO->EXTICR[position >> 2u]; - 8000ec0: 4a48 ldr r2, [pc, #288] @ (8000fe4 ) - 8000ec2: 6a7b ldr r3, [r7, #36] @ 0x24 - 8000ec4: 089b lsrs r3, r3, #2 - 8000ec6: 3302 adds r3, #2 - 8000ec8: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 8000ecc: 60fb str r3, [r7, #12] - CLEAR_BIT(temp, (0x0Fu) << (4u * (position & 0x03u))); - 8000ece: 6a7b ldr r3, [r7, #36] @ 0x24 - 8000ed0: f003 0303 and.w r3, r3, #3 - 8000ed4: 009b lsls r3, r3, #2 - 8000ed6: 220f movs r2, #15 - 8000ed8: fa02 f303 lsl.w r3, r2, r3 - 8000edc: 43db mvns r3, r3 - 8000ede: 68fa ldr r2, [r7, #12] - 8000ee0: 4013 ands r3, r2 - 8000ee2: 60fb str r3, [r7, #12] - SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4u * (position & 0x03u))); - 8000ee4: 687b ldr r3, [r7, #4] - 8000ee6: 4a40 ldr r2, [pc, #256] @ (8000fe8 ) - 8000ee8: 4293 cmp r3, r2 - 8000eea: d013 beq.n 8000f14 - 8000eec: 687b ldr r3, [r7, #4] - 8000eee: 4a3f ldr r2, [pc, #252] @ (8000fec ) - 8000ef0: 4293 cmp r3, r2 - 8000ef2: d00d beq.n 8000f10 - 8000ef4: 687b ldr r3, [r7, #4] - 8000ef6: 4a3e ldr r2, [pc, #248] @ (8000ff0 ) - 8000ef8: 4293 cmp r3, r2 - 8000efa: d007 beq.n 8000f0c - 8000efc: 687b ldr r3, [r7, #4] - 8000efe: 4a3d ldr r2, [pc, #244] @ (8000ff4 ) - 8000f00: 4293 cmp r3, r2 - 8000f02: d101 bne.n 8000f08 - 8000f04: 2303 movs r3, #3 - 8000f06: e006 b.n 8000f16 - 8000f08: 2304 movs r3, #4 - 8000f0a: e004 b.n 8000f16 - 8000f0c: 2302 movs r3, #2 - 8000f0e: e002 b.n 8000f16 - 8000f10: 2301 movs r3, #1 - 8000f12: e000 b.n 8000f16 - 8000f14: 2300 movs r3, #0 - 8000f16: 6a7a ldr r2, [r7, #36] @ 0x24 - 8000f18: f002 0203 and.w r2, r2, #3 - 8000f1c: 0092 lsls r2, r2, #2 - 8000f1e: 4093 lsls r3, r2 - 8000f20: 68fa ldr r2, [r7, #12] - 8000f22: 4313 orrs r3, r2 - 8000f24: 60fb str r3, [r7, #12] - AFIO->EXTICR[position >> 2u] = temp; - 8000f26: 492f ldr r1, [pc, #188] @ (8000fe4 ) - 8000f28: 6a7b ldr r3, [r7, #36] @ 0x24 - 8000f2a: 089b lsrs r3, r3, #2 - 8000f2c: 3302 adds r3, #2 - 8000f2e: 68fa ldr r2, [r7, #12] - 8000f30: f841 2023 str.w r2, [r1, r3, lsl #2] - - - /* Enable or disable the rising trigger */ - if ((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE) - 8000f34: 683b ldr r3, [r7, #0] - 8000f36: 685b ldr r3, [r3, #4] - 8000f38: f403 1380 and.w r3, r3, #1048576 @ 0x100000 - 8000f3c: 2b00 cmp r3, #0 - 8000f3e: d006 beq.n 8000f4e - { - SET_BIT(EXTI->RTSR, iocurrent); - 8000f40: 4b2d ldr r3, [pc, #180] @ (8000ff8 ) - 8000f42: 689a ldr r2, [r3, #8] - 8000f44: 492c ldr r1, [pc, #176] @ (8000ff8 ) - 8000f46: 69bb ldr r3, [r7, #24] - 8000f48: 4313 orrs r3, r2 - 8000f4a: 608b str r3, [r1, #8] - 8000f4c: e006 b.n 8000f5c - } - else - { - CLEAR_BIT(EXTI->RTSR, iocurrent); - 8000f4e: 4b2a ldr r3, [pc, #168] @ (8000ff8 ) - 8000f50: 689a ldr r2, [r3, #8] - 8000f52: 69bb ldr r3, [r7, #24] - 8000f54: 43db mvns r3, r3 - 8000f56: 4928 ldr r1, [pc, #160] @ (8000ff8 ) - 8000f58: 4013 ands r3, r2 - 8000f5a: 608b str r3, [r1, #8] - } - - /* Enable or disable the falling trigger */ - if ((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE) - 8000f5c: 683b ldr r3, [r7, #0] - 8000f5e: 685b ldr r3, [r3, #4] - 8000f60: f403 1300 and.w r3, r3, #2097152 @ 0x200000 - 8000f64: 2b00 cmp r3, #0 - 8000f66: d006 beq.n 8000f76 - { - SET_BIT(EXTI->FTSR, iocurrent); - 8000f68: 4b23 ldr r3, [pc, #140] @ (8000ff8 ) - 8000f6a: 68da ldr r2, [r3, #12] - 8000f6c: 4922 ldr r1, [pc, #136] @ (8000ff8 ) - 8000f6e: 69bb ldr r3, [r7, #24] - 8000f70: 4313 orrs r3, r2 - 8000f72: 60cb str r3, [r1, #12] - 8000f74: e006 b.n 8000f84 - } - else - { - CLEAR_BIT(EXTI->FTSR, iocurrent); - 8000f76: 4b20 ldr r3, [pc, #128] @ (8000ff8 ) - 8000f78: 68da ldr r2, [r3, #12] - 8000f7a: 69bb ldr r3, [r7, #24] - 8000f7c: 43db mvns r3, r3 - 8000f7e: 491e ldr r1, [pc, #120] @ (8000ff8 ) - 8000f80: 4013 ands r3, r2 - 8000f82: 60cb str r3, [r1, #12] - } - - /* Configure the event mask */ - if ((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT) - 8000f84: 683b ldr r3, [r7, #0] - 8000f86: 685b ldr r3, [r3, #4] - 8000f88: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8000f8c: 2b00 cmp r3, #0 - 8000f8e: d006 beq.n 8000f9e - { - SET_BIT(EXTI->EMR, iocurrent); - 8000f90: 4b19 ldr r3, [pc, #100] @ (8000ff8 ) - 8000f92: 685a ldr r2, [r3, #4] - 8000f94: 4918 ldr r1, [pc, #96] @ (8000ff8 ) - 8000f96: 69bb ldr r3, [r7, #24] - 8000f98: 4313 orrs r3, r2 - 8000f9a: 604b str r3, [r1, #4] - 8000f9c: e006 b.n 8000fac - } - else - { - CLEAR_BIT(EXTI->EMR, iocurrent); - 8000f9e: 4b16 ldr r3, [pc, #88] @ (8000ff8 ) - 8000fa0: 685a ldr r2, [r3, #4] - 8000fa2: 69bb ldr r3, [r7, #24] - 8000fa4: 43db mvns r3, r3 - 8000fa6: 4914 ldr r1, [pc, #80] @ (8000ff8 ) - 8000fa8: 4013 ands r3, r2 - 8000faa: 604b str r3, [r1, #4] - } - - /* Configure the interrupt mask */ - if ((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT) - 8000fac: 683b ldr r3, [r7, #0] - 8000fae: 685b ldr r3, [r3, #4] - 8000fb0: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 8000fb4: 2b00 cmp r3, #0 - 8000fb6: d021 beq.n 8000ffc - { - SET_BIT(EXTI->IMR, iocurrent); - 8000fb8: 4b0f ldr r3, [pc, #60] @ (8000ff8 ) - 8000fba: 681a ldr r2, [r3, #0] - 8000fbc: 490e ldr r1, [pc, #56] @ (8000ff8 ) - 8000fbe: 69bb ldr r3, [r7, #24] - 8000fc0: 4313 orrs r3, r2 - 8000fc2: 600b str r3, [r1, #0] - 8000fc4: e021 b.n 800100a - 8000fc6: bf00 nop - 8000fc8: 10320000 .word 0x10320000 - 8000fcc: 10310000 .word 0x10310000 - 8000fd0: 10220000 .word 0x10220000 - 8000fd4: 10210000 .word 0x10210000 - 8000fd8: 10120000 .word 0x10120000 - 8000fdc: 10110000 .word 0x10110000 - 8000fe0: 40021000 .word 0x40021000 - 8000fe4: 40010000 .word 0x40010000 - 8000fe8: 40010800 .word 0x40010800 - 8000fec: 40010c00 .word 0x40010c00 - 8000ff0: 40011000 .word 0x40011000 - 8000ff4: 40011400 .word 0x40011400 - 8000ff8: 40010400 .word 0x40010400 - } - else - { - CLEAR_BIT(EXTI->IMR, iocurrent); - 8000ffc: 4b0b ldr r3, [pc, #44] @ (800102c ) - 8000ffe: 681a ldr r2, [r3, #0] - 8001000: 69bb ldr r3, [r7, #24] - 8001002: 43db mvns r3, r3 - 8001004: 4909 ldr r1, [pc, #36] @ (800102c ) - 8001006: 4013 ands r3, r2 - 8001008: 600b str r3, [r1, #0] - } - } - } - - position++; - 800100a: 6a7b ldr r3, [r7, #36] @ 0x24 - 800100c: 3301 adds r3, #1 - 800100e: 627b str r3, [r7, #36] @ 0x24 - while (((GPIO_Init->Pin) >> position) != 0x00u) - 8001010: 683b ldr r3, [r7, #0] - 8001012: 681a ldr r2, [r3, #0] - 8001014: 6a7b ldr r3, [r7, #36] @ 0x24 - 8001016: fa22 f303 lsr.w r3, r2, r3 - 800101a: 2b00 cmp r3, #0 - 800101c: f47f ae8e bne.w 8000d3c - } -} - 8001020: bf00 nop - 8001022: bf00 nop - 8001024: 372c adds r7, #44 @ 0x2c - 8001026: 46bd mov sp, r7 - 8001028: bc80 pop {r7} - 800102a: 4770 bx lr - 800102c: 40010400 .word 0x40010400 - -08001030 : - * parameters in the PCD_InitTypeDef and initialize the associated handle. - * @param hpcd PCD handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd) -{ - 8001030: b580 push {r7, lr} - 8001032: b084 sub sp, #16 - 8001034: af00 add r7, sp, #0 - 8001036: 6078 str r0, [r7, #4] - uint8_t i; - - /* Check the PCD handle allocation */ - if (hpcd == NULL) - 8001038: 687b ldr r3, [r7, #4] - 800103a: 2b00 cmp r3, #0 - 800103c: d101 bne.n 8001042 - { - return HAL_ERROR; - 800103e: 2301 movs r3, #1 - 8001040: e0e8 b.n 8001214 - } - - /* Check the parameters */ - assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance)); - - if (hpcd->State == HAL_PCD_STATE_RESET) - 8001042: 687b ldr r3, [r7, #4] - 8001044: f893 3291 ldrb.w r3, [r3, #657] @ 0x291 - 8001048: b2db uxtb r3, r3 - 800104a: 2b00 cmp r3, #0 - 800104c: d106 bne.n 800105c - { - /* Allocate lock resource and initialize it */ - hpcd->Lock = HAL_UNLOCKED; - 800104e: 687b ldr r3, [r7, #4] - 8001050: 2200 movs r2, #0 - 8001052: f883 2290 strb.w r2, [r3, #656] @ 0x290 - - /* Init the low level hardware */ - hpcd->MspInitCallback(hpcd); -#else - /* Init the low level hardware : GPIO, CLOCK, NVIC... */ - HAL_PCD_MspInit(hpcd); - 8001056: 6878 ldr r0, [r7, #4] - 8001058: f007 f932 bl 80082c0 -#endif /* (USE_HAL_PCD_REGISTER_CALLBACKS) */ - } - - hpcd->State = HAL_PCD_STATE_BUSY; - 800105c: 687b ldr r3, [r7, #4] - 800105e: 2203 movs r2, #3 - 8001060: f883 2291 strb.w r2, [r3, #657] @ 0x291 - - /* Disable DMA mode for FS instance */ - hpcd->Init.dma_enable = 0U; - 8001064: 687b ldr r3, [r7, #4] - 8001066: 2200 movs r2, #0 - 8001068: 715a strb r2, [r3, #5] - - /* Disable the Interrupts */ - __HAL_PCD_DISABLE(hpcd); - 800106a: 687b ldr r3, [r7, #4] - 800106c: 681b ldr r3, [r3, #0] - 800106e: 4618 mov r0, r3 - 8001070: f002 ffd7 bl 8004022 - - /*Init the Core (common init.) */ - if (USB_CoreInit(hpcd->Instance, hpcd->Init) != HAL_OK) - 8001074: 687b ldr r3, [r7, #4] - 8001076: 6818 ldr r0, [r3, #0] - 8001078: 687b ldr r3, [r7, #4] - 800107a: 3304 adds r3, #4 - 800107c: cb0e ldmia r3, {r1, r2, r3} - 800107e: f002 ffad bl 8003fdc - 8001082: 4603 mov r3, r0 - 8001084: 2b00 cmp r3, #0 - 8001086: d005 beq.n 8001094 - { - hpcd->State = HAL_PCD_STATE_ERROR; - 8001088: 687b ldr r3, [r7, #4] - 800108a: 2202 movs r2, #2 - 800108c: f883 2291 strb.w r2, [r3, #657] @ 0x291 - return HAL_ERROR; - 8001090: 2301 movs r3, #1 - 8001092: e0bf b.n 8001214 - } - - /* Force Device Mode */ - if (USB_SetCurrentMode(hpcd->Instance, USB_DEVICE_MODE) != HAL_OK) - 8001094: 687b ldr r3, [r7, #4] - 8001096: 681b ldr r3, [r3, #0] - 8001098: 2100 movs r1, #0 - 800109a: 4618 mov r0, r3 - 800109c: f002 ffdb bl 8004056 - 80010a0: 4603 mov r3, r0 - 80010a2: 2b00 cmp r3, #0 - 80010a4: d005 beq.n 80010b2 - { - hpcd->State = HAL_PCD_STATE_ERROR; - 80010a6: 687b ldr r3, [r7, #4] - 80010a8: 2202 movs r2, #2 - 80010aa: f883 2291 strb.w r2, [r3, #657] @ 0x291 - return HAL_ERROR; - 80010ae: 2301 movs r3, #1 - 80010b0: e0b0 b.n 8001214 - } - - /* Init endpoints structures */ - for (i = 0U; i < hpcd->Init.dev_endpoints; i++) - 80010b2: 2300 movs r3, #0 - 80010b4: 73fb strb r3, [r7, #15] - 80010b6: e03e b.n 8001136 - { - /* Init ep structure */ - hpcd->IN_ep[i].is_in = 1U; - 80010b8: 7bfa ldrb r2, [r7, #15] - 80010ba: 6879 ldr r1, [r7, #4] - 80010bc: 4613 mov r3, r2 - 80010be: 009b lsls r3, r3, #2 - 80010c0: 4413 add r3, r2 - 80010c2: 00db lsls r3, r3, #3 - 80010c4: 440b add r3, r1 - 80010c6: 3311 adds r3, #17 - 80010c8: 2201 movs r2, #1 - 80010ca: 701a strb r2, [r3, #0] - hpcd->IN_ep[i].num = i; - 80010cc: 7bfa ldrb r2, [r7, #15] - 80010ce: 6879 ldr r1, [r7, #4] - 80010d0: 4613 mov r3, r2 - 80010d2: 009b lsls r3, r3, #2 - 80010d4: 4413 add r3, r2 - 80010d6: 00db lsls r3, r3, #3 - 80010d8: 440b add r3, r1 - 80010da: 3310 adds r3, #16 - 80010dc: 7bfa ldrb r2, [r7, #15] - 80010de: 701a strb r2, [r3, #0] -#if defined (USB_OTG_FS) - hpcd->IN_ep[i].tx_fifo_num = i; -#endif /* defined (USB_OTG_FS) */ - /* Control until ep is activated */ - hpcd->IN_ep[i].type = EP_TYPE_CTRL; - 80010e0: 7bfa ldrb r2, [r7, #15] - 80010e2: 6879 ldr r1, [r7, #4] - 80010e4: 4613 mov r3, r2 - 80010e6: 009b lsls r3, r3, #2 - 80010e8: 4413 add r3, r2 - 80010ea: 00db lsls r3, r3, #3 - 80010ec: 440b add r3, r1 - 80010ee: 3313 adds r3, #19 - 80010f0: 2200 movs r2, #0 - 80010f2: 701a strb r2, [r3, #0] - hpcd->IN_ep[i].maxpacket = 0U; - 80010f4: 7bfa ldrb r2, [r7, #15] - 80010f6: 6879 ldr r1, [r7, #4] - 80010f8: 4613 mov r3, r2 - 80010fa: 009b lsls r3, r3, #2 - 80010fc: 4413 add r3, r2 - 80010fe: 00db lsls r3, r3, #3 - 8001100: 440b add r3, r1 - 8001102: 3320 adds r3, #32 - 8001104: 2200 movs r2, #0 - 8001106: 601a str r2, [r3, #0] - hpcd->IN_ep[i].xfer_buff = 0U; - 8001108: 7bfa ldrb r2, [r7, #15] - 800110a: 6879 ldr r1, [r7, #4] - 800110c: 4613 mov r3, r2 - 800110e: 009b lsls r3, r3, #2 - 8001110: 4413 add r3, r2 - 8001112: 00db lsls r3, r3, #3 - 8001114: 440b add r3, r1 - 8001116: 3324 adds r3, #36 @ 0x24 - 8001118: 2200 movs r2, #0 - 800111a: 601a str r2, [r3, #0] - hpcd->IN_ep[i].xfer_len = 0U; - 800111c: 7bfb ldrb r3, [r7, #15] - 800111e: 6879 ldr r1, [r7, #4] - 8001120: 1c5a adds r2, r3, #1 - 8001122: 4613 mov r3, r2 - 8001124: 009b lsls r3, r3, #2 - 8001126: 4413 add r3, r2 - 8001128: 00db lsls r3, r3, #3 - 800112a: 440b add r3, r1 - 800112c: 2200 movs r2, #0 - 800112e: 601a str r2, [r3, #0] - for (i = 0U; i < hpcd->Init.dev_endpoints; i++) - 8001130: 7bfb ldrb r3, [r7, #15] - 8001132: 3301 adds r3, #1 - 8001134: 73fb strb r3, [r7, #15] - 8001136: 687b ldr r3, [r7, #4] - 8001138: 791b ldrb r3, [r3, #4] - 800113a: 7bfa ldrb r2, [r7, #15] - 800113c: 429a cmp r2, r3 - 800113e: d3bb bcc.n 80010b8 - } - - for (i = 0U; i < hpcd->Init.dev_endpoints; i++) - 8001140: 2300 movs r3, #0 - 8001142: 73fb strb r3, [r7, #15] - 8001144: e044 b.n 80011d0 - { - hpcd->OUT_ep[i].is_in = 0U; - 8001146: 7bfa ldrb r2, [r7, #15] - 8001148: 6879 ldr r1, [r7, #4] - 800114a: 4613 mov r3, r2 - 800114c: 009b lsls r3, r3, #2 - 800114e: 4413 add r3, r2 - 8001150: 00db lsls r3, r3, #3 - 8001152: 440b add r3, r1 - 8001154: f203 1351 addw r3, r3, #337 @ 0x151 - 8001158: 2200 movs r2, #0 - 800115a: 701a strb r2, [r3, #0] - hpcd->OUT_ep[i].num = i; - 800115c: 7bfa ldrb r2, [r7, #15] - 800115e: 6879 ldr r1, [r7, #4] - 8001160: 4613 mov r3, r2 - 8001162: 009b lsls r3, r3, #2 - 8001164: 4413 add r3, r2 - 8001166: 00db lsls r3, r3, #3 - 8001168: 440b add r3, r1 - 800116a: f503 73a8 add.w r3, r3, #336 @ 0x150 - 800116e: 7bfa ldrb r2, [r7, #15] - 8001170: 701a strb r2, [r3, #0] - /* Control until ep is activated */ - hpcd->OUT_ep[i].type = EP_TYPE_CTRL; - 8001172: 7bfa ldrb r2, [r7, #15] - 8001174: 6879 ldr r1, [r7, #4] - 8001176: 4613 mov r3, r2 - 8001178: 009b lsls r3, r3, #2 - 800117a: 4413 add r3, r2 - 800117c: 00db lsls r3, r3, #3 - 800117e: 440b add r3, r1 - 8001180: f203 1353 addw r3, r3, #339 @ 0x153 - 8001184: 2200 movs r2, #0 - 8001186: 701a strb r2, [r3, #0] - hpcd->OUT_ep[i].maxpacket = 0U; - 8001188: 7bfa ldrb r2, [r7, #15] - 800118a: 6879 ldr r1, [r7, #4] - 800118c: 4613 mov r3, r2 - 800118e: 009b lsls r3, r3, #2 - 8001190: 4413 add r3, r2 - 8001192: 00db lsls r3, r3, #3 - 8001194: 440b add r3, r1 - 8001196: f503 73b0 add.w r3, r3, #352 @ 0x160 - 800119a: 2200 movs r2, #0 - 800119c: 601a str r2, [r3, #0] - hpcd->OUT_ep[i].xfer_buff = 0U; - 800119e: 7bfa ldrb r2, [r7, #15] - 80011a0: 6879 ldr r1, [r7, #4] - 80011a2: 4613 mov r3, r2 - 80011a4: 009b lsls r3, r3, #2 - 80011a6: 4413 add r3, r2 - 80011a8: 00db lsls r3, r3, #3 - 80011aa: 440b add r3, r1 - 80011ac: f503 73b2 add.w r3, r3, #356 @ 0x164 - 80011b0: 2200 movs r2, #0 - 80011b2: 601a str r2, [r3, #0] - hpcd->OUT_ep[i].xfer_len = 0U; - 80011b4: 7bfa ldrb r2, [r7, #15] - 80011b6: 6879 ldr r1, [r7, #4] - 80011b8: 4613 mov r3, r2 - 80011ba: 009b lsls r3, r3, #2 - 80011bc: 4413 add r3, r2 - 80011be: 00db lsls r3, r3, #3 - 80011c0: 440b add r3, r1 - 80011c2: f503 73b4 add.w r3, r3, #360 @ 0x168 - 80011c6: 2200 movs r2, #0 - 80011c8: 601a str r2, [r3, #0] - for (i = 0U; i < hpcd->Init.dev_endpoints; i++) - 80011ca: 7bfb ldrb r3, [r7, #15] - 80011cc: 3301 adds r3, #1 - 80011ce: 73fb strb r3, [r7, #15] - 80011d0: 687b ldr r3, [r7, #4] - 80011d2: 791b ldrb r3, [r3, #4] - 80011d4: 7bfa ldrb r2, [r7, #15] - 80011d6: 429a cmp r2, r3 - 80011d8: d3b5 bcc.n 8001146 - } - - /* Init Device */ - if (USB_DevInit(hpcd->Instance, hpcd->Init) != HAL_OK) - 80011da: 687b ldr r3, [r7, #4] - 80011dc: 6818 ldr r0, [r3, #0] - 80011de: 687b ldr r3, [r7, #4] - 80011e0: 3304 adds r3, #4 - 80011e2: cb0e ldmia r3, {r1, r2, r3} - 80011e4: f002 ff43 bl 800406e - 80011e8: 4603 mov r3, r0 - 80011ea: 2b00 cmp r3, #0 - 80011ec: d005 beq.n 80011fa - { - hpcd->State = HAL_PCD_STATE_ERROR; - 80011ee: 687b ldr r3, [r7, #4] - 80011f0: 2202 movs r2, #2 - 80011f2: f883 2291 strb.w r2, [r3, #657] @ 0x291 - return HAL_ERROR; - 80011f6: 2301 movs r3, #1 - 80011f8: e00c b.n 8001214 - } - - hpcd->USB_Address = 0U; - 80011fa: 687b ldr r3, [r7, #4] - 80011fc: 2200 movs r2, #0 - 80011fe: 735a strb r2, [r3, #13] - hpcd->State = HAL_PCD_STATE_READY; - 8001200: 687b ldr r3, [r7, #4] - 8001202: 2201 movs r2, #1 - 8001204: f883 2291 strb.w r2, [r3, #657] @ 0x291 - (void)USB_DevDisconnect(hpcd->Instance); - 8001208: 687b ldr r3, [r7, #4] - 800120a: 681b ldr r3, [r3, #0] - 800120c: 4618 mov r0, r3 - 800120e: f005 f9c2 bl 8006596 - - return HAL_OK; - 8001212: 2300 movs r3, #0 -} - 8001214: 4618 mov r0, r3 - 8001216: 3710 adds r7, #16 - 8001218: 46bd mov sp, r7 - 800121a: bd80 pop {r7, pc} - -0800121c : - * @brief Start the USB device - * @param hpcd PCD handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd) -{ - 800121c: b580 push {r7, lr} - 800121e: b082 sub sp, #8 - 8001220: af00 add r7, sp, #0 - 8001222: 6078 str r0, [r7, #4] - __HAL_LOCK(hpcd); - 8001224: 687b ldr r3, [r7, #4] - 8001226: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 - 800122a: 2b01 cmp r3, #1 - 800122c: d101 bne.n 8001232 - 800122e: 2302 movs r3, #2 - 8001230: e016 b.n 8001260 - 8001232: 687b ldr r3, [r7, #4] - 8001234: 2201 movs r2, #1 - 8001236: f883 2290 strb.w r2, [r3, #656] @ 0x290 - __HAL_PCD_ENABLE(hpcd); - 800123a: 687b ldr r3, [r7, #4] - 800123c: 681b ldr r3, [r3, #0] - 800123e: 4618 mov r0, r3 - 8001240: f002 fed9 bl 8003ff6 - -#if defined (USB) - HAL_PCDEx_SetConnectionState(hpcd, 1U); - 8001244: 2101 movs r1, #1 - 8001246: 6878 ldr r0, [r7, #4] - 8001248: f007 faad bl 80087a6 -#endif /* defined (USB) */ - - (void)USB_DevConnect(hpcd->Instance); - 800124c: 687b ldr r3, [r7, #4] - 800124e: 681b ldr r3, [r3, #0] - 8001250: 4618 mov r0, r3 - 8001252: f005 f996 bl 8006582 - __HAL_UNLOCK(hpcd); - 8001256: 687b ldr r3, [r7, #4] - 8001258: 2200 movs r2, #0 - 800125a: f883 2290 strb.w r2, [r3, #656] @ 0x290 - - return HAL_OK; - 800125e: 2300 movs r3, #0 -} - 8001260: 4618 mov r0, r3 - 8001262: 3708 adds r7, #8 - 8001264: 46bd mov sp, r7 - 8001266: bd80 pop {r7, pc} - -08001268 : - * @brief This function handles PCD interrupt request. - * @param hpcd PCD handle - * @retval HAL status - */ -void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) -{ - 8001268: b580 push {r7, lr} - 800126a: b088 sub sp, #32 - 800126c: af00 add r7, sp, #0 - 800126e: 6078 str r0, [r7, #4] - uint32_t wIstr = USB_ReadInterrupts(hpcd->Instance); - 8001270: 687b ldr r3, [r7, #4] - 8001272: 681b ldr r3, [r3, #0] - 8001274: 4618 mov r0, r3 - 8001276: f005 f998 bl 80065aa - 800127a: 61b8 str r0, [r7, #24] - uint16_t store_ep[8]; - uint8_t i; - - if ((wIstr & USB_ISTR_CTR) == USB_ISTR_CTR) - 800127c: 69bb ldr r3, [r7, #24] - 800127e: f403 4300 and.w r3, r3, #32768 @ 0x8000 - 8001282: 2b00 cmp r3, #0 - 8001284: d003 beq.n 800128e - { - /* servicing of the endpoint correct transfer interrupt */ - /* clear of the CTR flag into the sub */ - (void)PCD_EP_ISR_Handler(hpcd); - 8001286: 6878 ldr r0, [r7, #4] - 8001288: f000 fb1a bl 80018c0 - - return; - 800128c: e119 b.n 80014c2 - } - - if ((wIstr & USB_ISTR_RESET) == USB_ISTR_RESET) - 800128e: 69bb ldr r3, [r7, #24] - 8001290: f403 6380 and.w r3, r3, #1024 @ 0x400 - 8001294: 2b00 cmp r3, #0 - 8001296: d013 beq.n 80012c0 - { - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET); - 8001298: 687b ldr r3, [r7, #4] - 800129a: 681b ldr r3, [r3, #0] - 800129c: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 80012a0: b29a uxth r2, r3 - 80012a2: 687b ldr r3, [r7, #4] - 80012a4: 681b ldr r3, [r3, #0] - 80012a6: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 80012aa: b292 uxth r2, r2 - 80012ac: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->ResetCallback(hpcd); -#else - HAL_PCD_ResetCallback(hpcd); - 80012b0: 6878 ldr r0, [r7, #4] - 80012b2: f007 f880 bl 80083b6 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - - (void)HAL_PCD_SetAddress(hpcd, 0U); - 80012b6: 2100 movs r1, #0 - 80012b8: 6878 ldr r0, [r7, #4] - 80012ba: f000 f905 bl 80014c8 - - return; - 80012be: e100 b.n 80014c2 - } - - if ((wIstr & USB_ISTR_PMAOVR) == USB_ISTR_PMAOVR) - 80012c0: 69bb ldr r3, [r7, #24] - 80012c2: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 80012c6: 2b00 cmp r3, #0 - 80012c8: d00c beq.n 80012e4 - { - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_PMAOVR); - 80012ca: 687b ldr r3, [r7, #4] - 80012cc: 681b ldr r3, [r3, #0] - 80012ce: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 80012d2: b29a uxth r2, r3 - 80012d4: 687b ldr r3, [r7, #4] - 80012d6: 681b ldr r3, [r3, #0] - 80012d8: f422 4280 bic.w r2, r2, #16384 @ 0x4000 - 80012dc: b292 uxth r2, r2 - 80012de: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - return; - 80012e2: e0ee b.n 80014c2 - } - - if ((wIstr & USB_ISTR_ERR) == USB_ISTR_ERR) - 80012e4: 69bb ldr r3, [r7, #24] - 80012e6: f403 5300 and.w r3, r3, #8192 @ 0x2000 - 80012ea: 2b00 cmp r3, #0 - 80012ec: d00c beq.n 8001308 - { - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ERR); - 80012ee: 687b ldr r3, [r7, #4] - 80012f0: 681b ldr r3, [r3, #0] - 80012f2: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 80012f6: b29a uxth r2, r3 - 80012f8: 687b ldr r3, [r7, #4] - 80012fa: 681b ldr r3, [r3, #0] - 80012fc: f422 5200 bic.w r2, r2, #8192 @ 0x2000 - 8001300: b292 uxth r2, r2 - 8001302: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - return; - 8001306: e0dc b.n 80014c2 - } - - if ((wIstr & USB_ISTR_WKUP) == USB_ISTR_WKUP) - 8001308: 69bb ldr r3, [r7, #24] - 800130a: f403 5380 and.w r3, r3, #4096 @ 0x1000 - 800130e: 2b00 cmp r3, #0 - 8001310: d027 beq.n 8001362 - { - hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_LP_MODE); - 8001312: 687b ldr r3, [r7, #4] - 8001314: 681b ldr r3, [r3, #0] - 8001316: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 800131a: b29a uxth r2, r3 - 800131c: 687b ldr r3, [r7, #4] - 800131e: 681b ldr r3, [r3, #0] - 8001320: f022 0204 bic.w r2, r2, #4 - 8001324: b292 uxth r2, r2 - 8001326: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_FSUSP); - 800132a: 687b ldr r3, [r7, #4] - 800132c: 681b ldr r3, [r3, #0] - 800132e: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 8001332: b29a uxth r2, r3 - 8001334: 687b ldr r3, [r7, #4] - 8001336: 681b ldr r3, [r3, #0] - 8001338: f022 0208 bic.w r2, r2, #8 - 800133c: b292 uxth r2, r2 - 800133e: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->ResumeCallback(hpcd); -#else - HAL_PCD_ResumeCallback(hpcd); - 8001342: 6878 ldr r0, [r7, #4] - 8001344: f007 f870 bl 8008428 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_WKUP); - 8001348: 687b ldr r3, [r7, #4] - 800134a: 681b ldr r3, [r3, #0] - 800134c: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 8001350: b29a uxth r2, r3 - 8001352: 687b ldr r3, [r7, #4] - 8001354: 681b ldr r3, [r3, #0] - 8001356: f422 5280 bic.w r2, r2, #4096 @ 0x1000 - 800135a: b292 uxth r2, r2 - 800135c: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - return; - 8001360: e0af b.n 80014c2 - } - - if ((wIstr & USB_ISTR_SUSP) == USB_ISTR_SUSP) - 8001362: 69bb ldr r3, [r7, #24] - 8001364: f403 6300 and.w r3, r3, #2048 @ 0x800 - 8001368: 2b00 cmp r3, #0 - 800136a: f000 8083 beq.w 8001474 - { - /* WA: To Clear Wakeup flag if raised with suspend signal */ - - /* Store Endpoint registers */ - for (i = 0U; i < 8U; i++) - 800136e: 2300 movs r3, #0 - 8001370: 77fb strb r3, [r7, #31] - 8001372: e010 b.n 8001396 - { - store_ep[i] = PCD_GET_ENDPOINT(hpcd->Instance, i); - 8001374: 687b ldr r3, [r7, #4] - 8001376: 681b ldr r3, [r3, #0] - 8001378: 461a mov r2, r3 - 800137a: 7ffb ldrb r3, [r7, #31] - 800137c: 009b lsls r3, r3, #2 - 800137e: 441a add r2, r3 - 8001380: 7ffb ldrb r3, [r7, #31] - 8001382: 8812 ldrh r2, [r2, #0] - 8001384: b292 uxth r2, r2 - 8001386: 005b lsls r3, r3, #1 - 8001388: 3320 adds r3, #32 - 800138a: 443b add r3, r7 - 800138c: f823 2c18 strh.w r2, [r3, #-24] - for (i = 0U; i < 8U; i++) - 8001390: 7ffb ldrb r3, [r7, #31] - 8001392: 3301 adds r3, #1 - 8001394: 77fb strb r3, [r7, #31] - 8001396: 7ffb ldrb r3, [r7, #31] - 8001398: 2b07 cmp r3, #7 - 800139a: d9eb bls.n 8001374 - } - - /* FORCE RESET */ - hpcd->Instance->CNTR |= (uint16_t)(USB_CNTR_FRES); - 800139c: 687b ldr r3, [r7, #4] - 800139e: 681b ldr r3, [r3, #0] - 80013a0: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 80013a4: b29a uxth r2, r3 - 80013a6: 687b ldr r3, [r7, #4] - 80013a8: 681b ldr r3, [r3, #0] - 80013aa: f042 0201 orr.w r2, r2, #1 - 80013ae: b292 uxth r2, r2 - 80013b0: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - /* CLEAR RESET */ - hpcd->Instance->CNTR &= (uint16_t)(~USB_CNTR_FRES); - 80013b4: 687b ldr r3, [r7, #4] - 80013b6: 681b ldr r3, [r3, #0] - 80013b8: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 80013bc: b29a uxth r2, r3 - 80013be: 687b ldr r3, [r7, #4] - 80013c0: 681b ldr r3, [r3, #0] - 80013c2: f022 0201 bic.w r2, r2, #1 - 80013c6: b292 uxth r2, r2 - 80013c8: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - /* wait for reset flag in ISTR */ - while ((hpcd->Instance->ISTR & USB_ISTR_RESET) == 0U) - 80013cc: bf00 nop - 80013ce: 687b ldr r3, [r7, #4] - 80013d0: 681b ldr r3, [r3, #0] - 80013d2: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 80013d6: b29b uxth r3, r3 - 80013d8: f403 6380 and.w r3, r3, #1024 @ 0x400 - 80013dc: 2b00 cmp r3, #0 - 80013de: d0f6 beq.n 80013ce - { - } - - /* Clear Reset Flag */ - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET); - 80013e0: 687b ldr r3, [r7, #4] - 80013e2: 681b ldr r3, [r3, #0] - 80013e4: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 80013e8: b29a uxth r2, r3 - 80013ea: 687b ldr r3, [r7, #4] - 80013ec: 681b ldr r3, [r3, #0] - 80013ee: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 80013f2: b292 uxth r2, r2 - 80013f4: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - /* Restore Registre */ - for (i = 0U; i < 8U; i++) - 80013f8: 2300 movs r3, #0 - 80013fa: 77fb strb r3, [r7, #31] - 80013fc: e00f b.n 800141e - { - PCD_SET_ENDPOINT(hpcd->Instance, i, store_ep[i]); - 80013fe: 7ffb ldrb r3, [r7, #31] - 8001400: 687a ldr r2, [r7, #4] - 8001402: 6812 ldr r2, [r2, #0] - 8001404: 4611 mov r1, r2 - 8001406: 7ffa ldrb r2, [r7, #31] - 8001408: 0092 lsls r2, r2, #2 - 800140a: 440a add r2, r1 - 800140c: 005b lsls r3, r3, #1 - 800140e: 3320 adds r3, #32 - 8001410: 443b add r3, r7 - 8001412: f833 3c18 ldrh.w r3, [r3, #-24] - 8001416: 8013 strh r3, [r2, #0] - for (i = 0U; i < 8U; i++) - 8001418: 7ffb ldrb r3, [r7, #31] - 800141a: 3301 adds r3, #1 - 800141c: 77fb strb r3, [r7, #31] - 800141e: 7ffb ldrb r3, [r7, #31] - 8001420: 2b07 cmp r3, #7 - 8001422: d9ec bls.n 80013fe - } - - /* Force low-power mode in the macrocell */ - hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_FSUSP; - 8001424: 687b ldr r3, [r7, #4] - 8001426: 681b ldr r3, [r3, #0] - 8001428: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 800142c: b29a uxth r2, r3 - 800142e: 687b ldr r3, [r7, #4] - 8001430: 681b ldr r3, [r3, #0] - 8001432: f042 0208 orr.w r2, r2, #8 - 8001436: b292 uxth r2, r2 - 8001438: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */ - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SUSP); - 800143c: 687b ldr r3, [r7, #4] - 800143e: 681b ldr r3, [r3, #0] - 8001440: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 8001444: b29a uxth r2, r3 - 8001446: 687b ldr r3, [r7, #4] - 8001448: 681b ldr r3, [r3, #0] - 800144a: f422 6200 bic.w r2, r2, #2048 @ 0x800 - 800144e: b292 uxth r2, r2 - 8001450: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_LP_MODE; - 8001454: 687b ldr r3, [r7, #4] - 8001456: 681b ldr r3, [r3, #0] - 8001458: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 800145c: b29a uxth r2, r3 - 800145e: 687b ldr r3, [r7, #4] - 8001460: 681b ldr r3, [r3, #0] - 8001462: f042 0204 orr.w r2, r2, #4 - 8001466: b292 uxth r2, r2 - 8001468: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->SuspendCallback(hpcd); -#else - HAL_PCD_SuspendCallback(hpcd); - 800146c: 6878 ldr r0, [r7, #4] - 800146e: f006 ffc1 bl 80083f4 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - - return; - 8001472: e026 b.n 80014c2 - } - - if ((wIstr & USB_ISTR_SOF) == USB_ISTR_SOF) - 8001474: 69bb ldr r3, [r7, #24] - 8001476: f403 7300 and.w r3, r3, #512 @ 0x200 - 800147a: 2b00 cmp r3, #0 - 800147c: d00f beq.n 800149e - { - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SOF); - 800147e: 687b ldr r3, [r7, #4] - 8001480: 681b ldr r3, [r3, #0] - 8001482: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 8001486: b29a uxth r2, r3 - 8001488: 687b ldr r3, [r7, #4] - 800148a: 681b ldr r3, [r3, #0] - 800148c: f422 7200 bic.w r2, r2, #512 @ 0x200 - 8001490: b292 uxth r2, r2 - 8001492: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->SOFCallback(hpcd); -#else - HAL_PCD_SOFCallback(hpcd); - 8001496: 6878 ldr r0, [r7, #4] - 8001498: f006 ff7f bl 800839a -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - - return; - 800149c: e011 b.n 80014c2 - } - - if ((wIstr & USB_ISTR_ESOF) == USB_ISTR_ESOF) - 800149e: 69bb ldr r3, [r7, #24] - 80014a0: f403 7380 and.w r3, r3, #256 @ 0x100 - 80014a4: 2b00 cmp r3, #0 - 80014a6: d00c beq.n 80014c2 - { - /* clear ESOF flag in ISTR */ - __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ESOF); - 80014a8: 687b ldr r3, [r7, #4] - 80014aa: 681b ldr r3, [r3, #0] - 80014ac: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 80014b0: b29a uxth r2, r3 - 80014b2: 687b ldr r3, [r7, #4] - 80014b4: 681b ldr r3, [r3, #0] - 80014b6: f422 7280 bic.w r2, r2, #256 @ 0x100 - 80014ba: b292 uxth r2, r2 - 80014bc: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - return; - 80014c0: bf00 nop - } -} - 80014c2: 3720 adds r7, #32 - 80014c4: 46bd mov sp, r7 - 80014c6: bd80 pop {r7, pc} - -080014c8 : - * @param hpcd PCD handle - * @param address new device address - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address) -{ - 80014c8: b580 push {r7, lr} - 80014ca: b082 sub sp, #8 - 80014cc: af00 add r7, sp, #0 - 80014ce: 6078 str r0, [r7, #4] - 80014d0: 460b mov r3, r1 - 80014d2: 70fb strb r3, [r7, #3] - __HAL_LOCK(hpcd); - 80014d4: 687b ldr r3, [r7, #4] - 80014d6: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 - 80014da: 2b01 cmp r3, #1 - 80014dc: d101 bne.n 80014e2 - 80014de: 2302 movs r3, #2 - 80014e0: e012 b.n 8001508 - 80014e2: 687b ldr r3, [r7, #4] - 80014e4: 2201 movs r2, #1 - 80014e6: f883 2290 strb.w r2, [r3, #656] @ 0x290 - hpcd->USB_Address = address; - 80014ea: 687b ldr r3, [r7, #4] - 80014ec: 78fa ldrb r2, [r7, #3] - 80014ee: 735a strb r2, [r3, #13] - (void)USB_SetDevAddress(hpcd->Instance, address); - 80014f0: 687b ldr r3, [r7, #4] - 80014f2: 681b ldr r3, [r3, #0] - 80014f4: 78fa ldrb r2, [r7, #3] - 80014f6: 4611 mov r1, r2 - 80014f8: 4618 mov r0, r3 - 80014fa: f005 f82f bl 800655c - __HAL_UNLOCK(hpcd); - 80014fe: 687b ldr r3, [r7, #4] - 8001500: 2200 movs r2, #0 - 8001502: f883 2290 strb.w r2, [r3, #656] @ 0x290 - - return HAL_OK; - 8001506: 2300 movs r3, #0 -} - 8001508: 4618 mov r0, r3 - 800150a: 3708 adds r7, #8 - 800150c: 46bd mov sp, r7 - 800150e: bd80 pop {r7, pc} - -08001510 : - * @param ep_type endpoint type - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, - uint16_t ep_mps, uint8_t ep_type) -{ - 8001510: b580 push {r7, lr} - 8001512: b084 sub sp, #16 - 8001514: af00 add r7, sp, #0 - 8001516: 6078 str r0, [r7, #4] - 8001518: 4608 mov r0, r1 - 800151a: 4611 mov r1, r2 - 800151c: 461a mov r2, r3 - 800151e: 4603 mov r3, r0 - 8001520: 70fb strb r3, [r7, #3] - 8001522: 460b mov r3, r1 - 8001524: 803b strh r3, [r7, #0] - 8001526: 4613 mov r3, r2 - 8001528: 70bb strb r3, [r7, #2] - HAL_StatusTypeDef ret = HAL_OK; - 800152a: 2300 movs r3, #0 - 800152c: 72fb strb r3, [r7, #11] - PCD_EPTypeDef *ep; - - if ((ep_addr & 0x80U) == 0x80U) - 800152e: f997 3003 ldrsb.w r3, [r7, #3] - 8001532: 2b00 cmp r3, #0 - 8001534: da0e bge.n 8001554 - { - ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; - 8001536: 78fb ldrb r3, [r7, #3] - 8001538: f003 0207 and.w r2, r3, #7 - 800153c: 4613 mov r3, r2 - 800153e: 009b lsls r3, r3, #2 - 8001540: 4413 add r3, r2 - 8001542: 00db lsls r3, r3, #3 - 8001544: 3310 adds r3, #16 - 8001546: 687a ldr r2, [r7, #4] - 8001548: 4413 add r3, r2 - 800154a: 60fb str r3, [r7, #12] - ep->is_in = 1U; - 800154c: 68fb ldr r3, [r7, #12] - 800154e: 2201 movs r2, #1 - 8001550: 705a strb r2, [r3, #1] - 8001552: e00e b.n 8001572 - } - else - { - ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; - 8001554: 78fb ldrb r3, [r7, #3] - 8001556: f003 0207 and.w r2, r3, #7 - 800155a: 4613 mov r3, r2 - 800155c: 009b lsls r3, r3, #2 - 800155e: 4413 add r3, r2 - 8001560: 00db lsls r3, r3, #3 - 8001562: f503 73a8 add.w r3, r3, #336 @ 0x150 - 8001566: 687a ldr r2, [r7, #4] - 8001568: 4413 add r3, r2 - 800156a: 60fb str r3, [r7, #12] - ep->is_in = 0U; - 800156c: 68fb ldr r3, [r7, #12] - 800156e: 2200 movs r2, #0 - 8001570: 705a strb r2, [r3, #1] - } - - ep->num = ep_addr & EP_ADDR_MSK; - 8001572: 78fb ldrb r3, [r7, #3] - 8001574: f003 0307 and.w r3, r3, #7 - 8001578: b2da uxtb r2, r3 - 800157a: 68fb ldr r3, [r7, #12] - 800157c: 701a strb r2, [r3, #0] - ep->maxpacket = ep_mps; - 800157e: 883a ldrh r2, [r7, #0] - 8001580: 68fb ldr r3, [r7, #12] - 8001582: 611a str r2, [r3, #16] - ep->type = ep_type; - 8001584: 68fb ldr r3, [r7, #12] - 8001586: 78ba ldrb r2, [r7, #2] - 8001588: 70da strb r2, [r3, #3] - ep->tx_fifo_num = ep->num; - } -#endif /* defined (USB_OTG_FS) */ - - /* Set initial data PID. */ - if (ep_type == EP_TYPE_BULK) - 800158a: 78bb ldrb r3, [r7, #2] - 800158c: 2b02 cmp r3, #2 - 800158e: d102 bne.n 8001596 - { - ep->data_pid_start = 0U; - 8001590: 68fb ldr r3, [r7, #12] - 8001592: 2200 movs r2, #0 - 8001594: 711a strb r2, [r3, #4] - } - - __HAL_LOCK(hpcd); - 8001596: 687b ldr r3, [r7, #4] - 8001598: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 - 800159c: 2b01 cmp r3, #1 - 800159e: d101 bne.n 80015a4 - 80015a0: 2302 movs r3, #2 - 80015a2: e00e b.n 80015c2 - 80015a4: 687b ldr r3, [r7, #4] - 80015a6: 2201 movs r2, #1 - 80015a8: f883 2290 strb.w r2, [r3, #656] @ 0x290 - (void)USB_ActivateEndpoint(hpcd->Instance, ep); - 80015ac: 687b ldr r3, [r7, #4] - 80015ae: 681b ldr r3, [r3, #0] - 80015b0: 68f9 ldr r1, [r7, #12] - 80015b2: 4618 mov r0, r3 - 80015b4: f002 fd78 bl 80040a8 - __HAL_UNLOCK(hpcd); - 80015b8: 687b ldr r3, [r7, #4] - 80015ba: 2200 movs r2, #0 - 80015bc: f883 2290 strb.w r2, [r3, #656] @ 0x290 - - return ret; - 80015c0: 7afb ldrb r3, [r7, #11] -} - 80015c2: 4618 mov r0, r3 - 80015c4: 3710 adds r7, #16 - 80015c6: 46bd mov sp, r7 - 80015c8: bd80 pop {r7, pc} - -080015ca : - * @param hpcd PCD handle - * @param ep_addr endpoint address - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) -{ - 80015ca: b580 push {r7, lr} - 80015cc: b084 sub sp, #16 - 80015ce: af00 add r7, sp, #0 - 80015d0: 6078 str r0, [r7, #4] - 80015d2: 460b mov r3, r1 - 80015d4: 70fb strb r3, [r7, #3] - PCD_EPTypeDef *ep; - - if ((ep_addr & 0x80U) == 0x80U) - 80015d6: f997 3003 ldrsb.w r3, [r7, #3] - 80015da: 2b00 cmp r3, #0 - 80015dc: da0e bge.n 80015fc - { - ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; - 80015de: 78fb ldrb r3, [r7, #3] - 80015e0: f003 0207 and.w r2, r3, #7 - 80015e4: 4613 mov r3, r2 - 80015e6: 009b lsls r3, r3, #2 - 80015e8: 4413 add r3, r2 - 80015ea: 00db lsls r3, r3, #3 - 80015ec: 3310 adds r3, #16 - 80015ee: 687a ldr r2, [r7, #4] - 80015f0: 4413 add r3, r2 - 80015f2: 60fb str r3, [r7, #12] - ep->is_in = 1U; - 80015f4: 68fb ldr r3, [r7, #12] - 80015f6: 2201 movs r2, #1 - 80015f8: 705a strb r2, [r3, #1] - 80015fa: e00e b.n 800161a - } - else - { - ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; - 80015fc: 78fb ldrb r3, [r7, #3] - 80015fe: f003 0207 and.w r2, r3, #7 - 8001602: 4613 mov r3, r2 - 8001604: 009b lsls r3, r3, #2 - 8001606: 4413 add r3, r2 - 8001608: 00db lsls r3, r3, #3 - 800160a: f503 73a8 add.w r3, r3, #336 @ 0x150 - 800160e: 687a ldr r2, [r7, #4] - 8001610: 4413 add r3, r2 - 8001612: 60fb str r3, [r7, #12] - ep->is_in = 0U; - 8001614: 68fb ldr r3, [r7, #12] - 8001616: 2200 movs r2, #0 - 8001618: 705a strb r2, [r3, #1] - } - ep->num = ep_addr & EP_ADDR_MSK; - 800161a: 78fb ldrb r3, [r7, #3] - 800161c: f003 0307 and.w r3, r3, #7 - 8001620: b2da uxtb r2, r3 - 8001622: 68fb ldr r3, [r7, #12] - 8001624: 701a strb r2, [r3, #0] - - __HAL_LOCK(hpcd); - 8001626: 687b ldr r3, [r7, #4] - 8001628: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 - 800162c: 2b01 cmp r3, #1 - 800162e: d101 bne.n 8001634 - 8001630: 2302 movs r3, #2 - 8001632: e00e b.n 8001652 - 8001634: 687b ldr r3, [r7, #4] - 8001636: 2201 movs r2, #1 - 8001638: f883 2290 strb.w r2, [r3, #656] @ 0x290 - (void)USB_DeactivateEndpoint(hpcd->Instance, ep); - 800163c: 687b ldr r3, [r7, #4] - 800163e: 681b ldr r3, [r3, #0] - 8001640: 68f9 ldr r1, [r7, #12] - 8001642: 4618 mov r0, r3 - 8001644: f003 f8f0 bl 8004828 - __HAL_UNLOCK(hpcd); - 8001648: 687b ldr r3, [r7, #4] - 800164a: 2200 movs r2, #0 - 800164c: f883 2290 strb.w r2, [r3, #656] @ 0x290 - return HAL_OK; - 8001650: 2300 movs r3, #0 -} - 8001652: 4618 mov r0, r3 - 8001654: 3710 adds r7, #16 - 8001656: 46bd mov sp, r7 - 8001658: bd80 pop {r7, pc} - -0800165a : - * @param pBuf pointer to the reception buffer - * @param len amount of data to be received - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len) -{ - 800165a: b580 push {r7, lr} - 800165c: b086 sub sp, #24 - 800165e: af00 add r7, sp, #0 - 8001660: 60f8 str r0, [r7, #12] - 8001662: 607a str r2, [r7, #4] - 8001664: 603b str r3, [r7, #0] - 8001666: 460b mov r3, r1 - 8001668: 72fb strb r3, [r7, #11] - PCD_EPTypeDef *ep; - - ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; - 800166a: 7afb ldrb r3, [r7, #11] - 800166c: f003 0207 and.w r2, r3, #7 - 8001670: 4613 mov r3, r2 - 8001672: 009b lsls r3, r3, #2 - 8001674: 4413 add r3, r2 - 8001676: 00db lsls r3, r3, #3 - 8001678: f503 73a8 add.w r3, r3, #336 @ 0x150 - 800167c: 68fa ldr r2, [r7, #12] - 800167e: 4413 add r3, r2 - 8001680: 617b str r3, [r7, #20] - - /*setup and start the Xfer */ - ep->xfer_buff = pBuf; - 8001682: 697b ldr r3, [r7, #20] - 8001684: 687a ldr r2, [r7, #4] - 8001686: 615a str r2, [r3, #20] - ep->xfer_len = len; - 8001688: 697b ldr r3, [r7, #20] - 800168a: 683a ldr r2, [r7, #0] - 800168c: 619a str r2, [r3, #24] - ep->xfer_count = 0U; - 800168e: 697b ldr r3, [r7, #20] - 8001690: 2200 movs r2, #0 - 8001692: 61da str r2, [r3, #28] - ep->is_in = 0U; - 8001694: 697b ldr r3, [r7, #20] - 8001696: 2200 movs r2, #0 - 8001698: 705a strb r2, [r3, #1] - ep->num = ep_addr & EP_ADDR_MSK; - 800169a: 7afb ldrb r3, [r7, #11] - 800169c: f003 0307 and.w r3, r3, #7 - 80016a0: b2da uxtb r2, r3 - 80016a2: 697b ldr r3, [r7, #20] - 80016a4: 701a strb r2, [r3, #0] - - (void)USB_EPStartXfer(hpcd->Instance, ep); - 80016a6: 68fb ldr r3, [r7, #12] - 80016a8: 681b ldr r3, [r3, #0] - 80016aa: 6979 ldr r1, [r7, #20] - 80016ac: 4618 mov r0, r3 - 80016ae: f003 faa7 bl 8004c00 - - return HAL_OK; - 80016b2: 2300 movs r3, #0 -} - 80016b4: 4618 mov r0, r3 - 80016b6: 3718 adds r7, #24 - 80016b8: 46bd mov sp, r7 - 80016ba: bd80 pop {r7, pc} - -080016bc : - * @param hpcd PCD handle - * @param ep_addr endpoint address - * @retval Data Size - */ -uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef const *hpcd, uint8_t ep_addr) -{ - 80016bc: b480 push {r7} - 80016be: b083 sub sp, #12 - 80016c0: af00 add r7, sp, #0 - 80016c2: 6078 str r0, [r7, #4] - 80016c4: 460b mov r3, r1 - 80016c6: 70fb strb r3, [r7, #3] - return hpcd->OUT_ep[ep_addr & EP_ADDR_MSK].xfer_count; - 80016c8: 78fb ldrb r3, [r7, #3] - 80016ca: f003 0207 and.w r2, r3, #7 - 80016ce: 6879 ldr r1, [r7, #4] - 80016d0: 4613 mov r3, r2 - 80016d2: 009b lsls r3, r3, #2 - 80016d4: 4413 add r3, r2 - 80016d6: 00db lsls r3, r3, #3 - 80016d8: 440b add r3, r1 - 80016da: f503 73b6 add.w r3, r3, #364 @ 0x16c - 80016de: 681b ldr r3, [r3, #0] -} - 80016e0: 4618 mov r0, r3 - 80016e2: 370c adds r7, #12 - 80016e4: 46bd mov sp, r7 - 80016e6: bc80 pop {r7} - 80016e8: 4770 bx lr - -080016ea : - * @param pBuf pointer to the transmission buffer - * @param len amount of data to be sent - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len) -{ - 80016ea: b580 push {r7, lr} - 80016ec: b086 sub sp, #24 - 80016ee: af00 add r7, sp, #0 - 80016f0: 60f8 str r0, [r7, #12] - 80016f2: 607a str r2, [r7, #4] - 80016f4: 603b str r3, [r7, #0] - 80016f6: 460b mov r3, r1 - 80016f8: 72fb strb r3, [r7, #11] - PCD_EPTypeDef *ep; - - ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; - 80016fa: 7afb ldrb r3, [r7, #11] - 80016fc: f003 0207 and.w r2, r3, #7 - 8001700: 4613 mov r3, r2 - 8001702: 009b lsls r3, r3, #2 - 8001704: 4413 add r3, r2 - 8001706: 00db lsls r3, r3, #3 - 8001708: 3310 adds r3, #16 - 800170a: 68fa ldr r2, [r7, #12] - 800170c: 4413 add r3, r2 - 800170e: 617b str r3, [r7, #20] - - /*setup and start the Xfer */ - ep->xfer_buff = pBuf; - 8001710: 697b ldr r3, [r7, #20] - 8001712: 687a ldr r2, [r7, #4] - 8001714: 615a str r2, [r3, #20] - ep->xfer_len = len; - 8001716: 697b ldr r3, [r7, #20] - 8001718: 683a ldr r2, [r7, #0] - 800171a: 619a str r2, [r3, #24] -#if defined (USB) - ep->xfer_fill_db = 1U; - 800171c: 697b ldr r3, [r7, #20] - 800171e: 2201 movs r2, #1 - 8001720: f883 2024 strb.w r2, [r3, #36] @ 0x24 - ep->xfer_len_db = len; - 8001724: 697b ldr r3, [r7, #20] - 8001726: 683a ldr r2, [r7, #0] - 8001728: 621a str r2, [r3, #32] -#endif /* defined (USB) */ - ep->xfer_count = 0U; - 800172a: 697b ldr r3, [r7, #20] - 800172c: 2200 movs r2, #0 - 800172e: 61da str r2, [r3, #28] - ep->is_in = 1U; - 8001730: 697b ldr r3, [r7, #20] - 8001732: 2201 movs r2, #1 - 8001734: 705a strb r2, [r3, #1] - ep->num = ep_addr & EP_ADDR_MSK; - 8001736: 7afb ldrb r3, [r7, #11] - 8001738: f003 0307 and.w r3, r3, #7 - 800173c: b2da uxtb r2, r3 - 800173e: 697b ldr r3, [r7, #20] - 8001740: 701a strb r2, [r3, #0] - - (void)USB_EPStartXfer(hpcd->Instance, ep); - 8001742: 68fb ldr r3, [r7, #12] - 8001744: 681b ldr r3, [r3, #0] - 8001746: 6979 ldr r1, [r7, #20] - 8001748: 4618 mov r0, r3 - 800174a: f003 fa59 bl 8004c00 - - return HAL_OK; - 800174e: 2300 movs r3, #0 -} - 8001750: 4618 mov r0, r3 - 8001752: 3718 adds r7, #24 - 8001754: 46bd mov sp, r7 - 8001756: bd80 pop {r7, pc} - -08001758 : - * @param hpcd PCD handle - * @param ep_addr endpoint address - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) -{ - 8001758: b580 push {r7, lr} - 800175a: b084 sub sp, #16 - 800175c: af00 add r7, sp, #0 - 800175e: 6078 str r0, [r7, #4] - 8001760: 460b mov r3, r1 - 8001762: 70fb strb r3, [r7, #3] - PCD_EPTypeDef *ep; - - if (((uint32_t)ep_addr & EP_ADDR_MSK) > hpcd->Init.dev_endpoints) - 8001764: 78fb ldrb r3, [r7, #3] - 8001766: f003 0307 and.w r3, r3, #7 - 800176a: 687a ldr r2, [r7, #4] - 800176c: 7912 ldrb r2, [r2, #4] - 800176e: 4293 cmp r3, r2 - 8001770: d901 bls.n 8001776 - { - return HAL_ERROR; - 8001772: 2301 movs r3, #1 - 8001774: e04c b.n 8001810 - } - - if ((0x80U & ep_addr) == 0x80U) - 8001776: f997 3003 ldrsb.w r3, [r7, #3] - 800177a: 2b00 cmp r3, #0 - 800177c: da0e bge.n 800179c - { - ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; - 800177e: 78fb ldrb r3, [r7, #3] - 8001780: f003 0207 and.w r2, r3, #7 - 8001784: 4613 mov r3, r2 - 8001786: 009b lsls r3, r3, #2 - 8001788: 4413 add r3, r2 - 800178a: 00db lsls r3, r3, #3 - 800178c: 3310 adds r3, #16 - 800178e: 687a ldr r2, [r7, #4] - 8001790: 4413 add r3, r2 - 8001792: 60fb str r3, [r7, #12] - ep->is_in = 1U; - 8001794: 68fb ldr r3, [r7, #12] - 8001796: 2201 movs r2, #1 - 8001798: 705a strb r2, [r3, #1] - 800179a: e00c b.n 80017b6 - } - else - { - ep = &hpcd->OUT_ep[ep_addr]; - 800179c: 78fa ldrb r2, [r7, #3] - 800179e: 4613 mov r3, r2 - 80017a0: 009b lsls r3, r3, #2 - 80017a2: 4413 add r3, r2 - 80017a4: 00db lsls r3, r3, #3 - 80017a6: f503 73a8 add.w r3, r3, #336 @ 0x150 - 80017aa: 687a ldr r2, [r7, #4] - 80017ac: 4413 add r3, r2 - 80017ae: 60fb str r3, [r7, #12] - ep->is_in = 0U; - 80017b0: 68fb ldr r3, [r7, #12] - 80017b2: 2200 movs r2, #0 - 80017b4: 705a strb r2, [r3, #1] - } - - ep->is_stall = 1U; - 80017b6: 68fb ldr r3, [r7, #12] - 80017b8: 2201 movs r2, #1 - 80017ba: 709a strb r2, [r3, #2] - ep->num = ep_addr & EP_ADDR_MSK; - 80017bc: 78fb ldrb r3, [r7, #3] - 80017be: f003 0307 and.w r3, r3, #7 - 80017c2: b2da uxtb r2, r3 - 80017c4: 68fb ldr r3, [r7, #12] - 80017c6: 701a strb r2, [r3, #0] - - __HAL_LOCK(hpcd); - 80017c8: 687b ldr r3, [r7, #4] - 80017ca: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 - 80017ce: 2b01 cmp r3, #1 - 80017d0: d101 bne.n 80017d6 - 80017d2: 2302 movs r3, #2 - 80017d4: e01c b.n 8001810 - 80017d6: 687b ldr r3, [r7, #4] - 80017d8: 2201 movs r2, #1 - 80017da: f883 2290 strb.w r2, [r3, #656] @ 0x290 - - (void)USB_EPSetStall(hpcd->Instance, ep); - 80017de: 687b ldr r3, [r7, #4] - 80017e0: 681b ldr r3, [r3, #0] - 80017e2: 68f9 ldr r1, [r7, #12] - 80017e4: 4618 mov r0, r3 - 80017e6: f004 fdbc bl 8006362 - - if ((ep_addr & EP_ADDR_MSK) == 0U) - 80017ea: 78fb ldrb r3, [r7, #3] - 80017ec: f003 0307 and.w r3, r3, #7 - 80017f0: 2b00 cmp r3, #0 - 80017f2: d108 bne.n 8001806 - { - (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t *)hpcd->Setup); - 80017f4: 687b ldr r3, [r7, #4] - 80017f6: 681a ldr r2, [r3, #0] - 80017f8: 687b ldr r3, [r7, #4] - 80017fa: f503 7326 add.w r3, r3, #664 @ 0x298 - 80017fe: 4619 mov r1, r3 - 8001800: 4610 mov r0, r2 - 8001802: f004 fee1 bl 80065c8 - } - - __HAL_UNLOCK(hpcd); - 8001806: 687b ldr r3, [r7, #4] - 8001808: 2200 movs r2, #0 - 800180a: f883 2290 strb.w r2, [r3, #656] @ 0x290 - - return HAL_OK; - 800180e: 2300 movs r3, #0 -} - 8001810: 4618 mov r0, r3 - 8001812: 3710 adds r7, #16 - 8001814: 46bd mov sp, r7 - 8001816: bd80 pop {r7, pc} - -08001818 : - * @param hpcd PCD handle - * @param ep_addr endpoint address - * @retval HAL status - */ -HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) -{ - 8001818: b580 push {r7, lr} - 800181a: b084 sub sp, #16 - 800181c: af00 add r7, sp, #0 - 800181e: 6078 str r0, [r7, #4] - 8001820: 460b mov r3, r1 - 8001822: 70fb strb r3, [r7, #3] - PCD_EPTypeDef *ep; - - if (((uint32_t)ep_addr & 0x0FU) > hpcd->Init.dev_endpoints) - 8001824: 78fb ldrb r3, [r7, #3] - 8001826: f003 030f and.w r3, r3, #15 - 800182a: 687a ldr r2, [r7, #4] - 800182c: 7912 ldrb r2, [r2, #4] - 800182e: 4293 cmp r3, r2 - 8001830: d901 bls.n 8001836 - { - return HAL_ERROR; - 8001832: 2301 movs r3, #1 - 8001834: e040 b.n 80018b8 - } - - if ((0x80U & ep_addr) == 0x80U) - 8001836: f997 3003 ldrsb.w r3, [r7, #3] - 800183a: 2b00 cmp r3, #0 - 800183c: da0e bge.n 800185c - { - ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; - 800183e: 78fb ldrb r3, [r7, #3] - 8001840: f003 0207 and.w r2, r3, #7 - 8001844: 4613 mov r3, r2 - 8001846: 009b lsls r3, r3, #2 - 8001848: 4413 add r3, r2 - 800184a: 00db lsls r3, r3, #3 - 800184c: 3310 adds r3, #16 - 800184e: 687a ldr r2, [r7, #4] - 8001850: 4413 add r3, r2 - 8001852: 60fb str r3, [r7, #12] - ep->is_in = 1U; - 8001854: 68fb ldr r3, [r7, #12] - 8001856: 2201 movs r2, #1 - 8001858: 705a strb r2, [r3, #1] - 800185a: e00e b.n 800187a - } - else - { - ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; - 800185c: 78fb ldrb r3, [r7, #3] - 800185e: f003 0207 and.w r2, r3, #7 - 8001862: 4613 mov r3, r2 - 8001864: 009b lsls r3, r3, #2 - 8001866: 4413 add r3, r2 - 8001868: 00db lsls r3, r3, #3 - 800186a: f503 73a8 add.w r3, r3, #336 @ 0x150 - 800186e: 687a ldr r2, [r7, #4] - 8001870: 4413 add r3, r2 - 8001872: 60fb str r3, [r7, #12] - ep->is_in = 0U; - 8001874: 68fb ldr r3, [r7, #12] - 8001876: 2200 movs r2, #0 - 8001878: 705a strb r2, [r3, #1] - } - - ep->is_stall = 0U; - 800187a: 68fb ldr r3, [r7, #12] - 800187c: 2200 movs r2, #0 - 800187e: 709a strb r2, [r3, #2] - ep->num = ep_addr & EP_ADDR_MSK; - 8001880: 78fb ldrb r3, [r7, #3] - 8001882: f003 0307 and.w r3, r3, #7 - 8001886: b2da uxtb r2, r3 - 8001888: 68fb ldr r3, [r7, #12] - 800188a: 701a strb r2, [r3, #0] - - __HAL_LOCK(hpcd); - 800188c: 687b ldr r3, [r7, #4] - 800188e: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 - 8001892: 2b01 cmp r3, #1 - 8001894: d101 bne.n 800189a - 8001896: 2302 movs r3, #2 - 8001898: e00e b.n 80018b8 - 800189a: 687b ldr r3, [r7, #4] - 800189c: 2201 movs r2, #1 - 800189e: f883 2290 strb.w r2, [r3, #656] @ 0x290 - (void)USB_EPClearStall(hpcd->Instance, ep); - 80018a2: 687b ldr r3, [r7, #4] - 80018a4: 681b ldr r3, [r3, #0] - 80018a6: 68f9 ldr r1, [r7, #12] - 80018a8: 4618 mov r0, r3 - 80018aa: f004 fdaa bl 8006402 - __HAL_UNLOCK(hpcd); - 80018ae: 687b ldr r3, [r7, #4] - 80018b0: 2200 movs r2, #0 - 80018b2: f883 2290 strb.w r2, [r3, #656] @ 0x290 - - return HAL_OK; - 80018b6: 2300 movs r3, #0 -} - 80018b8: 4618 mov r0, r3 - 80018ba: 3710 adds r7, #16 - 80018bc: 46bd mov sp, r7 - 80018be: bd80 pop {r7, pc} - -080018c0 : - * @brief This function handles PCD Endpoint interrupt request. - * @param hpcd PCD handle - * @retval HAL status - */ -static HAL_StatusTypeDef PCD_EP_ISR_Handler(PCD_HandleTypeDef *hpcd) -{ - 80018c0: b580 push {r7, lr} - 80018c2: b096 sub sp, #88 @ 0x58 - 80018c4: af00 add r7, sp, #0 - 80018c6: 6078 str r0, [r7, #4] -#if (USE_USB_DOUBLE_BUFFER != 1U) - count = 0U; -#endif /* USE_USB_DOUBLE_BUFFER */ - - /* stay in loop while pending interrupts */ - while ((hpcd->Instance->ISTR & USB_ISTR_CTR) != 0U) - 80018c8: e3bb b.n 8002042 - { - wIstr = hpcd->Instance->ISTR; - 80018ca: 687b ldr r3, [r7, #4] - 80018cc: 681b ldr r3, [r3, #0] - 80018ce: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 80018d2: f8a7 304e strh.w r3, [r7, #78] @ 0x4e - - /* extract highest priority endpoint number */ - epindex = (uint8_t)(wIstr & USB_ISTR_EP_ID); - 80018d6: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e - 80018da: b2db uxtb r3, r3 - 80018dc: f003 030f and.w r3, r3, #15 - 80018e0: f887 304d strb.w r3, [r7, #77] @ 0x4d - - if (epindex == 0U) - 80018e4: f897 304d ldrb.w r3, [r7, #77] @ 0x4d - 80018e8: 2b00 cmp r3, #0 - 80018ea: f040 8175 bne.w 8001bd8 - { - /* Decode and service control endpoint interrupt */ - - /* DIR bit = origin of the interrupt */ - if ((wIstr & USB_ISTR_DIR) == 0U) - 80018ee: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e - 80018f2: f003 0310 and.w r3, r3, #16 - 80018f6: 2b00 cmp r3, #0 - 80018f8: d14e bne.n 8001998 - { - /* DIR = 0 */ - - /* DIR = 0 => IN int */ - /* DIR = 0 implies that (EP_CTR_TX = 1) always */ - PCD_CLEAR_TX_EP_CTR(hpcd->Instance, PCD_ENDP0); - 80018fa: 687b ldr r3, [r7, #4] - 80018fc: 681b ldr r3, [r3, #0] - 80018fe: 881b ldrh r3, [r3, #0] - 8001900: b29b uxth r3, r3 - 8001902: f423 43e1 bic.w r3, r3, #28800 @ 0x7080 - 8001906: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800190a: 81fb strh r3, [r7, #14] - 800190c: 687b ldr r3, [r7, #4] - 800190e: 681a ldr r2, [r3, #0] - 8001910: 89fb ldrh r3, [r7, #14] - 8001912: ea6f 4343 mvn.w r3, r3, lsl #17 - 8001916: ea6f 4353 mvn.w r3, r3, lsr #17 - 800191a: b29b uxth r3, r3 - 800191c: 8013 strh r3, [r2, #0] - ep = &hpcd->IN_ep[0]; - 800191e: 687b ldr r3, [r7, #4] - 8001920: 3310 adds r3, #16 - 8001922: 657b str r3, [r7, #84] @ 0x54 - - ep->xfer_count = PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); - 8001924: 687b ldr r3, [r7, #4] - 8001926: 681b ldr r3, [r3, #0] - 8001928: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800192c: b29b uxth r3, r3 - 800192e: 461a mov r2, r3 - 8001930: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001932: 781b ldrb r3, [r3, #0] - 8001934: 00db lsls r3, r3, #3 - 8001936: 4413 add r3, r2 - 8001938: 3302 adds r3, #2 - 800193a: 005b lsls r3, r3, #1 - 800193c: 687a ldr r2, [r7, #4] - 800193e: 6812 ldr r2, [r2, #0] - 8001940: 4413 add r3, r2 - 8001942: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8001946: 881b ldrh r3, [r3, #0] - 8001948: f3c3 0209 ubfx r2, r3, #0, #10 - 800194c: 6d7b ldr r3, [r7, #84] @ 0x54 - 800194e: 61da str r2, [r3, #28] - ep->xfer_buff += ep->xfer_count; - 8001950: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001952: 695a ldr r2, [r3, #20] - 8001954: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001956: 69db ldr r3, [r3, #28] - 8001958: 441a add r2, r3 - 800195a: 6d7b ldr r3, [r7, #84] @ 0x54 - 800195c: 615a str r2, [r3, #20] - - /* TX COMPLETE */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->DataInStageCallback(hpcd, 0U); -#else - HAL_PCD_DataInStageCallback(hpcd, 0U); - 800195e: 2100 movs r1, #0 - 8001960: 6878 ldr r0, [r7, #4] - 8001962: f006 fd00 bl 8008366 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - - if ((hpcd->USB_Address > 0U) && (ep->xfer_len == 0U)) - 8001966: 687b ldr r3, [r7, #4] - 8001968: 7b5b ldrb r3, [r3, #13] - 800196a: b2db uxtb r3, r3 - 800196c: 2b00 cmp r3, #0 - 800196e: f000 8368 beq.w 8002042 - 8001972: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001974: 699b ldr r3, [r3, #24] - 8001976: 2b00 cmp r3, #0 - 8001978: f040 8363 bne.w 8002042 - { - hpcd->Instance->DADDR = ((uint16_t)hpcd->USB_Address | USB_DADDR_EF); - 800197c: 687b ldr r3, [r7, #4] - 800197e: 7b5b ldrb r3, [r3, #13] - 8001980: b2db uxtb r3, r3 - 8001982: f063 037f orn r3, r3, #127 @ 0x7f - 8001986: b2da uxtb r2, r3 - 8001988: 687b ldr r3, [r7, #4] - 800198a: 681b ldr r3, [r3, #0] - 800198c: f8a3 204c strh.w r2, [r3, #76] @ 0x4c - hpcd->USB_Address = 0U; - 8001990: 687b ldr r3, [r7, #4] - 8001992: 2200 movs r2, #0 - 8001994: 735a strb r2, [r3, #13] - 8001996: e354 b.n 8002042 - { - /* DIR = 1 */ - - /* DIR = 1 & CTR_RX => SETUP or OUT int */ - /* DIR = 1 & (CTR_TX | CTR_RX) => 2 int pending */ - ep = &hpcd->OUT_ep[0]; - 8001998: 687b ldr r3, [r7, #4] - 800199a: f503 73a8 add.w r3, r3, #336 @ 0x150 - 800199e: 657b str r3, [r7, #84] @ 0x54 - wEPVal = PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); - 80019a0: 687b ldr r3, [r7, #4] - 80019a2: 681b ldr r3, [r3, #0] - 80019a4: 881b ldrh r3, [r3, #0] - 80019a6: f8a7 304a strh.w r3, [r7, #74] @ 0x4a - - if ((wEPVal & USB_EP_SETUP) != 0U) - 80019aa: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 80019ae: f403 6300 and.w r3, r3, #2048 @ 0x800 - 80019b2: 2b00 cmp r3, #0 - 80019b4: d034 beq.n 8001a20 - { - /* Get SETUP Packet */ - ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); - 80019b6: 687b ldr r3, [r7, #4] - 80019b8: 681b ldr r3, [r3, #0] - 80019ba: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80019be: b29b uxth r3, r3 - 80019c0: 461a mov r2, r3 - 80019c2: 6d7b ldr r3, [r7, #84] @ 0x54 - 80019c4: 781b ldrb r3, [r3, #0] - 80019c6: 00db lsls r3, r3, #3 - 80019c8: 4413 add r3, r2 - 80019ca: 3306 adds r3, #6 - 80019cc: 005b lsls r3, r3, #1 - 80019ce: 687a ldr r2, [r7, #4] - 80019d0: 6812 ldr r2, [r2, #0] - 80019d2: 4413 add r3, r2 - 80019d4: f503 6380 add.w r3, r3, #1024 @ 0x400 - 80019d8: 881b ldrh r3, [r3, #0] - 80019da: f3c3 0209 ubfx r2, r3, #0, #10 - 80019de: 6d7b ldr r3, [r7, #84] @ 0x54 - 80019e0: 61da str r2, [r3, #28] - - USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup, - 80019e2: 687b ldr r3, [r7, #4] - 80019e4: 6818 ldr r0, [r3, #0] - 80019e6: 687b ldr r3, [r7, #4] - 80019e8: f503 7126 add.w r1, r3, #664 @ 0x298 - 80019ec: 6d7b ldr r3, [r7, #84] @ 0x54 - 80019ee: 88da ldrh r2, [r3, #6] - ep->pmaadress, (uint16_t)ep->xfer_count); - 80019f0: 6d7b ldr r3, [r7, #84] @ 0x54 - 80019f2: 69db ldr r3, [r3, #28] - USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup, - 80019f4: b29b uxth r3, r3 - 80019f6: f004 fe38 bl 800666a - - /* SETUP bit kept frozen while CTR_RX = 1 */ - PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); - 80019fa: 687b ldr r3, [r7, #4] - 80019fc: 681b ldr r3, [r3, #0] - 80019fe: 881b ldrh r3, [r3, #0] - 8001a00: b29a uxth r2, r3 - 8001a02: f640 738f movw r3, #3983 @ 0xf8f - 8001a06: 4013 ands r3, r2 - 8001a08: 823b strh r3, [r7, #16] - 8001a0a: 687b ldr r3, [r7, #4] - 8001a0c: 681b ldr r3, [r3, #0] - 8001a0e: 8a3a ldrh r2, [r7, #16] - 8001a10: f042 0280 orr.w r2, r2, #128 @ 0x80 - 8001a14: b292 uxth r2, r2 - 8001a16: 801a strh r2, [r3, #0] - - /* Process SETUP Packet*/ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->SetupStageCallback(hpcd); -#else - HAL_PCD_SetupStageCallback(hpcd); - 8001a18: 6878 ldr r0, [r7, #4] - 8001a1a: f006 fc77 bl 800830c - 8001a1e: e310 b.n 8002042 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - } - else if ((wEPVal & USB_EP_CTR_RX) != 0U) - 8001a20: f9b7 304a ldrsh.w r3, [r7, #74] @ 0x4a - 8001a24: 2b00 cmp r3, #0 - 8001a26: f280 830c bge.w 8002042 - { - PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); - 8001a2a: 687b ldr r3, [r7, #4] - 8001a2c: 681b ldr r3, [r3, #0] - 8001a2e: 881b ldrh r3, [r3, #0] - 8001a30: b29a uxth r2, r3 - 8001a32: f640 738f movw r3, #3983 @ 0xf8f - 8001a36: 4013 ands r3, r2 - 8001a38: 83fb strh r3, [r7, #30] - 8001a3a: 687b ldr r3, [r7, #4] - 8001a3c: 681b ldr r3, [r3, #0] - 8001a3e: 8bfa ldrh r2, [r7, #30] - 8001a40: f042 0280 orr.w r2, r2, #128 @ 0x80 - 8001a44: b292 uxth r2, r2 - 8001a46: 801a strh r2, [r3, #0] - - /* Get Control Data OUT Packet */ - ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); - 8001a48: 687b ldr r3, [r7, #4] - 8001a4a: 681b ldr r3, [r3, #0] - 8001a4c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8001a50: b29b uxth r3, r3 - 8001a52: 461a mov r2, r3 - 8001a54: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001a56: 781b ldrb r3, [r3, #0] - 8001a58: 00db lsls r3, r3, #3 - 8001a5a: 4413 add r3, r2 - 8001a5c: 3306 adds r3, #6 - 8001a5e: 005b lsls r3, r3, #1 - 8001a60: 687a ldr r2, [r7, #4] - 8001a62: 6812 ldr r2, [r2, #0] - 8001a64: 4413 add r3, r2 - 8001a66: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8001a6a: 881b ldrh r3, [r3, #0] - 8001a6c: f3c3 0209 ubfx r2, r3, #0, #10 - 8001a70: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001a72: 61da str r2, [r3, #28] - - if ((ep->xfer_count != 0U) && (ep->xfer_buff != 0U)) - 8001a74: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001a76: 69db ldr r3, [r3, #28] - 8001a78: 2b00 cmp r3, #0 - 8001a7a: d019 beq.n 8001ab0 - 8001a7c: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001a7e: 695b ldr r3, [r3, #20] - 8001a80: 2b00 cmp r3, #0 - 8001a82: d015 beq.n 8001ab0 - { - USB_ReadPMA(hpcd->Instance, ep->xfer_buff, - 8001a84: 687b ldr r3, [r7, #4] - 8001a86: 6818 ldr r0, [r3, #0] - 8001a88: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001a8a: 6959 ldr r1, [r3, #20] - 8001a8c: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001a8e: 88da ldrh r2, [r3, #6] - ep->pmaadress, (uint16_t)ep->xfer_count); - 8001a90: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001a92: 69db ldr r3, [r3, #28] - USB_ReadPMA(hpcd->Instance, ep->xfer_buff, - 8001a94: b29b uxth r3, r3 - 8001a96: f004 fde8 bl 800666a - - ep->xfer_buff += ep->xfer_count; - 8001a9a: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001a9c: 695a ldr r2, [r3, #20] - 8001a9e: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001aa0: 69db ldr r3, [r3, #28] - 8001aa2: 441a add r2, r3 - 8001aa4: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001aa6: 615a str r2, [r3, #20] - - /* Process Control Data OUT Packet */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->DataOutStageCallback(hpcd, 0U); -#else - HAL_PCD_DataOutStageCallback(hpcd, 0U); - 8001aa8: 2100 movs r1, #0 - 8001aaa: 6878 ldr r0, [r7, #4] - 8001aac: f006 fc40 bl 8008330 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - } - - wEPVal = (uint16_t)PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); - 8001ab0: 687b ldr r3, [r7, #4] - 8001ab2: 681b ldr r3, [r3, #0] - 8001ab4: 881b ldrh r3, [r3, #0] - 8001ab6: f8a7 304a strh.w r3, [r7, #74] @ 0x4a - - if (((wEPVal & USB_EP_SETUP) == 0U) && ((wEPVal & USB_EP_RX_STRX) != USB_EP_RX_VALID)) - 8001aba: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 8001abe: f403 6300 and.w r3, r3, #2048 @ 0x800 - 8001ac2: 2b00 cmp r3, #0 - 8001ac4: f040 82bd bne.w 8002042 - 8001ac8: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 8001acc: f403 5340 and.w r3, r3, #12288 @ 0x3000 - 8001ad0: f5b3 5f40 cmp.w r3, #12288 @ 0x3000 - 8001ad4: f000 82b5 beq.w 8002042 - { - PCD_SET_EP_RX_CNT(hpcd->Instance, PCD_ENDP0, ep->maxpacket); - 8001ad8: 687b ldr r3, [r7, #4] - 8001ada: 681b ldr r3, [r3, #0] - 8001adc: 61bb str r3, [r7, #24] - 8001ade: 687b ldr r3, [r7, #4] - 8001ae0: 681b ldr r3, [r3, #0] - 8001ae2: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8001ae6: b29b uxth r3, r3 - 8001ae8: 461a mov r2, r3 - 8001aea: 69bb ldr r3, [r7, #24] - 8001aec: 4413 add r3, r2 - 8001aee: 61bb str r3, [r7, #24] - 8001af0: 69bb ldr r3, [r7, #24] - 8001af2: f203 430c addw r3, r3, #1036 @ 0x40c - 8001af6: 617b str r3, [r7, #20] - 8001af8: 697b ldr r3, [r7, #20] - 8001afa: 881b ldrh r3, [r3, #0] - 8001afc: b29b uxth r3, r3 - 8001afe: f3c3 0309 ubfx r3, r3, #0, #10 - 8001b02: b29a uxth r2, r3 - 8001b04: 697b ldr r3, [r7, #20] - 8001b06: 801a strh r2, [r3, #0] - 8001b08: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001b0a: 691b ldr r3, [r3, #16] - 8001b0c: 2b3e cmp r3, #62 @ 0x3e - 8001b0e: d91d bls.n 8001b4c - 8001b10: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001b12: 691b ldr r3, [r3, #16] - 8001b14: 095b lsrs r3, r3, #5 - 8001b16: 647b str r3, [r7, #68] @ 0x44 - 8001b18: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001b1a: 691b ldr r3, [r3, #16] - 8001b1c: f003 031f and.w r3, r3, #31 - 8001b20: 2b00 cmp r3, #0 - 8001b22: d102 bne.n 8001b2a - 8001b24: 6c7b ldr r3, [r7, #68] @ 0x44 - 8001b26: 3b01 subs r3, #1 - 8001b28: 647b str r3, [r7, #68] @ 0x44 - 8001b2a: 697b ldr r3, [r7, #20] - 8001b2c: 881b ldrh r3, [r3, #0] - 8001b2e: b29a uxth r2, r3 - 8001b30: 6c7b ldr r3, [r7, #68] @ 0x44 - 8001b32: b29b uxth r3, r3 - 8001b34: 029b lsls r3, r3, #10 - 8001b36: b29b uxth r3, r3 - 8001b38: 4313 orrs r3, r2 - 8001b3a: b29b uxth r3, r3 - 8001b3c: ea6f 4343 mvn.w r3, r3, lsl #17 - 8001b40: ea6f 4353 mvn.w r3, r3, lsr #17 - 8001b44: b29a uxth r2, r3 - 8001b46: 697b ldr r3, [r7, #20] - 8001b48: 801a strh r2, [r3, #0] - 8001b4a: e026 b.n 8001b9a - 8001b4c: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001b4e: 691b ldr r3, [r3, #16] - 8001b50: 2b00 cmp r3, #0 - 8001b52: d10a bne.n 8001b6a - 8001b54: 697b ldr r3, [r7, #20] - 8001b56: 881b ldrh r3, [r3, #0] - 8001b58: b29b uxth r3, r3 - 8001b5a: ea6f 4343 mvn.w r3, r3, lsl #17 - 8001b5e: ea6f 4353 mvn.w r3, r3, lsr #17 - 8001b62: b29a uxth r2, r3 - 8001b64: 697b ldr r3, [r7, #20] - 8001b66: 801a strh r2, [r3, #0] - 8001b68: e017 b.n 8001b9a - 8001b6a: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001b6c: 691b ldr r3, [r3, #16] - 8001b6e: 085b lsrs r3, r3, #1 - 8001b70: 647b str r3, [r7, #68] @ 0x44 - 8001b72: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001b74: 691b ldr r3, [r3, #16] - 8001b76: f003 0301 and.w r3, r3, #1 - 8001b7a: 2b00 cmp r3, #0 - 8001b7c: d002 beq.n 8001b84 - 8001b7e: 6c7b ldr r3, [r7, #68] @ 0x44 - 8001b80: 3301 adds r3, #1 - 8001b82: 647b str r3, [r7, #68] @ 0x44 - 8001b84: 697b ldr r3, [r7, #20] - 8001b86: 881b ldrh r3, [r3, #0] - 8001b88: b29a uxth r2, r3 - 8001b8a: 6c7b ldr r3, [r7, #68] @ 0x44 - 8001b8c: b29b uxth r3, r3 - 8001b8e: 029b lsls r3, r3, #10 - 8001b90: b29b uxth r3, r3 - 8001b92: 4313 orrs r3, r2 - 8001b94: b29a uxth r2, r3 - 8001b96: 697b ldr r3, [r7, #20] - 8001b98: 801a strh r2, [r3, #0] - PCD_SET_EP_RX_STATUS(hpcd->Instance, PCD_ENDP0, USB_EP_RX_VALID); - 8001b9a: 687b ldr r3, [r7, #4] - 8001b9c: 681b ldr r3, [r3, #0] - 8001b9e: 881b ldrh r3, [r3, #0] - 8001ba0: b29b uxth r3, r3 - 8001ba2: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8001ba6: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8001baa: 827b strh r3, [r7, #18] - 8001bac: 8a7b ldrh r3, [r7, #18] - 8001bae: f483 5380 eor.w r3, r3, #4096 @ 0x1000 - 8001bb2: 827b strh r3, [r7, #18] - 8001bb4: 8a7b ldrh r3, [r7, #18] - 8001bb6: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 8001bba: 827b strh r3, [r7, #18] - 8001bbc: 687b ldr r3, [r7, #4] - 8001bbe: 681a ldr r2, [r3, #0] - 8001bc0: 8a7b ldrh r3, [r7, #18] - 8001bc2: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8001bc6: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8001bca: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8001bce: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8001bd2: b29b uxth r3, r3 - 8001bd4: 8013 strh r3, [r2, #0] - 8001bd6: e234 b.n 8002042 - } - else - { - /* Decode and service non control endpoints interrupt */ - /* process related endpoint register */ - wEPVal = PCD_GET_ENDPOINT(hpcd->Instance, epindex); - 8001bd8: 687b ldr r3, [r7, #4] - 8001bda: 681b ldr r3, [r3, #0] - 8001bdc: 461a mov r2, r3 - 8001bde: f897 304d ldrb.w r3, [r7, #77] @ 0x4d - 8001be2: 009b lsls r3, r3, #2 - 8001be4: 4413 add r3, r2 - 8001be6: 881b ldrh r3, [r3, #0] - 8001be8: f8a7 304a strh.w r3, [r7, #74] @ 0x4a - - if ((wEPVal & USB_EP_CTR_RX) != 0U) - 8001bec: f9b7 304a ldrsh.w r3, [r7, #74] @ 0x4a - 8001bf0: 2b00 cmp r3, #0 - 8001bf2: f280 80fc bge.w 8001dee - { - /* clear int flag */ - PCD_CLEAR_RX_EP_CTR(hpcd->Instance, epindex); - 8001bf6: 687b ldr r3, [r7, #4] - 8001bf8: 681b ldr r3, [r3, #0] - 8001bfa: 461a mov r2, r3 - 8001bfc: f897 304d ldrb.w r3, [r7, #77] @ 0x4d - 8001c00: 009b lsls r3, r3, #2 - 8001c02: 4413 add r3, r2 - 8001c04: 881b ldrh r3, [r3, #0] - 8001c06: b29a uxth r2, r3 - 8001c08: f640 738f movw r3, #3983 @ 0xf8f - 8001c0c: 4013 ands r3, r2 - 8001c0e: f8a7 3048 strh.w r3, [r7, #72] @ 0x48 - 8001c12: 687b ldr r3, [r7, #4] - 8001c14: 681b ldr r3, [r3, #0] - 8001c16: 461a mov r2, r3 - 8001c18: f897 304d ldrb.w r3, [r7, #77] @ 0x4d - 8001c1c: 009b lsls r3, r3, #2 - 8001c1e: 4413 add r3, r2 - 8001c20: f8b7 2048 ldrh.w r2, [r7, #72] @ 0x48 - 8001c24: f042 0280 orr.w r2, r2, #128 @ 0x80 - 8001c28: b292 uxth r2, r2 - 8001c2a: 801a strh r2, [r3, #0] - ep = &hpcd->OUT_ep[epindex]; - 8001c2c: f897 204d ldrb.w r2, [r7, #77] @ 0x4d - 8001c30: 4613 mov r3, r2 - 8001c32: 009b lsls r3, r3, #2 - 8001c34: 4413 add r3, r2 - 8001c36: 00db lsls r3, r3, #3 - 8001c38: f503 73a8 add.w r3, r3, #336 @ 0x150 - 8001c3c: 687a ldr r2, [r7, #4] - 8001c3e: 4413 add r3, r2 - 8001c40: 657b str r3, [r7, #84] @ 0x54 - - /* OUT Single Buffering */ - if (ep->doublebuffer == 0U) - 8001c42: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001c44: 7b1b ldrb r3, [r3, #12] - 8001c46: 2b00 cmp r3, #0 - 8001c48: d125 bne.n 8001c96 - { - count = (uint16_t)PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); - 8001c4a: 687b ldr r3, [r7, #4] - 8001c4c: 681b ldr r3, [r3, #0] - 8001c4e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8001c52: b29b uxth r3, r3 - 8001c54: 461a mov r2, r3 - 8001c56: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001c58: 781b ldrb r3, [r3, #0] - 8001c5a: 00db lsls r3, r3, #3 - 8001c5c: 4413 add r3, r2 - 8001c5e: 3306 adds r3, #6 - 8001c60: 005b lsls r3, r3, #1 - 8001c62: 687a ldr r2, [r7, #4] - 8001c64: 6812 ldr r2, [r2, #0] - 8001c66: 4413 add r3, r2 - 8001c68: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8001c6c: 881b ldrh r3, [r3, #0] - 8001c6e: f3c3 0309 ubfx r3, r3, #0, #10 - 8001c72: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 - - if (count != 0U) - 8001c76: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 8001c7a: 2b00 cmp r3, #0 - 8001c7c: f000 8092 beq.w 8001da4 - { - USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaadress, count); - 8001c80: 687b ldr r3, [r7, #4] - 8001c82: 6818 ldr r0, [r3, #0] - 8001c84: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001c86: 6959 ldr r1, [r3, #20] - 8001c88: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001c8a: 88da ldrh r2, [r3, #6] - 8001c8c: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 8001c90: f004 fceb bl 800666a - 8001c94: e086 b.n 8001da4 - } -#if (USE_USB_DOUBLE_BUFFER == 1U) - else - { - /* manage double buffer bulk out */ - if (ep->type == EP_TYPE_BULK) - 8001c96: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001c98: 78db ldrb r3, [r3, #3] - 8001c9a: 2b02 cmp r3, #2 - 8001c9c: d10a bne.n 8001cb4 - { - count = HAL_PCD_EP_DB_Receive(hpcd, ep, wEPVal); - 8001c9e: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 8001ca2: 461a mov r2, r3 - 8001ca4: 6d79 ldr r1, [r7, #84] @ 0x54 - 8001ca6: 6878 ldr r0, [r7, #4] - 8001ca8: f000 f9d9 bl 800205e - 8001cac: 4603 mov r3, r0 - 8001cae: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 - 8001cb2: e077 b.n 8001da4 - } - else /* manage double buffer iso out */ - { - /* free EP OUT Buffer */ - PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); - 8001cb4: 687b ldr r3, [r7, #4] - 8001cb6: 681b ldr r3, [r3, #0] - 8001cb8: 461a mov r2, r3 - 8001cba: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001cbc: 781b ldrb r3, [r3, #0] - 8001cbe: 009b lsls r3, r3, #2 - 8001cc0: 4413 add r3, r2 - 8001cc2: 881b ldrh r3, [r3, #0] - 8001cc4: b29b uxth r3, r3 - 8001cc6: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8001cca: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8001cce: f8a7 3052 strh.w r3, [r7, #82] @ 0x52 - 8001cd2: 687b ldr r3, [r7, #4] - 8001cd4: 681b ldr r3, [r3, #0] - 8001cd6: 461a mov r2, r3 - 8001cd8: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001cda: 781b ldrb r3, [r3, #0] - 8001cdc: 009b lsls r3, r3, #2 - 8001cde: 441a add r2, r3 - 8001ce0: f8b7 3052 ldrh.w r3, [r7, #82] @ 0x52 - 8001ce4: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8001ce8: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8001cec: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8001cf0: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8001cf4: b29b uxth r3, r3 - 8001cf6: 8013 strh r3, [r2, #0] - - if ((PCD_GET_ENDPOINT(hpcd->Instance, ep->num) & USB_EP_DTOG_RX) != 0U) - 8001cf8: 687b ldr r3, [r7, #4] - 8001cfa: 681b ldr r3, [r3, #0] - 8001cfc: 461a mov r2, r3 - 8001cfe: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001d00: 781b ldrb r3, [r3, #0] - 8001d02: 009b lsls r3, r3, #2 - 8001d04: 4413 add r3, r2 - 8001d06: 881b ldrh r3, [r3, #0] - 8001d08: b29b uxth r3, r3 - 8001d0a: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8001d0e: 2b00 cmp r3, #0 - 8001d10: d024 beq.n 8001d5c - { - /* read from endpoint BUF0Addr buffer */ - count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); - 8001d12: 687b ldr r3, [r7, #4] - 8001d14: 681b ldr r3, [r3, #0] - 8001d16: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8001d1a: b29b uxth r3, r3 - 8001d1c: 461a mov r2, r3 - 8001d1e: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001d20: 781b ldrb r3, [r3, #0] - 8001d22: 00db lsls r3, r3, #3 - 8001d24: 4413 add r3, r2 - 8001d26: 3302 adds r3, #2 - 8001d28: 005b lsls r3, r3, #1 - 8001d2a: 687a ldr r2, [r7, #4] - 8001d2c: 6812 ldr r2, [r2, #0] - 8001d2e: 4413 add r3, r2 - 8001d30: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8001d34: 881b ldrh r3, [r3, #0] - 8001d36: f3c3 0309 ubfx r3, r3, #0, #10 - 8001d3a: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 - - if (count != 0U) - 8001d3e: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 8001d42: 2b00 cmp r3, #0 - 8001d44: d02e beq.n 8001da4 - { - USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); - 8001d46: 687b ldr r3, [r7, #4] - 8001d48: 6818 ldr r0, [r3, #0] - 8001d4a: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001d4c: 6959 ldr r1, [r3, #20] - 8001d4e: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001d50: 891a ldrh r2, [r3, #8] - 8001d52: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 8001d56: f004 fc88 bl 800666a - 8001d5a: e023 b.n 8001da4 - } - } - else - { - /* read from endpoint BUF1Addr buffer */ - count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); - 8001d5c: 687b ldr r3, [r7, #4] - 8001d5e: 681b ldr r3, [r3, #0] - 8001d60: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8001d64: b29b uxth r3, r3 - 8001d66: 461a mov r2, r3 - 8001d68: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001d6a: 781b ldrb r3, [r3, #0] - 8001d6c: 00db lsls r3, r3, #3 - 8001d6e: 4413 add r3, r2 - 8001d70: 3306 adds r3, #6 - 8001d72: 005b lsls r3, r3, #1 - 8001d74: 687a ldr r2, [r7, #4] - 8001d76: 6812 ldr r2, [r2, #0] - 8001d78: 4413 add r3, r2 - 8001d7a: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8001d7e: 881b ldrh r3, [r3, #0] - 8001d80: f3c3 0309 ubfx r3, r3, #0, #10 - 8001d84: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 - - if (count != 0U) - 8001d88: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 8001d8c: 2b00 cmp r3, #0 - 8001d8e: d009 beq.n 8001da4 - { - USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); - 8001d90: 687b ldr r3, [r7, #4] - 8001d92: 6818 ldr r0, [r3, #0] - 8001d94: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001d96: 6959 ldr r1, [r3, #20] - 8001d98: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001d9a: 895a ldrh r2, [r3, #10] - 8001d9c: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 8001da0: f004 fc63 bl 800666a - } - } -#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ - - /* multi-packet on the NON control OUT endpoint */ - ep->xfer_count += count; - 8001da4: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001da6: 69da ldr r2, [r3, #28] - 8001da8: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 8001dac: 441a add r2, r3 - 8001dae: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001db0: 61da str r2, [r3, #28] - ep->xfer_buff += count; - 8001db2: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001db4: 695a ldr r2, [r3, #20] - 8001db6: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 - 8001dba: 441a add r2, r3 - 8001dbc: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001dbe: 615a str r2, [r3, #20] - - if ((ep->xfer_len == 0U) || (count < ep->maxpacket)) - 8001dc0: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001dc2: 699b ldr r3, [r3, #24] - 8001dc4: 2b00 cmp r3, #0 - 8001dc6: d005 beq.n 8001dd4 - 8001dc8: f8b7 2050 ldrh.w r2, [r7, #80] @ 0x50 - 8001dcc: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001dce: 691b ldr r3, [r3, #16] - 8001dd0: 429a cmp r2, r3 - 8001dd2: d206 bcs.n 8001de2 - { - /* RX COMPLETE */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->DataOutStageCallback(hpcd, ep->num); -#else - HAL_PCD_DataOutStageCallback(hpcd, ep->num); - 8001dd4: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001dd6: 781b ldrb r3, [r3, #0] - 8001dd8: 4619 mov r1, r3 - 8001dda: 6878 ldr r0, [r7, #4] - 8001ddc: f006 faa8 bl 8008330 - 8001de0: e005 b.n 8001dee -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - } - else - { - (void)USB_EPStartXfer(hpcd->Instance, ep); - 8001de2: 687b ldr r3, [r7, #4] - 8001de4: 681b ldr r3, [r3, #0] - 8001de6: 6d79 ldr r1, [r7, #84] @ 0x54 - 8001de8: 4618 mov r0, r3 - 8001dea: f002 ff09 bl 8004c00 - } - } - - if ((wEPVal & USB_EP_CTR_TX) != 0U) - 8001dee: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 8001df2: f003 0380 and.w r3, r3, #128 @ 0x80 - 8001df6: 2b00 cmp r3, #0 - 8001df8: f000 8123 beq.w 8002042 - { - ep = &hpcd->IN_ep[epindex]; - 8001dfc: f897 204d ldrb.w r2, [r7, #77] @ 0x4d - 8001e00: 4613 mov r3, r2 - 8001e02: 009b lsls r3, r3, #2 - 8001e04: 4413 add r3, r2 - 8001e06: 00db lsls r3, r3, #3 - 8001e08: 3310 adds r3, #16 - 8001e0a: 687a ldr r2, [r7, #4] - 8001e0c: 4413 add r3, r2 - 8001e0e: 657b str r3, [r7, #84] @ 0x54 - - /* clear int flag */ - PCD_CLEAR_TX_EP_CTR(hpcd->Instance, epindex); - 8001e10: 687b ldr r3, [r7, #4] - 8001e12: 681b ldr r3, [r3, #0] - 8001e14: 461a mov r2, r3 - 8001e16: f897 304d ldrb.w r3, [r7, #77] @ 0x4d - 8001e1a: 009b lsls r3, r3, #2 - 8001e1c: 4413 add r3, r2 - 8001e1e: 881b ldrh r3, [r3, #0] - 8001e20: b29b uxth r3, r3 - 8001e22: f423 43e1 bic.w r3, r3, #28800 @ 0x7080 - 8001e26: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8001e2a: f8a7 3042 strh.w r3, [r7, #66] @ 0x42 - 8001e2e: 687b ldr r3, [r7, #4] - 8001e30: 681b ldr r3, [r3, #0] - 8001e32: 461a mov r2, r3 - 8001e34: f897 304d ldrb.w r3, [r7, #77] @ 0x4d - 8001e38: 009b lsls r3, r3, #2 - 8001e3a: 441a add r2, r3 - 8001e3c: f8b7 3042 ldrh.w r3, [r7, #66] @ 0x42 - 8001e40: ea6f 4343 mvn.w r3, r3, lsl #17 - 8001e44: ea6f 4353 mvn.w r3, r3, lsr #17 - 8001e48: b29b uxth r3, r3 - 8001e4a: 8013 strh r3, [r2, #0] - - if (ep->type == EP_TYPE_ISOC) - 8001e4c: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001e4e: 78db ldrb r3, [r3, #3] - 8001e50: 2b01 cmp r3, #1 - 8001e52: f040 80a2 bne.w 8001f9a - { - ep->xfer_len = 0U; - 8001e56: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001e58: 2200 movs r2, #0 - 8001e5a: 619a str r2, [r3, #24] - -#if (USE_USB_DOUBLE_BUFFER == 1U) - if (ep->doublebuffer != 0U) - 8001e5c: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001e5e: 7b1b ldrb r3, [r3, #12] - 8001e60: 2b00 cmp r3, #0 - 8001e62: f000 8093 beq.w 8001f8c - { - if ((wEPVal & USB_EP_DTOG_TX) != 0U) - 8001e66: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 8001e6a: f003 0340 and.w r3, r3, #64 @ 0x40 - 8001e6e: 2b00 cmp r3, #0 - 8001e70: d046 beq.n 8001f00 - { - PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); - 8001e72: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001e74: 785b ldrb r3, [r3, #1] - 8001e76: 2b00 cmp r3, #0 - 8001e78: d126 bne.n 8001ec8 - 8001e7a: 687b ldr r3, [r7, #4] - 8001e7c: 681b ldr r3, [r3, #0] - 8001e7e: 627b str r3, [r7, #36] @ 0x24 - 8001e80: 687b ldr r3, [r7, #4] - 8001e82: 681b ldr r3, [r3, #0] - 8001e84: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8001e88: b29b uxth r3, r3 - 8001e8a: 461a mov r2, r3 - 8001e8c: 6a7b ldr r3, [r7, #36] @ 0x24 - 8001e8e: 4413 add r3, r2 - 8001e90: 627b str r3, [r7, #36] @ 0x24 - 8001e92: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001e94: 781b ldrb r3, [r3, #0] - 8001e96: 011a lsls r2, r3, #4 - 8001e98: 6a7b ldr r3, [r7, #36] @ 0x24 - 8001e9a: 4413 add r3, r2 - 8001e9c: f203 4304 addw r3, r3, #1028 @ 0x404 - 8001ea0: 623b str r3, [r7, #32] - 8001ea2: 6a3b ldr r3, [r7, #32] - 8001ea4: 881b ldrh r3, [r3, #0] - 8001ea6: b29b uxth r3, r3 - 8001ea8: f3c3 0309 ubfx r3, r3, #0, #10 - 8001eac: b29a uxth r2, r3 - 8001eae: 6a3b ldr r3, [r7, #32] - 8001eb0: 801a strh r2, [r3, #0] - 8001eb2: 6a3b ldr r3, [r7, #32] - 8001eb4: 881b ldrh r3, [r3, #0] - 8001eb6: b29b uxth r3, r3 - 8001eb8: ea6f 4343 mvn.w r3, r3, lsl #17 - 8001ebc: ea6f 4353 mvn.w r3, r3, lsr #17 - 8001ec0: b29a uxth r2, r3 - 8001ec2: 6a3b ldr r3, [r7, #32] - 8001ec4: 801a strh r2, [r3, #0] - 8001ec6: e061 b.n 8001f8c - 8001ec8: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001eca: 785b ldrb r3, [r3, #1] - 8001ecc: 2b01 cmp r3, #1 - 8001ece: d15d bne.n 8001f8c - 8001ed0: 687b ldr r3, [r7, #4] - 8001ed2: 681b ldr r3, [r3, #0] - 8001ed4: 62fb str r3, [r7, #44] @ 0x2c - 8001ed6: 687b ldr r3, [r7, #4] - 8001ed8: 681b ldr r3, [r3, #0] - 8001eda: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8001ede: b29b uxth r3, r3 - 8001ee0: 461a mov r2, r3 - 8001ee2: 6afb ldr r3, [r7, #44] @ 0x2c - 8001ee4: 4413 add r3, r2 - 8001ee6: 62fb str r3, [r7, #44] @ 0x2c - 8001ee8: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001eea: 781b ldrb r3, [r3, #0] - 8001eec: 011a lsls r2, r3, #4 - 8001eee: 6afb ldr r3, [r7, #44] @ 0x2c - 8001ef0: 4413 add r3, r2 - 8001ef2: f203 4304 addw r3, r3, #1028 @ 0x404 - 8001ef6: 62bb str r3, [r7, #40] @ 0x28 - 8001ef8: 6abb ldr r3, [r7, #40] @ 0x28 - 8001efa: 2200 movs r2, #0 - 8001efc: 801a strh r2, [r3, #0] - 8001efe: e045 b.n 8001f8c - } - else - { - PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); - 8001f00: 687b ldr r3, [r7, #4] - 8001f02: 681b ldr r3, [r3, #0] - 8001f04: 63fb str r3, [r7, #60] @ 0x3c - 8001f06: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001f08: 785b ldrb r3, [r3, #1] - 8001f0a: 2b00 cmp r3, #0 - 8001f0c: d126 bne.n 8001f5c - 8001f0e: 687b ldr r3, [r7, #4] - 8001f10: 681b ldr r3, [r3, #0] - 8001f12: 637b str r3, [r7, #52] @ 0x34 - 8001f14: 687b ldr r3, [r7, #4] - 8001f16: 681b ldr r3, [r3, #0] - 8001f18: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8001f1c: b29b uxth r3, r3 - 8001f1e: 461a mov r2, r3 - 8001f20: 6b7b ldr r3, [r7, #52] @ 0x34 - 8001f22: 4413 add r3, r2 - 8001f24: 637b str r3, [r7, #52] @ 0x34 - 8001f26: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001f28: 781b ldrb r3, [r3, #0] - 8001f2a: 011a lsls r2, r3, #4 - 8001f2c: 6b7b ldr r3, [r7, #52] @ 0x34 - 8001f2e: 4413 add r3, r2 - 8001f30: f203 430c addw r3, r3, #1036 @ 0x40c - 8001f34: 633b str r3, [r7, #48] @ 0x30 - 8001f36: 6b3b ldr r3, [r7, #48] @ 0x30 - 8001f38: 881b ldrh r3, [r3, #0] - 8001f3a: b29b uxth r3, r3 - 8001f3c: f3c3 0309 ubfx r3, r3, #0, #10 - 8001f40: b29a uxth r2, r3 - 8001f42: 6b3b ldr r3, [r7, #48] @ 0x30 - 8001f44: 801a strh r2, [r3, #0] - 8001f46: 6b3b ldr r3, [r7, #48] @ 0x30 - 8001f48: 881b ldrh r3, [r3, #0] - 8001f4a: b29b uxth r3, r3 - 8001f4c: ea6f 4343 mvn.w r3, r3, lsl #17 - 8001f50: ea6f 4353 mvn.w r3, r3, lsr #17 - 8001f54: b29a uxth r2, r3 - 8001f56: 6b3b ldr r3, [r7, #48] @ 0x30 - 8001f58: 801a strh r2, [r3, #0] - 8001f5a: e017 b.n 8001f8c - 8001f5c: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001f5e: 785b ldrb r3, [r3, #1] - 8001f60: 2b01 cmp r3, #1 - 8001f62: d113 bne.n 8001f8c - 8001f64: 687b ldr r3, [r7, #4] - 8001f66: 681b ldr r3, [r3, #0] - 8001f68: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8001f6c: b29b uxth r3, r3 - 8001f6e: 461a mov r2, r3 - 8001f70: 6bfb ldr r3, [r7, #60] @ 0x3c - 8001f72: 4413 add r3, r2 - 8001f74: 63fb str r3, [r7, #60] @ 0x3c - 8001f76: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001f78: 781b ldrb r3, [r3, #0] - 8001f7a: 011a lsls r2, r3, #4 - 8001f7c: 6bfb ldr r3, [r7, #60] @ 0x3c - 8001f7e: 4413 add r3, r2 - 8001f80: f203 430c addw r3, r3, #1036 @ 0x40c - 8001f84: 63bb str r3, [r7, #56] @ 0x38 - 8001f86: 6bbb ldr r3, [r7, #56] @ 0x38 - 8001f88: 2200 movs r2, #0 - 8001f8a: 801a strh r2, [r3, #0] - - /* TX COMPLETE */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->DataInStageCallback(hpcd, ep->num); -#else - HAL_PCD_DataInStageCallback(hpcd, ep->num); - 8001f8c: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001f8e: 781b ldrb r3, [r3, #0] - 8001f90: 4619 mov r1, r3 - 8001f92: 6878 ldr r0, [r7, #4] - 8001f94: f006 f9e7 bl 8008366 - 8001f98: e053 b.n 8002042 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - } - else - { - /* Manage Single Buffer Transaction */ - if ((wEPVal & USB_EP_KIND) == 0U) - 8001f9a: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 8001f9e: f403 7380 and.w r3, r3, #256 @ 0x100 - 8001fa2: 2b00 cmp r3, #0 - 8001fa4: d146 bne.n 8002034 - { - /* multi-packet on the NON control IN endpoint */ - TxPctSize = (uint16_t)PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); - 8001fa6: 687b ldr r3, [r7, #4] - 8001fa8: 681b ldr r3, [r3, #0] - 8001faa: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8001fae: b29b uxth r3, r3 - 8001fb0: 461a mov r2, r3 - 8001fb2: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001fb4: 781b ldrb r3, [r3, #0] - 8001fb6: 00db lsls r3, r3, #3 - 8001fb8: 4413 add r3, r2 - 8001fba: 3302 adds r3, #2 - 8001fbc: 005b lsls r3, r3, #1 - 8001fbe: 687a ldr r2, [r7, #4] - 8001fc0: 6812 ldr r2, [r2, #0] - 8001fc2: 4413 add r3, r2 - 8001fc4: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8001fc8: 881b ldrh r3, [r3, #0] - 8001fca: f3c3 0309 ubfx r3, r3, #0, #10 - 8001fce: f8a7 3040 strh.w r3, [r7, #64] @ 0x40 - - if (ep->xfer_len > TxPctSize) - 8001fd2: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001fd4: 699a ldr r2, [r3, #24] - 8001fd6: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 - 8001fda: 429a cmp r2, r3 - 8001fdc: d907 bls.n 8001fee - { - ep->xfer_len -= TxPctSize; - 8001fde: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001fe0: 699a ldr r2, [r3, #24] - 8001fe2: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 - 8001fe6: 1ad2 subs r2, r2, r3 - 8001fe8: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001fea: 619a str r2, [r3, #24] - 8001fec: e002 b.n 8001ff4 - } - else - { - ep->xfer_len = 0U; - 8001fee: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001ff0: 2200 movs r2, #0 - 8001ff2: 619a str r2, [r3, #24] - } - - /* Zero Length Packet? */ - if (ep->xfer_len == 0U) - 8001ff4: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001ff6: 699b ldr r3, [r3, #24] - 8001ff8: 2b00 cmp r3, #0 - 8001ffa: d106 bne.n 800200a - { - /* TX COMPLETE */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->DataInStageCallback(hpcd, ep->num); -#else - HAL_PCD_DataInStageCallback(hpcd, ep->num); - 8001ffc: 6d7b ldr r3, [r7, #84] @ 0x54 - 8001ffe: 781b ldrb r3, [r3, #0] - 8002000: 4619 mov r1, r3 - 8002002: 6878 ldr r0, [r7, #4] - 8002004: f006 f9af bl 8008366 - 8002008: e01b b.n 8002042 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - } - else - { - /* Transfer is not yet Done */ - ep->xfer_buff += TxPctSize; - 800200a: 6d7b ldr r3, [r7, #84] @ 0x54 - 800200c: 695a ldr r2, [r3, #20] - 800200e: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 - 8002012: 441a add r2, r3 - 8002014: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002016: 615a str r2, [r3, #20] - ep->xfer_count += TxPctSize; - 8002018: 6d7b ldr r3, [r7, #84] @ 0x54 - 800201a: 69da ldr r2, [r3, #28] - 800201c: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 - 8002020: 441a add r2, r3 - 8002022: 6d7b ldr r3, [r7, #84] @ 0x54 - 8002024: 61da str r2, [r3, #28] - (void)USB_EPStartXfer(hpcd->Instance, ep); - 8002026: 687b ldr r3, [r7, #4] - 8002028: 681b ldr r3, [r3, #0] - 800202a: 6d79 ldr r1, [r7, #84] @ 0x54 - 800202c: 4618 mov r0, r3 - 800202e: f002 fde7 bl 8004c00 - 8002032: e006 b.n 8002042 - } -#if (USE_USB_DOUBLE_BUFFER == 1U) - /* Double Buffer bulk IN (bulk transfer Len > Ep_Mps) */ - else - { - (void)HAL_PCD_EP_DB_Transmit(hpcd, ep, wEPVal); - 8002034: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 8002038: 461a mov r2, r3 - 800203a: 6d79 ldr r1, [r7, #84] @ 0x54 - 800203c: 6878 ldr r0, [r7, #4] - 800203e: f000 f91b bl 8002278 - while ((hpcd->Instance->ISTR & USB_ISTR_CTR) != 0U) - 8002042: 687b ldr r3, [r7, #4] - 8002044: 681b ldr r3, [r3, #0] - 8002046: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 800204a: b29b uxth r3, r3 - 800204c: b21b sxth r3, r3 - 800204e: 2b00 cmp r3, #0 - 8002050: f6ff ac3b blt.w 80018ca - } - } - } - } - - return HAL_OK; - 8002054: 2300 movs r3, #0 -} - 8002056: 4618 mov r0, r3 - 8002058: 3758 adds r7, #88 @ 0x58 - 800205a: 46bd mov sp, r7 - 800205c: bd80 pop {r7, pc} - -0800205e : - * @param wEPVal Last snapshot of EPRx register value taken in ISR - * @retval HAL status - */ -static uint16_t HAL_PCD_EP_DB_Receive(PCD_HandleTypeDef *hpcd, - PCD_EPTypeDef *ep, uint16_t wEPVal) -{ - 800205e: b580 push {r7, lr} - 8002060: b088 sub sp, #32 - 8002062: af00 add r7, sp, #0 - 8002064: 60f8 str r0, [r7, #12] - 8002066: 60b9 str r1, [r7, #8] - 8002068: 4613 mov r3, r2 - 800206a: 80fb strh r3, [r7, #6] - uint16_t count; - - /* Manage Buffer0 OUT */ - if ((wEPVal & USB_EP_DTOG_RX) != 0U) - 800206c: 88fb ldrh r3, [r7, #6] - 800206e: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8002072: 2b00 cmp r3, #0 - 8002074: d07e beq.n 8002174 - { - /* Get count of received Data on buffer0 */ - count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); - 8002076: 68fb ldr r3, [r7, #12] - 8002078: 681b ldr r3, [r3, #0] - 800207a: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800207e: b29b uxth r3, r3 - 8002080: 461a mov r2, r3 - 8002082: 68bb ldr r3, [r7, #8] - 8002084: 781b ldrb r3, [r3, #0] - 8002086: 00db lsls r3, r3, #3 - 8002088: 4413 add r3, r2 - 800208a: 3302 adds r3, #2 - 800208c: 005b lsls r3, r3, #1 - 800208e: 68fa ldr r2, [r7, #12] - 8002090: 6812 ldr r2, [r2, #0] - 8002092: 4413 add r3, r2 - 8002094: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8002098: 881b ldrh r3, [r3, #0] - 800209a: f3c3 0309 ubfx r3, r3, #0, #10 - 800209e: 837b strh r3, [r7, #26] - - if (ep->xfer_len >= count) - 80020a0: 68bb ldr r3, [r7, #8] - 80020a2: 699a ldr r2, [r3, #24] - 80020a4: 8b7b ldrh r3, [r7, #26] - 80020a6: 429a cmp r2, r3 - 80020a8: d306 bcc.n 80020b8 - { - ep->xfer_len -= count; - 80020aa: 68bb ldr r3, [r7, #8] - 80020ac: 699a ldr r2, [r3, #24] - 80020ae: 8b7b ldrh r3, [r7, #26] - 80020b0: 1ad2 subs r2, r2, r3 - 80020b2: 68bb ldr r3, [r7, #8] - 80020b4: 619a str r2, [r3, #24] - 80020b6: e002 b.n 80020be - } - else - { - ep->xfer_len = 0U; - 80020b8: 68bb ldr r3, [r7, #8] - 80020ba: 2200 movs r2, #0 - 80020bc: 619a str r2, [r3, #24] - } - - if (ep->xfer_len == 0U) - 80020be: 68bb ldr r3, [r7, #8] - 80020c0: 699b ldr r3, [r3, #24] - 80020c2: 2b00 cmp r3, #0 - 80020c4: d123 bne.n 800210e - { - /* set NAK to OUT endpoint since double buffer is enabled */ - PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); - 80020c6: 68fb ldr r3, [r7, #12] - 80020c8: 681b ldr r3, [r3, #0] - 80020ca: 461a mov r2, r3 - 80020cc: 68bb ldr r3, [r7, #8] - 80020ce: 781b ldrb r3, [r3, #0] - 80020d0: 009b lsls r3, r3, #2 - 80020d2: 4413 add r3, r2 - 80020d4: 881b ldrh r3, [r3, #0] - 80020d6: b29b uxth r3, r3 - 80020d8: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 80020dc: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80020e0: 833b strh r3, [r7, #24] - 80020e2: 8b3b ldrh r3, [r7, #24] - 80020e4: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 80020e8: 833b strh r3, [r7, #24] - 80020ea: 68fb ldr r3, [r7, #12] - 80020ec: 681b ldr r3, [r3, #0] - 80020ee: 461a mov r2, r3 - 80020f0: 68bb ldr r3, [r7, #8] - 80020f2: 781b ldrb r3, [r3, #0] - 80020f4: 009b lsls r3, r3, #2 - 80020f6: 441a add r2, r3 - 80020f8: 8b3b ldrh r3, [r7, #24] - 80020fa: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80020fe: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8002102: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8002106: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800210a: b29b uxth r3, r3 - 800210c: 8013 strh r3, [r2, #0] - } - - /* Check if Buffer1 is in blocked state which requires to toggle */ - if ((wEPVal & USB_EP_DTOG_TX) != 0U) - 800210e: 88fb ldrh r3, [r7, #6] - 8002110: f003 0340 and.w r3, r3, #64 @ 0x40 - 8002114: 2b00 cmp r3, #0 - 8002116: d01f beq.n 8002158 - { - PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); - 8002118: 68fb ldr r3, [r7, #12] - 800211a: 681b ldr r3, [r3, #0] - 800211c: 461a mov r2, r3 - 800211e: 68bb ldr r3, [r7, #8] - 8002120: 781b ldrb r3, [r3, #0] - 8002122: 009b lsls r3, r3, #2 - 8002124: 4413 add r3, r2 - 8002126: 881b ldrh r3, [r3, #0] - 8002128: b29b uxth r3, r3 - 800212a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 800212e: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8002132: 82fb strh r3, [r7, #22] - 8002134: 68fb ldr r3, [r7, #12] - 8002136: 681b ldr r3, [r3, #0] - 8002138: 461a mov r2, r3 - 800213a: 68bb ldr r3, [r7, #8] - 800213c: 781b ldrb r3, [r3, #0] - 800213e: 009b lsls r3, r3, #2 - 8002140: 441a add r2, r3 - 8002142: 8afb ldrh r3, [r7, #22] - 8002144: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8002148: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800214c: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8002150: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8002154: b29b uxth r3, r3 - 8002156: 8013 strh r3, [r2, #0] - } - - if (count != 0U) - 8002158: 8b7b ldrh r3, [r7, #26] - 800215a: 2b00 cmp r3, #0 - 800215c: f000 8087 beq.w 800226e - { - USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); - 8002160: 68fb ldr r3, [r7, #12] - 8002162: 6818 ldr r0, [r3, #0] - 8002164: 68bb ldr r3, [r7, #8] - 8002166: 6959 ldr r1, [r3, #20] - 8002168: 68bb ldr r3, [r7, #8] - 800216a: 891a ldrh r2, [r3, #8] - 800216c: 8b7b ldrh r3, [r7, #26] - 800216e: f004 fa7c bl 800666a - 8002172: e07c b.n 800226e - } - /* Manage Buffer 1 DTOG_RX=0 */ - else - { - /* Get count of received data */ - count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); - 8002174: 68fb ldr r3, [r7, #12] - 8002176: 681b ldr r3, [r3, #0] - 8002178: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800217c: b29b uxth r3, r3 - 800217e: 461a mov r2, r3 - 8002180: 68bb ldr r3, [r7, #8] - 8002182: 781b ldrb r3, [r3, #0] - 8002184: 00db lsls r3, r3, #3 - 8002186: 4413 add r3, r2 - 8002188: 3306 adds r3, #6 - 800218a: 005b lsls r3, r3, #1 - 800218c: 68fa ldr r2, [r7, #12] - 800218e: 6812 ldr r2, [r2, #0] - 8002190: 4413 add r3, r2 - 8002192: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8002196: 881b ldrh r3, [r3, #0] - 8002198: f3c3 0309 ubfx r3, r3, #0, #10 - 800219c: 837b strh r3, [r7, #26] - - if (ep->xfer_len >= count) - 800219e: 68bb ldr r3, [r7, #8] - 80021a0: 699a ldr r2, [r3, #24] - 80021a2: 8b7b ldrh r3, [r7, #26] - 80021a4: 429a cmp r2, r3 - 80021a6: d306 bcc.n 80021b6 - { - ep->xfer_len -= count; - 80021a8: 68bb ldr r3, [r7, #8] - 80021aa: 699a ldr r2, [r3, #24] - 80021ac: 8b7b ldrh r3, [r7, #26] - 80021ae: 1ad2 subs r2, r2, r3 - 80021b0: 68bb ldr r3, [r7, #8] - 80021b2: 619a str r2, [r3, #24] - 80021b4: e002 b.n 80021bc - } - else - { - ep->xfer_len = 0U; - 80021b6: 68bb ldr r3, [r7, #8] - 80021b8: 2200 movs r2, #0 - 80021ba: 619a str r2, [r3, #24] - } - - if (ep->xfer_len == 0U) - 80021bc: 68bb ldr r3, [r7, #8] - 80021be: 699b ldr r3, [r3, #24] - 80021c0: 2b00 cmp r3, #0 - 80021c2: d123 bne.n 800220c - { - /* set NAK on the current endpoint */ - PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); - 80021c4: 68fb ldr r3, [r7, #12] - 80021c6: 681b ldr r3, [r3, #0] - 80021c8: 461a mov r2, r3 - 80021ca: 68bb ldr r3, [r7, #8] - 80021cc: 781b ldrb r3, [r3, #0] - 80021ce: 009b lsls r3, r3, #2 - 80021d0: 4413 add r3, r2 - 80021d2: 881b ldrh r3, [r3, #0] - 80021d4: b29b uxth r3, r3 - 80021d6: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 80021da: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80021de: 83fb strh r3, [r7, #30] - 80021e0: 8bfb ldrh r3, [r7, #30] - 80021e2: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 80021e6: 83fb strh r3, [r7, #30] - 80021e8: 68fb ldr r3, [r7, #12] - 80021ea: 681b ldr r3, [r3, #0] - 80021ec: 461a mov r2, r3 - 80021ee: 68bb ldr r3, [r7, #8] - 80021f0: 781b ldrb r3, [r3, #0] - 80021f2: 009b lsls r3, r3, #2 - 80021f4: 441a add r2, r3 - 80021f6: 8bfb ldrh r3, [r7, #30] - 80021f8: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80021fc: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8002200: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8002204: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8002208: b29b uxth r3, r3 - 800220a: 8013 strh r3, [r2, #0] - } - - /*Need to FreeUser Buffer*/ - if ((wEPVal & USB_EP_DTOG_TX) == 0U) - 800220c: 88fb ldrh r3, [r7, #6] - 800220e: f003 0340 and.w r3, r3, #64 @ 0x40 - 8002212: 2b00 cmp r3, #0 - 8002214: d11f bne.n 8002256 - { - PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); - 8002216: 68fb ldr r3, [r7, #12] - 8002218: 681b ldr r3, [r3, #0] - 800221a: 461a mov r2, r3 - 800221c: 68bb ldr r3, [r7, #8] - 800221e: 781b ldrb r3, [r3, #0] - 8002220: 009b lsls r3, r3, #2 - 8002222: 4413 add r3, r2 - 8002224: 881b ldrh r3, [r3, #0] - 8002226: b29b uxth r3, r3 - 8002228: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 800222c: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8002230: 83bb strh r3, [r7, #28] - 8002232: 68fb ldr r3, [r7, #12] - 8002234: 681b ldr r3, [r3, #0] - 8002236: 461a mov r2, r3 - 8002238: 68bb ldr r3, [r7, #8] - 800223a: 781b ldrb r3, [r3, #0] - 800223c: 009b lsls r3, r3, #2 - 800223e: 441a add r2, r3 - 8002240: 8bbb ldrh r3, [r7, #28] - 8002242: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8002246: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800224a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800224e: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8002252: b29b uxth r3, r3 - 8002254: 8013 strh r3, [r2, #0] - } - - if (count != 0U) - 8002256: 8b7b ldrh r3, [r7, #26] - 8002258: 2b00 cmp r3, #0 - 800225a: d008 beq.n 800226e - { - USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); - 800225c: 68fb ldr r3, [r7, #12] - 800225e: 6818 ldr r0, [r3, #0] - 8002260: 68bb ldr r3, [r7, #8] - 8002262: 6959 ldr r1, [r3, #20] - 8002264: 68bb ldr r3, [r7, #8] - 8002266: 895a ldrh r2, [r3, #10] - 8002268: 8b7b ldrh r3, [r7, #26] - 800226a: f004 f9fe bl 800666a - } - } - - return count; - 800226e: 8b7b ldrh r3, [r7, #26] -} - 8002270: 4618 mov r0, r3 - 8002272: 3720 adds r7, #32 - 8002274: 46bd mov sp, r7 - 8002276: bd80 pop {r7, pc} - -08002278 : - * @param wEPVal Last snapshot of EPRx register value taken in ISR - * @retval HAL status - */ -static HAL_StatusTypeDef HAL_PCD_EP_DB_Transmit(PCD_HandleTypeDef *hpcd, - PCD_EPTypeDef *ep, uint16_t wEPVal) -{ - 8002278: b580 push {r7, lr} - 800227a: b0a4 sub sp, #144 @ 0x90 - 800227c: af00 add r7, sp, #0 - 800227e: 60f8 str r0, [r7, #12] - 8002280: 60b9 str r1, [r7, #8] - 8002282: 4613 mov r3, r2 - 8002284: 80fb strh r3, [r7, #6] - uint32_t len; - uint16_t TxPctSize; - - /* Data Buffer0 ACK received */ - if ((wEPVal & USB_EP_DTOG_TX) != 0U) - 8002286: 88fb ldrh r3, [r7, #6] - 8002288: f003 0340 and.w r3, r3, #64 @ 0x40 - 800228c: 2b00 cmp r3, #0 - 800228e: f000 81dd beq.w 800264c - { - /* multi-packet on the NON control IN endpoint */ - TxPctSize = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); - 8002292: 68fb ldr r3, [r7, #12] - 8002294: 681b ldr r3, [r3, #0] - 8002296: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800229a: b29b uxth r3, r3 - 800229c: 461a mov r2, r3 - 800229e: 68bb ldr r3, [r7, #8] - 80022a0: 781b ldrb r3, [r3, #0] - 80022a2: 00db lsls r3, r3, #3 - 80022a4: 4413 add r3, r2 - 80022a6: 3302 adds r3, #2 - 80022a8: 005b lsls r3, r3, #1 - 80022aa: 68fa ldr r2, [r7, #12] - 80022ac: 6812 ldr r2, [r2, #0] - 80022ae: 4413 add r3, r2 - 80022b0: f503 6380 add.w r3, r3, #1024 @ 0x400 - 80022b4: 881b ldrh r3, [r3, #0] - 80022b6: f3c3 0309 ubfx r3, r3, #0, #10 - 80022ba: f8a7 3086 strh.w r3, [r7, #134] @ 0x86 - - if (ep->xfer_len > TxPctSize) - 80022be: 68bb ldr r3, [r7, #8] - 80022c0: 699a ldr r2, [r3, #24] - 80022c2: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 80022c6: 429a cmp r2, r3 - 80022c8: d907 bls.n 80022da - { - ep->xfer_len -= TxPctSize; - 80022ca: 68bb ldr r3, [r7, #8] - 80022cc: 699a ldr r2, [r3, #24] - 80022ce: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 80022d2: 1ad2 subs r2, r2, r3 - 80022d4: 68bb ldr r3, [r7, #8] - 80022d6: 619a str r2, [r3, #24] - 80022d8: e002 b.n 80022e0 - } - else - { - ep->xfer_len = 0U; - 80022da: 68bb ldr r3, [r7, #8] - 80022dc: 2200 movs r2, #0 - 80022de: 619a str r2, [r3, #24] - } - - /* Transfer is completed */ - if (ep->xfer_len == 0U) - 80022e0: 68bb ldr r3, [r7, #8] - 80022e2: 699b ldr r3, [r3, #24] - 80022e4: 2b00 cmp r3, #0 - 80022e6: f040 80b9 bne.w 800245c - { - PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); - 80022ea: 68bb ldr r3, [r7, #8] - 80022ec: 785b ldrb r3, [r3, #1] - 80022ee: 2b00 cmp r3, #0 - 80022f0: d126 bne.n 8002340 - 80022f2: 68fb ldr r3, [r7, #12] - 80022f4: 681b ldr r3, [r3, #0] - 80022f6: 62fb str r3, [r7, #44] @ 0x2c - 80022f8: 68fb ldr r3, [r7, #12] - 80022fa: 681b ldr r3, [r3, #0] - 80022fc: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002300: b29b uxth r3, r3 - 8002302: 461a mov r2, r3 - 8002304: 6afb ldr r3, [r7, #44] @ 0x2c - 8002306: 4413 add r3, r2 - 8002308: 62fb str r3, [r7, #44] @ 0x2c - 800230a: 68bb ldr r3, [r7, #8] - 800230c: 781b ldrb r3, [r3, #0] - 800230e: 011a lsls r2, r3, #4 - 8002310: 6afb ldr r3, [r7, #44] @ 0x2c - 8002312: 4413 add r3, r2 - 8002314: f203 4304 addw r3, r3, #1028 @ 0x404 - 8002318: 62bb str r3, [r7, #40] @ 0x28 - 800231a: 6abb ldr r3, [r7, #40] @ 0x28 - 800231c: 881b ldrh r3, [r3, #0] - 800231e: b29b uxth r3, r3 - 8002320: f3c3 0309 ubfx r3, r3, #0, #10 - 8002324: b29a uxth r2, r3 - 8002326: 6abb ldr r3, [r7, #40] @ 0x28 - 8002328: 801a strh r2, [r3, #0] - 800232a: 6abb ldr r3, [r7, #40] @ 0x28 - 800232c: 881b ldrh r3, [r3, #0] - 800232e: b29b uxth r3, r3 - 8002330: ea6f 4343 mvn.w r3, r3, lsl #17 - 8002334: ea6f 4353 mvn.w r3, r3, lsr #17 - 8002338: b29a uxth r2, r3 - 800233a: 6abb ldr r3, [r7, #40] @ 0x28 - 800233c: 801a strh r2, [r3, #0] - 800233e: e01a b.n 8002376 - 8002340: 68bb ldr r3, [r7, #8] - 8002342: 785b ldrb r3, [r3, #1] - 8002344: 2b01 cmp r3, #1 - 8002346: d116 bne.n 8002376 - 8002348: 68fb ldr r3, [r7, #12] - 800234a: 681b ldr r3, [r3, #0] - 800234c: 637b str r3, [r7, #52] @ 0x34 - 800234e: 68fb ldr r3, [r7, #12] - 8002350: 681b ldr r3, [r3, #0] - 8002352: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002356: b29b uxth r3, r3 - 8002358: 461a mov r2, r3 - 800235a: 6b7b ldr r3, [r7, #52] @ 0x34 - 800235c: 4413 add r3, r2 - 800235e: 637b str r3, [r7, #52] @ 0x34 - 8002360: 68bb ldr r3, [r7, #8] - 8002362: 781b ldrb r3, [r3, #0] - 8002364: 011a lsls r2, r3, #4 - 8002366: 6b7b ldr r3, [r7, #52] @ 0x34 - 8002368: 4413 add r3, r2 - 800236a: f203 4304 addw r3, r3, #1028 @ 0x404 - 800236e: 633b str r3, [r7, #48] @ 0x30 - 8002370: 6b3b ldr r3, [r7, #48] @ 0x30 - 8002372: 2200 movs r2, #0 - 8002374: 801a strh r2, [r3, #0] - PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); - 8002376: 68fb ldr r3, [r7, #12] - 8002378: 681b ldr r3, [r3, #0] - 800237a: 627b str r3, [r7, #36] @ 0x24 - 800237c: 68bb ldr r3, [r7, #8] - 800237e: 785b ldrb r3, [r3, #1] - 8002380: 2b00 cmp r3, #0 - 8002382: d126 bne.n 80023d2 - 8002384: 68fb ldr r3, [r7, #12] - 8002386: 681b ldr r3, [r3, #0] - 8002388: 61fb str r3, [r7, #28] - 800238a: 68fb ldr r3, [r7, #12] - 800238c: 681b ldr r3, [r3, #0] - 800238e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002392: b29b uxth r3, r3 - 8002394: 461a mov r2, r3 - 8002396: 69fb ldr r3, [r7, #28] - 8002398: 4413 add r3, r2 - 800239a: 61fb str r3, [r7, #28] - 800239c: 68bb ldr r3, [r7, #8] - 800239e: 781b ldrb r3, [r3, #0] - 80023a0: 011a lsls r2, r3, #4 - 80023a2: 69fb ldr r3, [r7, #28] - 80023a4: 4413 add r3, r2 - 80023a6: f203 430c addw r3, r3, #1036 @ 0x40c - 80023aa: 61bb str r3, [r7, #24] - 80023ac: 69bb ldr r3, [r7, #24] - 80023ae: 881b ldrh r3, [r3, #0] - 80023b0: b29b uxth r3, r3 - 80023b2: f3c3 0309 ubfx r3, r3, #0, #10 - 80023b6: b29a uxth r2, r3 - 80023b8: 69bb ldr r3, [r7, #24] - 80023ba: 801a strh r2, [r3, #0] - 80023bc: 69bb ldr r3, [r7, #24] - 80023be: 881b ldrh r3, [r3, #0] - 80023c0: b29b uxth r3, r3 - 80023c2: ea6f 4343 mvn.w r3, r3, lsl #17 - 80023c6: ea6f 4353 mvn.w r3, r3, lsr #17 - 80023ca: b29a uxth r2, r3 - 80023cc: 69bb ldr r3, [r7, #24] - 80023ce: 801a strh r2, [r3, #0] - 80023d0: e017 b.n 8002402 - 80023d2: 68bb ldr r3, [r7, #8] - 80023d4: 785b ldrb r3, [r3, #1] - 80023d6: 2b01 cmp r3, #1 - 80023d8: d113 bne.n 8002402 - 80023da: 68fb ldr r3, [r7, #12] - 80023dc: 681b ldr r3, [r3, #0] - 80023de: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80023e2: b29b uxth r3, r3 - 80023e4: 461a mov r2, r3 - 80023e6: 6a7b ldr r3, [r7, #36] @ 0x24 - 80023e8: 4413 add r3, r2 - 80023ea: 627b str r3, [r7, #36] @ 0x24 - 80023ec: 68bb ldr r3, [r7, #8] - 80023ee: 781b ldrb r3, [r3, #0] - 80023f0: 011a lsls r2, r3, #4 - 80023f2: 6a7b ldr r3, [r7, #36] @ 0x24 - 80023f4: 4413 add r3, r2 - 80023f6: f203 430c addw r3, r3, #1036 @ 0x40c - 80023fa: 623b str r3, [r7, #32] - 80023fc: 6a3b ldr r3, [r7, #32] - 80023fe: 2200 movs r2, #0 - 8002400: 801a strh r2, [r3, #0] - - /* TX COMPLETE */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->DataInStageCallback(hpcd, ep->num); -#else - HAL_PCD_DataInStageCallback(hpcd, ep->num); - 8002402: 68bb ldr r3, [r7, #8] - 8002404: 781b ldrb r3, [r3, #0] - 8002406: 4619 mov r1, r3 - 8002408: 68f8 ldr r0, [r7, #12] - 800240a: f005 ffac bl 8008366 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - - if ((wEPVal & USB_EP_DTOG_RX) != 0U) - 800240e: 88fb ldrh r3, [r7, #6] - 8002410: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8002414: 2b00 cmp r3, #0 - 8002416: f000 82fc beq.w 8002a12 - { - PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); - 800241a: 68fb ldr r3, [r7, #12] - 800241c: 681b ldr r3, [r3, #0] - 800241e: 461a mov r2, r3 - 8002420: 68bb ldr r3, [r7, #8] - 8002422: 781b ldrb r3, [r3, #0] - 8002424: 009b lsls r3, r3, #2 - 8002426: 4413 add r3, r2 - 8002428: 881b ldrh r3, [r3, #0] - 800242a: b29b uxth r3, r3 - 800242c: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8002430: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8002434: 82fb strh r3, [r7, #22] - 8002436: 68fb ldr r3, [r7, #12] - 8002438: 681b ldr r3, [r3, #0] - 800243a: 461a mov r2, r3 - 800243c: 68bb ldr r3, [r7, #8] - 800243e: 781b ldrb r3, [r3, #0] - 8002440: 009b lsls r3, r3, #2 - 8002442: 441a add r2, r3 - 8002444: 8afb ldrh r3, [r7, #22] - 8002446: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800244a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800244e: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8002452: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8002456: b29b uxth r3, r3 - 8002458: 8013 strh r3, [r2, #0] - 800245a: e2da b.n 8002a12 - } - } - else /* Transfer is not yet Done */ - { - /* need to Free USB Buff */ - if ((wEPVal & USB_EP_DTOG_RX) != 0U) - 800245c: 88fb ldrh r3, [r7, #6] - 800245e: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8002462: 2b00 cmp r3, #0 - 8002464: d021 beq.n 80024aa - { - PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); - 8002466: 68fb ldr r3, [r7, #12] - 8002468: 681b ldr r3, [r3, #0] - 800246a: 461a mov r2, r3 - 800246c: 68bb ldr r3, [r7, #8] - 800246e: 781b ldrb r3, [r3, #0] - 8002470: 009b lsls r3, r3, #2 - 8002472: 4413 add r3, r2 - 8002474: 881b ldrh r3, [r3, #0] - 8002476: b29b uxth r3, r3 - 8002478: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 800247c: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8002480: f8a7 308a strh.w r3, [r7, #138] @ 0x8a - 8002484: 68fb ldr r3, [r7, #12] - 8002486: 681b ldr r3, [r3, #0] - 8002488: 461a mov r2, r3 - 800248a: 68bb ldr r3, [r7, #8] - 800248c: 781b ldrb r3, [r3, #0] - 800248e: 009b lsls r3, r3, #2 - 8002490: 441a add r2, r3 - 8002492: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a - 8002496: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800249a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800249e: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 80024a2: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80024a6: b29b uxth r3, r3 - 80024a8: 8013 strh r3, [r2, #0] - } - - /* Still there is data to Fill in the next Buffer */ - if (ep->xfer_fill_db == 1U) - 80024aa: 68bb ldr r3, [r7, #8] - 80024ac: f893 3024 ldrb.w r3, [r3, #36] @ 0x24 - 80024b0: 2b01 cmp r3, #1 - 80024b2: f040 82ae bne.w 8002a12 - { - ep->xfer_buff += TxPctSize; - 80024b6: 68bb ldr r3, [r7, #8] - 80024b8: 695a ldr r2, [r3, #20] - 80024ba: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 80024be: 441a add r2, r3 - 80024c0: 68bb ldr r3, [r7, #8] - 80024c2: 615a str r2, [r3, #20] - ep->xfer_count += TxPctSize; - 80024c4: 68bb ldr r3, [r7, #8] - 80024c6: 69da ldr r2, [r3, #28] - 80024c8: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 80024cc: 441a add r2, r3 - 80024ce: 68bb ldr r3, [r7, #8] - 80024d0: 61da str r2, [r3, #28] - - /* Calculate the len of the new buffer to fill */ - if (ep->xfer_len_db >= ep->maxpacket) - 80024d2: 68bb ldr r3, [r7, #8] - 80024d4: 6a1a ldr r2, [r3, #32] - 80024d6: 68bb ldr r3, [r7, #8] - 80024d8: 691b ldr r3, [r3, #16] - 80024da: 429a cmp r2, r3 - 80024dc: d30b bcc.n 80024f6 - { - len = ep->maxpacket; - 80024de: 68bb ldr r3, [r7, #8] - 80024e0: 691b ldr r3, [r3, #16] - 80024e2: f8c7 308c str.w r3, [r7, #140] @ 0x8c - ep->xfer_len_db -= len; - 80024e6: 68bb ldr r3, [r7, #8] - 80024e8: 6a1a ldr r2, [r3, #32] - 80024ea: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 80024ee: 1ad2 subs r2, r2, r3 - 80024f0: 68bb ldr r3, [r7, #8] - 80024f2: 621a str r2, [r3, #32] - 80024f4: e017 b.n 8002526 - } - else if (ep->xfer_len_db == 0U) - 80024f6: 68bb ldr r3, [r7, #8] - 80024f8: 6a1b ldr r3, [r3, #32] - 80024fa: 2b00 cmp r3, #0 - 80024fc: d108 bne.n 8002510 - { - len = TxPctSize; - 80024fe: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 8002502: f8c7 308c str.w r3, [r7, #140] @ 0x8c - ep->xfer_fill_db = 0U; - 8002506: 68bb ldr r3, [r7, #8] - 8002508: 2200 movs r2, #0 - 800250a: f883 2024 strb.w r2, [r3, #36] @ 0x24 - 800250e: e00a b.n 8002526 - } - else - { - ep->xfer_fill_db = 0U; - 8002510: 68bb ldr r3, [r7, #8] - 8002512: 2200 movs r2, #0 - 8002514: f883 2024 strb.w r2, [r3, #36] @ 0x24 - len = ep->xfer_len_db; - 8002518: 68bb ldr r3, [r7, #8] - 800251a: 6a1b ldr r3, [r3, #32] - 800251c: f8c7 308c str.w r3, [r7, #140] @ 0x8c - ep->xfer_len_db = 0U; - 8002520: 68bb ldr r3, [r7, #8] - 8002522: 2200 movs r2, #0 - 8002524: 621a str r2, [r3, #32] - } - - /* Write remaining Data to Buffer */ - /* Set the Double buffer counter for pma buffer1 */ - PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, len); - 8002526: 68bb ldr r3, [r7, #8] - 8002528: 785b ldrb r3, [r3, #1] - 800252a: 2b00 cmp r3, #0 - 800252c: d165 bne.n 80025fa - 800252e: 68fb ldr r3, [r7, #12] - 8002530: 681b ldr r3, [r3, #0] - 8002532: 63fb str r3, [r7, #60] @ 0x3c - 8002534: 68fb ldr r3, [r7, #12] - 8002536: 681b ldr r3, [r3, #0] - 8002538: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800253c: b29b uxth r3, r3 - 800253e: 461a mov r2, r3 - 8002540: 6bfb ldr r3, [r7, #60] @ 0x3c - 8002542: 4413 add r3, r2 - 8002544: 63fb str r3, [r7, #60] @ 0x3c - 8002546: 68bb ldr r3, [r7, #8] - 8002548: 781b ldrb r3, [r3, #0] - 800254a: 011a lsls r2, r3, #4 - 800254c: 6bfb ldr r3, [r7, #60] @ 0x3c - 800254e: 4413 add r3, r2 - 8002550: f203 4304 addw r3, r3, #1028 @ 0x404 - 8002554: 63bb str r3, [r7, #56] @ 0x38 - 8002556: 6bbb ldr r3, [r7, #56] @ 0x38 - 8002558: 881b ldrh r3, [r3, #0] - 800255a: b29b uxth r3, r3 - 800255c: f3c3 0309 ubfx r3, r3, #0, #10 - 8002560: b29a uxth r2, r3 - 8002562: 6bbb ldr r3, [r7, #56] @ 0x38 - 8002564: 801a strh r2, [r3, #0] - 8002566: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 800256a: 2b3e cmp r3, #62 @ 0x3e - 800256c: d91d bls.n 80025aa - 800256e: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8002572: 095b lsrs r3, r3, #5 - 8002574: 64bb str r3, [r7, #72] @ 0x48 - 8002576: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 800257a: f003 031f and.w r3, r3, #31 - 800257e: 2b00 cmp r3, #0 - 8002580: d102 bne.n 8002588 - 8002582: 6cbb ldr r3, [r7, #72] @ 0x48 - 8002584: 3b01 subs r3, #1 - 8002586: 64bb str r3, [r7, #72] @ 0x48 - 8002588: 6bbb ldr r3, [r7, #56] @ 0x38 - 800258a: 881b ldrh r3, [r3, #0] - 800258c: b29a uxth r2, r3 - 800258e: 6cbb ldr r3, [r7, #72] @ 0x48 - 8002590: b29b uxth r3, r3 - 8002592: 029b lsls r3, r3, #10 - 8002594: b29b uxth r3, r3 - 8002596: 4313 orrs r3, r2 - 8002598: b29b uxth r3, r3 - 800259a: ea6f 4343 mvn.w r3, r3, lsl #17 - 800259e: ea6f 4353 mvn.w r3, r3, lsr #17 - 80025a2: b29a uxth r2, r3 - 80025a4: 6bbb ldr r3, [r7, #56] @ 0x38 - 80025a6: 801a strh r2, [r3, #0] - 80025a8: e044 b.n 8002634 - 80025aa: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 80025ae: 2b00 cmp r3, #0 - 80025b0: d10a bne.n 80025c8 - 80025b2: 6bbb ldr r3, [r7, #56] @ 0x38 - 80025b4: 881b ldrh r3, [r3, #0] - 80025b6: b29b uxth r3, r3 - 80025b8: ea6f 4343 mvn.w r3, r3, lsl #17 - 80025bc: ea6f 4353 mvn.w r3, r3, lsr #17 - 80025c0: b29a uxth r2, r3 - 80025c2: 6bbb ldr r3, [r7, #56] @ 0x38 - 80025c4: 801a strh r2, [r3, #0] - 80025c6: e035 b.n 8002634 - 80025c8: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 80025cc: 085b lsrs r3, r3, #1 - 80025ce: 64bb str r3, [r7, #72] @ 0x48 - 80025d0: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 80025d4: f003 0301 and.w r3, r3, #1 - 80025d8: 2b00 cmp r3, #0 - 80025da: d002 beq.n 80025e2 - 80025dc: 6cbb ldr r3, [r7, #72] @ 0x48 - 80025de: 3301 adds r3, #1 - 80025e0: 64bb str r3, [r7, #72] @ 0x48 - 80025e2: 6bbb ldr r3, [r7, #56] @ 0x38 - 80025e4: 881b ldrh r3, [r3, #0] - 80025e6: b29a uxth r2, r3 - 80025e8: 6cbb ldr r3, [r7, #72] @ 0x48 - 80025ea: b29b uxth r3, r3 - 80025ec: 029b lsls r3, r3, #10 - 80025ee: b29b uxth r3, r3 - 80025f0: 4313 orrs r3, r2 - 80025f2: b29a uxth r2, r3 - 80025f4: 6bbb ldr r3, [r7, #56] @ 0x38 - 80025f6: 801a strh r2, [r3, #0] - 80025f8: e01c b.n 8002634 - 80025fa: 68bb ldr r3, [r7, #8] - 80025fc: 785b ldrb r3, [r3, #1] - 80025fe: 2b01 cmp r3, #1 - 8002600: d118 bne.n 8002634 - 8002602: 68fb ldr r3, [r7, #12] - 8002604: 681b ldr r3, [r3, #0] - 8002606: 647b str r3, [r7, #68] @ 0x44 - 8002608: 68fb ldr r3, [r7, #12] - 800260a: 681b ldr r3, [r3, #0] - 800260c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002610: b29b uxth r3, r3 - 8002612: 461a mov r2, r3 - 8002614: 6c7b ldr r3, [r7, #68] @ 0x44 - 8002616: 4413 add r3, r2 - 8002618: 647b str r3, [r7, #68] @ 0x44 - 800261a: 68bb ldr r3, [r7, #8] - 800261c: 781b ldrb r3, [r3, #0] - 800261e: 011a lsls r2, r3, #4 - 8002620: 6c7b ldr r3, [r7, #68] @ 0x44 - 8002622: 4413 add r3, r2 - 8002624: f203 4304 addw r3, r3, #1028 @ 0x404 - 8002628: 643b str r3, [r7, #64] @ 0x40 - 800262a: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 800262e: b29a uxth r2, r3 - 8002630: 6c3b ldr r3, [r7, #64] @ 0x40 - 8002632: 801a strh r2, [r3, #0] - - /* Copy user buffer to USB PMA */ - USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, (uint16_t)len); - 8002634: 68fb ldr r3, [r7, #12] - 8002636: 6818 ldr r0, [r3, #0] - 8002638: 68bb ldr r3, [r7, #8] - 800263a: 6959 ldr r1, [r3, #20] - 800263c: 68bb ldr r3, [r7, #8] - 800263e: 891a ldrh r2, [r3, #8] - 8002640: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8002644: b29b uxth r3, r3 - 8002646: f003 ffca bl 80065de - 800264a: e1e2 b.n 8002a12 - } - } - else /* Data Buffer1 ACK received */ - { - /* multi-packet on the NON control IN endpoint */ - TxPctSize = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); - 800264c: 68fb ldr r3, [r7, #12] - 800264e: 681b ldr r3, [r3, #0] - 8002650: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002654: b29b uxth r3, r3 - 8002656: 461a mov r2, r3 - 8002658: 68bb ldr r3, [r7, #8] - 800265a: 781b ldrb r3, [r3, #0] - 800265c: 00db lsls r3, r3, #3 - 800265e: 4413 add r3, r2 - 8002660: 3306 adds r3, #6 - 8002662: 005b lsls r3, r3, #1 - 8002664: 68fa ldr r2, [r7, #12] - 8002666: 6812 ldr r2, [r2, #0] - 8002668: 4413 add r3, r2 - 800266a: f503 6380 add.w r3, r3, #1024 @ 0x400 - 800266e: 881b ldrh r3, [r3, #0] - 8002670: f3c3 0309 ubfx r3, r3, #0, #10 - 8002674: f8a7 3086 strh.w r3, [r7, #134] @ 0x86 - - if (ep->xfer_len >= TxPctSize) - 8002678: 68bb ldr r3, [r7, #8] - 800267a: 699a ldr r2, [r3, #24] - 800267c: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 8002680: 429a cmp r2, r3 - 8002682: d307 bcc.n 8002694 - { - ep->xfer_len -= TxPctSize; - 8002684: 68bb ldr r3, [r7, #8] - 8002686: 699a ldr r2, [r3, #24] - 8002688: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 800268c: 1ad2 subs r2, r2, r3 - 800268e: 68bb ldr r3, [r7, #8] - 8002690: 619a str r2, [r3, #24] - 8002692: e002 b.n 800269a - } - else - { - ep->xfer_len = 0U; - 8002694: 68bb ldr r3, [r7, #8] - 8002696: 2200 movs r2, #0 - 8002698: 619a str r2, [r3, #24] - } - - /* Transfer is completed */ - if (ep->xfer_len == 0U) - 800269a: 68bb ldr r3, [r7, #8] - 800269c: 699b ldr r3, [r3, #24] - 800269e: 2b00 cmp r3, #0 - 80026a0: f040 80c0 bne.w 8002824 - { - PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); - 80026a4: 68bb ldr r3, [r7, #8] - 80026a6: 785b ldrb r3, [r3, #1] - 80026a8: 2b00 cmp r3, #0 - 80026aa: d126 bne.n 80026fa - 80026ac: 68fb ldr r3, [r7, #12] - 80026ae: 681b ldr r3, [r3, #0] - 80026b0: 67fb str r3, [r7, #124] @ 0x7c - 80026b2: 68fb ldr r3, [r7, #12] - 80026b4: 681b ldr r3, [r3, #0] - 80026b6: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80026ba: b29b uxth r3, r3 - 80026bc: 461a mov r2, r3 - 80026be: 6ffb ldr r3, [r7, #124] @ 0x7c - 80026c0: 4413 add r3, r2 - 80026c2: 67fb str r3, [r7, #124] @ 0x7c - 80026c4: 68bb ldr r3, [r7, #8] - 80026c6: 781b ldrb r3, [r3, #0] - 80026c8: 011a lsls r2, r3, #4 - 80026ca: 6ffb ldr r3, [r7, #124] @ 0x7c - 80026cc: 4413 add r3, r2 - 80026ce: f203 4304 addw r3, r3, #1028 @ 0x404 - 80026d2: 67bb str r3, [r7, #120] @ 0x78 - 80026d4: 6fbb ldr r3, [r7, #120] @ 0x78 - 80026d6: 881b ldrh r3, [r3, #0] - 80026d8: b29b uxth r3, r3 - 80026da: f3c3 0309 ubfx r3, r3, #0, #10 - 80026de: b29a uxth r2, r3 - 80026e0: 6fbb ldr r3, [r7, #120] @ 0x78 - 80026e2: 801a strh r2, [r3, #0] - 80026e4: 6fbb ldr r3, [r7, #120] @ 0x78 - 80026e6: 881b ldrh r3, [r3, #0] - 80026e8: b29b uxth r3, r3 - 80026ea: ea6f 4343 mvn.w r3, r3, lsl #17 - 80026ee: ea6f 4353 mvn.w r3, r3, lsr #17 - 80026f2: b29a uxth r2, r3 - 80026f4: 6fbb ldr r3, [r7, #120] @ 0x78 - 80026f6: 801a strh r2, [r3, #0] - 80026f8: e01a b.n 8002730 - 80026fa: 68bb ldr r3, [r7, #8] - 80026fc: 785b ldrb r3, [r3, #1] - 80026fe: 2b01 cmp r3, #1 - 8002700: d116 bne.n 8002730 - 8002702: 68fb ldr r3, [r7, #12] - 8002704: 681b ldr r3, [r3, #0] - 8002706: 667b str r3, [r7, #100] @ 0x64 - 8002708: 68fb ldr r3, [r7, #12] - 800270a: 681b ldr r3, [r3, #0] - 800270c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8002710: b29b uxth r3, r3 - 8002712: 461a mov r2, r3 - 8002714: 6e7b ldr r3, [r7, #100] @ 0x64 - 8002716: 4413 add r3, r2 - 8002718: 667b str r3, [r7, #100] @ 0x64 - 800271a: 68bb ldr r3, [r7, #8] - 800271c: 781b ldrb r3, [r3, #0] - 800271e: 011a lsls r2, r3, #4 - 8002720: 6e7b ldr r3, [r7, #100] @ 0x64 - 8002722: 4413 add r3, r2 - 8002724: f203 4304 addw r3, r3, #1028 @ 0x404 - 8002728: 663b str r3, [r7, #96] @ 0x60 - 800272a: 6e3b ldr r3, [r7, #96] @ 0x60 - 800272c: 2200 movs r2, #0 - 800272e: 801a strh r2, [r3, #0] - PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); - 8002730: 68fb ldr r3, [r7, #12] - 8002732: 681b ldr r3, [r3, #0] - 8002734: 677b str r3, [r7, #116] @ 0x74 - 8002736: 68bb ldr r3, [r7, #8] - 8002738: 785b ldrb r3, [r3, #1] - 800273a: 2b00 cmp r3, #0 - 800273c: d12b bne.n 8002796 - 800273e: 68fb ldr r3, [r7, #12] - 8002740: 681b ldr r3, [r3, #0] - 8002742: 66fb str r3, [r7, #108] @ 0x6c - 8002744: 68fb ldr r3, [r7, #12] - 8002746: 681b ldr r3, [r3, #0] - 8002748: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800274c: b29b uxth r3, r3 - 800274e: 461a mov r2, r3 - 8002750: 6efb ldr r3, [r7, #108] @ 0x6c - 8002752: 4413 add r3, r2 - 8002754: 66fb str r3, [r7, #108] @ 0x6c - 8002756: 68bb ldr r3, [r7, #8] - 8002758: 781b ldrb r3, [r3, #0] - 800275a: 011a lsls r2, r3, #4 - 800275c: 6efb ldr r3, [r7, #108] @ 0x6c - 800275e: 4413 add r3, r2 - 8002760: f203 430c addw r3, r3, #1036 @ 0x40c - 8002764: f8c7 3080 str.w r3, [r7, #128] @ 0x80 - 8002768: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 - 800276c: 881b ldrh r3, [r3, #0] - 800276e: b29b uxth r3, r3 - 8002770: f3c3 0309 ubfx r3, r3, #0, #10 - 8002774: b29a uxth r2, r3 - 8002776: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 - 800277a: 801a strh r2, [r3, #0] - 800277c: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 - 8002780: 881b ldrh r3, [r3, #0] - 8002782: b29b uxth r3, r3 - 8002784: ea6f 4343 mvn.w r3, r3, lsl #17 - 8002788: ea6f 4353 mvn.w r3, r3, lsr #17 - 800278c: b29a uxth r2, r3 - 800278e: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 - 8002792: 801a strh r2, [r3, #0] - 8002794: e017 b.n 80027c6 - 8002796: 68bb ldr r3, [r7, #8] - 8002798: 785b ldrb r3, [r3, #1] - 800279a: 2b01 cmp r3, #1 - 800279c: d113 bne.n 80027c6 - 800279e: 68fb ldr r3, [r7, #12] - 80027a0: 681b ldr r3, [r3, #0] - 80027a2: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80027a6: b29b uxth r3, r3 - 80027a8: 461a mov r2, r3 - 80027aa: 6f7b ldr r3, [r7, #116] @ 0x74 - 80027ac: 4413 add r3, r2 - 80027ae: 677b str r3, [r7, #116] @ 0x74 - 80027b0: 68bb ldr r3, [r7, #8] - 80027b2: 781b ldrb r3, [r3, #0] - 80027b4: 011a lsls r2, r3, #4 - 80027b6: 6f7b ldr r3, [r7, #116] @ 0x74 - 80027b8: 4413 add r3, r2 - 80027ba: f203 430c addw r3, r3, #1036 @ 0x40c - 80027be: 673b str r3, [r7, #112] @ 0x70 - 80027c0: 6f3b ldr r3, [r7, #112] @ 0x70 - 80027c2: 2200 movs r2, #0 - 80027c4: 801a strh r2, [r3, #0] - - /* TX COMPLETE */ -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) - hpcd->DataInStageCallback(hpcd, ep->num); -#else - HAL_PCD_DataInStageCallback(hpcd, ep->num); - 80027c6: 68bb ldr r3, [r7, #8] - 80027c8: 781b ldrb r3, [r3, #0] - 80027ca: 4619 mov r1, r3 - 80027cc: 68f8 ldr r0, [r7, #12] - 80027ce: f005 fdca bl 8008366 -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - - /* need to Free USB Buff */ - if ((wEPVal & USB_EP_DTOG_RX) == 0U) - 80027d2: 88fb ldrh r3, [r7, #6] - 80027d4: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 80027d8: 2b00 cmp r3, #0 - 80027da: f040 811a bne.w 8002a12 - { - PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); - 80027de: 68fb ldr r3, [r7, #12] - 80027e0: 681b ldr r3, [r3, #0] - 80027e2: 461a mov r2, r3 - 80027e4: 68bb ldr r3, [r7, #8] - 80027e6: 781b ldrb r3, [r3, #0] - 80027e8: 009b lsls r3, r3, #2 - 80027ea: 4413 add r3, r2 - 80027ec: 881b ldrh r3, [r3, #0] - 80027ee: b29b uxth r3, r3 - 80027f0: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80027f4: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80027f8: f8a7 3088 strh.w r3, [r7, #136] @ 0x88 - 80027fc: 68fb ldr r3, [r7, #12] - 80027fe: 681b ldr r3, [r3, #0] - 8002800: 461a mov r2, r3 - 8002802: 68bb ldr r3, [r7, #8] - 8002804: 781b ldrb r3, [r3, #0] - 8002806: 009b lsls r3, r3, #2 - 8002808: 441a add r2, r3 - 800280a: f8b7 3088 ldrh.w r3, [r7, #136] @ 0x88 - 800280e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8002812: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8002816: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 800281a: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800281e: b29b uxth r3, r3 - 8002820: 8013 strh r3, [r2, #0] - 8002822: e0f6 b.n 8002a12 - } - } - else /* Transfer is not yet Done */ - { - /* need to Free USB Buff */ - if ((wEPVal & USB_EP_DTOG_RX) == 0U) - 8002824: 88fb ldrh r3, [r7, #6] - 8002826: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 800282a: 2b00 cmp r3, #0 - 800282c: d121 bne.n 8002872 - { - PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); - 800282e: 68fb ldr r3, [r7, #12] - 8002830: 681b ldr r3, [r3, #0] - 8002832: 461a mov r2, r3 - 8002834: 68bb ldr r3, [r7, #8] - 8002836: 781b ldrb r3, [r3, #0] - 8002838: 009b lsls r3, r3, #2 - 800283a: 4413 add r3, r2 - 800283c: 881b ldrh r3, [r3, #0] - 800283e: b29b uxth r3, r3 - 8002840: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8002844: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8002848: f8a7 304e strh.w r3, [r7, #78] @ 0x4e - 800284c: 68fb ldr r3, [r7, #12] - 800284e: 681b ldr r3, [r3, #0] - 8002850: 461a mov r2, r3 - 8002852: 68bb ldr r3, [r7, #8] - 8002854: 781b ldrb r3, [r3, #0] - 8002856: 009b lsls r3, r3, #2 - 8002858: 441a add r2, r3 - 800285a: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e - 800285e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8002862: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8002866: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 800286a: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800286e: b29b uxth r3, r3 - 8002870: 8013 strh r3, [r2, #0] - } - - /* Still there is data to Fill in the next Buffer */ - if (ep->xfer_fill_db == 1U) - 8002872: 68bb ldr r3, [r7, #8] - 8002874: f893 3024 ldrb.w r3, [r3, #36] @ 0x24 - 8002878: 2b01 cmp r3, #1 - 800287a: f040 80ca bne.w 8002a12 - { - ep->xfer_buff += TxPctSize; - 800287e: 68bb ldr r3, [r7, #8] - 8002880: 695a ldr r2, [r3, #20] - 8002882: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 8002886: 441a add r2, r3 - 8002888: 68bb ldr r3, [r7, #8] - 800288a: 615a str r2, [r3, #20] - ep->xfer_count += TxPctSize; - 800288c: 68bb ldr r3, [r7, #8] - 800288e: 69da ldr r2, [r3, #28] - 8002890: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 8002894: 441a add r2, r3 - 8002896: 68bb ldr r3, [r7, #8] - 8002898: 61da str r2, [r3, #28] - - /* Calculate the len of the new buffer to fill */ - if (ep->xfer_len_db >= ep->maxpacket) - 800289a: 68bb ldr r3, [r7, #8] - 800289c: 6a1a ldr r2, [r3, #32] - 800289e: 68bb ldr r3, [r7, #8] - 80028a0: 691b ldr r3, [r3, #16] - 80028a2: 429a cmp r2, r3 - 80028a4: d30b bcc.n 80028be - { - len = ep->maxpacket; - 80028a6: 68bb ldr r3, [r7, #8] - 80028a8: 691b ldr r3, [r3, #16] - 80028aa: f8c7 308c str.w r3, [r7, #140] @ 0x8c - ep->xfer_len_db -= len; - 80028ae: 68bb ldr r3, [r7, #8] - 80028b0: 6a1a ldr r2, [r3, #32] - 80028b2: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 80028b6: 1ad2 subs r2, r2, r3 - 80028b8: 68bb ldr r3, [r7, #8] - 80028ba: 621a str r2, [r3, #32] - 80028bc: e017 b.n 80028ee - } - else if (ep->xfer_len_db == 0U) - 80028be: 68bb ldr r3, [r7, #8] - 80028c0: 6a1b ldr r3, [r3, #32] - 80028c2: 2b00 cmp r3, #0 - 80028c4: d108 bne.n 80028d8 - { - len = TxPctSize; - 80028c6: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 - 80028ca: f8c7 308c str.w r3, [r7, #140] @ 0x8c - ep->xfer_fill_db = 0U; - 80028ce: 68bb ldr r3, [r7, #8] - 80028d0: 2200 movs r2, #0 - 80028d2: f883 2024 strb.w r2, [r3, #36] @ 0x24 - 80028d6: e00a b.n 80028ee - } - else - { - len = ep->xfer_len_db; - 80028d8: 68bb ldr r3, [r7, #8] - 80028da: 6a1b ldr r3, [r3, #32] - 80028dc: f8c7 308c str.w r3, [r7, #140] @ 0x8c - ep->xfer_len_db = 0U; - 80028e0: 68bb ldr r3, [r7, #8] - 80028e2: 2200 movs r2, #0 - 80028e4: 621a str r2, [r3, #32] - ep->xfer_fill_db = 0; - 80028e6: 68bb ldr r3, [r7, #8] - 80028e8: 2200 movs r2, #0 - 80028ea: f883 2024 strb.w r2, [r3, #36] @ 0x24 - } - - /* Set the Double buffer counter for pmabuffer1 */ - PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, len); - 80028ee: 68fb ldr r3, [r7, #12] - 80028f0: 681b ldr r3, [r3, #0] - 80028f2: 657b str r3, [r7, #84] @ 0x54 - 80028f4: 68bb ldr r3, [r7, #8] - 80028f6: 785b ldrb r3, [r3, #1] - 80028f8: 2b00 cmp r3, #0 - 80028fa: d165 bne.n 80029c8 - 80028fc: 68fb ldr r3, [r7, #12] - 80028fe: 681b ldr r3, [r3, #0] - 8002900: 65fb str r3, [r7, #92] @ 0x5c - 8002902: 68fb ldr r3, [r7, #12] - 8002904: 681b ldr r3, [r3, #0] - 8002906: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800290a: b29b uxth r3, r3 - 800290c: 461a mov r2, r3 - 800290e: 6dfb ldr r3, [r7, #92] @ 0x5c - 8002910: 4413 add r3, r2 - 8002912: 65fb str r3, [r7, #92] @ 0x5c - 8002914: 68bb ldr r3, [r7, #8] - 8002916: 781b ldrb r3, [r3, #0] - 8002918: 011a lsls r2, r3, #4 - 800291a: 6dfb ldr r3, [r7, #92] @ 0x5c - 800291c: 4413 add r3, r2 - 800291e: f203 430c addw r3, r3, #1036 @ 0x40c - 8002922: 65bb str r3, [r7, #88] @ 0x58 - 8002924: 6dbb ldr r3, [r7, #88] @ 0x58 - 8002926: 881b ldrh r3, [r3, #0] - 8002928: b29b uxth r3, r3 - 800292a: f3c3 0309 ubfx r3, r3, #0, #10 - 800292e: b29a uxth r2, r3 - 8002930: 6dbb ldr r3, [r7, #88] @ 0x58 - 8002932: 801a strh r2, [r3, #0] - 8002934: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8002938: 2b3e cmp r3, #62 @ 0x3e - 800293a: d91d bls.n 8002978 - 800293c: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8002940: 095b lsrs r3, r3, #5 - 8002942: 66bb str r3, [r7, #104] @ 0x68 - 8002944: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8002948: f003 031f and.w r3, r3, #31 - 800294c: 2b00 cmp r3, #0 - 800294e: d102 bne.n 8002956 - 8002950: 6ebb ldr r3, [r7, #104] @ 0x68 - 8002952: 3b01 subs r3, #1 - 8002954: 66bb str r3, [r7, #104] @ 0x68 - 8002956: 6dbb ldr r3, [r7, #88] @ 0x58 - 8002958: 881b ldrh r3, [r3, #0] - 800295a: b29a uxth r2, r3 - 800295c: 6ebb ldr r3, [r7, #104] @ 0x68 - 800295e: b29b uxth r3, r3 - 8002960: 029b lsls r3, r3, #10 - 8002962: b29b uxth r3, r3 - 8002964: 4313 orrs r3, r2 - 8002966: b29b uxth r3, r3 - 8002968: ea6f 4343 mvn.w r3, r3, lsl #17 - 800296c: ea6f 4353 mvn.w r3, r3, lsr #17 - 8002970: b29a uxth r2, r3 - 8002972: 6dbb ldr r3, [r7, #88] @ 0x58 - 8002974: 801a strh r2, [r3, #0] - 8002976: e041 b.n 80029fc - 8002978: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 800297c: 2b00 cmp r3, #0 - 800297e: d10a bne.n 8002996 - 8002980: 6dbb ldr r3, [r7, #88] @ 0x58 - 8002982: 881b ldrh r3, [r3, #0] - 8002984: b29b uxth r3, r3 - 8002986: ea6f 4343 mvn.w r3, r3, lsl #17 - 800298a: ea6f 4353 mvn.w r3, r3, lsr #17 - 800298e: b29a uxth r2, r3 - 8002990: 6dbb ldr r3, [r7, #88] @ 0x58 - 8002992: 801a strh r2, [r3, #0] - 8002994: e032 b.n 80029fc - 8002996: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 800299a: 085b lsrs r3, r3, #1 - 800299c: 66bb str r3, [r7, #104] @ 0x68 - 800299e: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 80029a2: f003 0301 and.w r3, r3, #1 - 80029a6: 2b00 cmp r3, #0 - 80029a8: d002 beq.n 80029b0 - 80029aa: 6ebb ldr r3, [r7, #104] @ 0x68 - 80029ac: 3301 adds r3, #1 - 80029ae: 66bb str r3, [r7, #104] @ 0x68 - 80029b0: 6dbb ldr r3, [r7, #88] @ 0x58 - 80029b2: 881b ldrh r3, [r3, #0] - 80029b4: b29a uxth r2, r3 - 80029b6: 6ebb ldr r3, [r7, #104] @ 0x68 - 80029b8: b29b uxth r3, r3 - 80029ba: 029b lsls r3, r3, #10 - 80029bc: b29b uxth r3, r3 - 80029be: 4313 orrs r3, r2 - 80029c0: b29a uxth r2, r3 - 80029c2: 6dbb ldr r3, [r7, #88] @ 0x58 - 80029c4: 801a strh r2, [r3, #0] - 80029c6: e019 b.n 80029fc - 80029c8: 68bb ldr r3, [r7, #8] - 80029ca: 785b ldrb r3, [r3, #1] - 80029cc: 2b01 cmp r3, #1 - 80029ce: d115 bne.n 80029fc - 80029d0: 68fb ldr r3, [r7, #12] - 80029d2: 681b ldr r3, [r3, #0] - 80029d4: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80029d8: b29b uxth r3, r3 - 80029da: 461a mov r2, r3 - 80029dc: 6d7b ldr r3, [r7, #84] @ 0x54 - 80029de: 4413 add r3, r2 - 80029e0: 657b str r3, [r7, #84] @ 0x54 - 80029e2: 68bb ldr r3, [r7, #8] - 80029e4: 781b ldrb r3, [r3, #0] - 80029e6: 011a lsls r2, r3, #4 - 80029e8: 6d7b ldr r3, [r7, #84] @ 0x54 - 80029ea: 4413 add r3, r2 - 80029ec: f203 430c addw r3, r3, #1036 @ 0x40c - 80029f0: 653b str r3, [r7, #80] @ 0x50 - 80029f2: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 80029f6: b29a uxth r2, r3 - 80029f8: 6d3b ldr r3, [r7, #80] @ 0x50 - 80029fa: 801a strh r2, [r3, #0] - - /* Copy the user buffer to USB PMA */ - USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, (uint16_t)len); - 80029fc: 68fb ldr r3, [r7, #12] - 80029fe: 6818 ldr r0, [r3, #0] - 8002a00: 68bb ldr r3, [r7, #8] - 8002a02: 6959 ldr r1, [r3, #20] - 8002a04: 68bb ldr r3, [r7, #8] - 8002a06: 895a ldrh r2, [r3, #10] - 8002a08: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8002a0c: b29b uxth r3, r3 - 8002a0e: f003 fde6 bl 80065de - } - } - } - - /*enable endpoint IN*/ - PCD_SET_EP_TX_STATUS(hpcd->Instance, ep->num, USB_EP_TX_VALID); - 8002a12: 68fb ldr r3, [r7, #12] - 8002a14: 681b ldr r3, [r3, #0] - 8002a16: 461a mov r2, r3 - 8002a18: 68bb ldr r3, [r7, #8] - 8002a1a: 781b ldrb r3, [r3, #0] - 8002a1c: 009b lsls r3, r3, #2 - 8002a1e: 4413 add r3, r2 - 8002a20: 881b ldrh r3, [r3, #0] - 8002a22: b29b uxth r3, r3 - 8002a24: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8002a28: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8002a2c: 82bb strh r3, [r7, #20] - 8002a2e: 8abb ldrh r3, [r7, #20] - 8002a30: f083 0310 eor.w r3, r3, #16 - 8002a34: 82bb strh r3, [r7, #20] - 8002a36: 8abb ldrh r3, [r7, #20] - 8002a38: f083 0320 eor.w r3, r3, #32 - 8002a3c: 82bb strh r3, [r7, #20] - 8002a3e: 68fb ldr r3, [r7, #12] - 8002a40: 681b ldr r3, [r3, #0] - 8002a42: 461a mov r2, r3 - 8002a44: 68bb ldr r3, [r7, #8] - 8002a46: 781b ldrb r3, [r3, #0] - 8002a48: 009b lsls r3, r3, #2 - 8002a4a: 441a add r2, r3 - 8002a4c: 8abb ldrh r3, [r7, #20] - 8002a4e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8002a52: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8002a56: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8002a5a: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8002a5e: b29b uxth r3, r3 - 8002a60: 8013 strh r3, [r2, #0] - - return HAL_OK; - 8002a62: 2300 movs r3, #0 -} - 8002a64: 4618 mov r0, r3 - 8002a66: 3790 adds r7, #144 @ 0x90 - 8002a68: 46bd mov sp, r7 - 8002a6a: bd80 pop {r7, pc} - -08002a6c : - * @retval HAL status - */ - -HAL_StatusTypeDef HAL_PCDEx_PMAConfig(PCD_HandleTypeDef *hpcd, uint16_t ep_addr, - uint16_t ep_kind, uint32_t pmaadress) -{ - 8002a6c: b480 push {r7} - 8002a6e: b087 sub sp, #28 - 8002a70: af00 add r7, sp, #0 - 8002a72: 60f8 str r0, [r7, #12] - 8002a74: 607b str r3, [r7, #4] - 8002a76: 460b mov r3, r1 - 8002a78: 817b strh r3, [r7, #10] - 8002a7a: 4613 mov r3, r2 - 8002a7c: 813b strh r3, [r7, #8] - PCD_EPTypeDef *ep; - - /* initialize ep structure*/ - if ((0x80U & ep_addr) == 0x80U) - 8002a7e: 897b ldrh r3, [r7, #10] - 8002a80: f003 0380 and.w r3, r3, #128 @ 0x80 - 8002a84: b29b uxth r3, r3 - 8002a86: 2b00 cmp r3, #0 - 8002a88: d00b beq.n 8002aa2 - { - ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; - 8002a8a: 897b ldrh r3, [r7, #10] - 8002a8c: f003 0207 and.w r2, r3, #7 - 8002a90: 4613 mov r3, r2 - 8002a92: 009b lsls r3, r3, #2 - 8002a94: 4413 add r3, r2 - 8002a96: 00db lsls r3, r3, #3 - 8002a98: 3310 adds r3, #16 - 8002a9a: 68fa ldr r2, [r7, #12] - 8002a9c: 4413 add r3, r2 - 8002a9e: 617b str r3, [r7, #20] - 8002aa0: e009 b.n 8002ab6 - } - else - { - ep = &hpcd->OUT_ep[ep_addr]; - 8002aa2: 897a ldrh r2, [r7, #10] - 8002aa4: 4613 mov r3, r2 - 8002aa6: 009b lsls r3, r3, #2 - 8002aa8: 4413 add r3, r2 - 8002aaa: 00db lsls r3, r3, #3 - 8002aac: f503 73a8 add.w r3, r3, #336 @ 0x150 - 8002ab0: 68fa ldr r2, [r7, #12] - 8002ab2: 4413 add r3, r2 - 8002ab4: 617b str r3, [r7, #20] - } - - /* Here we check if the endpoint is single or double Buffer*/ - if (ep_kind == PCD_SNG_BUF) - 8002ab6: 893b ldrh r3, [r7, #8] - 8002ab8: 2b00 cmp r3, #0 - 8002aba: d107 bne.n 8002acc - { - /* Single Buffer */ - ep->doublebuffer = 0U; - 8002abc: 697b ldr r3, [r7, #20] - 8002abe: 2200 movs r2, #0 - 8002ac0: 731a strb r2, [r3, #12] - /* Configure the PMA */ - ep->pmaadress = (uint16_t)pmaadress; - 8002ac2: 687b ldr r3, [r7, #4] - 8002ac4: b29a uxth r2, r3 - 8002ac6: 697b ldr r3, [r7, #20] - 8002ac8: 80da strh r2, [r3, #6] - 8002aca: e00b b.n 8002ae4 - } -#if (USE_USB_DOUBLE_BUFFER == 1U) - else /* USB_DBL_BUF */ - { - /* Double Buffer Endpoint */ - ep->doublebuffer = 1U; - 8002acc: 697b ldr r3, [r7, #20] - 8002ace: 2201 movs r2, #1 - 8002ad0: 731a strb r2, [r3, #12] - /* Configure the PMA */ - ep->pmaaddr0 = (uint16_t)(pmaadress & 0xFFFFU); - 8002ad2: 687b ldr r3, [r7, #4] - 8002ad4: b29a uxth r2, r3 - 8002ad6: 697b ldr r3, [r7, #20] - 8002ad8: 811a strh r2, [r3, #8] - ep->pmaaddr1 = (uint16_t)((pmaadress & 0xFFFF0000U) >> 16); - 8002ada: 687b ldr r3, [r7, #4] - 8002adc: 0c1b lsrs r3, r3, #16 - 8002ade: b29a uxth r2, r3 - 8002ae0: 697b ldr r3, [r7, #20] - 8002ae2: 815a strh r2, [r3, #10] - } -#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ - - return HAL_OK; - 8002ae4: 2300 movs r3, #0 -} - 8002ae6: 4618 mov r0, r3 - 8002ae8: 371c adds r7, #28 - 8002aea: 46bd mov sp, r7 - 8002aec: bc80 pop {r7} - 8002aee: 4770 bx lr - -08002af0 : - * supported by this macro. User should request a transition to HSE Off - * first and then HSE On or HSE Bypass. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) -{ - 8002af0: b580 push {r7, lr} - 8002af2: b086 sub sp, #24 - 8002af4: af00 add r7, sp, #0 - 8002af6: 6078 str r0, [r7, #4] - uint32_t tickstart; - uint32_t pll_config; - - /* Check Null pointer */ - if (RCC_OscInitStruct == NULL) - 8002af8: 687b ldr r3, [r7, #4] - 8002afa: 2b00 cmp r3, #0 - 8002afc: d101 bne.n 8002b02 - { - return HAL_ERROR; - 8002afe: 2301 movs r3, #1 - 8002b00: e272 b.n 8002fe8 - - /* Check the parameters */ - assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); - - /*------------------------------- HSE Configuration ------------------------*/ - if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) - 8002b02: 687b ldr r3, [r7, #4] - 8002b04: 681b ldr r3, [r3, #0] - 8002b06: f003 0301 and.w r3, r3, #1 - 8002b0a: 2b00 cmp r3, #0 - 8002b0c: f000 8087 beq.w 8002c1e - { - /* Check the parameters */ - assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); - - /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ - if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE) - 8002b10: 4b92 ldr r3, [pc, #584] @ (8002d5c ) - 8002b12: 685b ldr r3, [r3, #4] - 8002b14: f003 030c and.w r3, r3, #12 - 8002b18: 2b04 cmp r3, #4 - 8002b1a: d00c beq.n 8002b36 - || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSE))) - 8002b1c: 4b8f ldr r3, [pc, #572] @ (8002d5c ) - 8002b1e: 685b ldr r3, [r3, #4] - 8002b20: f003 030c and.w r3, r3, #12 - 8002b24: 2b08 cmp r3, #8 - 8002b26: d112 bne.n 8002b4e - 8002b28: 4b8c ldr r3, [pc, #560] @ (8002d5c ) - 8002b2a: 685b ldr r3, [r3, #4] - 8002b2c: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 8002b30: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8002b34: d10b bne.n 8002b4e - { - if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8002b36: 4b89 ldr r3, [pc, #548] @ (8002d5c ) - 8002b38: 681b ldr r3, [r3, #0] - 8002b3a: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8002b3e: 2b00 cmp r3, #0 - 8002b40: d06c beq.n 8002c1c - 8002b42: 687b ldr r3, [r7, #4] - 8002b44: 685b ldr r3, [r3, #4] - 8002b46: 2b00 cmp r3, #0 - 8002b48: d168 bne.n 8002c1c - { - return HAL_ERROR; - 8002b4a: 2301 movs r3, #1 - 8002b4c: e24c b.n 8002fe8 - } - } - else - { - /* Set the new HSE configuration ---------------------------------------*/ - __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); - 8002b4e: 687b ldr r3, [r7, #4] - 8002b50: 685b ldr r3, [r3, #4] - 8002b52: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8002b56: d106 bne.n 8002b66 - 8002b58: 4b80 ldr r3, [pc, #512] @ (8002d5c ) - 8002b5a: 681b ldr r3, [r3, #0] - 8002b5c: 4a7f ldr r2, [pc, #508] @ (8002d5c ) - 8002b5e: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 8002b62: 6013 str r3, [r2, #0] - 8002b64: e02e b.n 8002bc4 - 8002b66: 687b ldr r3, [r7, #4] - 8002b68: 685b ldr r3, [r3, #4] - 8002b6a: 2b00 cmp r3, #0 - 8002b6c: d10c bne.n 8002b88 - 8002b6e: 4b7b ldr r3, [pc, #492] @ (8002d5c ) - 8002b70: 681b ldr r3, [r3, #0] - 8002b72: 4a7a ldr r2, [pc, #488] @ (8002d5c ) - 8002b74: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 8002b78: 6013 str r3, [r2, #0] - 8002b7a: 4b78 ldr r3, [pc, #480] @ (8002d5c ) - 8002b7c: 681b ldr r3, [r3, #0] - 8002b7e: 4a77 ldr r2, [pc, #476] @ (8002d5c ) - 8002b80: f423 2380 bic.w r3, r3, #262144 @ 0x40000 - 8002b84: 6013 str r3, [r2, #0] - 8002b86: e01d b.n 8002bc4 - 8002b88: 687b ldr r3, [r7, #4] - 8002b8a: 685b ldr r3, [r3, #4] - 8002b8c: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 - 8002b90: d10c bne.n 8002bac - 8002b92: 4b72 ldr r3, [pc, #456] @ (8002d5c ) - 8002b94: 681b ldr r3, [r3, #0] - 8002b96: 4a71 ldr r2, [pc, #452] @ (8002d5c ) - 8002b98: f443 2380 orr.w r3, r3, #262144 @ 0x40000 - 8002b9c: 6013 str r3, [r2, #0] - 8002b9e: 4b6f ldr r3, [pc, #444] @ (8002d5c ) - 8002ba0: 681b ldr r3, [r3, #0] - 8002ba2: 4a6e ldr r2, [pc, #440] @ (8002d5c ) - 8002ba4: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 8002ba8: 6013 str r3, [r2, #0] - 8002baa: e00b b.n 8002bc4 - 8002bac: 4b6b ldr r3, [pc, #428] @ (8002d5c ) - 8002bae: 681b ldr r3, [r3, #0] - 8002bb0: 4a6a ldr r2, [pc, #424] @ (8002d5c ) - 8002bb2: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 8002bb6: 6013 str r3, [r2, #0] - 8002bb8: 4b68 ldr r3, [pc, #416] @ (8002d5c ) - 8002bba: 681b ldr r3, [r3, #0] - 8002bbc: 4a67 ldr r2, [pc, #412] @ (8002d5c ) - 8002bbe: f423 2380 bic.w r3, r3, #262144 @ 0x40000 - 8002bc2: 6013 str r3, [r2, #0] - - - /* Check the HSE State */ - if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF) - 8002bc4: 687b ldr r3, [r7, #4] - 8002bc6: 685b ldr r3, [r3, #4] - 8002bc8: 2b00 cmp r3, #0 - 8002bca: d013 beq.n 8002bf4 - { - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8002bcc: f7fd ff94 bl 8000af8 - 8002bd0: 6138 str r0, [r7, #16] - - /* Wait till HSE is ready */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 8002bd2: e008 b.n 8002be6 - { - if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 8002bd4: f7fd ff90 bl 8000af8 - 8002bd8: 4602 mov r2, r0 - 8002bda: 693b ldr r3, [r7, #16] - 8002bdc: 1ad3 subs r3, r2, r3 - 8002bde: 2b64 cmp r3, #100 @ 0x64 - 8002be0: d901 bls.n 8002be6 - { - return HAL_TIMEOUT; - 8002be2: 2303 movs r3, #3 - 8002be4: e200 b.n 8002fe8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 8002be6: 4b5d ldr r3, [pc, #372] @ (8002d5c ) - 8002be8: 681b ldr r3, [r3, #0] - 8002bea: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8002bee: 2b00 cmp r3, #0 - 8002bf0: d0f0 beq.n 8002bd4 - 8002bf2: e014 b.n 8002c1e - } - } - else - { - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8002bf4: f7fd ff80 bl 8000af8 - 8002bf8: 6138 str r0, [r7, #16] - - /* Wait till HSE is disabled */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 8002bfa: e008 b.n 8002c0e - { - if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 8002bfc: f7fd ff7c bl 8000af8 - 8002c00: 4602 mov r2, r0 - 8002c02: 693b ldr r3, [r7, #16] - 8002c04: 1ad3 subs r3, r2, r3 - 8002c06: 2b64 cmp r3, #100 @ 0x64 - 8002c08: d901 bls.n 8002c0e - { - return HAL_TIMEOUT; - 8002c0a: 2303 movs r3, #3 - 8002c0c: e1ec b.n 8002fe8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 8002c0e: 4b53 ldr r3, [pc, #332] @ (8002d5c ) - 8002c10: 681b ldr r3, [r3, #0] - 8002c12: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8002c16: 2b00 cmp r3, #0 - 8002c18: d1f0 bne.n 8002bfc - 8002c1a: e000 b.n 8002c1e - if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8002c1c: bf00 nop - } - } - } - } - /*----------------------------- HSI Configuration --------------------------*/ - if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) - 8002c1e: 687b ldr r3, [r7, #4] - 8002c20: 681b ldr r3, [r3, #0] - 8002c22: f003 0302 and.w r3, r3, #2 - 8002c26: 2b00 cmp r3, #0 - 8002c28: d063 beq.n 8002cf2 - /* Check the parameters */ - assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); - assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); - - /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ - if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI) - 8002c2a: 4b4c ldr r3, [pc, #304] @ (8002d5c ) - 8002c2c: 685b ldr r3, [r3, #4] - 8002c2e: f003 030c and.w r3, r3, #12 - 8002c32: 2b00 cmp r3, #0 - 8002c34: d00b beq.n 8002c4e - || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSI_DIV2))) - 8002c36: 4b49 ldr r3, [pc, #292] @ (8002d5c ) - 8002c38: 685b ldr r3, [r3, #4] - 8002c3a: f003 030c and.w r3, r3, #12 - 8002c3e: 2b08 cmp r3, #8 - 8002c40: d11c bne.n 8002c7c - 8002c42: 4b46 ldr r3, [pc, #280] @ (8002d5c ) - 8002c44: 685b ldr r3, [r3, #4] - 8002c46: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 8002c4a: 2b00 cmp r3, #0 - 8002c4c: d116 bne.n 8002c7c - { - /* 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)) - 8002c4e: 4b43 ldr r3, [pc, #268] @ (8002d5c ) - 8002c50: 681b ldr r3, [r3, #0] - 8002c52: f003 0302 and.w r3, r3, #2 - 8002c56: 2b00 cmp r3, #0 - 8002c58: d005 beq.n 8002c66 - 8002c5a: 687b ldr r3, [r7, #4] - 8002c5c: 691b ldr r3, [r3, #16] - 8002c5e: 2b01 cmp r3, #1 - 8002c60: d001 beq.n 8002c66 - { - return HAL_ERROR; - 8002c62: 2301 movs r3, #1 - 8002c64: e1c0 b.n 8002fe8 - } - /* Otherwise, just the calibration is allowed */ - else - { - /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ - __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8002c66: 4b3d ldr r3, [pc, #244] @ (8002d5c ) - 8002c68: 681b ldr r3, [r3, #0] - 8002c6a: f023 02f8 bic.w r2, r3, #248 @ 0xf8 - 8002c6e: 687b ldr r3, [r7, #4] - 8002c70: 695b ldr r3, [r3, #20] - 8002c72: 00db lsls r3, r3, #3 - 8002c74: 4939 ldr r1, [pc, #228] @ (8002d5c ) - 8002c76: 4313 orrs r3, r2 - 8002c78: 600b str r3, [r1, #0] - if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) - 8002c7a: e03a b.n 8002cf2 - } - } - else - { - /* Check the HSI State */ - if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF) - 8002c7c: 687b ldr r3, [r7, #4] - 8002c7e: 691b ldr r3, [r3, #16] - 8002c80: 2b00 cmp r3, #0 - 8002c82: d020 beq.n 8002cc6 - { - /* Enable the Internal High Speed oscillator (HSI). */ - __HAL_RCC_HSI_ENABLE(); - 8002c84: 4b36 ldr r3, [pc, #216] @ (8002d60 ) - 8002c86: 2201 movs r2, #1 - 8002c88: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8002c8a: f7fd ff35 bl 8000af8 - 8002c8e: 6138 str r0, [r7, #16] - - /* Wait till HSI is ready */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8002c90: e008 b.n 8002ca4 - { - if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 8002c92: f7fd ff31 bl 8000af8 - 8002c96: 4602 mov r2, r0 - 8002c98: 693b ldr r3, [r7, #16] - 8002c9a: 1ad3 subs r3, r2, r3 - 8002c9c: 2b02 cmp r3, #2 - 8002c9e: d901 bls.n 8002ca4 - { - return HAL_TIMEOUT; - 8002ca0: 2303 movs r3, #3 - 8002ca2: e1a1 b.n 8002fe8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8002ca4: 4b2d ldr r3, [pc, #180] @ (8002d5c ) - 8002ca6: 681b ldr r3, [r3, #0] - 8002ca8: f003 0302 and.w r3, r3, #2 - 8002cac: 2b00 cmp r3, #0 - 8002cae: d0f0 beq.n 8002c92 - } - } - - /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ - __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8002cb0: 4b2a ldr r3, [pc, #168] @ (8002d5c ) - 8002cb2: 681b ldr r3, [r3, #0] - 8002cb4: f023 02f8 bic.w r2, r3, #248 @ 0xf8 - 8002cb8: 687b ldr r3, [r7, #4] - 8002cba: 695b ldr r3, [r3, #20] - 8002cbc: 00db lsls r3, r3, #3 - 8002cbe: 4927 ldr r1, [pc, #156] @ (8002d5c ) - 8002cc0: 4313 orrs r3, r2 - 8002cc2: 600b str r3, [r1, #0] - 8002cc4: e015 b.n 8002cf2 - } - else - { - /* Disable the Internal High Speed oscillator (HSI). */ - __HAL_RCC_HSI_DISABLE(); - 8002cc6: 4b26 ldr r3, [pc, #152] @ (8002d60 ) - 8002cc8: 2200 movs r2, #0 - 8002cca: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8002ccc: f7fd ff14 bl 8000af8 - 8002cd0: 6138 str r0, [r7, #16] - - /* Wait till HSI is disabled */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 8002cd2: e008 b.n 8002ce6 - { - if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 8002cd4: f7fd ff10 bl 8000af8 - 8002cd8: 4602 mov r2, r0 - 8002cda: 693b ldr r3, [r7, #16] - 8002cdc: 1ad3 subs r3, r2, r3 - 8002cde: 2b02 cmp r3, #2 - 8002ce0: d901 bls.n 8002ce6 - { - return HAL_TIMEOUT; - 8002ce2: 2303 movs r3, #3 - 8002ce4: e180 b.n 8002fe8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 8002ce6: 4b1d ldr r3, [pc, #116] @ (8002d5c ) - 8002ce8: 681b ldr r3, [r3, #0] - 8002cea: f003 0302 and.w r3, r3, #2 - 8002cee: 2b00 cmp r3, #0 - 8002cf0: d1f0 bne.n 8002cd4 - } - } - } - } - /*------------------------------ LSI Configuration -------------------------*/ - if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) - 8002cf2: 687b ldr r3, [r7, #4] - 8002cf4: 681b ldr r3, [r3, #0] - 8002cf6: f003 0308 and.w r3, r3, #8 - 8002cfa: 2b00 cmp r3, #0 - 8002cfc: d03a beq.n 8002d74 - { - /* Check the parameters */ - assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); - - /* Check the LSI State */ - if (RCC_OscInitStruct->LSIState != RCC_LSI_OFF) - 8002cfe: 687b ldr r3, [r7, #4] - 8002d00: 699b ldr r3, [r3, #24] - 8002d02: 2b00 cmp r3, #0 - 8002d04: d019 beq.n 8002d3a - { - /* Enable the Internal Low Speed oscillator (LSI). */ - __HAL_RCC_LSI_ENABLE(); - 8002d06: 4b17 ldr r3, [pc, #92] @ (8002d64 ) - 8002d08: 2201 movs r2, #1 - 8002d0a: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8002d0c: f7fd fef4 bl 8000af8 - 8002d10: 6138 str r0, [r7, #16] - - /* Wait till LSI is ready */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 8002d12: e008 b.n 8002d26 - { - if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 8002d14: f7fd fef0 bl 8000af8 - 8002d18: 4602 mov r2, r0 - 8002d1a: 693b ldr r3, [r7, #16] - 8002d1c: 1ad3 subs r3, r2, r3 - 8002d1e: 2b02 cmp r3, #2 - 8002d20: d901 bls.n 8002d26 - { - return HAL_TIMEOUT; - 8002d22: 2303 movs r3, #3 - 8002d24: e160 b.n 8002fe8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 8002d26: 4b0d ldr r3, [pc, #52] @ (8002d5c ) - 8002d28: 6a5b ldr r3, [r3, #36] @ 0x24 - 8002d2a: f003 0302 and.w r3, r3, #2 - 8002d2e: 2b00 cmp r3, #0 - 8002d30: d0f0 beq.n 8002d14 - } - } - /* To have a fully stabilized clock in the specified range, a software delay of 1ms - should be added.*/ - RCC_Delay(1); - 8002d32: 2001 movs r0, #1 - 8002d34: f000 fa9c bl 8003270 - 8002d38: e01c b.n 8002d74 - } - else - { - /* Disable the Internal Low Speed oscillator (LSI). */ - __HAL_RCC_LSI_DISABLE(); - 8002d3a: 4b0a ldr r3, [pc, #40] @ (8002d64 ) - 8002d3c: 2200 movs r2, #0 - 8002d3e: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8002d40: f7fd feda bl 8000af8 - 8002d44: 6138 str r0, [r7, #16] - - /* Wait till LSI is disabled */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 8002d46: e00f b.n 8002d68 - { - if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 8002d48: f7fd fed6 bl 8000af8 - 8002d4c: 4602 mov r2, r0 - 8002d4e: 693b ldr r3, [r7, #16] - 8002d50: 1ad3 subs r3, r2, r3 - 8002d52: 2b02 cmp r3, #2 - 8002d54: d908 bls.n 8002d68 - { - return HAL_TIMEOUT; - 8002d56: 2303 movs r3, #3 - 8002d58: e146 b.n 8002fe8 - 8002d5a: bf00 nop - 8002d5c: 40021000 .word 0x40021000 - 8002d60: 42420000 .word 0x42420000 - 8002d64: 42420480 .word 0x42420480 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 8002d68: 4b92 ldr r3, [pc, #584] @ (8002fb4 ) - 8002d6a: 6a5b ldr r3, [r3, #36] @ 0x24 - 8002d6c: f003 0302 and.w r3, r3, #2 - 8002d70: 2b00 cmp r3, #0 - 8002d72: d1e9 bne.n 8002d48 - } - } - } - } - /*------------------------------ LSE Configuration -------------------------*/ - if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) - 8002d74: 687b ldr r3, [r7, #4] - 8002d76: 681b ldr r3, [r3, #0] - 8002d78: f003 0304 and.w r3, r3, #4 - 8002d7c: 2b00 cmp r3, #0 - 8002d7e: f000 80a6 beq.w 8002ece - { - FlagStatus pwrclkchanged = RESET; - 8002d82: 2300 movs r3, #0 - 8002d84: 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()) - 8002d86: 4b8b ldr r3, [pc, #556] @ (8002fb4 ) - 8002d88: 69db ldr r3, [r3, #28] - 8002d8a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8002d8e: 2b00 cmp r3, #0 - 8002d90: d10d bne.n 8002dae - { - __HAL_RCC_PWR_CLK_ENABLE(); - 8002d92: 4b88 ldr r3, [pc, #544] @ (8002fb4 ) - 8002d94: 69db ldr r3, [r3, #28] - 8002d96: 4a87 ldr r2, [pc, #540] @ (8002fb4 ) - 8002d98: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 8002d9c: 61d3 str r3, [r2, #28] - 8002d9e: 4b85 ldr r3, [pc, #532] @ (8002fb4 ) - 8002da0: 69db ldr r3, [r3, #28] - 8002da2: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8002da6: 60bb str r3, [r7, #8] - 8002da8: 68bb ldr r3, [r7, #8] - pwrclkchanged = SET; - 8002daa: 2301 movs r3, #1 - 8002dac: 75fb strb r3, [r7, #23] - } - - if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8002dae: 4b82 ldr r3, [pc, #520] @ (8002fb8 ) - 8002db0: 681b ldr r3, [r3, #0] - 8002db2: f403 7380 and.w r3, r3, #256 @ 0x100 - 8002db6: 2b00 cmp r3, #0 - 8002db8: d118 bne.n 8002dec - { - /* Enable write access to Backup domain */ - SET_BIT(PWR->CR, PWR_CR_DBP); - 8002dba: 4b7f ldr r3, [pc, #508] @ (8002fb8 ) - 8002dbc: 681b ldr r3, [r3, #0] - 8002dbe: 4a7e ldr r2, [pc, #504] @ (8002fb8 ) - 8002dc0: f443 7380 orr.w r3, r3, #256 @ 0x100 - 8002dc4: 6013 str r3, [r2, #0] - - /* Wait for Backup domain Write protection disable */ - tickstart = HAL_GetTick(); - 8002dc6: f7fd fe97 bl 8000af8 - 8002dca: 6138 str r0, [r7, #16] - - while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8002dcc: e008 b.n 8002de0 - { - if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 8002dce: f7fd fe93 bl 8000af8 - 8002dd2: 4602 mov r2, r0 - 8002dd4: 693b ldr r3, [r7, #16] - 8002dd6: 1ad3 subs r3, r2, r3 - 8002dd8: 2b64 cmp r3, #100 @ 0x64 - 8002dda: d901 bls.n 8002de0 - { - return HAL_TIMEOUT; - 8002ddc: 2303 movs r3, #3 - 8002dde: e103 b.n 8002fe8 - while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8002de0: 4b75 ldr r3, [pc, #468] @ (8002fb8 ) - 8002de2: 681b ldr r3, [r3, #0] - 8002de4: f403 7380 and.w r3, r3, #256 @ 0x100 - 8002de8: 2b00 cmp r3, #0 - 8002dea: d0f0 beq.n 8002dce - } - } - } - - /* Set the new LSE configuration -----------------------------------------*/ - __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); - 8002dec: 687b ldr r3, [r7, #4] - 8002dee: 68db ldr r3, [r3, #12] - 8002df0: 2b01 cmp r3, #1 - 8002df2: d106 bne.n 8002e02 - 8002df4: 4b6f ldr r3, [pc, #444] @ (8002fb4 ) - 8002df6: 6a1b ldr r3, [r3, #32] - 8002df8: 4a6e ldr r2, [pc, #440] @ (8002fb4 ) - 8002dfa: f043 0301 orr.w r3, r3, #1 - 8002dfe: 6213 str r3, [r2, #32] - 8002e00: e02d b.n 8002e5e - 8002e02: 687b ldr r3, [r7, #4] - 8002e04: 68db ldr r3, [r3, #12] - 8002e06: 2b00 cmp r3, #0 - 8002e08: d10c bne.n 8002e24 - 8002e0a: 4b6a ldr r3, [pc, #424] @ (8002fb4 ) - 8002e0c: 6a1b ldr r3, [r3, #32] - 8002e0e: 4a69 ldr r2, [pc, #420] @ (8002fb4 ) - 8002e10: f023 0301 bic.w r3, r3, #1 - 8002e14: 6213 str r3, [r2, #32] - 8002e16: 4b67 ldr r3, [pc, #412] @ (8002fb4 ) - 8002e18: 6a1b ldr r3, [r3, #32] - 8002e1a: 4a66 ldr r2, [pc, #408] @ (8002fb4 ) - 8002e1c: f023 0304 bic.w r3, r3, #4 - 8002e20: 6213 str r3, [r2, #32] - 8002e22: e01c b.n 8002e5e - 8002e24: 687b ldr r3, [r7, #4] - 8002e26: 68db ldr r3, [r3, #12] - 8002e28: 2b05 cmp r3, #5 - 8002e2a: d10c bne.n 8002e46 - 8002e2c: 4b61 ldr r3, [pc, #388] @ (8002fb4 ) - 8002e2e: 6a1b ldr r3, [r3, #32] - 8002e30: 4a60 ldr r2, [pc, #384] @ (8002fb4 ) - 8002e32: f043 0304 orr.w r3, r3, #4 - 8002e36: 6213 str r3, [r2, #32] - 8002e38: 4b5e ldr r3, [pc, #376] @ (8002fb4 ) - 8002e3a: 6a1b ldr r3, [r3, #32] - 8002e3c: 4a5d ldr r2, [pc, #372] @ (8002fb4 ) - 8002e3e: f043 0301 orr.w r3, r3, #1 - 8002e42: 6213 str r3, [r2, #32] - 8002e44: e00b b.n 8002e5e - 8002e46: 4b5b ldr r3, [pc, #364] @ (8002fb4 ) - 8002e48: 6a1b ldr r3, [r3, #32] - 8002e4a: 4a5a ldr r2, [pc, #360] @ (8002fb4 ) - 8002e4c: f023 0301 bic.w r3, r3, #1 - 8002e50: 6213 str r3, [r2, #32] - 8002e52: 4b58 ldr r3, [pc, #352] @ (8002fb4 ) - 8002e54: 6a1b ldr r3, [r3, #32] - 8002e56: 4a57 ldr r2, [pc, #348] @ (8002fb4 ) - 8002e58: f023 0304 bic.w r3, r3, #4 - 8002e5c: 6213 str r3, [r2, #32] - /* Check the LSE State */ - if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF) - 8002e5e: 687b ldr r3, [r7, #4] - 8002e60: 68db ldr r3, [r3, #12] - 8002e62: 2b00 cmp r3, #0 - 8002e64: d015 beq.n 8002e92 - { - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8002e66: f7fd fe47 bl 8000af8 - 8002e6a: 6138 str r0, [r7, #16] - - /* Wait till LSE is ready */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 8002e6c: e00a b.n 8002e84 - { - if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8002e6e: f7fd fe43 bl 8000af8 - 8002e72: 4602 mov r2, r0 - 8002e74: 693b ldr r3, [r7, #16] - 8002e76: 1ad3 subs r3, r2, r3 - 8002e78: f241 3288 movw r2, #5000 @ 0x1388 - 8002e7c: 4293 cmp r3, r2 - 8002e7e: d901 bls.n 8002e84 - { - return HAL_TIMEOUT; - 8002e80: 2303 movs r3, #3 - 8002e82: e0b1 b.n 8002fe8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 8002e84: 4b4b ldr r3, [pc, #300] @ (8002fb4 ) - 8002e86: 6a1b ldr r3, [r3, #32] - 8002e88: f003 0302 and.w r3, r3, #2 - 8002e8c: 2b00 cmp r3, #0 - 8002e8e: d0ee beq.n 8002e6e - 8002e90: e014 b.n 8002ebc - } - } - else - { - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8002e92: f7fd fe31 bl 8000af8 - 8002e96: 6138 str r0, [r7, #16] - - /* Wait till LSE is disabled */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 8002e98: e00a b.n 8002eb0 - { - if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8002e9a: f7fd fe2d bl 8000af8 - 8002e9e: 4602 mov r2, r0 - 8002ea0: 693b ldr r3, [r7, #16] - 8002ea2: 1ad3 subs r3, r2, r3 - 8002ea4: f241 3288 movw r2, #5000 @ 0x1388 - 8002ea8: 4293 cmp r3, r2 - 8002eaa: d901 bls.n 8002eb0 - { - return HAL_TIMEOUT; - 8002eac: 2303 movs r3, #3 - 8002eae: e09b b.n 8002fe8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 8002eb0: 4b40 ldr r3, [pc, #256] @ (8002fb4 ) - 8002eb2: 6a1b ldr r3, [r3, #32] - 8002eb4: f003 0302 and.w r3, r3, #2 - 8002eb8: 2b00 cmp r3, #0 - 8002eba: d1ee bne.n 8002e9a - } - } - } - - /* Require to disable power clock if necessary */ - if (pwrclkchanged == SET) - 8002ebc: 7dfb ldrb r3, [r7, #23] - 8002ebe: 2b01 cmp r3, #1 - 8002ec0: d105 bne.n 8002ece - { - __HAL_RCC_PWR_CLK_DISABLE(); - 8002ec2: 4b3c ldr r3, [pc, #240] @ (8002fb4 ) - 8002ec4: 69db ldr r3, [r3, #28] - 8002ec6: 4a3b ldr r2, [pc, #236] @ (8002fb4 ) - 8002ec8: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 - 8002ecc: 61d3 str r3, [r2, #28] - -#endif /* RCC_CR_PLL2ON */ - /*-------------------------------- PLL Configuration -----------------------*/ - /* Check the parameters */ - assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); - if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) - 8002ece: 687b ldr r3, [r7, #4] - 8002ed0: 69db ldr r3, [r3, #28] - 8002ed2: 2b00 cmp r3, #0 - 8002ed4: f000 8087 beq.w 8002fe6 - { - /* Check if the PLL is used as system clock or not */ - if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) - 8002ed8: 4b36 ldr r3, [pc, #216] @ (8002fb4 ) - 8002eda: 685b ldr r3, [r3, #4] - 8002edc: f003 030c and.w r3, r3, #12 - 8002ee0: 2b08 cmp r3, #8 - 8002ee2: d061 beq.n 8002fa8 - { - if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) - 8002ee4: 687b ldr r3, [r7, #4] - 8002ee6: 69db ldr r3, [r3, #28] - 8002ee8: 2b02 cmp r3, #2 - 8002eea: d146 bne.n 8002f7a - /* Check the parameters */ - assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); - assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); - - /* Disable the main PLL. */ - __HAL_RCC_PLL_DISABLE(); - 8002eec: 4b33 ldr r3, [pc, #204] @ (8002fbc ) - 8002eee: 2200 movs r2, #0 - 8002ef0: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8002ef2: f7fd fe01 bl 8000af8 - 8002ef6: 6138 str r0, [r7, #16] - - /* Wait till PLL is disabled */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8002ef8: e008 b.n 8002f0c - { - if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8002efa: f7fd fdfd bl 8000af8 - 8002efe: 4602 mov r2, r0 - 8002f00: 693b ldr r3, [r7, #16] - 8002f02: 1ad3 subs r3, r2, r3 - 8002f04: 2b02 cmp r3, #2 - 8002f06: d901 bls.n 8002f0c - { - return HAL_TIMEOUT; - 8002f08: 2303 movs r3, #3 - 8002f0a: e06d b.n 8002fe8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8002f0c: 4b29 ldr r3, [pc, #164] @ (8002fb4 ) - 8002f0e: 681b ldr r3, [r3, #0] - 8002f10: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 8002f14: 2b00 cmp r3, #0 - 8002f16: d1f0 bne.n 8002efa - } - } - - /* Configure the HSE prediv factor --------------------------------*/ - /* It can be written only when the PLL is disabled. Not used in PLL source is different than HSE */ - if (RCC_OscInitStruct->PLL.PLLSource == RCC_PLLSOURCE_HSE) - 8002f18: 687b ldr r3, [r7, #4] - 8002f1a: 6a1b ldr r3, [r3, #32] - 8002f1c: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 8002f20: d108 bne.n 8002f34 - /* Set PREDIV1 source */ - SET_BIT(RCC->CFGR2, RCC_OscInitStruct->Prediv1Source); -#endif /* RCC_CFGR2_PREDIV1SRC */ - - /* Set PREDIV1 Value */ - __HAL_RCC_HSE_PREDIV_CONFIG(RCC_OscInitStruct->HSEPredivValue); - 8002f22: 4b24 ldr r3, [pc, #144] @ (8002fb4 ) - 8002f24: 685b ldr r3, [r3, #4] - 8002f26: f423 3200 bic.w r2, r3, #131072 @ 0x20000 - 8002f2a: 687b ldr r3, [r7, #4] - 8002f2c: 689b ldr r3, [r3, #8] - 8002f2e: 4921 ldr r1, [pc, #132] @ (8002fb4 ) - 8002f30: 4313 orrs r3, r2 - 8002f32: 604b str r3, [r1, #4] - } - - /* Configure the main PLL clock source and multiplication factors. */ - __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, - 8002f34: 4b1f ldr r3, [pc, #124] @ (8002fb4 ) - 8002f36: 685b ldr r3, [r3, #4] - 8002f38: f423 1274 bic.w r2, r3, #3997696 @ 0x3d0000 - 8002f3c: 687b ldr r3, [r7, #4] - 8002f3e: 6a19 ldr r1, [r3, #32] - 8002f40: 687b ldr r3, [r7, #4] - 8002f42: 6a5b ldr r3, [r3, #36] @ 0x24 - 8002f44: 430b orrs r3, r1 - 8002f46: 491b ldr r1, [pc, #108] @ (8002fb4 ) - 8002f48: 4313 orrs r3, r2 - 8002f4a: 604b str r3, [r1, #4] - RCC_OscInitStruct->PLL.PLLMUL); - /* Enable the main PLL. */ - __HAL_RCC_PLL_ENABLE(); - 8002f4c: 4b1b ldr r3, [pc, #108] @ (8002fbc ) - 8002f4e: 2201 movs r2, #1 - 8002f50: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8002f52: f7fd fdd1 bl 8000af8 - 8002f56: 6138 str r0, [r7, #16] - - /* Wait till PLL is ready */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8002f58: e008 b.n 8002f6c - { - if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8002f5a: f7fd fdcd bl 8000af8 - 8002f5e: 4602 mov r2, r0 - 8002f60: 693b ldr r3, [r7, #16] - 8002f62: 1ad3 subs r3, r2, r3 - 8002f64: 2b02 cmp r3, #2 - 8002f66: d901 bls.n 8002f6c - { - return HAL_TIMEOUT; - 8002f68: 2303 movs r3, #3 - 8002f6a: e03d b.n 8002fe8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8002f6c: 4b11 ldr r3, [pc, #68] @ (8002fb4 ) - 8002f6e: 681b ldr r3, [r3, #0] - 8002f70: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 8002f74: 2b00 cmp r3, #0 - 8002f76: d0f0 beq.n 8002f5a - 8002f78: e035 b.n 8002fe6 - } - } - else - { - /* Disable the main PLL. */ - __HAL_RCC_PLL_DISABLE(); - 8002f7a: 4b10 ldr r3, [pc, #64] @ (8002fbc ) - 8002f7c: 2200 movs r2, #0 - 8002f7e: 601a str r2, [r3, #0] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8002f80: f7fd fdba bl 8000af8 - 8002f84: 6138 str r0, [r7, #16] - - /* Wait till PLL is disabled */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8002f86: e008 b.n 8002f9a - { - if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8002f88: f7fd fdb6 bl 8000af8 - 8002f8c: 4602 mov r2, r0 - 8002f8e: 693b ldr r3, [r7, #16] - 8002f90: 1ad3 subs r3, r2, r3 - 8002f92: 2b02 cmp r3, #2 - 8002f94: d901 bls.n 8002f9a - { - return HAL_TIMEOUT; - 8002f96: 2303 movs r3, #3 - 8002f98: e026 b.n 8002fe8 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 8002f9a: 4b06 ldr r3, [pc, #24] @ (8002fb4 ) - 8002f9c: 681b ldr r3, [r3, #0] - 8002f9e: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 8002fa2: 2b00 cmp r3, #0 - 8002fa4: d1f0 bne.n 8002f88 - 8002fa6: e01e b.n 8002fe6 - } - } - else - { - /* Check if there is a request to disable the PLL used as System clock source */ - if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) - 8002fa8: 687b ldr r3, [r7, #4] - 8002faa: 69db ldr r3, [r3, #28] - 8002fac: 2b01 cmp r3, #1 - 8002fae: d107 bne.n 8002fc0 - { - return HAL_ERROR; - 8002fb0: 2301 movs r3, #1 - 8002fb2: e019 b.n 8002fe8 - 8002fb4: 40021000 .word 0x40021000 - 8002fb8: 40007000 .word 0x40007000 - 8002fbc: 42420060 .word 0x42420060 - } - else - { - /* Do not return HAL_ERROR if request repeats the current configuration */ - pll_config = RCC->CFGR; - 8002fc0: 4b0b ldr r3, [pc, #44] @ (8002ff0 ) - 8002fc2: 685b ldr r3, [r3, #4] - 8002fc4: 60fb str r3, [r7, #12] - if ((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8002fc6: 68fb ldr r3, [r7, #12] - 8002fc8: f403 3280 and.w r2, r3, #65536 @ 0x10000 - 8002fcc: 687b ldr r3, [r7, #4] - 8002fce: 6a1b ldr r3, [r3, #32] - 8002fd0: 429a cmp r2, r3 - 8002fd2: d106 bne.n 8002fe2 - (READ_BIT(pll_config, RCC_CFGR_PLLMULL) != RCC_OscInitStruct->PLL.PLLMUL)) - 8002fd4: 68fb ldr r3, [r7, #12] - 8002fd6: f403 1270 and.w r2, r3, #3932160 @ 0x3c0000 - 8002fda: 687b ldr r3, [r7, #4] - 8002fdc: 6a5b ldr r3, [r3, #36] @ 0x24 - if ((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8002fde: 429a cmp r2, r3 - 8002fe0: d001 beq.n 8002fe6 - { - return HAL_ERROR; - 8002fe2: 2301 movs r3, #1 - 8002fe4: e000 b.n 8002fe8 - } - } - } - } - - return HAL_OK; - 8002fe6: 2300 movs r3, #0 -} - 8002fe8: 4618 mov r0, r3 - 8002fea: 3718 adds r7, #24 - 8002fec: 46bd mov sp, r7 - 8002fee: bd80 pop {r7, pc} - 8002ff0: 40021000 .word 0x40021000 - -08002ff4 : - * You can use @ref HAL_RCC_GetClockConfig() function to know which clock is - * currently used as system clock source. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) -{ - 8002ff4: b580 push {r7, lr} - 8002ff6: b084 sub sp, #16 - 8002ff8: af00 add r7, sp, #0 - 8002ffa: 6078 str r0, [r7, #4] - 8002ffc: 6039 str r1, [r7, #0] - uint32_t tickstart; - - /* Check Null pointer */ - if (RCC_ClkInitStruct == NULL) - 8002ffe: 687b ldr r3, [r7, #4] - 8003000: 2b00 cmp r3, #0 - 8003002: d101 bne.n 8003008 - { - return HAL_ERROR; - 8003004: 2301 movs r3, #1 - 8003006: e0d0 b.n 80031aa - must be correctly programmed according to the frequency of the CPU clock - (HCLK) of the device. */ - -#if defined(FLASH_ACR_LATENCY) - /* Increasing the number of wait states because of higher CPU frequency */ - if (FLatency > __HAL_FLASH_GET_LATENCY()) - 8003008: 4b6a ldr r3, [pc, #424] @ (80031b4 ) - 800300a: 681b ldr r3, [r3, #0] - 800300c: f003 0307 and.w r3, r3, #7 - 8003010: 683a ldr r2, [r7, #0] - 8003012: 429a cmp r2, r3 - 8003014: d910 bls.n 8003038 - { - /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ - __HAL_FLASH_SET_LATENCY(FLatency); - 8003016: 4b67 ldr r3, [pc, #412] @ (80031b4 ) - 8003018: 681b ldr r3, [r3, #0] - 800301a: f023 0207 bic.w r2, r3, #7 - 800301e: 4965 ldr r1, [pc, #404] @ (80031b4 ) - 8003020: 683b ldr r3, [r7, #0] - 8003022: 4313 orrs r3, r2 - 8003024: 600b str r3, [r1, #0] - - /* Check that the new number of wait states is taken into account to access the Flash - memory by reading the FLASH_ACR register */ - if (__HAL_FLASH_GET_LATENCY() != FLatency) - 8003026: 4b63 ldr r3, [pc, #396] @ (80031b4 ) - 8003028: 681b ldr r3, [r3, #0] - 800302a: f003 0307 and.w r3, r3, #7 - 800302e: 683a ldr r2, [r7, #0] - 8003030: 429a cmp r2, r3 - 8003032: d001 beq.n 8003038 - { - return HAL_ERROR; - 8003034: 2301 movs r3, #1 - 8003036: e0b8 b.n 80031aa - } -} - -#endif /* FLASH_ACR_LATENCY */ -/*-------------------------- HCLK Configuration --------------------------*/ -if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) - 8003038: 687b ldr r3, [r7, #4] - 800303a: 681b ldr r3, [r3, #0] - 800303c: f003 0302 and.w r3, r3, #2 - 8003040: 2b00 cmp r3, #0 - 8003042: d020 beq.n 8003086 - { - /* 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) - 8003044: 687b ldr r3, [r7, #4] - 8003046: 681b ldr r3, [r3, #0] - 8003048: f003 0304 and.w r3, r3, #4 - 800304c: 2b00 cmp r3, #0 - 800304e: d005 beq.n 800305c - { - MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16); - 8003050: 4b59 ldr r3, [pc, #356] @ (80031b8 ) - 8003052: 685b ldr r3, [r3, #4] - 8003054: 4a58 ldr r2, [pc, #352] @ (80031b8 ) - 8003056: f443 63e0 orr.w r3, r3, #1792 @ 0x700 - 800305a: 6053 str r3, [r2, #4] - } - - if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 800305c: 687b ldr r3, [r7, #4] - 800305e: 681b ldr r3, [r3, #0] - 8003060: f003 0308 and.w r3, r3, #8 - 8003064: 2b00 cmp r3, #0 - 8003066: d005 beq.n 8003074 - { - MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3)); - 8003068: 4b53 ldr r3, [pc, #332] @ (80031b8 ) - 800306a: 685b ldr r3, [r3, #4] - 800306c: 4a52 ldr r2, [pc, #328] @ (80031b8 ) - 800306e: f443 5360 orr.w r3, r3, #14336 @ 0x3800 - 8003072: 6053 str r3, [r2, #4] - } - - /* Set the new HCLK clock divider */ - assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); - MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); - 8003074: 4b50 ldr r3, [pc, #320] @ (80031b8 ) - 8003076: 685b ldr r3, [r3, #4] - 8003078: f023 02f0 bic.w r2, r3, #240 @ 0xf0 - 800307c: 687b ldr r3, [r7, #4] - 800307e: 689b ldr r3, [r3, #8] - 8003080: 494d ldr r1, [pc, #308] @ (80031b8 ) - 8003082: 4313 orrs r3, r2 - 8003084: 604b str r3, [r1, #4] - } - - /*------------------------- SYSCLK Configuration ---------------------------*/ - if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) - 8003086: 687b ldr r3, [r7, #4] - 8003088: 681b ldr r3, [r3, #0] - 800308a: f003 0301 and.w r3, r3, #1 - 800308e: 2b00 cmp r3, #0 - 8003090: d040 beq.n 8003114 - { - assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); - - /* HSE is selected as System Clock Source */ - if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) - 8003092: 687b ldr r3, [r7, #4] - 8003094: 685b ldr r3, [r3, #4] - 8003096: 2b01 cmp r3, #1 - 8003098: d107 bne.n 80030aa - { - /* Check the HSE ready flag */ - if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 800309a: 4b47 ldr r3, [pc, #284] @ (80031b8 ) - 800309c: 681b ldr r3, [r3, #0] - 800309e: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 80030a2: 2b00 cmp r3, #0 - 80030a4: d115 bne.n 80030d2 - { - return HAL_ERROR; - 80030a6: 2301 movs r3, #1 - 80030a8: e07f b.n 80031aa - } - } - /* PLL is selected as System Clock Source */ - else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) - 80030aa: 687b ldr r3, [r7, #4] - 80030ac: 685b ldr r3, [r3, #4] - 80030ae: 2b02 cmp r3, #2 - 80030b0: d107 bne.n 80030c2 - { - /* Check the PLL ready flag */ - if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 80030b2: 4b41 ldr r3, [pc, #260] @ (80031b8 ) - 80030b4: 681b ldr r3, [r3, #0] - 80030b6: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 80030ba: 2b00 cmp r3, #0 - 80030bc: d109 bne.n 80030d2 - { - return HAL_ERROR; - 80030be: 2301 movs r3, #1 - 80030c0: e073 b.n 80031aa - } - /* HSI is selected as System Clock Source */ - else - { - /* Check the HSI ready flag */ - if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 80030c2: 4b3d ldr r3, [pc, #244] @ (80031b8 ) - 80030c4: 681b ldr r3, [r3, #0] - 80030c6: f003 0302 and.w r3, r3, #2 - 80030ca: 2b00 cmp r3, #0 - 80030cc: d101 bne.n 80030d2 - { - return HAL_ERROR; - 80030ce: 2301 movs r3, #1 - 80030d0: e06b b.n 80031aa - } - } - __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); - 80030d2: 4b39 ldr r3, [pc, #228] @ (80031b8 ) - 80030d4: 685b ldr r3, [r3, #4] - 80030d6: f023 0203 bic.w r2, r3, #3 - 80030da: 687b ldr r3, [r7, #4] - 80030dc: 685b ldr r3, [r3, #4] - 80030de: 4936 ldr r1, [pc, #216] @ (80031b8 ) - 80030e0: 4313 orrs r3, r2 - 80030e2: 604b str r3, [r1, #4] - - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 80030e4: f7fd fd08 bl 8000af8 - 80030e8: 60f8 str r0, [r7, #12] - - while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 80030ea: e00a b.n 8003102 - { - if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 80030ec: f7fd fd04 bl 8000af8 - 80030f0: 4602 mov r2, r0 - 80030f2: 68fb ldr r3, [r7, #12] - 80030f4: 1ad3 subs r3, r2, r3 - 80030f6: f241 3288 movw r2, #5000 @ 0x1388 - 80030fa: 4293 cmp r3, r2 - 80030fc: d901 bls.n 8003102 - { - return HAL_TIMEOUT; - 80030fe: 2303 movs r3, #3 - 8003100: e053 b.n 80031aa - while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8003102: 4b2d ldr r3, [pc, #180] @ (80031b8 ) - 8003104: 685b ldr r3, [r3, #4] - 8003106: f003 020c and.w r2, r3, #12 - 800310a: 687b ldr r3, [r7, #4] - 800310c: 685b ldr r3, [r3, #4] - 800310e: 009b lsls r3, r3, #2 - 8003110: 429a cmp r2, r3 - 8003112: d1eb bne.n 80030ec - } - } - -#if defined(FLASH_ACR_LATENCY) - /* Decreasing the number of wait states because of lower CPU frequency */ - if (FLatency < __HAL_FLASH_GET_LATENCY()) - 8003114: 4b27 ldr r3, [pc, #156] @ (80031b4 ) - 8003116: 681b ldr r3, [r3, #0] - 8003118: f003 0307 and.w r3, r3, #7 - 800311c: 683a ldr r2, [r7, #0] - 800311e: 429a cmp r2, r3 - 8003120: d210 bcs.n 8003144 - { - /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ - __HAL_FLASH_SET_LATENCY(FLatency); - 8003122: 4b24 ldr r3, [pc, #144] @ (80031b4 ) - 8003124: 681b ldr r3, [r3, #0] - 8003126: f023 0207 bic.w r2, r3, #7 - 800312a: 4922 ldr r1, [pc, #136] @ (80031b4 ) - 800312c: 683b ldr r3, [r7, #0] - 800312e: 4313 orrs r3, r2 - 8003130: 600b str r3, [r1, #0] - - /* Check that the new number of wait states is taken into account to access the Flash - memory by reading the FLASH_ACR register */ - if (__HAL_FLASH_GET_LATENCY() != FLatency) - 8003132: 4b20 ldr r3, [pc, #128] @ (80031b4 ) - 8003134: 681b ldr r3, [r3, #0] - 8003136: f003 0307 and.w r3, r3, #7 - 800313a: 683a ldr r2, [r7, #0] - 800313c: 429a cmp r2, r3 - 800313e: d001 beq.n 8003144 - { - return HAL_ERROR; - 8003140: 2301 movs r3, #1 - 8003142: e032 b.n 80031aa - } -} -#endif /* FLASH_ACR_LATENCY */ - -/*-------------------------- PCLK1 Configuration ---------------------------*/ -if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8003144: 687b ldr r3, [r7, #4] - 8003146: 681b ldr r3, [r3, #0] - 8003148: f003 0304 and.w r3, r3, #4 - 800314c: 2b00 cmp r3, #0 - 800314e: d008 beq.n 8003162 - { - assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); - MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); - 8003150: 4b19 ldr r3, [pc, #100] @ (80031b8 ) - 8003152: 685b ldr r3, [r3, #4] - 8003154: f423 62e0 bic.w r2, r3, #1792 @ 0x700 - 8003158: 687b ldr r3, [r7, #4] - 800315a: 68db ldr r3, [r3, #12] - 800315c: 4916 ldr r1, [pc, #88] @ (80031b8 ) - 800315e: 4313 orrs r3, r2 - 8003160: 604b str r3, [r1, #4] - } - - /*-------------------------- PCLK2 Configuration ---------------------------*/ - if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 8003162: 687b ldr r3, [r7, #4] - 8003164: 681b ldr r3, [r3, #0] - 8003166: f003 0308 and.w r3, r3, #8 - 800316a: 2b00 cmp r3, #0 - 800316c: d009 beq.n 8003182 - { - assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); - MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3)); - 800316e: 4b12 ldr r3, [pc, #72] @ (80031b8 ) - 8003170: 685b ldr r3, [r3, #4] - 8003172: f423 5260 bic.w r2, r3, #14336 @ 0x3800 - 8003176: 687b ldr r3, [r7, #4] - 8003178: 691b ldr r3, [r3, #16] - 800317a: 00db lsls r3, r3, #3 - 800317c: 490e ldr r1, [pc, #56] @ (80031b8 ) - 800317e: 4313 orrs r3, r2 - 8003180: 604b str r3, [r1, #4] - } - - /* Update the SystemCoreClock global variable */ - SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]; - 8003182: f000 f821 bl 80031c8 - 8003186: 4602 mov r2, r0 - 8003188: 4b0b ldr r3, [pc, #44] @ (80031b8 ) - 800318a: 685b ldr r3, [r3, #4] - 800318c: 091b lsrs r3, r3, #4 - 800318e: f003 030f and.w r3, r3, #15 - 8003192: 490a ldr r1, [pc, #40] @ (80031bc ) - 8003194: 5ccb ldrb r3, [r1, r3] - 8003196: fa22 f303 lsr.w r3, r2, r3 - 800319a: 4a09 ldr r2, [pc, #36] @ (80031c0 ) - 800319c: 6013 str r3, [r2, #0] - - /* Configure the source of time base considering new system clocks settings*/ - HAL_InitTick(uwTickPrio); - 800319e: 4b09 ldr r3, [pc, #36] @ (80031c4 ) - 80031a0: 681b ldr r3, [r3, #0] - 80031a2: 4618 mov r0, r3 - 80031a4: f7fd fc66 bl 8000a74 - - return HAL_OK; - 80031a8: 2300 movs r3, #0 -} - 80031aa: 4618 mov r0, r3 - 80031ac: 3710 adds r7, #16 - 80031ae: 46bd mov sp, r7 - 80031b0: bd80 pop {r7, pc} - 80031b2: bf00 nop - 80031b4: 40022000 .word 0x40022000 - 80031b8: 40021000 .word 0x40021000 - 80031bc: 080091e4 .word 0x080091e4 - 80031c0: 20000000 .word 0x20000000 - 80031c4: 20000004 .word 0x20000004 - -080031c8 : - * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. - * - * @retval SYSCLK frequency - */ -uint32_t HAL_RCC_GetSysClockFreq(void) -{ - 80031c8: b480 push {r7} - 80031ca: b087 sub sp, #28 - 80031cc: af00 add r7, sp, #0 -#else - static const uint8_t aPredivFactorTable[2U] = {1, 2}; -#endif /*RCC_CFGR2_PREDIV1*/ - -#endif - uint32_t tmpreg = 0U, prediv = 0U, pllclk = 0U, pllmul = 0U; - 80031ce: 2300 movs r3, #0 - 80031d0: 60fb str r3, [r7, #12] - 80031d2: 2300 movs r3, #0 - 80031d4: 60bb str r3, [r7, #8] - 80031d6: 2300 movs r3, #0 - 80031d8: 617b str r3, [r7, #20] - 80031da: 2300 movs r3, #0 - 80031dc: 607b str r3, [r7, #4] - uint32_t sysclockfreq = 0U; - 80031de: 2300 movs r3, #0 - 80031e0: 613b str r3, [r7, #16] -#if defined(RCC_CFGR2_PREDIV1SRC) - uint32_t prediv2 = 0U, pll2mul = 0U; -#endif /*RCC_CFGR2_PREDIV1SRC*/ - - tmpreg = RCC->CFGR; - 80031e2: 4b1e ldr r3, [pc, #120] @ (800325c ) - 80031e4: 685b ldr r3, [r3, #4] - 80031e6: 60fb str r3, [r7, #12] - - /* Get SYSCLK source -------------------------------------------------------*/ - switch (tmpreg & RCC_CFGR_SWS) - 80031e8: 68fb ldr r3, [r7, #12] - 80031ea: f003 030c and.w r3, r3, #12 - 80031ee: 2b04 cmp r3, #4 - 80031f0: d002 beq.n 80031f8 - 80031f2: 2b08 cmp r3, #8 - 80031f4: d003 beq.n 80031fe - 80031f6: e027 b.n 8003248 - { - case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ - { - sysclockfreq = HSE_VALUE; - 80031f8: 4b19 ldr r3, [pc, #100] @ (8003260 ) - 80031fa: 613b str r3, [r7, #16] - break; - 80031fc: e027 b.n 800324e - } - case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ - { - pllmul = aPLLMULFactorTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMULL) >> RCC_CFGR_PLLMULL_Pos]; - 80031fe: 68fb ldr r3, [r7, #12] - 8003200: 0c9b lsrs r3, r3, #18 - 8003202: f003 030f and.w r3, r3, #15 - 8003206: 4a17 ldr r2, [pc, #92] @ (8003264 ) - 8003208: 5cd3 ldrb r3, [r2, r3] - 800320a: 607b str r3, [r7, #4] - if ((tmpreg & RCC_CFGR_PLLSRC) != RCC_PLLSOURCE_HSI_DIV2) - 800320c: 68fb ldr r3, [r7, #12] - 800320e: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 8003212: 2b00 cmp r3, #0 - 8003214: d010 beq.n 8003238 - { -#if defined(RCC_CFGR2_PREDIV1) - prediv = aPredivFactorTable[(uint32_t)(RCC->CFGR2 & RCC_CFGR2_PREDIV1) >> RCC_CFGR2_PREDIV1_Pos]; -#else - prediv = aPredivFactorTable[(uint32_t)(RCC->CFGR & RCC_CFGR_PLLXTPRE) >> RCC_CFGR_PLLXTPRE_Pos]; - 8003216: 4b11 ldr r3, [pc, #68] @ (800325c ) - 8003218: 685b ldr r3, [r3, #4] - 800321a: 0c5b lsrs r3, r3, #17 - 800321c: f003 0301 and.w r3, r3, #1 - 8003220: 4a11 ldr r2, [pc, #68] @ (8003268 ) - 8003222: 5cd3 ldrb r3, [r2, r3] - 8003224: 60bb str r3, [r7, #8] - { - pllclk = pllclk / 2; - } -#else - /* HSE used as PLL clock source : PLLCLK = HSE/PREDIV1 * PLLMUL */ - pllclk = (uint32_t)((HSE_VALUE * pllmul) / prediv); - 8003226: 687b ldr r3, [r7, #4] - 8003228: 4a0d ldr r2, [pc, #52] @ (8003260 ) - 800322a: fb03 f202 mul.w r2, r3, r2 - 800322e: 68bb ldr r3, [r7, #8] - 8003230: fbb2 f3f3 udiv r3, r2, r3 - 8003234: 617b str r3, [r7, #20] - 8003236: e004 b.n 8003242 -#endif /*RCC_CFGR2_PREDIV1SRC*/ - } - else - { - /* HSI used as PLL clock source : PLLCLK = HSI/2 * PLLMUL */ - pllclk = (uint32_t)((HSI_VALUE >> 1) * pllmul); - 8003238: 687b ldr r3, [r7, #4] - 800323a: 4a0c ldr r2, [pc, #48] @ (800326c ) - 800323c: fb02 f303 mul.w r3, r2, r3 - 8003240: 617b str r3, [r7, #20] - } - sysclockfreq = pllclk; - 8003242: 697b ldr r3, [r7, #20] - 8003244: 613b str r3, [r7, #16] - break; - 8003246: e002 b.n 800324e - } - case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ - default: /* HSI used as system clock */ - { - sysclockfreq = HSI_VALUE; - 8003248: 4b05 ldr r3, [pc, #20] @ (8003260 ) - 800324a: 613b str r3, [r7, #16] - break; - 800324c: bf00 nop - } - } - return sysclockfreq; - 800324e: 693b ldr r3, [r7, #16] -} - 8003250: 4618 mov r0, r3 - 8003252: 371c adds r7, #28 - 8003254: 46bd mov sp, r7 - 8003256: bc80 pop {r7} - 8003258: 4770 bx lr - 800325a: bf00 nop - 800325c: 40021000 .word 0x40021000 - 8003260: 007a1200 .word 0x007a1200 - 8003264: 080091f4 .word 0x080091f4 - 8003268: 08009204 .word 0x08009204 - 800326c: 003d0900 .word 0x003d0900 - -08003270 : - * @brief This function provides delay (in milliseconds) based on CPU cycles method. - * @param mdelay: specifies the delay time length, in milliseconds. - * @retval None - */ -static void RCC_Delay(uint32_t mdelay) -{ - 8003270: b480 push {r7} - 8003272: b085 sub sp, #20 - 8003274: af00 add r7, sp, #0 - 8003276: 6078 str r0, [r7, #4] - __IO uint32_t Delay = mdelay * (SystemCoreClock / 8U / 1000U); - 8003278: 4b0a ldr r3, [pc, #40] @ (80032a4 ) - 800327a: 681b ldr r3, [r3, #0] - 800327c: 4a0a ldr r2, [pc, #40] @ (80032a8 ) - 800327e: fba2 2303 umull r2, r3, r2, r3 - 8003282: 0a5b lsrs r3, r3, #9 - 8003284: 687a ldr r2, [r7, #4] - 8003286: fb02 f303 mul.w r3, r2, r3 - 800328a: 60fb str r3, [r7, #12] - do - { - __NOP(); - 800328c: bf00 nop - } - while (Delay --); - 800328e: 68fb ldr r3, [r7, #12] - 8003290: 1e5a subs r2, r3, #1 - 8003292: 60fa str r2, [r7, #12] - 8003294: 2b00 cmp r3, #0 - 8003296: d1f9 bne.n 800328c -} - 8003298: bf00 nop - 800329a: bf00 nop - 800329c: 3714 adds r7, #20 - 800329e: 46bd mov sp, r7 - 80032a0: bc80 pop {r7} - 80032a2: 4770 bx lr - 80032a4: 20000000 .word 0x20000000 - 80032a8: 10624dd3 .word 0x10624dd3 - -080032ac : - * manually disable it. - * - * @retval HAL status - */ -HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) -{ - 80032ac: b580 push {r7, lr} - 80032ae: b086 sub sp, #24 - 80032b0: af00 add r7, sp, #0 - 80032b2: 6078 str r0, [r7, #4] - uint32_t tickstart = 0U, temp_reg = 0U; - 80032b4: 2300 movs r3, #0 - 80032b6: 613b str r3, [r7, #16] - 80032b8: 2300 movs r3, #0 - 80032ba: 60fb str r3, [r7, #12] - - /* Check the parameters */ - assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); - - /*------------------------------- RTC/LCD Configuration ------------------------*/ - if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) - 80032bc: 687b ldr r3, [r7, #4] - 80032be: 681b ldr r3, [r3, #0] - 80032c0: f003 0301 and.w r3, r3, #1 - 80032c4: 2b00 cmp r3, #0 - 80032c6: d07d beq.n 80033c4 - { - FlagStatus pwrclkchanged = RESET; - 80032c8: 2300 movs r3, #0 - 80032ca: 75fb strb r3, [r7, #23] - assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); - - /* As soon as function is called to change RTC clock source, activation of the - power domain is done. */ - /* Requires to enable write access to Backup Domain of necessary */ - if (__HAL_RCC_PWR_IS_CLK_DISABLED()) - 80032cc: 4b4f ldr r3, [pc, #316] @ (800340c ) - 80032ce: 69db ldr r3, [r3, #28] - 80032d0: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 80032d4: 2b00 cmp r3, #0 - 80032d6: d10d bne.n 80032f4 - { - __HAL_RCC_PWR_CLK_ENABLE(); - 80032d8: 4b4c ldr r3, [pc, #304] @ (800340c ) - 80032da: 69db ldr r3, [r3, #28] - 80032dc: 4a4b ldr r2, [pc, #300] @ (800340c ) - 80032de: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 80032e2: 61d3 str r3, [r2, #28] - 80032e4: 4b49 ldr r3, [pc, #292] @ (800340c ) - 80032e6: 69db ldr r3, [r3, #28] - 80032e8: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 80032ec: 60bb str r3, [r7, #8] - 80032ee: 68bb ldr r3, [r7, #8] - pwrclkchanged = SET; - 80032f0: 2301 movs r3, #1 - 80032f2: 75fb strb r3, [r7, #23] - } - - if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 80032f4: 4b46 ldr r3, [pc, #280] @ (8003410 ) - 80032f6: 681b ldr r3, [r3, #0] - 80032f8: f403 7380 and.w r3, r3, #256 @ 0x100 - 80032fc: 2b00 cmp r3, #0 - 80032fe: d118 bne.n 8003332 - { - /* Enable write access to Backup domain */ - SET_BIT(PWR->CR, PWR_CR_DBP); - 8003300: 4b43 ldr r3, [pc, #268] @ (8003410 ) - 8003302: 681b ldr r3, [r3, #0] - 8003304: 4a42 ldr r2, [pc, #264] @ (8003410 ) - 8003306: f443 7380 orr.w r3, r3, #256 @ 0x100 - 800330a: 6013 str r3, [r2, #0] - - /* Wait for Backup domain Write protection disable */ - tickstart = HAL_GetTick(); - 800330c: f7fd fbf4 bl 8000af8 - 8003310: 6138 str r0, [r7, #16] - - while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8003312: e008 b.n 8003326 - { - if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 8003314: f7fd fbf0 bl 8000af8 - 8003318: 4602 mov r2, r0 - 800331a: 693b ldr r3, [r7, #16] - 800331c: 1ad3 subs r3, r2, r3 - 800331e: 2b64 cmp r3, #100 @ 0x64 - 8003320: d901 bls.n 8003326 - { - return HAL_TIMEOUT; - 8003322: 2303 movs r3, #3 - 8003324: e06d b.n 8003402 - while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 8003326: 4b3a ldr r3, [pc, #232] @ (8003410 ) - 8003328: 681b ldr r3, [r3, #0] - 800332a: f403 7380 and.w r3, r3, #256 @ 0x100 - 800332e: 2b00 cmp r3, #0 - 8003330: d0f0 beq.n 8003314 - } - } - } - - /* Reset the Backup domain only if the RTC Clock source selection is modified from reset value */ - temp_reg = (RCC->BDCR & RCC_BDCR_RTCSEL); - 8003332: 4b36 ldr r3, [pc, #216] @ (800340c ) - 8003334: 6a1b ldr r3, [r3, #32] - 8003336: f403 7340 and.w r3, r3, #768 @ 0x300 - 800333a: 60fb str r3, [r7, #12] - if ((temp_reg != 0x00000000U) && (temp_reg != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL))) - 800333c: 68fb ldr r3, [r7, #12] - 800333e: 2b00 cmp r3, #0 - 8003340: d02e beq.n 80033a0 - 8003342: 687b ldr r3, [r7, #4] - 8003344: 685b ldr r3, [r3, #4] - 8003346: f403 7340 and.w r3, r3, #768 @ 0x300 - 800334a: 68fa ldr r2, [r7, #12] - 800334c: 429a cmp r2, r3 - 800334e: d027 beq.n 80033a0 - { - /* Store the content of BDCR register before the reset of Backup Domain */ - temp_reg = (RCC->BDCR & ~(RCC_BDCR_RTCSEL)); - 8003350: 4b2e ldr r3, [pc, #184] @ (800340c ) - 8003352: 6a1b ldr r3, [r3, #32] - 8003354: f423 7340 bic.w r3, r3, #768 @ 0x300 - 8003358: 60fb str r3, [r7, #12] - /* RTC Clock selection can be changed only if the Backup Domain is reset */ - __HAL_RCC_BACKUPRESET_FORCE(); - 800335a: 4b2e ldr r3, [pc, #184] @ (8003414 ) - 800335c: 2201 movs r2, #1 - 800335e: 601a str r2, [r3, #0] - __HAL_RCC_BACKUPRESET_RELEASE(); - 8003360: 4b2c ldr r3, [pc, #176] @ (8003414 ) - 8003362: 2200 movs r2, #0 - 8003364: 601a str r2, [r3, #0] - /* Restore the Content of BDCR register */ - RCC->BDCR = temp_reg; - 8003366: 4a29 ldr r2, [pc, #164] @ (800340c ) - 8003368: 68fb ldr r3, [r7, #12] - 800336a: 6213 str r3, [r2, #32] - - /* Wait for LSERDY if LSE was enabled */ - if (HAL_IS_BIT_SET(temp_reg, RCC_BDCR_LSEON)) - 800336c: 68fb ldr r3, [r7, #12] - 800336e: f003 0301 and.w r3, r3, #1 - 8003372: 2b00 cmp r3, #0 - 8003374: d014 beq.n 80033a0 - { - /* Get Start Tick */ - tickstart = HAL_GetTick(); - 8003376: f7fd fbbf bl 8000af8 - 800337a: 6138 str r0, [r7, #16] - - /* Wait till LSE is ready */ - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 800337c: e00a b.n 8003394 - { - if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 800337e: f7fd fbbb bl 8000af8 - 8003382: 4602 mov r2, r0 - 8003384: 693b ldr r3, [r7, #16] - 8003386: 1ad3 subs r3, r2, r3 - 8003388: f241 3288 movw r2, #5000 @ 0x1388 - 800338c: 4293 cmp r3, r2 - 800338e: d901 bls.n 8003394 - { - return HAL_TIMEOUT; - 8003390: 2303 movs r3, #3 - 8003392: e036 b.n 8003402 - while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 8003394: 4b1d ldr r3, [pc, #116] @ (800340c ) - 8003396: 6a1b ldr r3, [r3, #32] - 8003398: f003 0302 and.w r3, r3, #2 - 800339c: 2b00 cmp r3, #0 - 800339e: d0ee beq.n 800337e - } - } - } - } - __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); - 80033a0: 4b1a ldr r3, [pc, #104] @ (800340c ) - 80033a2: 6a1b ldr r3, [r3, #32] - 80033a4: f423 7240 bic.w r2, r3, #768 @ 0x300 - 80033a8: 687b ldr r3, [r7, #4] - 80033aa: 685b ldr r3, [r3, #4] - 80033ac: 4917 ldr r1, [pc, #92] @ (800340c ) - 80033ae: 4313 orrs r3, r2 - 80033b0: 620b str r3, [r1, #32] - - /* Require to disable power clock if necessary */ - if (pwrclkchanged == SET) - 80033b2: 7dfb ldrb r3, [r7, #23] - 80033b4: 2b01 cmp r3, #1 - 80033b6: d105 bne.n 80033c4 - { - __HAL_RCC_PWR_CLK_DISABLE(); - 80033b8: 4b14 ldr r3, [pc, #80] @ (800340c ) - 80033ba: 69db ldr r3, [r3, #28] - 80033bc: 4a13 ldr r2, [pc, #76] @ (800340c ) - 80033be: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 - 80033c2: 61d3 str r3, [r2, #28] - } - } - - /*------------------------------ ADC clock Configuration ------------------*/ - if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) - 80033c4: 687b ldr r3, [r7, #4] - 80033c6: 681b ldr r3, [r3, #0] - 80033c8: f003 0302 and.w r3, r3, #2 - 80033cc: 2b00 cmp r3, #0 - 80033ce: d008 beq.n 80033e2 - { - /* Check the parameters */ - assert_param(IS_RCC_ADCPLLCLK_DIV(PeriphClkInit->AdcClockSelection)); - - /* Configure the ADC clock source */ - __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection); - 80033d0: 4b0e ldr r3, [pc, #56] @ (800340c ) - 80033d2: 685b ldr r3, [r3, #4] - 80033d4: f423 4240 bic.w r2, r3, #49152 @ 0xc000 - 80033d8: 687b ldr r3, [r7, #4] - 80033da: 689b ldr r3, [r3, #8] - 80033dc: 490b ldr r1, [pc, #44] @ (800340c ) - 80033de: 4313 orrs r3, r2 - 80033e0: 604b str r3, [r1, #4] - -#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\ - || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\ - || defined(STM32F105xC) || defined(STM32F107xC) - /*------------------------------ USB clock Configuration ------------------*/ - if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USB) == RCC_PERIPHCLK_USB) - 80033e2: 687b ldr r3, [r7, #4] - 80033e4: 681b ldr r3, [r3, #0] - 80033e6: f003 0310 and.w r3, r3, #16 - 80033ea: 2b00 cmp r3, #0 - 80033ec: d008 beq.n 8003400 - { - /* Check the parameters */ - assert_param(IS_RCC_USBPLLCLK_DIV(PeriphClkInit->UsbClockSelection)); - - /* Configure the USB clock source */ - __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection); - 80033ee: 4b07 ldr r3, [pc, #28] @ (800340c ) - 80033f0: 685b ldr r3, [r3, #4] - 80033f2: f423 0280 bic.w r2, r3, #4194304 @ 0x400000 - 80033f6: 687b ldr r3, [r7, #4] - 80033f8: 68db ldr r3, [r3, #12] - 80033fa: 4904 ldr r1, [pc, #16] @ (800340c ) - 80033fc: 4313 orrs r3, r2 - 80033fe: 604b str r3, [r1, #4] - } -#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */ - - return HAL_OK; - 8003400: 2300 movs r3, #0 -} - 8003402: 4618 mov r0, r3 - 8003404: 3718 adds r7, #24 - 8003406: 46bd mov sp, r7 - 8003408: bd80 pop {r7, pc} - 800340a: bf00 nop - 800340c: 40021000 .word 0x40021000 - 8003410: 40007000 .word 0x40007000 - 8003414: 42420440 .word 0x42420440 - -08003418 : - * 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) -{ - 8003418: b580 push {r7, lr} - 800341a: b082 sub sp, #8 - 800341c: af00 add r7, sp, #0 - 800341e: 6078 str r0, [r7, #4] - /* Check the TIM handle allocation */ - if (htim == NULL) - 8003420: 687b ldr r3, [r7, #4] - 8003422: 2b00 cmp r3, #0 - 8003424: d101 bne.n 800342a - { - return HAL_ERROR; - 8003426: 2301 movs r3, #1 - 8003428: e041 b.n 80034ae - assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); - assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); - assert_param(IS_TIM_PERIOD(htim->Init.Period)); - assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); - - if (htim->State == HAL_TIM_STATE_RESET) - 800342a: 687b ldr r3, [r7, #4] - 800342c: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 8003430: b2db uxtb r3, r3 - 8003432: 2b00 cmp r3, #0 - 8003434: d106 bne.n 8003444 - { - /* Allocate lock resource and initialize it */ - htim->Lock = HAL_UNLOCKED; - 8003436: 687b ldr r3, [r7, #4] - 8003438: 2200 movs r2, #0 - 800343a: 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); - 800343e: 6878 ldr r0, [r7, #4] - 8003440: f7fd f99e bl 8000780 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - - /* Set the TIM state */ - htim->State = HAL_TIM_STATE_BUSY; - 8003444: 687b ldr r3, [r7, #4] - 8003446: 2202 movs r2, #2 - 8003448: f883 203d strb.w r2, [r3, #61] @ 0x3d - - /* Set the Time Base configuration */ - TIM_Base_SetConfig(htim->Instance, &htim->Init); - 800344c: 687b ldr r3, [r7, #4] - 800344e: 681a ldr r2, [r3, #0] - 8003450: 687b ldr r3, [r7, #4] - 8003452: 3304 adds r3, #4 - 8003454: 4619 mov r1, r3 - 8003456: 4610 mov r0, r2 - 8003458: f000 fab2 bl 80039c0 - - /* Initialize the DMA burst operation state */ - htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 800345c: 687b ldr r3, [r7, #4] - 800345e: 2201 movs r2, #1 - 8003460: f883 2046 strb.w r2, [r3, #70] @ 0x46 - - /* Initialize the TIM channels state */ - TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8003464: 687b ldr r3, [r7, #4] - 8003466: 2201 movs r2, #1 - 8003468: f883 203e strb.w r2, [r3, #62] @ 0x3e - 800346c: 687b ldr r3, [r7, #4] - 800346e: 2201 movs r2, #1 - 8003470: f883 203f strb.w r2, [r3, #63] @ 0x3f - 8003474: 687b ldr r3, [r7, #4] - 8003476: 2201 movs r2, #1 - 8003478: f883 2040 strb.w r2, [r3, #64] @ 0x40 - 800347c: 687b ldr r3, [r7, #4] - 800347e: 2201 movs r2, #1 - 8003480: f883 2041 strb.w r2, [r3, #65] @ 0x41 - TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8003484: 687b ldr r3, [r7, #4] - 8003486: 2201 movs r2, #1 - 8003488: f883 2042 strb.w r2, [r3, #66] @ 0x42 - 800348c: 687b ldr r3, [r7, #4] - 800348e: 2201 movs r2, #1 - 8003490: f883 2043 strb.w r2, [r3, #67] @ 0x43 - 8003494: 687b ldr r3, [r7, #4] - 8003496: 2201 movs r2, #1 - 8003498: f883 2044 strb.w r2, [r3, #68] @ 0x44 - 800349c: 687b ldr r3, [r7, #4] - 800349e: 2201 movs r2, #1 - 80034a0: f883 2045 strb.w r2, [r3, #69] @ 0x45 - - /* Initialize the TIM state*/ - htim->State = HAL_TIM_STATE_READY; - 80034a4: 687b ldr r3, [r7, #4] - 80034a6: 2201 movs r2, #1 - 80034a8: f883 203d strb.w r2, [r3, #61] @ 0x3d - - return HAL_OK; - 80034ac: 2300 movs r3, #0 -} - 80034ae: 4618 mov r0, r3 - 80034b0: 3708 adds r7, #8 - 80034b2: 46bd mov sp, r7 - 80034b4: bd80 pop {r7, pc} - -080034b6 : - * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init() - * @param htim TIM PWM handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim) -{ - 80034b6: b580 push {r7, lr} - 80034b8: b082 sub sp, #8 - 80034ba: af00 add r7, sp, #0 - 80034bc: 6078 str r0, [r7, #4] - /* Check the TIM handle allocation */ - if (htim == NULL) - 80034be: 687b ldr r3, [r7, #4] - 80034c0: 2b00 cmp r3, #0 - 80034c2: d101 bne.n 80034c8 - { - return HAL_ERROR; - 80034c4: 2301 movs r3, #1 - 80034c6: e041 b.n 800354c - assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); - assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); - assert_param(IS_TIM_PERIOD(htim->Init.Period)); - assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); - - if (htim->State == HAL_TIM_STATE_RESET) - 80034c8: 687b ldr r3, [r7, #4] - 80034ca: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 80034ce: b2db uxtb r3, r3 - 80034d0: 2b00 cmp r3, #0 - 80034d2: d106 bne.n 80034e2 - { - /* Allocate lock resource and initialize it */ - htim->Lock = HAL_UNLOCKED; - 80034d4: 687b ldr r3, [r7, #4] - 80034d6: 2200 movs r2, #0 - 80034d8: f883 203c strb.w r2, [r3, #60] @ 0x3c - } - /* Init the low level hardware : GPIO, CLOCK, NVIC */ - htim->PWM_MspInitCallback(htim); -#else - /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ - HAL_TIM_PWM_MspInit(htim); - 80034dc: 6878 ldr r0, [r7, #4] - 80034de: f000 f839 bl 8003554 -#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ - } - - /* Set the TIM state */ - htim->State = HAL_TIM_STATE_BUSY; - 80034e2: 687b ldr r3, [r7, #4] - 80034e4: 2202 movs r2, #2 - 80034e6: f883 203d strb.w r2, [r3, #61] @ 0x3d - - /* Init the base time for the PWM */ - TIM_Base_SetConfig(htim->Instance, &htim->Init); - 80034ea: 687b ldr r3, [r7, #4] - 80034ec: 681a ldr r2, [r3, #0] - 80034ee: 687b ldr r3, [r7, #4] - 80034f0: 3304 adds r3, #4 - 80034f2: 4619 mov r1, r3 - 80034f4: 4610 mov r0, r2 - 80034f6: f000 fa63 bl 80039c0 - - /* Initialize the DMA burst operation state */ - htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 80034fa: 687b ldr r3, [r7, #4] - 80034fc: 2201 movs r2, #1 - 80034fe: f883 2046 strb.w r2, [r3, #70] @ 0x46 - - /* Initialize the TIM channels state */ - TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8003502: 687b ldr r3, [r7, #4] - 8003504: 2201 movs r2, #1 - 8003506: f883 203e strb.w r2, [r3, #62] @ 0x3e - 800350a: 687b ldr r3, [r7, #4] - 800350c: 2201 movs r2, #1 - 800350e: f883 203f strb.w r2, [r3, #63] @ 0x3f - 8003512: 687b ldr r3, [r7, #4] - 8003514: 2201 movs r2, #1 - 8003516: f883 2040 strb.w r2, [r3, #64] @ 0x40 - 800351a: 687b ldr r3, [r7, #4] - 800351c: 2201 movs r2, #1 - 800351e: f883 2041 strb.w r2, [r3, #65] @ 0x41 - TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8003522: 687b ldr r3, [r7, #4] - 8003524: 2201 movs r2, #1 - 8003526: f883 2042 strb.w r2, [r3, #66] @ 0x42 - 800352a: 687b ldr r3, [r7, #4] - 800352c: 2201 movs r2, #1 - 800352e: f883 2043 strb.w r2, [r3, #67] @ 0x43 - 8003532: 687b ldr r3, [r7, #4] - 8003534: 2201 movs r2, #1 - 8003536: f883 2044 strb.w r2, [r3, #68] @ 0x44 - 800353a: 687b ldr r3, [r7, #4] - 800353c: 2201 movs r2, #1 - 800353e: f883 2045 strb.w r2, [r3, #69] @ 0x45 - - /* Initialize the TIM state*/ - htim->State = HAL_TIM_STATE_READY; - 8003542: 687b ldr r3, [r7, #4] - 8003544: 2201 movs r2, #1 - 8003546: f883 203d strb.w r2, [r3, #61] @ 0x3d - - return HAL_OK; - 800354a: 2300 movs r3, #0 -} - 800354c: 4618 mov r0, r3 - 800354e: 3708 adds r7, #8 - 8003550: 46bd mov sp, r7 - 8003552: bd80 pop {r7, pc} - -08003554 : - * @brief Initializes the TIM PWM MSP. - * @param htim TIM PWM handle - * @retval None - */ -__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) -{ - 8003554: b480 push {r7} - 8003556: b083 sub sp, #12 - 8003558: af00 add r7, sp, #0 - 800355a: 6078 str r0, [r7, #4] - UNUSED(htim); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_TIM_PWM_MspInit could be implemented in the user file - */ -} - 800355c: bf00 nop - 800355e: 370c adds r7, #12 - 8003560: 46bd mov sp, r7 - 8003562: bc80 pop {r7} - 8003564: 4770 bx lr - ... - -08003568 : - * @arg TIM_CHANNEL_3: TIM Channel 3 selected - * @arg TIM_CHANNEL_4: TIM Channel 4 selected - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) -{ - 8003568: b580 push {r7, lr} - 800356a: b084 sub sp, #16 - 800356c: af00 add r7, sp, #0 - 800356e: 6078 str r0, [r7, #4] - 8003570: 6039 str r1, [r7, #0] - - /* Check the parameters */ - assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); - - /* Check the TIM channel state */ - if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) - 8003572: 683b ldr r3, [r7, #0] - 8003574: 2b00 cmp r3, #0 - 8003576: d109 bne.n 800358c - 8003578: 687b ldr r3, [r7, #4] - 800357a: f893 303e ldrb.w r3, [r3, #62] @ 0x3e - 800357e: b2db uxtb r3, r3 - 8003580: 2b01 cmp r3, #1 - 8003582: bf14 ite ne - 8003584: 2301 movne r3, #1 - 8003586: 2300 moveq r3, #0 - 8003588: b2db uxtb r3, r3 - 800358a: e022 b.n 80035d2 - 800358c: 683b ldr r3, [r7, #0] - 800358e: 2b04 cmp r3, #4 - 8003590: d109 bne.n 80035a6 - 8003592: 687b ldr r3, [r7, #4] - 8003594: f893 303f ldrb.w r3, [r3, #63] @ 0x3f - 8003598: b2db uxtb r3, r3 - 800359a: 2b01 cmp r3, #1 - 800359c: bf14 ite ne - 800359e: 2301 movne r3, #1 - 80035a0: 2300 moveq r3, #0 - 80035a2: b2db uxtb r3, r3 - 80035a4: e015 b.n 80035d2 - 80035a6: 683b ldr r3, [r7, #0] - 80035a8: 2b08 cmp r3, #8 - 80035aa: d109 bne.n 80035c0 - 80035ac: 687b ldr r3, [r7, #4] - 80035ae: f893 3040 ldrb.w r3, [r3, #64] @ 0x40 - 80035b2: b2db uxtb r3, r3 - 80035b4: 2b01 cmp r3, #1 - 80035b6: bf14 ite ne - 80035b8: 2301 movne r3, #1 - 80035ba: 2300 moveq r3, #0 - 80035bc: b2db uxtb r3, r3 - 80035be: e008 b.n 80035d2 - 80035c0: 687b ldr r3, [r7, #4] - 80035c2: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 - 80035c6: b2db uxtb r3, r3 - 80035c8: 2b01 cmp r3, #1 - 80035ca: bf14 ite ne - 80035cc: 2301 movne r3, #1 - 80035ce: 2300 moveq r3, #0 - 80035d0: b2db uxtb r3, r3 - 80035d2: 2b00 cmp r3, #0 - 80035d4: d001 beq.n 80035da - { - return HAL_ERROR; - 80035d6: 2301 movs r3, #1 - 80035d8: e05e b.n 8003698 - } - - /* Set the TIM channel state */ - TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); - 80035da: 683b ldr r3, [r7, #0] - 80035dc: 2b00 cmp r3, #0 - 80035de: d104 bne.n 80035ea - 80035e0: 687b ldr r3, [r7, #4] - 80035e2: 2202 movs r2, #2 - 80035e4: f883 203e strb.w r2, [r3, #62] @ 0x3e - 80035e8: e013 b.n 8003612 - 80035ea: 683b ldr r3, [r7, #0] - 80035ec: 2b04 cmp r3, #4 - 80035ee: d104 bne.n 80035fa - 80035f0: 687b ldr r3, [r7, #4] - 80035f2: 2202 movs r2, #2 - 80035f4: f883 203f strb.w r2, [r3, #63] @ 0x3f - 80035f8: e00b b.n 8003612 - 80035fa: 683b ldr r3, [r7, #0] - 80035fc: 2b08 cmp r3, #8 - 80035fe: d104 bne.n 800360a - 8003600: 687b ldr r3, [r7, #4] - 8003602: 2202 movs r2, #2 - 8003604: f883 2040 strb.w r2, [r3, #64] @ 0x40 - 8003608: e003 b.n 8003612 - 800360a: 687b ldr r3, [r7, #4] - 800360c: 2202 movs r2, #2 - 800360e: f883 2041 strb.w r2, [r3, #65] @ 0x41 - - /* Enable the Capture compare channel */ - TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); - 8003612: 687b ldr r3, [r7, #4] - 8003614: 681b ldr r3, [r3, #0] - 8003616: 2201 movs r2, #1 - 8003618: 6839 ldr r1, [r7, #0] - 800361a: 4618 mov r0, r3 - 800361c: f000 fc5c bl 8003ed8 - - if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) - 8003620: 687b ldr r3, [r7, #4] - 8003622: 681b ldr r3, [r3, #0] - 8003624: 4a1e ldr r2, [pc, #120] @ (80036a0 ) - 8003626: 4293 cmp r3, r2 - 8003628: d107 bne.n 800363a - { - /* Enable the main output */ - __HAL_TIM_MOE_ENABLE(htim); - 800362a: 687b ldr r3, [r7, #4] - 800362c: 681b ldr r3, [r3, #0] - 800362e: 6c5a ldr r2, [r3, #68] @ 0x44 - 8003630: 687b ldr r3, [r7, #4] - 8003632: 681b ldr r3, [r3, #0] - 8003634: f442 4200 orr.w r2, r2, #32768 @ 0x8000 - 8003638: 645a str r2, [r3, #68] @ 0x44 - } - - /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ - if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 800363a: 687b ldr r3, [r7, #4] - 800363c: 681b ldr r3, [r3, #0] - 800363e: 4a18 ldr r2, [pc, #96] @ (80036a0 ) - 8003640: 4293 cmp r3, r2 - 8003642: d00e beq.n 8003662 - 8003644: 687b ldr r3, [r7, #4] - 8003646: 681b ldr r3, [r3, #0] - 8003648: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 800364c: d009 beq.n 8003662 - 800364e: 687b ldr r3, [r7, #4] - 8003650: 681b ldr r3, [r3, #0] - 8003652: 4a14 ldr r2, [pc, #80] @ (80036a4 ) - 8003654: 4293 cmp r3, r2 - 8003656: d004 beq.n 8003662 - 8003658: 687b ldr r3, [r7, #4] - 800365a: 681b ldr r3, [r3, #0] - 800365c: 4a12 ldr r2, [pc, #72] @ (80036a8 ) - 800365e: 4293 cmp r3, r2 - 8003660: d111 bne.n 8003686 - { - tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; - 8003662: 687b ldr r3, [r7, #4] - 8003664: 681b ldr r3, [r3, #0] - 8003666: 689b ldr r3, [r3, #8] - 8003668: f003 0307 and.w r3, r3, #7 - 800366c: 60fb str r3, [r7, #12] - if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 800366e: 68fb ldr r3, [r7, #12] - 8003670: 2b06 cmp r3, #6 - 8003672: d010 beq.n 8003696 - { - __HAL_TIM_ENABLE(htim); - 8003674: 687b ldr r3, [r7, #4] - 8003676: 681b ldr r3, [r3, #0] - 8003678: 681a ldr r2, [r3, #0] - 800367a: 687b ldr r3, [r7, #4] - 800367c: 681b ldr r3, [r3, #0] - 800367e: f042 0201 orr.w r2, r2, #1 - 8003682: 601a str r2, [r3, #0] - if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 8003684: e007 b.n 8003696 - } - } - else - { - __HAL_TIM_ENABLE(htim); - 8003686: 687b ldr r3, [r7, #4] - 8003688: 681b ldr r3, [r3, #0] - 800368a: 681a ldr r2, [r3, #0] - 800368c: 687b ldr r3, [r7, #4] - 800368e: 681b ldr r3, [r3, #0] - 8003690: f042 0201 orr.w r2, r2, #1 - 8003694: 601a str r2, [r3, #0] - } - - /* Return function status */ - return HAL_OK; - 8003696: 2300 movs r3, #0 -} - 8003698: 4618 mov r0, r3 - 800369a: 3710 adds r7, #16 - 800369c: 46bd mov sp, r7 - 800369e: bd80 pop {r7, pc} - 80036a0: 40012c00 .word 0x40012c00 - 80036a4: 40000400 .word 0x40000400 - 80036a8: 40000800 .word 0x40000800 - -080036ac : - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, - const TIM_OC_InitTypeDef *sConfig, - uint32_t Channel) -{ - 80036ac: b580 push {r7, lr} - 80036ae: b086 sub sp, #24 - 80036b0: af00 add r7, sp, #0 - 80036b2: 60f8 str r0, [r7, #12] - 80036b4: 60b9 str r1, [r7, #8] - 80036b6: 607a str r2, [r7, #4] - HAL_StatusTypeDef status = HAL_OK; - 80036b8: 2300 movs r3, #0 - 80036ba: 75fb strb r3, [r7, #23] - assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); - assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); - assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); - - /* Process Locked */ - __HAL_LOCK(htim); - 80036bc: 68fb ldr r3, [r7, #12] - 80036be: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 80036c2: 2b01 cmp r3, #1 - 80036c4: d101 bne.n 80036ca - 80036c6: 2302 movs r3, #2 - 80036c8: e0ae b.n 8003828 - 80036ca: 68fb ldr r3, [r7, #12] - 80036cc: 2201 movs r2, #1 - 80036ce: f883 203c strb.w r2, [r3, #60] @ 0x3c - - switch (Channel) - 80036d2: 687b ldr r3, [r7, #4] - 80036d4: 2b0c cmp r3, #12 - 80036d6: f200 809f bhi.w 8003818 - 80036da: a201 add r2, pc, #4 @ (adr r2, 80036e0 ) - 80036dc: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80036e0: 08003715 .word 0x08003715 - 80036e4: 08003819 .word 0x08003819 - 80036e8: 08003819 .word 0x08003819 - 80036ec: 08003819 .word 0x08003819 - 80036f0: 08003755 .word 0x08003755 - 80036f4: 08003819 .word 0x08003819 - 80036f8: 08003819 .word 0x08003819 - 80036fc: 08003819 .word 0x08003819 - 8003700: 08003797 .word 0x08003797 - 8003704: 08003819 .word 0x08003819 - 8003708: 08003819 .word 0x08003819 - 800370c: 08003819 .word 0x08003819 - 8003710: 080037d7 .word 0x080037d7 - { - /* Check the parameters */ - assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); - - /* Configure the Channel 1 in PWM mode */ - TIM_OC1_SetConfig(htim->Instance, sConfig); - 8003714: 68fb ldr r3, [r7, #12] - 8003716: 681b ldr r3, [r3, #0] - 8003718: 68b9 ldr r1, [r7, #8] - 800371a: 4618 mov r0, r3 - 800371c: f000 f9be bl 8003a9c - - /* Set the Preload enable bit for channel1 */ - htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; - 8003720: 68fb ldr r3, [r7, #12] - 8003722: 681b ldr r3, [r3, #0] - 8003724: 699a ldr r2, [r3, #24] - 8003726: 68fb ldr r3, [r7, #12] - 8003728: 681b ldr r3, [r3, #0] - 800372a: f042 0208 orr.w r2, r2, #8 - 800372e: 619a str r2, [r3, #24] - - /* Configure the Output Fast mode */ - htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; - 8003730: 68fb ldr r3, [r7, #12] - 8003732: 681b ldr r3, [r3, #0] - 8003734: 699a ldr r2, [r3, #24] - 8003736: 68fb ldr r3, [r7, #12] - 8003738: 681b ldr r3, [r3, #0] - 800373a: f022 0204 bic.w r2, r2, #4 - 800373e: 619a str r2, [r3, #24] - htim->Instance->CCMR1 |= sConfig->OCFastMode; - 8003740: 68fb ldr r3, [r7, #12] - 8003742: 681b ldr r3, [r3, #0] - 8003744: 6999 ldr r1, [r3, #24] - 8003746: 68bb ldr r3, [r7, #8] - 8003748: 691a ldr r2, [r3, #16] - 800374a: 68fb ldr r3, [r7, #12] - 800374c: 681b ldr r3, [r3, #0] - 800374e: 430a orrs r2, r1 - 8003750: 619a str r2, [r3, #24] - break; - 8003752: e064 b.n 800381e - { - /* Check the parameters */ - assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); - - /* Configure the Channel 2 in PWM mode */ - TIM_OC2_SetConfig(htim->Instance, sConfig); - 8003754: 68fb ldr r3, [r7, #12] - 8003756: 681b ldr r3, [r3, #0] - 8003758: 68b9 ldr r1, [r7, #8] - 800375a: 4618 mov r0, r3 - 800375c: f000 fa04 bl 8003b68 - - /* Set the Preload enable bit for channel2 */ - htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; - 8003760: 68fb ldr r3, [r7, #12] - 8003762: 681b ldr r3, [r3, #0] - 8003764: 699a ldr r2, [r3, #24] - 8003766: 68fb ldr r3, [r7, #12] - 8003768: 681b ldr r3, [r3, #0] - 800376a: f442 6200 orr.w r2, r2, #2048 @ 0x800 - 800376e: 619a str r2, [r3, #24] - - /* Configure the Output Fast mode */ - htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; - 8003770: 68fb ldr r3, [r7, #12] - 8003772: 681b ldr r3, [r3, #0] - 8003774: 699a ldr r2, [r3, #24] - 8003776: 68fb ldr r3, [r7, #12] - 8003778: 681b ldr r3, [r3, #0] - 800377a: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 800377e: 619a str r2, [r3, #24] - htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; - 8003780: 68fb ldr r3, [r7, #12] - 8003782: 681b ldr r3, [r3, #0] - 8003784: 6999 ldr r1, [r3, #24] - 8003786: 68bb ldr r3, [r7, #8] - 8003788: 691b ldr r3, [r3, #16] - 800378a: 021a lsls r2, r3, #8 - 800378c: 68fb ldr r3, [r7, #12] - 800378e: 681b ldr r3, [r3, #0] - 8003790: 430a orrs r2, r1 - 8003792: 619a str r2, [r3, #24] - break; - 8003794: e043 b.n 800381e - { - /* Check the parameters */ - assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); - - /* Configure the Channel 3 in PWM mode */ - TIM_OC3_SetConfig(htim->Instance, sConfig); - 8003796: 68fb ldr r3, [r7, #12] - 8003798: 681b ldr r3, [r3, #0] - 800379a: 68b9 ldr r1, [r7, #8] - 800379c: 4618 mov r0, r3 - 800379e: f000 fa4d bl 8003c3c - - /* Set the Preload enable bit for channel3 */ - htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; - 80037a2: 68fb ldr r3, [r7, #12] - 80037a4: 681b ldr r3, [r3, #0] - 80037a6: 69da ldr r2, [r3, #28] - 80037a8: 68fb ldr r3, [r7, #12] - 80037aa: 681b ldr r3, [r3, #0] - 80037ac: f042 0208 orr.w r2, r2, #8 - 80037b0: 61da str r2, [r3, #28] - - /* Configure the Output Fast mode */ - htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; - 80037b2: 68fb ldr r3, [r7, #12] - 80037b4: 681b ldr r3, [r3, #0] - 80037b6: 69da ldr r2, [r3, #28] - 80037b8: 68fb ldr r3, [r7, #12] - 80037ba: 681b ldr r3, [r3, #0] - 80037bc: f022 0204 bic.w r2, r2, #4 - 80037c0: 61da str r2, [r3, #28] - htim->Instance->CCMR2 |= sConfig->OCFastMode; - 80037c2: 68fb ldr r3, [r7, #12] - 80037c4: 681b ldr r3, [r3, #0] - 80037c6: 69d9 ldr r1, [r3, #28] - 80037c8: 68bb ldr r3, [r7, #8] - 80037ca: 691a ldr r2, [r3, #16] - 80037cc: 68fb ldr r3, [r7, #12] - 80037ce: 681b ldr r3, [r3, #0] - 80037d0: 430a orrs r2, r1 - 80037d2: 61da str r2, [r3, #28] - break; - 80037d4: e023 b.n 800381e - { - /* Check the parameters */ - assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); - - /* Configure the Channel 4 in PWM mode */ - TIM_OC4_SetConfig(htim->Instance, sConfig); - 80037d6: 68fb ldr r3, [r7, #12] - 80037d8: 681b ldr r3, [r3, #0] - 80037da: 68b9 ldr r1, [r7, #8] - 80037dc: 4618 mov r0, r3 - 80037de: f000 fa97 bl 8003d10 - - /* Set the Preload enable bit for channel4 */ - htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; - 80037e2: 68fb ldr r3, [r7, #12] - 80037e4: 681b ldr r3, [r3, #0] - 80037e6: 69da ldr r2, [r3, #28] - 80037e8: 68fb ldr r3, [r7, #12] - 80037ea: 681b ldr r3, [r3, #0] - 80037ec: f442 6200 orr.w r2, r2, #2048 @ 0x800 - 80037f0: 61da str r2, [r3, #28] - - /* Configure the Output Fast mode */ - htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; - 80037f2: 68fb ldr r3, [r7, #12] - 80037f4: 681b ldr r3, [r3, #0] - 80037f6: 69da ldr r2, [r3, #28] - 80037f8: 68fb ldr r3, [r7, #12] - 80037fa: 681b ldr r3, [r3, #0] - 80037fc: f422 6280 bic.w r2, r2, #1024 @ 0x400 - 8003800: 61da str r2, [r3, #28] - htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; - 8003802: 68fb ldr r3, [r7, #12] - 8003804: 681b ldr r3, [r3, #0] - 8003806: 69d9 ldr r1, [r3, #28] - 8003808: 68bb ldr r3, [r7, #8] - 800380a: 691b ldr r3, [r3, #16] - 800380c: 021a lsls r2, r3, #8 - 800380e: 68fb ldr r3, [r7, #12] - 8003810: 681b ldr r3, [r3, #0] - 8003812: 430a orrs r2, r1 - 8003814: 61da str r2, [r3, #28] - break; - 8003816: e002 b.n 800381e - } - - default: - status = HAL_ERROR; - 8003818: 2301 movs r3, #1 - 800381a: 75fb strb r3, [r7, #23] - break; - 800381c: bf00 nop - } - - __HAL_UNLOCK(htim); - 800381e: 68fb ldr r3, [r7, #12] - 8003820: 2200 movs r2, #0 - 8003822: f883 203c strb.w r2, [r3, #60] @ 0x3c - - return status; - 8003826: 7dfb ldrb r3, [r7, #23] -} - 8003828: 4618 mov r0, r3 - 800382a: 3718 adds r7, #24 - 800382c: 46bd mov sp, r7 - 800382e: bd80 pop {r7, pc} - -08003830 : - * @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) -{ - 8003830: b580 push {r7, lr} - 8003832: b084 sub sp, #16 - 8003834: af00 add r7, sp, #0 - 8003836: 6078 str r0, [r7, #4] - 8003838: 6039 str r1, [r7, #0] - HAL_StatusTypeDef status = HAL_OK; - 800383a: 2300 movs r3, #0 - 800383c: 73fb strb r3, [r7, #15] - uint32_t tmpsmcr; - - /* Process Locked */ - __HAL_LOCK(htim); - 800383e: 687b ldr r3, [r7, #4] - 8003840: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8003844: 2b01 cmp r3, #1 - 8003846: d101 bne.n 800384c - 8003848: 2302 movs r3, #2 - 800384a: e0b4 b.n 80039b6 - 800384c: 687b ldr r3, [r7, #4] - 800384e: 2201 movs r2, #1 - 8003850: f883 203c strb.w r2, [r3, #60] @ 0x3c - - htim->State = HAL_TIM_STATE_BUSY; - 8003854: 687b ldr r3, [r7, #4] - 8003856: 2202 movs r2, #2 - 8003858: 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; - 800385c: 687b ldr r3, [r7, #4] - 800385e: 681b ldr r3, [r3, #0] - 8003860: 689b ldr r3, [r3, #8] - 8003862: 60bb str r3, [r7, #8] - tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); - 8003864: 68bb ldr r3, [r7, #8] - 8003866: f023 0377 bic.w r3, r3, #119 @ 0x77 - 800386a: 60bb str r3, [r7, #8] - tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 800386c: 68bb ldr r3, [r7, #8] - 800386e: f423 437f bic.w r3, r3, #65280 @ 0xff00 - 8003872: 60bb str r3, [r7, #8] - htim->Instance->SMCR = tmpsmcr; - 8003874: 687b ldr r3, [r7, #4] - 8003876: 681b ldr r3, [r3, #0] - 8003878: 68ba ldr r2, [r7, #8] - 800387a: 609a str r2, [r3, #8] - - switch (sClockSourceConfig->ClockSource) - 800387c: 683b ldr r3, [r7, #0] - 800387e: 681b ldr r3, [r3, #0] - 8003880: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 8003884: d03e beq.n 8003904 - 8003886: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 - 800388a: f200 8087 bhi.w 800399c - 800388e: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 8003892: f000 8086 beq.w 80039a2 - 8003896: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 - 800389a: d87f bhi.n 800399c - 800389c: 2b70 cmp r3, #112 @ 0x70 - 800389e: d01a beq.n 80038d6 - 80038a0: 2b70 cmp r3, #112 @ 0x70 - 80038a2: d87b bhi.n 800399c - 80038a4: 2b60 cmp r3, #96 @ 0x60 - 80038a6: d050 beq.n 800394a - 80038a8: 2b60 cmp r3, #96 @ 0x60 - 80038aa: d877 bhi.n 800399c - 80038ac: 2b50 cmp r3, #80 @ 0x50 - 80038ae: d03c beq.n 800392a - 80038b0: 2b50 cmp r3, #80 @ 0x50 - 80038b2: d873 bhi.n 800399c - 80038b4: 2b40 cmp r3, #64 @ 0x40 - 80038b6: d058 beq.n 800396a - 80038b8: 2b40 cmp r3, #64 @ 0x40 - 80038ba: d86f bhi.n 800399c - 80038bc: 2b30 cmp r3, #48 @ 0x30 - 80038be: d064 beq.n 800398a - 80038c0: 2b30 cmp r3, #48 @ 0x30 - 80038c2: d86b bhi.n 800399c - 80038c4: 2b20 cmp r3, #32 - 80038c6: d060 beq.n 800398a - 80038c8: 2b20 cmp r3, #32 - 80038ca: d867 bhi.n 800399c - 80038cc: 2b00 cmp r3, #0 - 80038ce: d05c beq.n 800398a - 80038d0: 2b10 cmp r3, #16 - 80038d2: d05a beq.n 800398a - 80038d4: e062 b.n 800399c - 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, - 80038d6: 687b ldr r3, [r7, #4] - 80038d8: 6818 ldr r0, [r3, #0] - sClockSourceConfig->ClockPrescaler, - 80038da: 683b ldr r3, [r7, #0] - 80038dc: 6899 ldr r1, [r3, #8] - sClockSourceConfig->ClockPolarity, - 80038de: 683b ldr r3, [r7, #0] - 80038e0: 685a ldr r2, [r3, #4] - sClockSourceConfig->ClockFilter); - 80038e2: 683b ldr r3, [r7, #0] - 80038e4: 68db ldr r3, [r3, #12] - TIM_ETR_SetConfig(htim->Instance, - 80038e6: f000 fad8 bl 8003e9a - - /* Select the External clock mode1 and the ETRF trigger */ - tmpsmcr = htim->Instance->SMCR; - 80038ea: 687b ldr r3, [r7, #4] - 80038ec: 681b ldr r3, [r3, #0] - 80038ee: 689b ldr r3, [r3, #8] - 80038f0: 60bb str r3, [r7, #8] - tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); - 80038f2: 68bb ldr r3, [r7, #8] - 80038f4: f043 0377 orr.w r3, r3, #119 @ 0x77 - 80038f8: 60bb str r3, [r7, #8] - /* Write to TIMx SMCR */ - htim->Instance->SMCR = tmpsmcr; - 80038fa: 687b ldr r3, [r7, #4] - 80038fc: 681b ldr r3, [r3, #0] - 80038fe: 68ba ldr r2, [r7, #8] - 8003900: 609a str r2, [r3, #8] - break; - 8003902: e04f b.n 80039a4 - 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, - 8003904: 687b ldr r3, [r7, #4] - 8003906: 6818 ldr r0, [r3, #0] - sClockSourceConfig->ClockPrescaler, - 8003908: 683b ldr r3, [r7, #0] - 800390a: 6899 ldr r1, [r3, #8] - sClockSourceConfig->ClockPolarity, - 800390c: 683b ldr r3, [r7, #0] - 800390e: 685a ldr r2, [r3, #4] - sClockSourceConfig->ClockFilter); - 8003910: 683b ldr r3, [r7, #0] - 8003912: 68db ldr r3, [r3, #12] - TIM_ETR_SetConfig(htim->Instance, - 8003914: f000 fac1 bl 8003e9a - /* Enable the External clock mode2 */ - htim->Instance->SMCR |= TIM_SMCR_ECE; - 8003918: 687b ldr r3, [r7, #4] - 800391a: 681b ldr r3, [r3, #0] - 800391c: 689a ldr r2, [r3, #8] - 800391e: 687b ldr r3, [r7, #4] - 8003920: 681b ldr r3, [r3, #0] - 8003922: f442 4280 orr.w r2, r2, #16384 @ 0x4000 - 8003926: 609a str r2, [r3, #8] - break; - 8003928: e03c b.n 80039a4 - - /* 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, - 800392a: 687b ldr r3, [r7, #4] - 800392c: 6818 ldr r0, [r3, #0] - sClockSourceConfig->ClockPolarity, - 800392e: 683b ldr r3, [r7, #0] - 8003930: 6859 ldr r1, [r3, #4] - sClockSourceConfig->ClockFilter); - 8003932: 683b ldr r3, [r7, #0] - 8003934: 68db ldr r3, [r3, #12] - TIM_TI1_ConfigInputStage(htim->Instance, - 8003936: 461a mov r2, r3 - 8003938: f000 fa38 bl 8003dac - TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); - 800393c: 687b ldr r3, [r7, #4] - 800393e: 681b ldr r3, [r3, #0] - 8003940: 2150 movs r1, #80 @ 0x50 - 8003942: 4618 mov r0, r3 - 8003944: f000 fa8f bl 8003e66 - break; - 8003948: e02c b.n 80039a4 - - /* 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, - 800394a: 687b ldr r3, [r7, #4] - 800394c: 6818 ldr r0, [r3, #0] - sClockSourceConfig->ClockPolarity, - 800394e: 683b ldr r3, [r7, #0] - 8003950: 6859 ldr r1, [r3, #4] - sClockSourceConfig->ClockFilter); - 8003952: 683b ldr r3, [r7, #0] - 8003954: 68db ldr r3, [r3, #12] - TIM_TI2_ConfigInputStage(htim->Instance, - 8003956: 461a mov r2, r3 - 8003958: f000 fa56 bl 8003e08 - TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); - 800395c: 687b ldr r3, [r7, #4] - 800395e: 681b ldr r3, [r3, #0] - 8003960: 2160 movs r1, #96 @ 0x60 - 8003962: 4618 mov r0, r3 - 8003964: f000 fa7f bl 8003e66 - break; - 8003968: e01c b.n 80039a4 - - /* 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, - 800396a: 687b ldr r3, [r7, #4] - 800396c: 6818 ldr r0, [r3, #0] - sClockSourceConfig->ClockPolarity, - 800396e: 683b ldr r3, [r7, #0] - 8003970: 6859 ldr r1, [r3, #4] - sClockSourceConfig->ClockFilter); - 8003972: 683b ldr r3, [r7, #0] - 8003974: 68db ldr r3, [r3, #12] - TIM_TI1_ConfigInputStage(htim->Instance, - 8003976: 461a mov r2, r3 - 8003978: f000 fa18 bl 8003dac - TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); - 800397c: 687b ldr r3, [r7, #4] - 800397e: 681b ldr r3, [r3, #0] - 8003980: 2140 movs r1, #64 @ 0x40 - 8003982: 4618 mov r0, r3 - 8003984: f000 fa6f bl 8003e66 - break; - 8003988: e00c b.n 80039a4 - 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); - 800398a: 687b ldr r3, [r7, #4] - 800398c: 681a ldr r2, [r3, #0] - 800398e: 683b ldr r3, [r7, #0] - 8003990: 681b ldr r3, [r3, #0] - 8003992: 4619 mov r1, r3 - 8003994: 4610 mov r0, r2 - 8003996: f000 fa66 bl 8003e66 - break; - 800399a: e003 b.n 80039a4 - } - - default: - status = HAL_ERROR; - 800399c: 2301 movs r3, #1 - 800399e: 73fb strb r3, [r7, #15] - break; - 80039a0: e000 b.n 80039a4 - break; - 80039a2: bf00 nop - } - htim->State = HAL_TIM_STATE_READY; - 80039a4: 687b ldr r3, [r7, #4] - 80039a6: 2201 movs r2, #1 - 80039a8: f883 203d strb.w r2, [r3, #61] @ 0x3d - - __HAL_UNLOCK(htim); - 80039ac: 687b ldr r3, [r7, #4] - 80039ae: 2200 movs r2, #0 - 80039b0: f883 203c strb.w r2, [r3, #60] @ 0x3c - - return status; - 80039b4: 7bfb ldrb r3, [r7, #15] -} - 80039b6: 4618 mov r0, r3 - 80039b8: 3710 adds r7, #16 - 80039ba: 46bd mov sp, r7 - 80039bc: bd80 pop {r7, pc} - ... - -080039c0 : - * @param TIMx TIM peripheral - * @param Structure TIM Base configuration structure - * @retval None - */ -void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) -{ - 80039c0: b480 push {r7} - 80039c2: b085 sub sp, #20 - 80039c4: af00 add r7, sp, #0 - 80039c6: 6078 str r0, [r7, #4] - 80039c8: 6039 str r1, [r7, #0] - uint32_t tmpcr1; - tmpcr1 = TIMx->CR1; - 80039ca: 687b ldr r3, [r7, #4] - 80039cc: 681b ldr r3, [r3, #0] - 80039ce: 60fb str r3, [r7, #12] - - /* Set TIM Time Base Unit parameters ---------------------------------------*/ - if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) - 80039d0: 687b ldr r3, [r7, #4] - 80039d2: 4a2f ldr r2, [pc, #188] @ (8003a90 ) - 80039d4: 4293 cmp r3, r2 - 80039d6: d00b beq.n 80039f0 - 80039d8: 687b ldr r3, [r7, #4] - 80039da: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 80039de: d007 beq.n 80039f0 - 80039e0: 687b ldr r3, [r7, #4] - 80039e2: 4a2c ldr r2, [pc, #176] @ (8003a94 ) - 80039e4: 4293 cmp r3, r2 - 80039e6: d003 beq.n 80039f0 - 80039e8: 687b ldr r3, [r7, #4] - 80039ea: 4a2b ldr r2, [pc, #172] @ (8003a98 ) - 80039ec: 4293 cmp r3, r2 - 80039ee: d108 bne.n 8003a02 - { - /* Select the Counter Mode */ - tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); - 80039f0: 68fb ldr r3, [r7, #12] - 80039f2: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80039f6: 60fb str r3, [r7, #12] - tmpcr1 |= Structure->CounterMode; - 80039f8: 683b ldr r3, [r7, #0] - 80039fa: 685b ldr r3, [r3, #4] - 80039fc: 68fa ldr r2, [r7, #12] - 80039fe: 4313 orrs r3, r2 - 8003a00: 60fb str r3, [r7, #12] - } - - if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) - 8003a02: 687b ldr r3, [r7, #4] - 8003a04: 4a22 ldr r2, [pc, #136] @ (8003a90 ) - 8003a06: 4293 cmp r3, r2 - 8003a08: d00b beq.n 8003a22 - 8003a0a: 687b ldr r3, [r7, #4] - 8003a0c: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8003a10: d007 beq.n 8003a22 - 8003a12: 687b ldr r3, [r7, #4] - 8003a14: 4a1f ldr r2, [pc, #124] @ (8003a94 ) - 8003a16: 4293 cmp r3, r2 - 8003a18: d003 beq.n 8003a22 - 8003a1a: 687b ldr r3, [r7, #4] - 8003a1c: 4a1e ldr r2, [pc, #120] @ (8003a98 ) - 8003a1e: 4293 cmp r3, r2 - 8003a20: d108 bne.n 8003a34 - { - /* Set the clock division */ - tmpcr1 &= ~TIM_CR1_CKD; - 8003a22: 68fb ldr r3, [r7, #12] - 8003a24: f423 7340 bic.w r3, r3, #768 @ 0x300 - 8003a28: 60fb str r3, [r7, #12] - tmpcr1 |= (uint32_t)Structure->ClockDivision; - 8003a2a: 683b ldr r3, [r7, #0] - 8003a2c: 68db ldr r3, [r3, #12] - 8003a2e: 68fa ldr r2, [r7, #12] - 8003a30: 4313 orrs r3, r2 - 8003a32: 60fb str r3, [r7, #12] - } - - /* Set the auto-reload preload */ - MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); - 8003a34: 68fb ldr r3, [r7, #12] - 8003a36: f023 0280 bic.w r2, r3, #128 @ 0x80 - 8003a3a: 683b ldr r3, [r7, #0] - 8003a3c: 695b ldr r3, [r3, #20] - 8003a3e: 4313 orrs r3, r2 - 8003a40: 60fb str r3, [r7, #12] - - TIMx->CR1 = tmpcr1; - 8003a42: 687b ldr r3, [r7, #4] - 8003a44: 68fa ldr r2, [r7, #12] - 8003a46: 601a str r2, [r3, #0] - - /* Set the Autoreload value */ - TIMx->ARR = (uint32_t)Structure->Period ; - 8003a48: 683b ldr r3, [r7, #0] - 8003a4a: 689a ldr r2, [r3, #8] - 8003a4c: 687b ldr r3, [r7, #4] - 8003a4e: 62da str r2, [r3, #44] @ 0x2c - - /* Set the Prescaler value */ - TIMx->PSC = Structure->Prescaler; - 8003a50: 683b ldr r3, [r7, #0] - 8003a52: 681a ldr r2, [r3, #0] - 8003a54: 687b ldr r3, [r7, #4] - 8003a56: 629a str r2, [r3, #40] @ 0x28 - - if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) - 8003a58: 687b ldr r3, [r7, #4] - 8003a5a: 4a0d ldr r2, [pc, #52] @ (8003a90 ) - 8003a5c: 4293 cmp r3, r2 - 8003a5e: d103 bne.n 8003a68 - { - /* Set the Repetition Counter value */ - TIMx->RCR = Structure->RepetitionCounter; - 8003a60: 683b ldr r3, [r7, #0] - 8003a62: 691a ldr r2, [r3, #16] - 8003a64: 687b ldr r3, [r7, #4] - 8003a66: 631a str r2, [r3, #48] @ 0x30 - } - - /* Generate an update event to reload the Prescaler - and the repetition counter (only for advanced timer) value immediately */ - TIMx->EGR = TIM_EGR_UG; - 8003a68: 687b ldr r3, [r7, #4] - 8003a6a: 2201 movs r2, #1 - 8003a6c: 615a str r2, [r3, #20] - - /* Check if the update flag is set after the Update Generation, if so clear the UIF flag */ - if (HAL_IS_BIT_SET(TIMx->SR, TIM_FLAG_UPDATE)) - 8003a6e: 687b ldr r3, [r7, #4] - 8003a70: 691b ldr r3, [r3, #16] - 8003a72: f003 0301 and.w r3, r3, #1 - 8003a76: 2b00 cmp r3, #0 - 8003a78: d005 beq.n 8003a86 - { - /* Clear the update flag */ - CLEAR_BIT(TIMx->SR, TIM_FLAG_UPDATE); - 8003a7a: 687b ldr r3, [r7, #4] - 8003a7c: 691b ldr r3, [r3, #16] - 8003a7e: f023 0201 bic.w r2, r3, #1 - 8003a82: 687b ldr r3, [r7, #4] - 8003a84: 611a str r2, [r3, #16] - } -} - 8003a86: bf00 nop - 8003a88: 3714 adds r7, #20 - 8003a8a: 46bd mov sp, r7 - 8003a8c: bc80 pop {r7} - 8003a8e: 4770 bx lr - 8003a90: 40012c00 .word 0x40012c00 - 8003a94: 40000400 .word 0x40000400 - 8003a98: 40000800 .word 0x40000800 - -08003a9c : - * @param TIMx to select the TIM peripheral - * @param OC_Config The output configuration structure - * @retval None - */ -static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) -{ - 8003a9c: b480 push {r7} - 8003a9e: b087 sub sp, #28 - 8003aa0: af00 add r7, sp, #0 - 8003aa2: 6078 str r0, [r7, #4] - 8003aa4: 6039 str r1, [r7, #0] - uint32_t tmpccmrx; - uint32_t tmpccer; - uint32_t tmpcr2; - - /* Get the TIMx CCER register value */ - tmpccer = TIMx->CCER; - 8003aa6: 687b ldr r3, [r7, #4] - 8003aa8: 6a1b ldr r3, [r3, #32] - 8003aaa: 617b str r3, [r7, #20] - - /* Disable the Channel 1: Reset the CC1E Bit */ - TIMx->CCER &= ~TIM_CCER_CC1E; - 8003aac: 687b ldr r3, [r7, #4] - 8003aae: 6a1b ldr r3, [r3, #32] - 8003ab0: f023 0201 bic.w r2, r3, #1 - 8003ab4: 687b ldr r3, [r7, #4] - 8003ab6: 621a str r2, [r3, #32] - - /* Get the TIMx CR2 register value */ - tmpcr2 = TIMx->CR2; - 8003ab8: 687b ldr r3, [r7, #4] - 8003aba: 685b ldr r3, [r3, #4] - 8003abc: 613b str r3, [r7, #16] - - /* Get the TIMx CCMR1 register value */ - tmpccmrx = TIMx->CCMR1; - 8003abe: 687b ldr r3, [r7, #4] - 8003ac0: 699b ldr r3, [r3, #24] - 8003ac2: 60fb str r3, [r7, #12] - - /* Reset the Output Compare Mode Bits */ - tmpccmrx &= ~TIM_CCMR1_OC1M; - 8003ac4: 68fb ldr r3, [r7, #12] - 8003ac6: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8003aca: 60fb str r3, [r7, #12] - tmpccmrx &= ~TIM_CCMR1_CC1S; - 8003acc: 68fb ldr r3, [r7, #12] - 8003ace: f023 0303 bic.w r3, r3, #3 - 8003ad2: 60fb str r3, [r7, #12] - /* Select the Output Compare Mode */ - tmpccmrx |= OC_Config->OCMode; - 8003ad4: 683b ldr r3, [r7, #0] - 8003ad6: 681b ldr r3, [r3, #0] - 8003ad8: 68fa ldr r2, [r7, #12] - 8003ada: 4313 orrs r3, r2 - 8003adc: 60fb str r3, [r7, #12] - - /* Reset the Output Polarity level */ - tmpccer &= ~TIM_CCER_CC1P; - 8003ade: 697b ldr r3, [r7, #20] - 8003ae0: f023 0302 bic.w r3, r3, #2 - 8003ae4: 617b str r3, [r7, #20] - /* Set the Output Compare Polarity */ - tmpccer |= OC_Config->OCPolarity; - 8003ae6: 683b ldr r3, [r7, #0] - 8003ae8: 689b ldr r3, [r3, #8] - 8003aea: 697a ldr r2, [r7, #20] - 8003aec: 4313 orrs r3, r2 - 8003aee: 617b str r3, [r7, #20] - - if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_1)) - 8003af0: 687b ldr r3, [r7, #4] - 8003af2: 4a1c ldr r2, [pc, #112] @ (8003b64 ) - 8003af4: 4293 cmp r3, r2 - 8003af6: d10c bne.n 8003b12 - { - /* Check parameters */ - assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); - - /* Reset the Output N Polarity level */ - tmpccer &= ~TIM_CCER_CC1NP; - 8003af8: 697b ldr r3, [r7, #20] - 8003afa: f023 0308 bic.w r3, r3, #8 - 8003afe: 617b str r3, [r7, #20] - /* Set the Output N Polarity */ - tmpccer |= OC_Config->OCNPolarity; - 8003b00: 683b ldr r3, [r7, #0] - 8003b02: 68db ldr r3, [r3, #12] - 8003b04: 697a ldr r2, [r7, #20] - 8003b06: 4313 orrs r3, r2 - 8003b08: 617b str r3, [r7, #20] - /* Reset the Output N State */ - tmpccer &= ~TIM_CCER_CC1NE; - 8003b0a: 697b ldr r3, [r7, #20] - 8003b0c: f023 0304 bic.w r3, r3, #4 - 8003b10: 617b str r3, [r7, #20] - } - - if (IS_TIM_BREAK_INSTANCE(TIMx)) - 8003b12: 687b ldr r3, [r7, #4] - 8003b14: 4a13 ldr r2, [pc, #76] @ (8003b64 ) - 8003b16: 4293 cmp r3, r2 - 8003b18: d111 bne.n 8003b3e - /* Check parameters */ - assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); - assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - - /* Reset the Output Compare and Output Compare N IDLE State */ - tmpcr2 &= ~TIM_CR2_OIS1; - 8003b1a: 693b ldr r3, [r7, #16] - 8003b1c: f423 7380 bic.w r3, r3, #256 @ 0x100 - 8003b20: 613b str r3, [r7, #16] - tmpcr2 &= ~TIM_CR2_OIS1N; - 8003b22: 693b ldr r3, [r7, #16] - 8003b24: f423 7300 bic.w r3, r3, #512 @ 0x200 - 8003b28: 613b str r3, [r7, #16] - /* Set the Output Idle state */ - tmpcr2 |= OC_Config->OCIdleState; - 8003b2a: 683b ldr r3, [r7, #0] - 8003b2c: 695b ldr r3, [r3, #20] - 8003b2e: 693a ldr r2, [r7, #16] - 8003b30: 4313 orrs r3, r2 - 8003b32: 613b str r3, [r7, #16] - /* Set the Output N Idle state */ - tmpcr2 |= OC_Config->OCNIdleState; - 8003b34: 683b ldr r3, [r7, #0] - 8003b36: 699b ldr r3, [r3, #24] - 8003b38: 693a ldr r2, [r7, #16] - 8003b3a: 4313 orrs r3, r2 - 8003b3c: 613b str r3, [r7, #16] - } - - /* Write to TIMx CR2 */ - TIMx->CR2 = tmpcr2; - 8003b3e: 687b ldr r3, [r7, #4] - 8003b40: 693a ldr r2, [r7, #16] - 8003b42: 605a str r2, [r3, #4] - - /* Write to TIMx CCMR1 */ - TIMx->CCMR1 = tmpccmrx; - 8003b44: 687b ldr r3, [r7, #4] - 8003b46: 68fa ldr r2, [r7, #12] - 8003b48: 619a str r2, [r3, #24] - - /* Set the Capture Compare Register value */ - TIMx->CCR1 = OC_Config->Pulse; - 8003b4a: 683b ldr r3, [r7, #0] - 8003b4c: 685a ldr r2, [r3, #4] - 8003b4e: 687b ldr r3, [r7, #4] - 8003b50: 635a str r2, [r3, #52] @ 0x34 - - /* Write to TIMx CCER */ - TIMx->CCER = tmpccer; - 8003b52: 687b ldr r3, [r7, #4] - 8003b54: 697a ldr r2, [r7, #20] - 8003b56: 621a str r2, [r3, #32] -} - 8003b58: bf00 nop - 8003b5a: 371c adds r7, #28 - 8003b5c: 46bd mov sp, r7 - 8003b5e: bc80 pop {r7} - 8003b60: 4770 bx lr - 8003b62: bf00 nop - 8003b64: 40012c00 .word 0x40012c00 - -08003b68 : - * @param TIMx to select the TIM peripheral - * @param OC_Config The output configuration structure - * @retval None - */ -void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) -{ - 8003b68: b480 push {r7} - 8003b6a: b087 sub sp, #28 - 8003b6c: af00 add r7, sp, #0 - 8003b6e: 6078 str r0, [r7, #4] - 8003b70: 6039 str r1, [r7, #0] - uint32_t tmpccmrx; - uint32_t tmpccer; - uint32_t tmpcr2; - - /* Get the TIMx CCER register value */ - tmpccer = TIMx->CCER; - 8003b72: 687b ldr r3, [r7, #4] - 8003b74: 6a1b ldr r3, [r3, #32] - 8003b76: 617b str r3, [r7, #20] - - /* Disable the Channel 2: Reset the CC2E Bit */ - TIMx->CCER &= ~TIM_CCER_CC2E; - 8003b78: 687b ldr r3, [r7, #4] - 8003b7a: 6a1b ldr r3, [r3, #32] - 8003b7c: f023 0210 bic.w r2, r3, #16 - 8003b80: 687b ldr r3, [r7, #4] - 8003b82: 621a str r2, [r3, #32] - - /* Get the TIMx CR2 register value */ - tmpcr2 = TIMx->CR2; - 8003b84: 687b ldr r3, [r7, #4] - 8003b86: 685b ldr r3, [r3, #4] - 8003b88: 613b str r3, [r7, #16] - - /* Get the TIMx CCMR1 register value */ - tmpccmrx = TIMx->CCMR1; - 8003b8a: 687b ldr r3, [r7, #4] - 8003b8c: 699b ldr r3, [r3, #24] - 8003b8e: 60fb str r3, [r7, #12] - - /* Reset the Output Compare mode and Capture/Compare selection Bits */ - tmpccmrx &= ~TIM_CCMR1_OC2M; - 8003b90: 68fb ldr r3, [r7, #12] - 8003b92: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8003b96: 60fb str r3, [r7, #12] - tmpccmrx &= ~TIM_CCMR1_CC2S; - 8003b98: 68fb ldr r3, [r7, #12] - 8003b9a: f423 7340 bic.w r3, r3, #768 @ 0x300 - 8003b9e: 60fb str r3, [r7, #12] - - /* Select the Output Compare Mode */ - tmpccmrx |= (OC_Config->OCMode << 8U); - 8003ba0: 683b ldr r3, [r7, #0] - 8003ba2: 681b ldr r3, [r3, #0] - 8003ba4: 021b lsls r3, r3, #8 - 8003ba6: 68fa ldr r2, [r7, #12] - 8003ba8: 4313 orrs r3, r2 - 8003baa: 60fb str r3, [r7, #12] - - /* Reset the Output Polarity level */ - tmpccer &= ~TIM_CCER_CC2P; - 8003bac: 697b ldr r3, [r7, #20] - 8003bae: f023 0320 bic.w r3, r3, #32 - 8003bb2: 617b str r3, [r7, #20] - /* Set the Output Compare Polarity */ - tmpccer |= (OC_Config->OCPolarity << 4U); - 8003bb4: 683b ldr r3, [r7, #0] - 8003bb6: 689b ldr r3, [r3, #8] - 8003bb8: 011b lsls r3, r3, #4 - 8003bba: 697a ldr r2, [r7, #20] - 8003bbc: 4313 orrs r3, r2 - 8003bbe: 617b str r3, [r7, #20] - - if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_2)) - 8003bc0: 687b ldr r3, [r7, #4] - 8003bc2: 4a1d ldr r2, [pc, #116] @ (8003c38 ) - 8003bc4: 4293 cmp r3, r2 - 8003bc6: d10d bne.n 8003be4 - { - assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); - - /* Reset the Output N Polarity level */ - tmpccer &= ~TIM_CCER_CC2NP; - 8003bc8: 697b ldr r3, [r7, #20] - 8003bca: f023 0380 bic.w r3, r3, #128 @ 0x80 - 8003bce: 617b str r3, [r7, #20] - /* Set the Output N Polarity */ - tmpccer |= (OC_Config->OCNPolarity << 4U); - 8003bd0: 683b ldr r3, [r7, #0] - 8003bd2: 68db ldr r3, [r3, #12] - 8003bd4: 011b lsls r3, r3, #4 - 8003bd6: 697a ldr r2, [r7, #20] - 8003bd8: 4313 orrs r3, r2 - 8003bda: 617b str r3, [r7, #20] - /* Reset the Output N State */ - tmpccer &= ~TIM_CCER_CC2NE; - 8003bdc: 697b ldr r3, [r7, #20] - 8003bde: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8003be2: 617b str r3, [r7, #20] - } - - if (IS_TIM_BREAK_INSTANCE(TIMx)) - 8003be4: 687b ldr r3, [r7, #4] - 8003be6: 4a14 ldr r2, [pc, #80] @ (8003c38 ) - 8003be8: 4293 cmp r3, r2 - 8003bea: d113 bne.n 8003c14 - /* Check parameters */ - assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); - assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - - /* Reset the Output Compare and Output Compare N IDLE State */ - tmpcr2 &= ~TIM_CR2_OIS2; - 8003bec: 693b ldr r3, [r7, #16] - 8003bee: f423 6380 bic.w r3, r3, #1024 @ 0x400 - 8003bf2: 613b str r3, [r7, #16] - tmpcr2 &= ~TIM_CR2_OIS2N; - 8003bf4: 693b ldr r3, [r7, #16] - 8003bf6: f423 6300 bic.w r3, r3, #2048 @ 0x800 - 8003bfa: 613b str r3, [r7, #16] - /* Set the Output Idle state */ - tmpcr2 |= (OC_Config->OCIdleState << 2U); - 8003bfc: 683b ldr r3, [r7, #0] - 8003bfe: 695b ldr r3, [r3, #20] - 8003c00: 009b lsls r3, r3, #2 - 8003c02: 693a ldr r2, [r7, #16] - 8003c04: 4313 orrs r3, r2 - 8003c06: 613b str r3, [r7, #16] - /* Set the Output N Idle state */ - tmpcr2 |= (OC_Config->OCNIdleState << 2U); - 8003c08: 683b ldr r3, [r7, #0] - 8003c0a: 699b ldr r3, [r3, #24] - 8003c0c: 009b lsls r3, r3, #2 - 8003c0e: 693a ldr r2, [r7, #16] - 8003c10: 4313 orrs r3, r2 - 8003c12: 613b str r3, [r7, #16] - } - - /* Write to TIMx CR2 */ - TIMx->CR2 = tmpcr2; - 8003c14: 687b ldr r3, [r7, #4] - 8003c16: 693a ldr r2, [r7, #16] - 8003c18: 605a str r2, [r3, #4] - - /* Write to TIMx CCMR1 */ - TIMx->CCMR1 = tmpccmrx; - 8003c1a: 687b ldr r3, [r7, #4] - 8003c1c: 68fa ldr r2, [r7, #12] - 8003c1e: 619a str r2, [r3, #24] - - /* Set the Capture Compare Register value */ - TIMx->CCR2 = OC_Config->Pulse; - 8003c20: 683b ldr r3, [r7, #0] - 8003c22: 685a ldr r2, [r3, #4] - 8003c24: 687b ldr r3, [r7, #4] - 8003c26: 639a str r2, [r3, #56] @ 0x38 - - /* Write to TIMx CCER */ - TIMx->CCER = tmpccer; - 8003c28: 687b ldr r3, [r7, #4] - 8003c2a: 697a ldr r2, [r7, #20] - 8003c2c: 621a str r2, [r3, #32] -} - 8003c2e: bf00 nop - 8003c30: 371c adds r7, #28 - 8003c32: 46bd mov sp, r7 - 8003c34: bc80 pop {r7} - 8003c36: 4770 bx lr - 8003c38: 40012c00 .word 0x40012c00 - -08003c3c : - * @param TIMx to select the TIM peripheral - * @param OC_Config The output configuration structure - * @retval None - */ -static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) -{ - 8003c3c: b480 push {r7} - 8003c3e: b087 sub sp, #28 - 8003c40: af00 add r7, sp, #0 - 8003c42: 6078 str r0, [r7, #4] - 8003c44: 6039 str r1, [r7, #0] - uint32_t tmpccmrx; - uint32_t tmpccer; - uint32_t tmpcr2; - - /* Get the TIMx CCER register value */ - tmpccer = TIMx->CCER; - 8003c46: 687b ldr r3, [r7, #4] - 8003c48: 6a1b ldr r3, [r3, #32] - 8003c4a: 617b str r3, [r7, #20] - - /* Disable the Channel 3: Reset the CC2E Bit */ - TIMx->CCER &= ~TIM_CCER_CC3E; - 8003c4c: 687b ldr r3, [r7, #4] - 8003c4e: 6a1b ldr r3, [r3, #32] - 8003c50: f423 7280 bic.w r2, r3, #256 @ 0x100 - 8003c54: 687b ldr r3, [r7, #4] - 8003c56: 621a str r2, [r3, #32] - - /* Get the TIMx CR2 register value */ - tmpcr2 = TIMx->CR2; - 8003c58: 687b ldr r3, [r7, #4] - 8003c5a: 685b ldr r3, [r3, #4] - 8003c5c: 613b str r3, [r7, #16] - - /* Get the TIMx CCMR2 register value */ - tmpccmrx = TIMx->CCMR2; - 8003c5e: 687b ldr r3, [r7, #4] - 8003c60: 69db ldr r3, [r3, #28] - 8003c62: 60fb str r3, [r7, #12] - - /* Reset the Output Compare mode and Capture/Compare selection Bits */ - tmpccmrx &= ~TIM_CCMR2_OC3M; - 8003c64: 68fb ldr r3, [r7, #12] - 8003c66: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8003c6a: 60fb str r3, [r7, #12] - tmpccmrx &= ~TIM_CCMR2_CC3S; - 8003c6c: 68fb ldr r3, [r7, #12] - 8003c6e: f023 0303 bic.w r3, r3, #3 - 8003c72: 60fb str r3, [r7, #12] - /* Select the Output Compare Mode */ - tmpccmrx |= OC_Config->OCMode; - 8003c74: 683b ldr r3, [r7, #0] - 8003c76: 681b ldr r3, [r3, #0] - 8003c78: 68fa ldr r2, [r7, #12] - 8003c7a: 4313 orrs r3, r2 - 8003c7c: 60fb str r3, [r7, #12] - - /* Reset the Output Polarity level */ - tmpccer &= ~TIM_CCER_CC3P; - 8003c7e: 697b ldr r3, [r7, #20] - 8003c80: f423 7300 bic.w r3, r3, #512 @ 0x200 - 8003c84: 617b str r3, [r7, #20] - /* Set the Output Compare Polarity */ - tmpccer |= (OC_Config->OCPolarity << 8U); - 8003c86: 683b ldr r3, [r7, #0] - 8003c88: 689b ldr r3, [r3, #8] - 8003c8a: 021b lsls r3, r3, #8 - 8003c8c: 697a ldr r2, [r7, #20] - 8003c8e: 4313 orrs r3, r2 - 8003c90: 617b str r3, [r7, #20] - - if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_3)) - 8003c92: 687b ldr r3, [r7, #4] - 8003c94: 4a1d ldr r2, [pc, #116] @ (8003d0c ) - 8003c96: 4293 cmp r3, r2 - 8003c98: d10d bne.n 8003cb6 - { - assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); - - /* Reset the Output N Polarity level */ - tmpccer &= ~TIM_CCER_CC3NP; - 8003c9a: 697b ldr r3, [r7, #20] - 8003c9c: f423 6300 bic.w r3, r3, #2048 @ 0x800 - 8003ca0: 617b str r3, [r7, #20] - /* Set the Output N Polarity */ - tmpccer |= (OC_Config->OCNPolarity << 8U); - 8003ca2: 683b ldr r3, [r7, #0] - 8003ca4: 68db ldr r3, [r3, #12] - 8003ca6: 021b lsls r3, r3, #8 - 8003ca8: 697a ldr r2, [r7, #20] - 8003caa: 4313 orrs r3, r2 - 8003cac: 617b str r3, [r7, #20] - /* Reset the Output N State */ - tmpccer &= ~TIM_CCER_CC3NE; - 8003cae: 697b ldr r3, [r7, #20] - 8003cb0: f423 6380 bic.w r3, r3, #1024 @ 0x400 - 8003cb4: 617b str r3, [r7, #20] - } - - if (IS_TIM_BREAK_INSTANCE(TIMx)) - 8003cb6: 687b ldr r3, [r7, #4] - 8003cb8: 4a14 ldr r2, [pc, #80] @ (8003d0c ) - 8003cba: 4293 cmp r3, r2 - 8003cbc: d113 bne.n 8003ce6 - /* Check parameters */ - assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); - assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - - /* Reset the Output Compare and Output Compare N IDLE State */ - tmpcr2 &= ~TIM_CR2_OIS3; - 8003cbe: 693b ldr r3, [r7, #16] - 8003cc0: f423 5380 bic.w r3, r3, #4096 @ 0x1000 - 8003cc4: 613b str r3, [r7, #16] - tmpcr2 &= ~TIM_CR2_OIS3N; - 8003cc6: 693b ldr r3, [r7, #16] - 8003cc8: f423 5300 bic.w r3, r3, #8192 @ 0x2000 - 8003ccc: 613b str r3, [r7, #16] - /* Set the Output Idle state */ - tmpcr2 |= (OC_Config->OCIdleState << 4U); - 8003cce: 683b ldr r3, [r7, #0] - 8003cd0: 695b ldr r3, [r3, #20] - 8003cd2: 011b lsls r3, r3, #4 - 8003cd4: 693a ldr r2, [r7, #16] - 8003cd6: 4313 orrs r3, r2 - 8003cd8: 613b str r3, [r7, #16] - /* Set the Output N Idle state */ - tmpcr2 |= (OC_Config->OCNIdleState << 4U); - 8003cda: 683b ldr r3, [r7, #0] - 8003cdc: 699b ldr r3, [r3, #24] - 8003cde: 011b lsls r3, r3, #4 - 8003ce0: 693a ldr r2, [r7, #16] - 8003ce2: 4313 orrs r3, r2 - 8003ce4: 613b str r3, [r7, #16] - } - - /* Write to TIMx CR2 */ - TIMx->CR2 = tmpcr2; - 8003ce6: 687b ldr r3, [r7, #4] - 8003ce8: 693a ldr r2, [r7, #16] - 8003cea: 605a str r2, [r3, #4] - - /* Write to TIMx CCMR2 */ - TIMx->CCMR2 = tmpccmrx; - 8003cec: 687b ldr r3, [r7, #4] - 8003cee: 68fa ldr r2, [r7, #12] - 8003cf0: 61da str r2, [r3, #28] - - /* Set the Capture Compare Register value */ - TIMx->CCR3 = OC_Config->Pulse; - 8003cf2: 683b ldr r3, [r7, #0] - 8003cf4: 685a ldr r2, [r3, #4] - 8003cf6: 687b ldr r3, [r7, #4] - 8003cf8: 63da str r2, [r3, #60] @ 0x3c - - /* Write to TIMx CCER */ - TIMx->CCER = tmpccer; - 8003cfa: 687b ldr r3, [r7, #4] - 8003cfc: 697a ldr r2, [r7, #20] - 8003cfe: 621a str r2, [r3, #32] -} - 8003d00: bf00 nop - 8003d02: 371c adds r7, #28 - 8003d04: 46bd mov sp, r7 - 8003d06: bc80 pop {r7} - 8003d08: 4770 bx lr - 8003d0a: bf00 nop - 8003d0c: 40012c00 .word 0x40012c00 - -08003d10 : - * @param TIMx to select the TIM peripheral - * @param OC_Config The output configuration structure - * @retval None - */ -static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) -{ - 8003d10: b480 push {r7} - 8003d12: b087 sub sp, #28 - 8003d14: af00 add r7, sp, #0 - 8003d16: 6078 str r0, [r7, #4] - 8003d18: 6039 str r1, [r7, #0] - uint32_t tmpccmrx; - uint32_t tmpccer; - uint32_t tmpcr2; - - /* Get the TIMx CCER register value */ - tmpccer = TIMx->CCER; - 8003d1a: 687b ldr r3, [r7, #4] - 8003d1c: 6a1b ldr r3, [r3, #32] - 8003d1e: 613b str r3, [r7, #16] - - /* Disable the Channel 4: Reset the CC4E Bit */ - TIMx->CCER &= ~TIM_CCER_CC4E; - 8003d20: 687b ldr r3, [r7, #4] - 8003d22: 6a1b ldr r3, [r3, #32] - 8003d24: f423 5280 bic.w r2, r3, #4096 @ 0x1000 - 8003d28: 687b ldr r3, [r7, #4] - 8003d2a: 621a str r2, [r3, #32] - - /* Get the TIMx CR2 register value */ - tmpcr2 = TIMx->CR2; - 8003d2c: 687b ldr r3, [r7, #4] - 8003d2e: 685b ldr r3, [r3, #4] - 8003d30: 617b str r3, [r7, #20] - - /* Get the TIMx CCMR2 register value */ - tmpccmrx = TIMx->CCMR2; - 8003d32: 687b ldr r3, [r7, #4] - 8003d34: 69db ldr r3, [r3, #28] - 8003d36: 60fb str r3, [r7, #12] - - /* Reset the Output Compare mode and Capture/Compare selection Bits */ - tmpccmrx &= ~TIM_CCMR2_OC4M; - 8003d38: 68fb ldr r3, [r7, #12] - 8003d3a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8003d3e: 60fb str r3, [r7, #12] - tmpccmrx &= ~TIM_CCMR2_CC4S; - 8003d40: 68fb ldr r3, [r7, #12] - 8003d42: f423 7340 bic.w r3, r3, #768 @ 0x300 - 8003d46: 60fb str r3, [r7, #12] - - /* Select the Output Compare Mode */ - tmpccmrx |= (OC_Config->OCMode << 8U); - 8003d48: 683b ldr r3, [r7, #0] - 8003d4a: 681b ldr r3, [r3, #0] - 8003d4c: 021b lsls r3, r3, #8 - 8003d4e: 68fa ldr r2, [r7, #12] - 8003d50: 4313 orrs r3, r2 - 8003d52: 60fb str r3, [r7, #12] - - /* Reset the Output Polarity level */ - tmpccer &= ~TIM_CCER_CC4P; - 8003d54: 693b ldr r3, [r7, #16] - 8003d56: f423 5300 bic.w r3, r3, #8192 @ 0x2000 - 8003d5a: 613b str r3, [r7, #16] - /* Set the Output Compare Polarity */ - tmpccer |= (OC_Config->OCPolarity << 12U); - 8003d5c: 683b ldr r3, [r7, #0] - 8003d5e: 689b ldr r3, [r3, #8] - 8003d60: 031b lsls r3, r3, #12 - 8003d62: 693a ldr r2, [r7, #16] - 8003d64: 4313 orrs r3, r2 - 8003d66: 613b str r3, [r7, #16] - - if (IS_TIM_BREAK_INSTANCE(TIMx)) - 8003d68: 687b ldr r3, [r7, #4] - 8003d6a: 4a0f ldr r2, [pc, #60] @ (8003da8 ) - 8003d6c: 4293 cmp r3, r2 - 8003d6e: d109 bne.n 8003d84 - { - /* Check parameters */ - assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - - /* Reset the Output Compare IDLE State */ - tmpcr2 &= ~TIM_CR2_OIS4; - 8003d70: 697b ldr r3, [r7, #20] - 8003d72: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8003d76: 617b str r3, [r7, #20] - - /* Set the Output Idle state */ - tmpcr2 |= (OC_Config->OCIdleState << 6U); - 8003d78: 683b ldr r3, [r7, #0] - 8003d7a: 695b ldr r3, [r3, #20] - 8003d7c: 019b lsls r3, r3, #6 - 8003d7e: 697a ldr r2, [r7, #20] - 8003d80: 4313 orrs r3, r2 - 8003d82: 617b str r3, [r7, #20] - } - - /* Write to TIMx CR2 */ - TIMx->CR2 = tmpcr2; - 8003d84: 687b ldr r3, [r7, #4] - 8003d86: 697a ldr r2, [r7, #20] - 8003d88: 605a str r2, [r3, #4] - - /* Write to TIMx CCMR2 */ - TIMx->CCMR2 = tmpccmrx; - 8003d8a: 687b ldr r3, [r7, #4] - 8003d8c: 68fa ldr r2, [r7, #12] - 8003d8e: 61da str r2, [r3, #28] - - /* Set the Capture Compare Register value */ - TIMx->CCR4 = OC_Config->Pulse; - 8003d90: 683b ldr r3, [r7, #0] - 8003d92: 685a ldr r2, [r3, #4] - 8003d94: 687b ldr r3, [r7, #4] - 8003d96: 641a str r2, [r3, #64] @ 0x40 - - /* Write to TIMx CCER */ - TIMx->CCER = tmpccer; - 8003d98: 687b ldr r3, [r7, #4] - 8003d9a: 693a ldr r2, [r7, #16] - 8003d9c: 621a str r2, [r3, #32] -} - 8003d9e: bf00 nop - 8003da0: 371c adds r7, #28 - 8003da2: 46bd mov sp, r7 - 8003da4: bc80 pop {r7} - 8003da6: 4770 bx lr - 8003da8: 40012c00 .word 0x40012c00 - -08003dac : - * @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) -{ - 8003dac: b480 push {r7} - 8003dae: b087 sub sp, #28 - 8003db0: af00 add r7, sp, #0 - 8003db2: 60f8 str r0, [r7, #12] - 8003db4: 60b9 str r1, [r7, #8] - 8003db6: 607a str r2, [r7, #4] - uint32_t tmpccmr1; - uint32_t tmpccer; - - /* Disable the Channel 1: Reset the CC1E Bit */ - tmpccer = TIMx->CCER; - 8003db8: 68fb ldr r3, [r7, #12] - 8003dba: 6a1b ldr r3, [r3, #32] - 8003dbc: 617b str r3, [r7, #20] - TIMx->CCER &= ~TIM_CCER_CC1E; - 8003dbe: 68fb ldr r3, [r7, #12] - 8003dc0: 6a1b ldr r3, [r3, #32] - 8003dc2: f023 0201 bic.w r2, r3, #1 - 8003dc6: 68fb ldr r3, [r7, #12] - 8003dc8: 621a str r2, [r3, #32] - tmpccmr1 = TIMx->CCMR1; - 8003dca: 68fb ldr r3, [r7, #12] - 8003dcc: 699b ldr r3, [r3, #24] - 8003dce: 613b str r3, [r7, #16] - - /* Set the filter */ - tmpccmr1 &= ~TIM_CCMR1_IC1F; - 8003dd0: 693b ldr r3, [r7, #16] - 8003dd2: f023 03f0 bic.w r3, r3, #240 @ 0xf0 - 8003dd6: 613b str r3, [r7, #16] - tmpccmr1 |= (TIM_ICFilter << 4U); - 8003dd8: 687b ldr r3, [r7, #4] - 8003dda: 011b lsls r3, r3, #4 - 8003ddc: 693a ldr r2, [r7, #16] - 8003dde: 4313 orrs r3, r2 - 8003de0: 613b str r3, [r7, #16] - - /* Select the Polarity and set the CC1E Bit */ - tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); - 8003de2: 697b ldr r3, [r7, #20] - 8003de4: f023 030a bic.w r3, r3, #10 - 8003de8: 617b str r3, [r7, #20] - tmpccer |= TIM_ICPolarity; - 8003dea: 697a ldr r2, [r7, #20] - 8003dec: 68bb ldr r3, [r7, #8] - 8003dee: 4313 orrs r3, r2 - 8003df0: 617b str r3, [r7, #20] - - /* Write to TIMx CCMR1 and CCER registers */ - TIMx->CCMR1 = tmpccmr1; - 8003df2: 68fb ldr r3, [r7, #12] - 8003df4: 693a ldr r2, [r7, #16] - 8003df6: 619a str r2, [r3, #24] - TIMx->CCER = tmpccer; - 8003df8: 68fb ldr r3, [r7, #12] - 8003dfa: 697a ldr r2, [r7, #20] - 8003dfc: 621a str r2, [r3, #32] -} - 8003dfe: bf00 nop - 8003e00: 371c adds r7, #28 - 8003e02: 46bd mov sp, r7 - 8003e04: bc80 pop {r7} - 8003e06: 4770 bx lr - -08003e08 : - * @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) -{ - 8003e08: b480 push {r7} - 8003e0a: b087 sub sp, #28 - 8003e0c: af00 add r7, sp, #0 - 8003e0e: 60f8 str r0, [r7, #12] - 8003e10: 60b9 str r1, [r7, #8] - 8003e12: 607a str r2, [r7, #4] - uint32_t tmpccmr1; - uint32_t tmpccer; - - /* Disable the Channel 2: Reset the CC2E Bit */ - tmpccer = TIMx->CCER; - 8003e14: 68fb ldr r3, [r7, #12] - 8003e16: 6a1b ldr r3, [r3, #32] - 8003e18: 617b str r3, [r7, #20] - TIMx->CCER &= ~TIM_CCER_CC2E; - 8003e1a: 68fb ldr r3, [r7, #12] - 8003e1c: 6a1b ldr r3, [r3, #32] - 8003e1e: f023 0210 bic.w r2, r3, #16 - 8003e22: 68fb ldr r3, [r7, #12] - 8003e24: 621a str r2, [r3, #32] - tmpccmr1 = TIMx->CCMR1; - 8003e26: 68fb ldr r3, [r7, #12] - 8003e28: 699b ldr r3, [r3, #24] - 8003e2a: 613b str r3, [r7, #16] - - /* Set the filter */ - tmpccmr1 &= ~TIM_CCMR1_IC2F; - 8003e2c: 693b ldr r3, [r7, #16] - 8003e2e: f423 4370 bic.w r3, r3, #61440 @ 0xf000 - 8003e32: 613b str r3, [r7, #16] - tmpccmr1 |= (TIM_ICFilter << 12U); - 8003e34: 687b ldr r3, [r7, #4] - 8003e36: 031b lsls r3, r3, #12 - 8003e38: 693a ldr r2, [r7, #16] - 8003e3a: 4313 orrs r3, r2 - 8003e3c: 613b str r3, [r7, #16] - - /* Select the Polarity and set the CC2E Bit */ - tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); - 8003e3e: 697b ldr r3, [r7, #20] - 8003e40: f023 03a0 bic.w r3, r3, #160 @ 0xa0 - 8003e44: 617b str r3, [r7, #20] - tmpccer |= (TIM_ICPolarity << 4U); - 8003e46: 68bb ldr r3, [r7, #8] - 8003e48: 011b lsls r3, r3, #4 - 8003e4a: 697a ldr r2, [r7, #20] - 8003e4c: 4313 orrs r3, r2 - 8003e4e: 617b str r3, [r7, #20] - - /* Write to TIMx CCMR1 and CCER registers */ - TIMx->CCMR1 = tmpccmr1 ; - 8003e50: 68fb ldr r3, [r7, #12] - 8003e52: 693a ldr r2, [r7, #16] - 8003e54: 619a str r2, [r3, #24] - TIMx->CCER = tmpccer; - 8003e56: 68fb ldr r3, [r7, #12] - 8003e58: 697a ldr r2, [r7, #20] - 8003e5a: 621a str r2, [r3, #32] -} - 8003e5c: bf00 nop - 8003e5e: 371c adds r7, #28 - 8003e60: 46bd mov sp, r7 - 8003e62: bc80 pop {r7} - 8003e64: 4770 bx lr - -08003e66 : - * @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) -{ - 8003e66: b480 push {r7} - 8003e68: b085 sub sp, #20 - 8003e6a: af00 add r7, sp, #0 - 8003e6c: 6078 str r0, [r7, #4] - 8003e6e: 6039 str r1, [r7, #0] - uint32_t tmpsmcr; - - /* Get the TIMx SMCR register value */ - tmpsmcr = TIMx->SMCR; - 8003e70: 687b ldr r3, [r7, #4] - 8003e72: 689b ldr r3, [r3, #8] - 8003e74: 60fb str r3, [r7, #12] - /* Reset the TS Bits */ - tmpsmcr &= ~TIM_SMCR_TS; - 8003e76: 68fb ldr r3, [r7, #12] - 8003e78: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8003e7c: 60fb str r3, [r7, #12] - /* Set the Input Trigger source and the slave mode*/ - tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); - 8003e7e: 683a ldr r2, [r7, #0] - 8003e80: 68fb ldr r3, [r7, #12] - 8003e82: 4313 orrs r3, r2 - 8003e84: f043 0307 orr.w r3, r3, #7 - 8003e88: 60fb str r3, [r7, #12] - /* Write to TIMx SMCR */ - TIMx->SMCR = tmpsmcr; - 8003e8a: 687b ldr r3, [r7, #4] - 8003e8c: 68fa ldr r2, [r7, #12] - 8003e8e: 609a str r2, [r3, #8] -} - 8003e90: bf00 nop - 8003e92: 3714 adds r7, #20 - 8003e94: 46bd mov sp, r7 - 8003e96: bc80 pop {r7} - 8003e98: 4770 bx lr - -08003e9a : - * 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) -{ - 8003e9a: b480 push {r7} - 8003e9c: b087 sub sp, #28 - 8003e9e: af00 add r7, sp, #0 - 8003ea0: 60f8 str r0, [r7, #12] - 8003ea2: 60b9 str r1, [r7, #8] - 8003ea4: 607a str r2, [r7, #4] - 8003ea6: 603b str r3, [r7, #0] - uint32_t tmpsmcr; - - tmpsmcr = TIMx->SMCR; - 8003ea8: 68fb ldr r3, [r7, #12] - 8003eaa: 689b ldr r3, [r3, #8] - 8003eac: 617b str r3, [r7, #20] - - /* Reset the ETR Bits */ - tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 8003eae: 697b ldr r3, [r7, #20] - 8003eb0: f423 437f bic.w r3, r3, #65280 @ 0xff00 - 8003eb4: 617b str r3, [r7, #20] - - /* Set the Prescaler, the Filter value and the Polarity */ - tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); - 8003eb6: 683b ldr r3, [r7, #0] - 8003eb8: 021a lsls r2, r3, #8 - 8003eba: 687b ldr r3, [r7, #4] - 8003ebc: 431a orrs r2, r3 - 8003ebe: 68bb ldr r3, [r7, #8] - 8003ec0: 4313 orrs r3, r2 - 8003ec2: 697a ldr r2, [r7, #20] - 8003ec4: 4313 orrs r3, r2 - 8003ec6: 617b str r3, [r7, #20] - - /* Write to TIMx SMCR */ - TIMx->SMCR = tmpsmcr; - 8003ec8: 68fb ldr r3, [r7, #12] - 8003eca: 697a ldr r2, [r7, #20] - 8003ecc: 609a str r2, [r3, #8] -} - 8003ece: bf00 nop - 8003ed0: 371c adds r7, #28 - 8003ed2: 46bd mov sp, r7 - 8003ed4: bc80 pop {r7} - 8003ed6: 4770 bx lr - -08003ed8 : - * @param ChannelState specifies the TIM Channel CCxE bit new state. - * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE. - * @retval None - */ -void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState) -{ - 8003ed8: b480 push {r7} - 8003eda: b087 sub sp, #28 - 8003edc: af00 add r7, sp, #0 - 8003ede: 60f8 str r0, [r7, #12] - 8003ee0: 60b9 str r1, [r7, #8] - 8003ee2: 607a str r2, [r7, #4] - - /* Check the parameters */ - assert_param(IS_TIM_CC1_INSTANCE(TIMx)); - assert_param(IS_TIM_CHANNELS(Channel)); - - tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */ - 8003ee4: 68bb ldr r3, [r7, #8] - 8003ee6: f003 031f and.w r3, r3, #31 - 8003eea: 2201 movs r2, #1 - 8003eec: fa02 f303 lsl.w r3, r2, r3 - 8003ef0: 617b str r3, [r7, #20] - - /* Reset the CCxE Bit */ - TIMx->CCER &= ~tmp; - 8003ef2: 68fb ldr r3, [r7, #12] - 8003ef4: 6a1a ldr r2, [r3, #32] - 8003ef6: 697b ldr r3, [r7, #20] - 8003ef8: 43db mvns r3, r3 - 8003efa: 401a ands r2, r3 - 8003efc: 68fb ldr r3, [r7, #12] - 8003efe: 621a str r2, [r3, #32] - - /* Set or reset the CCxE Bit */ - TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ - 8003f00: 68fb ldr r3, [r7, #12] - 8003f02: 6a1a ldr r2, [r3, #32] - 8003f04: 68bb ldr r3, [r7, #8] - 8003f06: f003 031f and.w r3, r3, #31 - 8003f0a: 6879 ldr r1, [r7, #4] - 8003f0c: fa01 f303 lsl.w r3, r1, r3 - 8003f10: 431a orrs r2, r3 - 8003f12: 68fb ldr r3, [r7, #12] - 8003f14: 621a str r2, [r3, #32] -} - 8003f16: bf00 nop - 8003f18: 371c adds r7, #28 - 8003f1a: 46bd mov sp, r7 - 8003f1c: bc80 pop {r7} - 8003f1e: 4770 bx lr - -08003f20 : - * mode. - * @retval HAL status - */ -HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, - const TIM_MasterConfigTypeDef *sMasterConfig) -{ - 8003f20: b480 push {r7} - 8003f22: b085 sub sp, #20 - 8003f24: af00 add r7, sp, #0 - 8003f26: 6078 str r0, [r7, #4] - 8003f28: 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); - 8003f2a: 687b ldr r3, [r7, #4] - 8003f2c: f893 303c ldrb.w r3, [r3, #60] @ 0x3c - 8003f30: 2b01 cmp r3, #1 - 8003f32: d101 bne.n 8003f38 - 8003f34: 2302 movs r3, #2 - 8003f36: e046 b.n 8003fc6 - 8003f38: 687b ldr r3, [r7, #4] - 8003f3a: 2201 movs r2, #1 - 8003f3c: f883 203c strb.w r2, [r3, #60] @ 0x3c - - /* Change the handler state */ - htim->State = HAL_TIM_STATE_BUSY; - 8003f40: 687b ldr r3, [r7, #4] - 8003f42: 2202 movs r2, #2 - 8003f44: f883 203d strb.w r2, [r3, #61] @ 0x3d - - /* Get the TIMx CR2 register value */ - tmpcr2 = htim->Instance->CR2; - 8003f48: 687b ldr r3, [r7, #4] - 8003f4a: 681b ldr r3, [r3, #0] - 8003f4c: 685b ldr r3, [r3, #4] - 8003f4e: 60fb str r3, [r7, #12] - - /* Get the TIMx SMCR register value */ - tmpsmcr = htim->Instance->SMCR; - 8003f50: 687b ldr r3, [r7, #4] - 8003f52: 681b ldr r3, [r3, #0] - 8003f54: 689b ldr r3, [r3, #8] - 8003f56: 60bb str r3, [r7, #8] - - /* Reset the MMS Bits */ - tmpcr2 &= ~TIM_CR2_MMS; - 8003f58: 68fb ldr r3, [r7, #12] - 8003f5a: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8003f5e: 60fb str r3, [r7, #12] - /* Select the TRGO source */ - tmpcr2 |= sMasterConfig->MasterOutputTrigger; - 8003f60: 683b ldr r3, [r7, #0] - 8003f62: 681b ldr r3, [r3, #0] - 8003f64: 68fa ldr r2, [r7, #12] - 8003f66: 4313 orrs r3, r2 - 8003f68: 60fb str r3, [r7, #12] - - /* Update TIMx CR2 */ - htim->Instance->CR2 = tmpcr2; - 8003f6a: 687b ldr r3, [r7, #4] - 8003f6c: 681b ldr r3, [r3, #0] - 8003f6e: 68fa ldr r2, [r7, #12] - 8003f70: 605a str r2, [r3, #4] - - if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 8003f72: 687b ldr r3, [r7, #4] - 8003f74: 681b ldr r3, [r3, #0] - 8003f76: 4a16 ldr r2, [pc, #88] @ (8003fd0 ) - 8003f78: 4293 cmp r3, r2 - 8003f7a: d00e beq.n 8003f9a - 8003f7c: 687b ldr r3, [r7, #4] - 8003f7e: 681b ldr r3, [r3, #0] - 8003f80: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8003f84: d009 beq.n 8003f9a - 8003f86: 687b ldr r3, [r7, #4] - 8003f88: 681b ldr r3, [r3, #0] - 8003f8a: 4a12 ldr r2, [pc, #72] @ (8003fd4 ) - 8003f8c: 4293 cmp r3, r2 - 8003f8e: d004 beq.n 8003f9a - 8003f90: 687b ldr r3, [r7, #4] - 8003f92: 681b ldr r3, [r3, #0] - 8003f94: 4a10 ldr r2, [pc, #64] @ (8003fd8 ) - 8003f96: 4293 cmp r3, r2 - 8003f98: d10c bne.n 8003fb4 - { - /* Reset the MSM Bit */ - tmpsmcr &= ~TIM_SMCR_MSM; - 8003f9a: 68bb ldr r3, [r7, #8] - 8003f9c: f023 0380 bic.w r3, r3, #128 @ 0x80 - 8003fa0: 60bb str r3, [r7, #8] - /* Set master mode */ - tmpsmcr |= sMasterConfig->MasterSlaveMode; - 8003fa2: 683b ldr r3, [r7, #0] - 8003fa4: 685b ldr r3, [r3, #4] - 8003fa6: 68ba ldr r2, [r7, #8] - 8003fa8: 4313 orrs r3, r2 - 8003faa: 60bb str r3, [r7, #8] - - /* Update TIMx SMCR */ - htim->Instance->SMCR = tmpsmcr; - 8003fac: 687b ldr r3, [r7, #4] - 8003fae: 681b ldr r3, [r3, #0] - 8003fb0: 68ba ldr r2, [r7, #8] - 8003fb2: 609a str r2, [r3, #8] - } - - /* Change the htim state */ - htim->State = HAL_TIM_STATE_READY; - 8003fb4: 687b ldr r3, [r7, #4] - 8003fb6: 2201 movs r2, #1 - 8003fb8: f883 203d strb.w r2, [r3, #61] @ 0x3d - - __HAL_UNLOCK(htim); - 8003fbc: 687b ldr r3, [r7, #4] - 8003fbe: 2200 movs r2, #0 - 8003fc0: f883 203c strb.w r2, [r3, #60] @ 0x3c - - return HAL_OK; - 8003fc4: 2300 movs r3, #0 -} - 8003fc6: 4618 mov r0, r3 - 8003fc8: 3714 adds r7, #20 - 8003fca: 46bd mov sp, r7 - 8003fcc: bc80 pop {r7} - 8003fce: 4770 bx lr - 8003fd0: 40012c00 .word 0x40012c00 - 8003fd4: 40000400 .word 0x40000400 - 8003fd8: 40000800 .word 0x40000800 - -08003fdc : - * @param cfg pointer to a USB_CfgTypeDef structure that contains - * the configuration information for the specified USBx peripheral. - * @retval HAL status - */ -HAL_StatusTypeDef USB_CoreInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg) -{ - 8003fdc: b480 push {r7} - 8003fde: b085 sub sp, #20 - 8003fe0: af00 add r7, sp, #0 - 8003fe2: 60f8 str r0, [r7, #12] - 8003fe4: 4638 mov r0, r7 - 8003fe6: e880 000e stmia.w r0, {r1, r2, r3} - /* NOTE : - This function is not required by USB Device FS peripheral, it is used - only by USB OTG FS peripheral. - - This function is added to ensure compatibility across platforms. - */ - - return HAL_OK; - 8003fea: 2300 movs r3, #0 -} - 8003fec: 4618 mov r0, r3 - 8003fee: 3714 adds r7, #20 - 8003ff0: 46bd mov sp, r7 - 8003ff2: bc80 pop {r7} - 8003ff4: 4770 bx lr - -08003ff6 : - * Enables the controller's Global Int in the AHB Config reg - * @param USBx Selected device - * @retval HAL status - */ -HAL_StatusTypeDef USB_EnableGlobalInt(USB_TypeDef *USBx) -{ - 8003ff6: b480 push {r7} - 8003ff8: b085 sub sp, #20 - 8003ffa: af00 add r7, sp, #0 - 8003ffc: 6078 str r0, [r7, #4] - uint32_t winterruptmask; - - /* Clear pending interrupts */ - USBx->ISTR = 0U; - 8003ffe: 687b ldr r3, [r7, #4] - 8004000: 2200 movs r2, #0 - 8004002: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - /* Set winterruptmask variable */ - winterruptmask = USB_CNTR_CTRM | USB_CNTR_WKUPM | - 8004006: f44f 433f mov.w r3, #48896 @ 0xbf00 - 800400a: 60fb str r3, [r7, #12] - USB_CNTR_SUSPM | USB_CNTR_ERRM | - USB_CNTR_SOFM | USB_CNTR_ESOFM | - USB_CNTR_RESETM; - - /* Set interrupt mask */ - USBx->CNTR = (uint16_t)winterruptmask; - 800400c: 68fb ldr r3, [r7, #12] - 800400e: b29a uxth r2, r3 - 8004010: 687b ldr r3, [r7, #4] - 8004012: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - return HAL_OK; - 8004016: 2300 movs r3, #0 -} - 8004018: 4618 mov r0, r3 - 800401a: 3714 adds r7, #20 - 800401c: 46bd mov sp, r7 - 800401e: bc80 pop {r7} - 8004020: 4770 bx lr - -08004022 : - * Disable the controller's Global Int in the AHB Config reg - * @param USBx Selected device - * @retval HAL status - */ -HAL_StatusTypeDef USB_DisableGlobalInt(USB_TypeDef *USBx) -{ - 8004022: b480 push {r7} - 8004024: b085 sub sp, #20 - 8004026: af00 add r7, sp, #0 - 8004028: 6078 str r0, [r7, #4] - uint32_t winterruptmask; - - /* Set winterruptmask variable */ - winterruptmask = USB_CNTR_CTRM | USB_CNTR_WKUPM | - 800402a: f44f 433f mov.w r3, #48896 @ 0xbf00 - 800402e: 60fb str r3, [r7, #12] - USB_CNTR_SUSPM | USB_CNTR_ERRM | - USB_CNTR_SOFM | USB_CNTR_ESOFM | - USB_CNTR_RESETM; - - /* Clear interrupt mask */ - USBx->CNTR &= (uint16_t)(~winterruptmask); - 8004030: 687b ldr r3, [r7, #4] - 8004032: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 - 8004036: b29a uxth r2, r3 - 8004038: 68fb ldr r3, [r7, #12] - 800403a: b29b uxth r3, r3 - 800403c: 43db mvns r3, r3 - 800403e: b29b uxth r3, r3 - 8004040: 4013 ands r3, r2 - 8004042: b29a uxth r2, r3 - 8004044: 687b ldr r3, [r7, #4] - 8004046: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - return HAL_OK; - 800404a: 2300 movs r3, #0 -} - 800404c: 4618 mov r0, r3 - 800404e: 3714 adds r7, #20 - 8004050: 46bd mov sp, r7 - 8004052: bc80 pop {r7} - 8004054: 4770 bx lr - -08004056 : - * This parameter can be one of the these values: - * @arg USB_DEVICE_MODE Peripheral mode - * @retval HAL status - */ -HAL_StatusTypeDef USB_SetCurrentMode(USB_TypeDef *USBx, USB_ModeTypeDef mode) -{ - 8004056: b480 push {r7} - 8004058: b083 sub sp, #12 - 800405a: af00 add r7, sp, #0 - 800405c: 6078 str r0, [r7, #4] - 800405e: 460b mov r3, r1 - 8004060: 70fb strb r3, [r7, #3] - - /* NOTE : - This function is not required by USB Device FS peripheral, it is used - only by USB OTG FS peripheral. - - This function is added to ensure compatibility across platforms. - */ - return HAL_OK; - 8004062: 2300 movs r3, #0 -} - 8004064: 4618 mov r0, r3 - 8004066: 370c adds r7, #12 - 8004068: 46bd mov sp, r7 - 800406a: bc80 pop {r7} - 800406c: 4770 bx lr - -0800406e : - * @param cfg pointer to a USB_CfgTypeDef structure that contains - * the configuration information for the specified USBx peripheral. - * @retval HAL status - */ -HAL_StatusTypeDef USB_DevInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg) -{ - 800406e: b480 push {r7} - 8004070: b085 sub sp, #20 - 8004072: af00 add r7, sp, #0 - 8004074: 60f8 str r0, [r7, #12] - 8004076: 4638 mov r0, r7 - 8004078: e880 000e stmia.w r0, {r1, r2, r3} - /* Prevent unused argument(s) compilation warning */ - UNUSED(cfg); - - /* Init Device */ - /* CNTR_FRES = 1 */ - USBx->CNTR = (uint16_t)USB_CNTR_FRES; - 800407c: 68fb ldr r3, [r7, #12] - 800407e: 2201 movs r2, #1 - 8004080: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - /* CNTR_FRES = 0 */ - USBx->CNTR = 0U; - 8004084: 68fb ldr r3, [r7, #12] - 8004086: 2200 movs r2, #0 - 8004088: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 - - /* Clear pending interrupts */ - USBx->ISTR = 0U; - 800408c: 68fb ldr r3, [r7, #12] - 800408e: 2200 movs r2, #0 - 8004090: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 - - /*Set Btable Address*/ - USBx->BTABLE = BTABLE_ADDRESS; - 8004094: 68fb ldr r3, [r7, #12] - 8004096: 2200 movs r2, #0 - 8004098: f8a3 2050 strh.w r2, [r3, #80] @ 0x50 - - return HAL_OK; - 800409c: 2300 movs r3, #0 -} - 800409e: 4618 mov r0, r3 - 80040a0: 3714 adds r7, #20 - 80040a2: 46bd mov sp, r7 - 80040a4: bc80 pop {r7} - 80040a6: 4770 bx lr - -080040a8 : - * @param USBx Selected device - * @param ep pointer to endpoint structure - * @retval HAL status - */ -HAL_StatusTypeDef USB_ActivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep) -{ - 80040a8: b480 push {r7} - 80040aa: b09d sub sp, #116 @ 0x74 - 80040ac: af00 add r7, sp, #0 - 80040ae: 6078 str r0, [r7, #4] - 80040b0: 6039 str r1, [r7, #0] - HAL_StatusTypeDef ret = HAL_OK; - 80040b2: 2300 movs r3, #0 - 80040b4: f887 306f strb.w r3, [r7, #111] @ 0x6f - uint16_t wEpRegVal; - - wEpRegVal = PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_T_MASK; - 80040b8: 687a ldr r2, [r7, #4] - 80040ba: 683b ldr r3, [r7, #0] - 80040bc: 781b ldrb r3, [r3, #0] - 80040be: 009b lsls r3, r3, #2 - 80040c0: 4413 add r3, r2 - 80040c2: 881b ldrh r3, [r3, #0] - 80040c4: b29b uxth r3, r3 - 80040c6: f423 43ec bic.w r3, r3, #30208 @ 0x7600 - 80040ca: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80040ce: f8a7 306c strh.w r3, [r7, #108] @ 0x6c - - /* initialize Endpoint */ - switch (ep->type) - 80040d2: 683b ldr r3, [r7, #0] - 80040d4: 78db ldrb r3, [r3, #3] - 80040d6: 2b03 cmp r3, #3 - 80040d8: d81f bhi.n 800411a - 80040da: a201 add r2, pc, #4 @ (adr r2, 80040e0 ) - 80040dc: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80040e0: 080040f1 .word 0x080040f1 - 80040e4: 0800410d .word 0x0800410d - 80040e8: 08004123 .word 0x08004123 - 80040ec: 080040ff .word 0x080040ff - { - case EP_TYPE_CTRL: - wEpRegVal |= USB_EP_CONTROL; - 80040f0: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c - 80040f4: f443 7300 orr.w r3, r3, #512 @ 0x200 - 80040f8: f8a7 306c strh.w r3, [r7, #108] @ 0x6c - break; - 80040fc: e012 b.n 8004124 - case EP_TYPE_BULK: - wEpRegVal |= USB_EP_BULK; - break; - - case EP_TYPE_INTR: - wEpRegVal |= USB_EP_INTERRUPT; - 80040fe: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c - 8004102: f443 63c0 orr.w r3, r3, #1536 @ 0x600 - 8004106: f8a7 306c strh.w r3, [r7, #108] @ 0x6c - break; - 800410a: e00b b.n 8004124 - - case EP_TYPE_ISOC: - wEpRegVal |= USB_EP_ISOCHRONOUS; - 800410c: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c - 8004110: f443 6380 orr.w r3, r3, #1024 @ 0x400 - 8004114: f8a7 306c strh.w r3, [r7, #108] @ 0x6c - break; - 8004118: e004 b.n 8004124 - - default: - ret = HAL_ERROR; - 800411a: 2301 movs r3, #1 - 800411c: f887 306f strb.w r3, [r7, #111] @ 0x6f - break; - 8004120: e000 b.n 8004124 - break; - 8004122: bf00 nop - } - - PCD_SET_ENDPOINT(USBx, ep->num, (wEpRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); - 8004124: 687a ldr r2, [r7, #4] - 8004126: 683b ldr r3, [r7, #0] - 8004128: 781b ldrb r3, [r3, #0] - 800412a: 009b lsls r3, r3, #2 - 800412c: 441a add r2, r3 - 800412e: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c - 8004132: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004136: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800413a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800413e: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004142: b29b uxth r3, r3 - 8004144: 8013 strh r3, [r2, #0] - - PCD_SET_EP_ADDRESS(USBx, ep->num, ep->num); - 8004146: 687a ldr r2, [r7, #4] - 8004148: 683b ldr r3, [r7, #0] - 800414a: 781b ldrb r3, [r3, #0] - 800414c: 009b lsls r3, r3, #2 - 800414e: 4413 add r3, r2 - 8004150: 881b ldrh r3, [r3, #0] - 8004152: b29b uxth r3, r3 - 8004154: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004158: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800415c: b29b uxth r3, r3 - 800415e: 683a ldr r2, [r7, #0] - 8004160: 7812 ldrb r2, [r2, #0] - 8004162: 4313 orrs r3, r2 - 8004164: f8a7 3066 strh.w r3, [r7, #102] @ 0x66 - 8004168: 687a ldr r2, [r7, #4] - 800416a: 683b ldr r3, [r7, #0] - 800416c: 781b ldrb r3, [r3, #0] - 800416e: 009b lsls r3, r3, #2 - 8004170: 441a add r2, r3 - 8004172: f8b7 3066 ldrh.w r3, [r7, #102] @ 0x66 - 8004176: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800417a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800417e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004182: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004186: b29b uxth r3, r3 - 8004188: 8013 strh r3, [r2, #0] - - if (ep->doublebuffer == 0U) - 800418a: 683b ldr r3, [r7, #0] - 800418c: 7b1b ldrb r3, [r3, #12] - 800418e: 2b00 cmp r3, #0 - 8004190: f040 8178 bne.w 8004484 - { - if (ep->is_in != 0U) - 8004194: 683b ldr r3, [r7, #0] - 8004196: 785b ldrb r3, [r3, #1] - 8004198: 2b00 cmp r3, #0 - 800419a: f000 8084 beq.w 80042a6 - { - /*Set the endpoint Transmit buffer address */ - PCD_SET_EP_TX_ADDRESS(USBx, ep->num, ep->pmaadress); - 800419e: 687b ldr r3, [r7, #4] - 80041a0: 61bb str r3, [r7, #24] - 80041a2: 687b ldr r3, [r7, #4] - 80041a4: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80041a8: b29b uxth r3, r3 - 80041aa: 461a mov r2, r3 - 80041ac: 69bb ldr r3, [r7, #24] - 80041ae: 4413 add r3, r2 - 80041b0: 61bb str r3, [r7, #24] - 80041b2: 683b ldr r3, [r7, #0] - 80041b4: 781b ldrb r3, [r3, #0] - 80041b6: 011a lsls r2, r3, #4 - 80041b8: 69bb ldr r3, [r7, #24] - 80041ba: 4413 add r3, r2 - 80041bc: f503 6380 add.w r3, r3, #1024 @ 0x400 - 80041c0: 617b str r3, [r7, #20] - 80041c2: 683b ldr r3, [r7, #0] - 80041c4: 88db ldrh r3, [r3, #6] - 80041c6: 085b lsrs r3, r3, #1 - 80041c8: b29b uxth r3, r3 - 80041ca: 005b lsls r3, r3, #1 - 80041cc: b29a uxth r2, r3 - 80041ce: 697b ldr r3, [r7, #20] - 80041d0: 801a strh r2, [r3, #0] - PCD_CLEAR_TX_DTOG(USBx, ep->num); - 80041d2: 687a ldr r2, [r7, #4] - 80041d4: 683b ldr r3, [r7, #0] - 80041d6: 781b ldrb r3, [r3, #0] - 80041d8: 009b lsls r3, r3, #2 - 80041da: 4413 add r3, r2 - 80041dc: 881b ldrh r3, [r3, #0] - 80041de: 827b strh r3, [r7, #18] - 80041e0: 8a7b ldrh r3, [r7, #18] - 80041e2: f003 0340 and.w r3, r3, #64 @ 0x40 - 80041e6: 2b00 cmp r3, #0 - 80041e8: d01b beq.n 8004222 - 80041ea: 687a ldr r2, [r7, #4] - 80041ec: 683b ldr r3, [r7, #0] - 80041ee: 781b ldrb r3, [r3, #0] - 80041f0: 009b lsls r3, r3, #2 - 80041f2: 4413 add r3, r2 - 80041f4: 881b ldrh r3, [r3, #0] - 80041f6: b29b uxth r3, r3 - 80041f8: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80041fc: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004200: 823b strh r3, [r7, #16] - 8004202: 687a ldr r2, [r7, #4] - 8004204: 683b ldr r3, [r7, #0] - 8004206: 781b ldrb r3, [r3, #0] - 8004208: 009b lsls r3, r3, #2 - 800420a: 441a add r2, r3 - 800420c: 8a3b ldrh r3, [r7, #16] - 800420e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004212: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004216: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800421a: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 800421e: b29b uxth r3, r3 - 8004220: 8013 strh r3, [r2, #0] - - if (ep->type != EP_TYPE_ISOC) - 8004222: 683b ldr r3, [r7, #0] - 8004224: 78db ldrb r3, [r3, #3] - 8004226: 2b01 cmp r3, #1 - 8004228: d020 beq.n 800426c - { - /* Configure NAK status for the Endpoint */ - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); - 800422a: 687a ldr r2, [r7, #4] - 800422c: 683b ldr r3, [r7, #0] - 800422e: 781b ldrb r3, [r3, #0] - 8004230: 009b lsls r3, r3, #2 - 8004232: 4413 add r3, r2 - 8004234: 881b ldrh r3, [r3, #0] - 8004236: b29b uxth r3, r3 - 8004238: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 800423c: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8004240: 81bb strh r3, [r7, #12] - 8004242: 89bb ldrh r3, [r7, #12] - 8004244: f083 0320 eor.w r3, r3, #32 - 8004248: 81bb strh r3, [r7, #12] - 800424a: 687a ldr r2, [r7, #4] - 800424c: 683b ldr r3, [r7, #0] - 800424e: 781b ldrb r3, [r3, #0] - 8004250: 009b lsls r3, r3, #2 - 8004252: 441a add r2, r3 - 8004254: 89bb ldrh r3, [r7, #12] - 8004256: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800425a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800425e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004262: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004266: b29b uxth r3, r3 - 8004268: 8013 strh r3, [r2, #0] - 800426a: e2d5 b.n 8004818 - } - else - { - /* Configure TX Endpoint to disabled state */ - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); - 800426c: 687a ldr r2, [r7, #4] - 800426e: 683b ldr r3, [r7, #0] - 8004270: 781b ldrb r3, [r3, #0] - 8004272: 009b lsls r3, r3, #2 - 8004274: 4413 add r3, r2 - 8004276: 881b ldrh r3, [r3, #0] - 8004278: b29b uxth r3, r3 - 800427a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 800427e: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8004282: 81fb strh r3, [r7, #14] - 8004284: 687a ldr r2, [r7, #4] - 8004286: 683b ldr r3, [r7, #0] - 8004288: 781b ldrb r3, [r3, #0] - 800428a: 009b lsls r3, r3, #2 - 800428c: 441a add r2, r3 - 800428e: 89fb ldrh r3, [r7, #14] - 8004290: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004294: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004298: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800429c: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80042a0: b29b uxth r3, r3 - 80042a2: 8013 strh r3, [r2, #0] - 80042a4: e2b8 b.n 8004818 - } - } - else - { - /* Set the endpoint Receive buffer address */ - PCD_SET_EP_RX_ADDRESS(USBx, ep->num, ep->pmaadress); - 80042a6: 687b ldr r3, [r7, #4] - 80042a8: 633b str r3, [r7, #48] @ 0x30 - 80042aa: 687b ldr r3, [r7, #4] - 80042ac: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80042b0: b29b uxth r3, r3 - 80042b2: 461a mov r2, r3 - 80042b4: 6b3b ldr r3, [r7, #48] @ 0x30 - 80042b6: 4413 add r3, r2 - 80042b8: 633b str r3, [r7, #48] @ 0x30 - 80042ba: 683b ldr r3, [r7, #0] - 80042bc: 781b ldrb r3, [r3, #0] - 80042be: 011a lsls r2, r3, #4 - 80042c0: 6b3b ldr r3, [r7, #48] @ 0x30 - 80042c2: 4413 add r3, r2 - 80042c4: f503 6381 add.w r3, r3, #1032 @ 0x408 - 80042c8: 62fb str r3, [r7, #44] @ 0x2c - 80042ca: 683b ldr r3, [r7, #0] - 80042cc: 88db ldrh r3, [r3, #6] - 80042ce: 085b lsrs r3, r3, #1 - 80042d0: b29b uxth r3, r3 - 80042d2: 005b lsls r3, r3, #1 - 80042d4: b29a uxth r2, r3 - 80042d6: 6afb ldr r3, [r7, #44] @ 0x2c - 80042d8: 801a strh r2, [r3, #0] - - /* Set the endpoint Receive buffer counter */ - PCD_SET_EP_RX_CNT(USBx, ep->num, ep->maxpacket); - 80042da: 687b ldr r3, [r7, #4] - 80042dc: 62bb str r3, [r7, #40] @ 0x28 - 80042de: 687b ldr r3, [r7, #4] - 80042e0: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80042e4: b29b uxth r3, r3 - 80042e6: 461a mov r2, r3 - 80042e8: 6abb ldr r3, [r7, #40] @ 0x28 - 80042ea: 4413 add r3, r2 - 80042ec: 62bb str r3, [r7, #40] @ 0x28 - 80042ee: 683b ldr r3, [r7, #0] - 80042f0: 781b ldrb r3, [r3, #0] - 80042f2: 011a lsls r2, r3, #4 - 80042f4: 6abb ldr r3, [r7, #40] @ 0x28 - 80042f6: 4413 add r3, r2 - 80042f8: f203 430c addw r3, r3, #1036 @ 0x40c - 80042fc: 627b str r3, [r7, #36] @ 0x24 - 80042fe: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004300: 881b ldrh r3, [r3, #0] - 8004302: b29b uxth r3, r3 - 8004304: f3c3 0309 ubfx r3, r3, #0, #10 - 8004308: b29a uxth r2, r3 - 800430a: 6a7b ldr r3, [r7, #36] @ 0x24 - 800430c: 801a strh r2, [r3, #0] - 800430e: 683b ldr r3, [r7, #0] - 8004310: 691b ldr r3, [r3, #16] - 8004312: 2b3e cmp r3, #62 @ 0x3e - 8004314: d91d bls.n 8004352 - 8004316: 683b ldr r3, [r7, #0] - 8004318: 691b ldr r3, [r3, #16] - 800431a: 095b lsrs r3, r3, #5 - 800431c: 66bb str r3, [r7, #104] @ 0x68 - 800431e: 683b ldr r3, [r7, #0] - 8004320: 691b ldr r3, [r3, #16] - 8004322: f003 031f and.w r3, r3, #31 - 8004326: 2b00 cmp r3, #0 - 8004328: d102 bne.n 8004330 - 800432a: 6ebb ldr r3, [r7, #104] @ 0x68 - 800432c: 3b01 subs r3, #1 - 800432e: 66bb str r3, [r7, #104] @ 0x68 - 8004330: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004332: 881b ldrh r3, [r3, #0] - 8004334: b29a uxth r2, r3 - 8004336: 6ebb ldr r3, [r7, #104] @ 0x68 - 8004338: b29b uxth r3, r3 - 800433a: 029b lsls r3, r3, #10 - 800433c: b29b uxth r3, r3 - 800433e: 4313 orrs r3, r2 - 8004340: b29b uxth r3, r3 - 8004342: ea6f 4343 mvn.w r3, r3, lsl #17 - 8004346: ea6f 4353 mvn.w r3, r3, lsr #17 - 800434a: b29a uxth r2, r3 - 800434c: 6a7b ldr r3, [r7, #36] @ 0x24 - 800434e: 801a strh r2, [r3, #0] - 8004350: e026 b.n 80043a0 - 8004352: 683b ldr r3, [r7, #0] - 8004354: 691b ldr r3, [r3, #16] - 8004356: 2b00 cmp r3, #0 - 8004358: d10a bne.n 8004370 - 800435a: 6a7b ldr r3, [r7, #36] @ 0x24 - 800435c: 881b ldrh r3, [r3, #0] - 800435e: b29b uxth r3, r3 - 8004360: ea6f 4343 mvn.w r3, r3, lsl #17 - 8004364: ea6f 4353 mvn.w r3, r3, lsr #17 - 8004368: b29a uxth r2, r3 - 800436a: 6a7b ldr r3, [r7, #36] @ 0x24 - 800436c: 801a strh r2, [r3, #0] - 800436e: e017 b.n 80043a0 - 8004370: 683b ldr r3, [r7, #0] - 8004372: 691b ldr r3, [r3, #16] - 8004374: 085b lsrs r3, r3, #1 - 8004376: 66bb str r3, [r7, #104] @ 0x68 - 8004378: 683b ldr r3, [r7, #0] - 800437a: 691b ldr r3, [r3, #16] - 800437c: f003 0301 and.w r3, r3, #1 - 8004380: 2b00 cmp r3, #0 - 8004382: d002 beq.n 800438a - 8004384: 6ebb ldr r3, [r7, #104] @ 0x68 - 8004386: 3301 adds r3, #1 - 8004388: 66bb str r3, [r7, #104] @ 0x68 - 800438a: 6a7b ldr r3, [r7, #36] @ 0x24 - 800438c: 881b ldrh r3, [r3, #0] - 800438e: b29a uxth r2, r3 - 8004390: 6ebb ldr r3, [r7, #104] @ 0x68 - 8004392: b29b uxth r3, r3 - 8004394: 029b lsls r3, r3, #10 - 8004396: b29b uxth r3, r3 - 8004398: 4313 orrs r3, r2 - 800439a: b29a uxth r2, r3 - 800439c: 6a7b ldr r3, [r7, #36] @ 0x24 - 800439e: 801a strh r2, [r3, #0] - PCD_CLEAR_RX_DTOG(USBx, ep->num); - 80043a0: 687a ldr r2, [r7, #4] - 80043a2: 683b ldr r3, [r7, #0] - 80043a4: 781b ldrb r3, [r3, #0] - 80043a6: 009b lsls r3, r3, #2 - 80043a8: 4413 add r3, r2 - 80043aa: 881b ldrh r3, [r3, #0] - 80043ac: 847b strh r3, [r7, #34] @ 0x22 - 80043ae: 8c7b ldrh r3, [r7, #34] @ 0x22 - 80043b0: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 80043b4: 2b00 cmp r3, #0 - 80043b6: d01b beq.n 80043f0 - 80043b8: 687a ldr r2, [r7, #4] - 80043ba: 683b ldr r3, [r7, #0] - 80043bc: 781b ldrb r3, [r3, #0] - 80043be: 009b lsls r3, r3, #2 - 80043c0: 4413 add r3, r2 - 80043c2: 881b ldrh r3, [r3, #0] - 80043c4: b29b uxth r3, r3 - 80043c6: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80043ca: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80043ce: 843b strh r3, [r7, #32] - 80043d0: 687a ldr r2, [r7, #4] - 80043d2: 683b ldr r3, [r7, #0] - 80043d4: 781b ldrb r3, [r3, #0] - 80043d6: 009b lsls r3, r3, #2 - 80043d8: 441a add r2, r3 - 80043da: 8c3b ldrh r3, [r7, #32] - 80043dc: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80043e0: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80043e4: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 80043e8: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80043ec: b29b uxth r3, r3 - 80043ee: 8013 strh r3, [r2, #0] - - if (ep->num == 0U) - 80043f0: 683b ldr r3, [r7, #0] - 80043f2: 781b ldrb r3, [r3, #0] - 80043f4: 2b00 cmp r3, #0 - 80043f6: d124 bne.n 8004442 - { - /* Configure VALID status for EP0 */ - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); - 80043f8: 687a ldr r2, [r7, #4] - 80043fa: 683b ldr r3, [r7, #0] - 80043fc: 781b ldrb r3, [r3, #0] - 80043fe: 009b lsls r3, r3, #2 - 8004400: 4413 add r3, r2 - 8004402: 881b ldrh r3, [r3, #0] - 8004404: b29b uxth r3, r3 - 8004406: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 800440a: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800440e: 83bb strh r3, [r7, #28] - 8004410: 8bbb ldrh r3, [r7, #28] - 8004412: f483 5380 eor.w r3, r3, #4096 @ 0x1000 - 8004416: 83bb strh r3, [r7, #28] - 8004418: 8bbb ldrh r3, [r7, #28] - 800441a: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 800441e: 83bb strh r3, [r7, #28] - 8004420: 687a ldr r2, [r7, #4] - 8004422: 683b ldr r3, [r7, #0] - 8004424: 781b ldrb r3, [r3, #0] - 8004426: 009b lsls r3, r3, #2 - 8004428: 441a add r2, r3 - 800442a: 8bbb ldrh r3, [r7, #28] - 800442c: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004430: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004434: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004438: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800443c: b29b uxth r3, r3 - 800443e: 8013 strh r3, [r2, #0] - 8004440: e1ea b.n 8004818 - } - else - { - /* Configure NAK status for OUT Endpoint */ - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_NAK); - 8004442: 687a ldr r2, [r7, #4] - 8004444: 683b ldr r3, [r7, #0] - 8004446: 781b ldrb r3, [r3, #0] - 8004448: 009b lsls r3, r3, #2 - 800444a: 4413 add r3, r2 - 800444c: 881b ldrh r3, [r3, #0] - 800444e: b29b uxth r3, r3 - 8004450: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8004454: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004458: 83fb strh r3, [r7, #30] - 800445a: 8bfb ldrh r3, [r7, #30] - 800445c: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 8004460: 83fb strh r3, [r7, #30] - 8004462: 687a ldr r2, [r7, #4] - 8004464: 683b ldr r3, [r7, #0] - 8004466: 781b ldrb r3, [r3, #0] - 8004468: 009b lsls r3, r3, #2 - 800446a: 441a add r2, r3 - 800446c: 8bfb ldrh r3, [r7, #30] - 800446e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004472: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004476: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800447a: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800447e: b29b uxth r3, r3 - 8004480: 8013 strh r3, [r2, #0] - 8004482: e1c9 b.n 8004818 - } -#if (USE_USB_DOUBLE_BUFFER == 1U) - /* Double Buffer */ - else - { - if (ep->type == EP_TYPE_BULK) - 8004484: 683b ldr r3, [r7, #0] - 8004486: 78db ldrb r3, [r3, #3] - 8004488: 2b02 cmp r3, #2 - 800448a: d11e bne.n 80044ca - { - /* Set bulk endpoint as double buffered */ - PCD_SET_BULK_EP_DBUF(USBx, ep->num); - 800448c: 687a ldr r2, [r7, #4] - 800448e: 683b ldr r3, [r7, #0] - 8004490: 781b ldrb r3, [r3, #0] - 8004492: 009b lsls r3, r3, #2 - 8004494: 4413 add r3, r2 - 8004496: 881b ldrh r3, [r3, #0] - 8004498: b29b uxth r3, r3 - 800449a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 800449e: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80044a2: f8a7 3062 strh.w r3, [r7, #98] @ 0x62 - 80044a6: 687a ldr r2, [r7, #4] - 80044a8: 683b ldr r3, [r7, #0] - 80044aa: 781b ldrb r3, [r3, #0] - 80044ac: 009b lsls r3, r3, #2 - 80044ae: 441a add r2, r3 - 80044b0: f8b7 3062 ldrh.w r3, [r7, #98] @ 0x62 - 80044b4: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80044b8: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80044bc: f443 4301 orr.w r3, r3, #33024 @ 0x8100 - 80044c0: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80044c4: b29b uxth r3, r3 - 80044c6: 8013 strh r3, [r2, #0] - 80044c8: e01d b.n 8004506 - } - else - { - /* Set the ISOC endpoint in double buffer mode */ - PCD_CLEAR_EP_KIND(USBx, ep->num); - 80044ca: 687a ldr r2, [r7, #4] - 80044cc: 683b ldr r3, [r7, #0] - 80044ce: 781b ldrb r3, [r3, #0] - 80044d0: 009b lsls r3, r3, #2 - 80044d2: 4413 add r3, r2 - 80044d4: 881b ldrh r3, [r3, #0] - 80044d6: b29b uxth r3, r3 - 80044d8: f423 43e2 bic.w r3, r3, #28928 @ 0x7100 - 80044dc: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80044e0: f8a7 3064 strh.w r3, [r7, #100] @ 0x64 - 80044e4: 687a ldr r2, [r7, #4] - 80044e6: 683b ldr r3, [r7, #0] - 80044e8: 781b ldrb r3, [r3, #0] - 80044ea: 009b lsls r3, r3, #2 - 80044ec: 441a add r2, r3 - 80044ee: f8b7 3064 ldrh.w r3, [r7, #100] @ 0x64 - 80044f2: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80044f6: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80044fa: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 80044fe: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004502: b29b uxth r3, r3 - 8004504: 8013 strh r3, [r2, #0] - } - - /* Set buffer address for double buffered mode */ - PCD_SET_EP_DBUF_ADDR(USBx, ep->num, ep->pmaaddr0, ep->pmaaddr1); - 8004506: 687b ldr r3, [r7, #4] - 8004508: 65fb str r3, [r7, #92] @ 0x5c - 800450a: 687b ldr r3, [r7, #4] - 800450c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8004510: b29b uxth r3, r3 - 8004512: 461a mov r2, r3 - 8004514: 6dfb ldr r3, [r7, #92] @ 0x5c - 8004516: 4413 add r3, r2 - 8004518: 65fb str r3, [r7, #92] @ 0x5c - 800451a: 683b ldr r3, [r7, #0] - 800451c: 781b ldrb r3, [r3, #0] - 800451e: 011a lsls r2, r3, #4 - 8004520: 6dfb ldr r3, [r7, #92] @ 0x5c - 8004522: 4413 add r3, r2 - 8004524: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8004528: 65bb str r3, [r7, #88] @ 0x58 - 800452a: 683b ldr r3, [r7, #0] - 800452c: 891b ldrh r3, [r3, #8] - 800452e: 085b lsrs r3, r3, #1 - 8004530: b29b uxth r3, r3 - 8004532: 005b lsls r3, r3, #1 - 8004534: b29a uxth r2, r3 - 8004536: 6dbb ldr r3, [r7, #88] @ 0x58 - 8004538: 801a strh r2, [r3, #0] - 800453a: 687b ldr r3, [r7, #4] - 800453c: 657b str r3, [r7, #84] @ 0x54 - 800453e: 687b ldr r3, [r7, #4] - 8004540: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8004544: b29b uxth r3, r3 - 8004546: 461a mov r2, r3 - 8004548: 6d7b ldr r3, [r7, #84] @ 0x54 - 800454a: 4413 add r3, r2 - 800454c: 657b str r3, [r7, #84] @ 0x54 - 800454e: 683b ldr r3, [r7, #0] - 8004550: 781b ldrb r3, [r3, #0] - 8004552: 011a lsls r2, r3, #4 - 8004554: 6d7b ldr r3, [r7, #84] @ 0x54 - 8004556: 4413 add r3, r2 - 8004558: f503 6381 add.w r3, r3, #1032 @ 0x408 - 800455c: 653b str r3, [r7, #80] @ 0x50 - 800455e: 683b ldr r3, [r7, #0] - 8004560: 895b ldrh r3, [r3, #10] - 8004562: 085b lsrs r3, r3, #1 - 8004564: b29b uxth r3, r3 - 8004566: 005b lsls r3, r3, #1 - 8004568: b29a uxth r2, r3 - 800456a: 6d3b ldr r3, [r7, #80] @ 0x50 - 800456c: 801a strh r2, [r3, #0] - - if (ep->is_in == 0U) - 800456e: 683b ldr r3, [r7, #0] - 8004570: 785b ldrb r3, [r3, #1] - 8004572: 2b00 cmp r3, #0 - 8004574: f040 8093 bne.w 800469e - { - /* Clear the data toggle bits for the endpoint IN/OUT */ - PCD_CLEAR_RX_DTOG(USBx, ep->num); - 8004578: 687a ldr r2, [r7, #4] - 800457a: 683b ldr r3, [r7, #0] - 800457c: 781b ldrb r3, [r3, #0] - 800457e: 009b lsls r3, r3, #2 - 8004580: 4413 add r3, r2 - 8004582: 881b ldrh r3, [r3, #0] - 8004584: f8a7 3040 strh.w r3, [r7, #64] @ 0x40 - 8004588: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 - 800458c: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8004590: 2b00 cmp r3, #0 - 8004592: d01b beq.n 80045cc - 8004594: 687a ldr r2, [r7, #4] - 8004596: 683b ldr r3, [r7, #0] - 8004598: 781b ldrb r3, [r3, #0] - 800459a: 009b lsls r3, r3, #2 - 800459c: 4413 add r3, r2 - 800459e: 881b ldrh r3, [r3, #0] - 80045a0: b29b uxth r3, r3 - 80045a2: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80045a6: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80045aa: 87fb strh r3, [r7, #62] @ 0x3e - 80045ac: 687a ldr r2, [r7, #4] - 80045ae: 683b ldr r3, [r7, #0] - 80045b0: 781b ldrb r3, [r3, #0] - 80045b2: 009b lsls r3, r3, #2 - 80045b4: 441a add r2, r3 - 80045b6: 8ffb ldrh r3, [r7, #62] @ 0x3e - 80045b8: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80045bc: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80045c0: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 80045c4: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80045c8: b29b uxth r3, r3 - 80045ca: 8013 strh r3, [r2, #0] - PCD_CLEAR_TX_DTOG(USBx, ep->num); - 80045cc: 687a ldr r2, [r7, #4] - 80045ce: 683b ldr r3, [r7, #0] - 80045d0: 781b ldrb r3, [r3, #0] - 80045d2: 009b lsls r3, r3, #2 - 80045d4: 4413 add r3, r2 - 80045d6: 881b ldrh r3, [r3, #0] - 80045d8: 87bb strh r3, [r7, #60] @ 0x3c - 80045da: 8fbb ldrh r3, [r7, #60] @ 0x3c - 80045dc: f003 0340 and.w r3, r3, #64 @ 0x40 - 80045e0: 2b00 cmp r3, #0 - 80045e2: d01b beq.n 800461c - 80045e4: 687a ldr r2, [r7, #4] - 80045e6: 683b ldr r3, [r7, #0] - 80045e8: 781b ldrb r3, [r3, #0] - 80045ea: 009b lsls r3, r3, #2 - 80045ec: 4413 add r3, r2 - 80045ee: 881b ldrh r3, [r3, #0] - 80045f0: b29b uxth r3, r3 - 80045f2: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80045f6: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80045fa: 877b strh r3, [r7, #58] @ 0x3a - 80045fc: 687a ldr r2, [r7, #4] - 80045fe: 683b ldr r3, [r7, #0] - 8004600: 781b ldrb r3, [r3, #0] - 8004602: 009b lsls r3, r3, #2 - 8004604: 441a add r2, r3 - 8004606: 8f7b ldrh r3, [r7, #58] @ 0x3a - 8004608: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800460c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004610: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004614: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8004618: b29b uxth r3, r3 - 800461a: 8013 strh r3, [r2, #0] - - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); - 800461c: 687a ldr r2, [r7, #4] - 800461e: 683b ldr r3, [r7, #0] - 8004620: 781b ldrb r3, [r3, #0] - 8004622: 009b lsls r3, r3, #2 - 8004624: 4413 add r3, r2 - 8004626: 881b ldrh r3, [r3, #0] - 8004628: b29b uxth r3, r3 - 800462a: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 800462e: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004632: 873b strh r3, [r7, #56] @ 0x38 - 8004634: 8f3b ldrh r3, [r7, #56] @ 0x38 - 8004636: f483 5380 eor.w r3, r3, #4096 @ 0x1000 - 800463a: 873b strh r3, [r7, #56] @ 0x38 - 800463c: 8f3b ldrh r3, [r7, #56] @ 0x38 - 800463e: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 8004642: 873b strh r3, [r7, #56] @ 0x38 - 8004644: 687a ldr r2, [r7, #4] - 8004646: 683b ldr r3, [r7, #0] - 8004648: 781b ldrb r3, [r3, #0] - 800464a: 009b lsls r3, r3, #2 - 800464c: 441a add r2, r3 - 800464e: 8f3b ldrh r3, [r7, #56] @ 0x38 - 8004650: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004654: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004658: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800465c: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004660: b29b uxth r3, r3 - 8004662: 8013 strh r3, [r2, #0] - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); - 8004664: 687a ldr r2, [r7, #4] - 8004666: 683b ldr r3, [r7, #0] - 8004668: 781b ldrb r3, [r3, #0] - 800466a: 009b lsls r3, r3, #2 - 800466c: 4413 add r3, r2 - 800466e: 881b ldrh r3, [r3, #0] - 8004670: b29b uxth r3, r3 - 8004672: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004676: f023 0340 bic.w r3, r3, #64 @ 0x40 - 800467a: 86fb strh r3, [r7, #54] @ 0x36 - 800467c: 687a ldr r2, [r7, #4] - 800467e: 683b ldr r3, [r7, #0] - 8004680: 781b ldrb r3, [r3, #0] - 8004682: 009b lsls r3, r3, #2 - 8004684: 441a add r2, r3 - 8004686: 8efb ldrh r3, [r7, #54] @ 0x36 - 8004688: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800468c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004690: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004694: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004698: b29b uxth r3, r3 - 800469a: 8013 strh r3, [r2, #0] - 800469c: e0bc b.n 8004818 - } - else - { - /* Clear the data toggle bits for the endpoint IN/OUT */ - PCD_CLEAR_RX_DTOG(USBx, ep->num); - 800469e: 687a ldr r2, [r7, #4] - 80046a0: 683b ldr r3, [r7, #0] - 80046a2: 781b ldrb r3, [r3, #0] - 80046a4: 009b lsls r3, r3, #2 - 80046a6: 4413 add r3, r2 - 80046a8: 881b ldrh r3, [r3, #0] - 80046aa: f8a7 304e strh.w r3, [r7, #78] @ 0x4e - 80046ae: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e - 80046b2: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 80046b6: 2b00 cmp r3, #0 - 80046b8: d01d beq.n 80046f6 - 80046ba: 687a ldr r2, [r7, #4] - 80046bc: 683b ldr r3, [r7, #0] - 80046be: 781b ldrb r3, [r3, #0] - 80046c0: 009b lsls r3, r3, #2 - 80046c2: 4413 add r3, r2 - 80046c4: 881b ldrh r3, [r3, #0] - 80046c6: b29b uxth r3, r3 - 80046c8: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80046cc: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80046d0: f8a7 304c strh.w r3, [r7, #76] @ 0x4c - 80046d4: 687a ldr r2, [r7, #4] - 80046d6: 683b ldr r3, [r7, #0] - 80046d8: 781b ldrb r3, [r3, #0] - 80046da: 009b lsls r3, r3, #2 - 80046dc: 441a add r2, r3 - 80046de: f8b7 304c ldrh.w r3, [r7, #76] @ 0x4c - 80046e2: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80046e6: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80046ea: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 80046ee: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80046f2: b29b uxth r3, r3 - 80046f4: 8013 strh r3, [r2, #0] - PCD_CLEAR_TX_DTOG(USBx, ep->num); - 80046f6: 687a ldr r2, [r7, #4] - 80046f8: 683b ldr r3, [r7, #0] - 80046fa: 781b ldrb r3, [r3, #0] - 80046fc: 009b lsls r3, r3, #2 - 80046fe: 4413 add r3, r2 - 8004700: 881b ldrh r3, [r3, #0] - 8004702: f8a7 304a strh.w r3, [r7, #74] @ 0x4a - 8004706: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a - 800470a: f003 0340 and.w r3, r3, #64 @ 0x40 - 800470e: 2b00 cmp r3, #0 - 8004710: d01d beq.n 800474e - 8004712: 687a ldr r2, [r7, #4] - 8004714: 683b ldr r3, [r7, #0] - 8004716: 781b ldrb r3, [r3, #0] - 8004718: 009b lsls r3, r3, #2 - 800471a: 4413 add r3, r2 - 800471c: 881b ldrh r3, [r3, #0] - 800471e: b29b uxth r3, r3 - 8004720: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004724: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004728: f8a7 3048 strh.w r3, [r7, #72] @ 0x48 - 800472c: 687a ldr r2, [r7, #4] - 800472e: 683b ldr r3, [r7, #0] - 8004730: 781b ldrb r3, [r3, #0] - 8004732: 009b lsls r3, r3, #2 - 8004734: 441a add r2, r3 - 8004736: f8b7 3048 ldrh.w r3, [r7, #72] @ 0x48 - 800473a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800473e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004742: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004746: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 800474a: b29b uxth r3, r3 - 800474c: 8013 strh r3, [r2, #0] - - if (ep->type != EP_TYPE_ISOC) - 800474e: 683b ldr r3, [r7, #0] - 8004750: 78db ldrb r3, [r3, #3] - 8004752: 2b01 cmp r3, #1 - 8004754: d024 beq.n 80047a0 - { - /* Configure NAK status for the Endpoint */ - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); - 8004756: 687a ldr r2, [r7, #4] - 8004758: 683b ldr r3, [r7, #0] - 800475a: 781b ldrb r3, [r3, #0] - 800475c: 009b lsls r3, r3, #2 - 800475e: 4413 add r3, r2 - 8004760: 881b ldrh r3, [r3, #0] - 8004762: b29b uxth r3, r3 - 8004764: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004768: f023 0340 bic.w r3, r3, #64 @ 0x40 - 800476c: f8a7 3044 strh.w r3, [r7, #68] @ 0x44 - 8004770: f8b7 3044 ldrh.w r3, [r7, #68] @ 0x44 - 8004774: f083 0320 eor.w r3, r3, #32 - 8004778: f8a7 3044 strh.w r3, [r7, #68] @ 0x44 - 800477c: 687a ldr r2, [r7, #4] - 800477e: 683b ldr r3, [r7, #0] - 8004780: 781b ldrb r3, [r3, #0] - 8004782: 009b lsls r3, r3, #2 - 8004784: 441a add r2, r3 - 8004786: f8b7 3044 ldrh.w r3, [r7, #68] @ 0x44 - 800478a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800478e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004792: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004796: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800479a: b29b uxth r3, r3 - 800479c: 8013 strh r3, [r2, #0] - 800479e: e01d b.n 80047dc - } - else - { - /* Configure TX Endpoint to disabled state */ - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); - 80047a0: 687a ldr r2, [r7, #4] - 80047a2: 683b ldr r3, [r7, #0] - 80047a4: 781b ldrb r3, [r3, #0] - 80047a6: 009b lsls r3, r3, #2 - 80047a8: 4413 add r3, r2 - 80047aa: 881b ldrh r3, [r3, #0] - 80047ac: b29b uxth r3, r3 - 80047ae: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80047b2: f023 0340 bic.w r3, r3, #64 @ 0x40 - 80047b6: f8a7 3046 strh.w r3, [r7, #70] @ 0x46 - 80047ba: 687a ldr r2, [r7, #4] - 80047bc: 683b ldr r3, [r7, #0] - 80047be: 781b ldrb r3, [r3, #0] - 80047c0: 009b lsls r3, r3, #2 - 80047c2: 441a add r2, r3 - 80047c4: f8b7 3046 ldrh.w r3, [r7, #70] @ 0x46 - 80047c8: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80047cc: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80047d0: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 80047d4: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80047d8: b29b uxth r3, r3 - 80047da: 8013 strh r3, [r2, #0] - } - - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); - 80047dc: 687a ldr r2, [r7, #4] - 80047de: 683b ldr r3, [r7, #0] - 80047e0: 781b ldrb r3, [r3, #0] - 80047e2: 009b lsls r3, r3, #2 - 80047e4: 4413 add r3, r2 - 80047e6: 881b ldrh r3, [r3, #0] - 80047e8: b29b uxth r3, r3 - 80047ea: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 80047ee: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80047f2: f8a7 3042 strh.w r3, [r7, #66] @ 0x42 - 80047f6: 687a ldr r2, [r7, #4] - 80047f8: 683b ldr r3, [r7, #0] - 80047fa: 781b ldrb r3, [r3, #0] - 80047fc: 009b lsls r3, r3, #2 - 80047fe: 441a add r2, r3 - 8004800: f8b7 3042 ldrh.w r3, [r7, #66] @ 0x42 - 8004804: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004808: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800480c: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004810: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004814: b29b uxth r3, r3 - 8004816: 8013 strh r3, [r2, #0] - } - } -#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ - - return ret; - 8004818: f897 306f ldrb.w r3, [r7, #111] @ 0x6f -} - 800481c: 4618 mov r0, r3 - 800481e: 3774 adds r7, #116 @ 0x74 - 8004820: 46bd mov sp, r7 - 8004822: bc80 pop {r7} - 8004824: 4770 bx lr - 8004826: bf00 nop - -08004828 : - * @param USBx Selected device - * @param ep pointer to endpoint structure - * @retval HAL status - */ -HAL_StatusTypeDef USB_DeactivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep) -{ - 8004828: b480 push {r7} - 800482a: b08d sub sp, #52 @ 0x34 - 800482c: af00 add r7, sp, #0 - 800482e: 6078 str r0, [r7, #4] - 8004830: 6039 str r1, [r7, #0] - if (ep->doublebuffer == 0U) - 8004832: 683b ldr r3, [r7, #0] - 8004834: 7b1b ldrb r3, [r3, #12] - 8004836: 2b00 cmp r3, #0 - 8004838: f040 808e bne.w 8004958 - { - if (ep->is_in != 0U) - 800483c: 683b ldr r3, [r7, #0] - 800483e: 785b ldrb r3, [r3, #1] - 8004840: 2b00 cmp r3, #0 - 8004842: d044 beq.n 80048ce - { - PCD_CLEAR_TX_DTOG(USBx, ep->num); - 8004844: 687a ldr r2, [r7, #4] - 8004846: 683b ldr r3, [r7, #0] - 8004848: 781b ldrb r3, [r3, #0] - 800484a: 009b lsls r3, r3, #2 - 800484c: 4413 add r3, r2 - 800484e: 881b ldrh r3, [r3, #0] - 8004850: 81bb strh r3, [r7, #12] - 8004852: 89bb ldrh r3, [r7, #12] - 8004854: f003 0340 and.w r3, r3, #64 @ 0x40 - 8004858: 2b00 cmp r3, #0 - 800485a: d01b beq.n 8004894 - 800485c: 687a ldr r2, [r7, #4] - 800485e: 683b ldr r3, [r7, #0] - 8004860: 781b ldrb r3, [r3, #0] - 8004862: 009b lsls r3, r3, #2 - 8004864: 4413 add r3, r2 - 8004866: 881b ldrh r3, [r3, #0] - 8004868: b29b uxth r3, r3 - 800486a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 800486e: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004872: 817b strh r3, [r7, #10] - 8004874: 687a ldr r2, [r7, #4] - 8004876: 683b ldr r3, [r7, #0] - 8004878: 781b ldrb r3, [r3, #0] - 800487a: 009b lsls r3, r3, #2 - 800487c: 441a add r2, r3 - 800487e: 897b ldrh r3, [r7, #10] - 8004880: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004884: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004888: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800488c: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8004890: b29b uxth r3, r3 - 8004892: 8013 strh r3, [r2, #0] - - /* Configure DISABLE status for the Endpoint */ - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); - 8004894: 687a ldr r2, [r7, #4] - 8004896: 683b ldr r3, [r7, #0] - 8004898: 781b ldrb r3, [r3, #0] - 800489a: 009b lsls r3, r3, #2 - 800489c: 4413 add r3, r2 - 800489e: 881b ldrh r3, [r3, #0] - 80048a0: b29b uxth r3, r3 - 80048a2: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80048a6: f023 0340 bic.w r3, r3, #64 @ 0x40 - 80048aa: 813b strh r3, [r7, #8] - 80048ac: 687a ldr r2, [r7, #4] - 80048ae: 683b ldr r3, [r7, #0] - 80048b0: 781b ldrb r3, [r3, #0] - 80048b2: 009b lsls r3, r3, #2 - 80048b4: 441a add r2, r3 - 80048b6: 893b ldrh r3, [r7, #8] - 80048b8: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80048bc: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80048c0: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 80048c4: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80048c8: b29b uxth r3, r3 - 80048ca: 8013 strh r3, [r2, #0] - 80048cc: e192 b.n 8004bf4 - } - - else - { - PCD_CLEAR_RX_DTOG(USBx, ep->num); - 80048ce: 687a ldr r2, [r7, #4] - 80048d0: 683b ldr r3, [r7, #0] - 80048d2: 781b ldrb r3, [r3, #0] - 80048d4: 009b lsls r3, r3, #2 - 80048d6: 4413 add r3, r2 - 80048d8: 881b ldrh r3, [r3, #0] - 80048da: 827b strh r3, [r7, #18] - 80048dc: 8a7b ldrh r3, [r7, #18] - 80048de: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 80048e2: 2b00 cmp r3, #0 - 80048e4: d01b beq.n 800491e - 80048e6: 687a ldr r2, [r7, #4] - 80048e8: 683b ldr r3, [r7, #0] - 80048ea: 781b ldrb r3, [r3, #0] - 80048ec: 009b lsls r3, r3, #2 - 80048ee: 4413 add r3, r2 - 80048f0: 881b ldrh r3, [r3, #0] - 80048f2: b29b uxth r3, r3 - 80048f4: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80048f8: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80048fc: 823b strh r3, [r7, #16] - 80048fe: 687a ldr r2, [r7, #4] - 8004900: 683b ldr r3, [r7, #0] - 8004902: 781b ldrb r3, [r3, #0] - 8004904: 009b lsls r3, r3, #2 - 8004906: 441a add r2, r3 - 8004908: 8a3b ldrh r3, [r7, #16] - 800490a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800490e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004912: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8004916: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800491a: b29b uxth r3, r3 - 800491c: 8013 strh r3, [r2, #0] - - /* Configure DISABLE status for the Endpoint */ - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); - 800491e: 687a ldr r2, [r7, #4] - 8004920: 683b ldr r3, [r7, #0] - 8004922: 781b ldrb r3, [r3, #0] - 8004924: 009b lsls r3, r3, #2 - 8004926: 4413 add r3, r2 - 8004928: 881b ldrh r3, [r3, #0] - 800492a: b29b uxth r3, r3 - 800492c: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8004930: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004934: 81fb strh r3, [r7, #14] - 8004936: 687a ldr r2, [r7, #4] - 8004938: 683b ldr r3, [r7, #0] - 800493a: 781b ldrb r3, [r3, #0] - 800493c: 009b lsls r3, r3, #2 - 800493e: 441a add r2, r3 - 8004940: 89fb ldrh r3, [r7, #14] - 8004942: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004946: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800494a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800494e: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004952: b29b uxth r3, r3 - 8004954: 8013 strh r3, [r2, #0] - 8004956: e14d b.n 8004bf4 - } -#if (USE_USB_DOUBLE_BUFFER == 1U) - /* Double Buffer */ - else - { - if (ep->is_in == 0U) - 8004958: 683b ldr r3, [r7, #0] - 800495a: 785b ldrb r3, [r3, #1] - 800495c: 2b00 cmp r3, #0 - 800495e: f040 80a5 bne.w 8004aac - { - /* Clear the data toggle bits for the endpoint IN/OUT*/ - PCD_CLEAR_RX_DTOG(USBx, ep->num); - 8004962: 687a ldr r2, [r7, #4] - 8004964: 683b ldr r3, [r7, #0] - 8004966: 781b ldrb r3, [r3, #0] - 8004968: 009b lsls r3, r3, #2 - 800496a: 4413 add r3, r2 - 800496c: 881b ldrh r3, [r3, #0] - 800496e: 843b strh r3, [r7, #32] - 8004970: 8c3b ldrh r3, [r7, #32] - 8004972: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8004976: 2b00 cmp r3, #0 - 8004978: d01b beq.n 80049b2 - 800497a: 687a ldr r2, [r7, #4] - 800497c: 683b ldr r3, [r7, #0] - 800497e: 781b ldrb r3, [r3, #0] - 8004980: 009b lsls r3, r3, #2 - 8004982: 4413 add r3, r2 - 8004984: 881b ldrh r3, [r3, #0] - 8004986: b29b uxth r3, r3 - 8004988: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 800498c: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004990: 83fb strh r3, [r7, #30] - 8004992: 687a ldr r2, [r7, #4] - 8004994: 683b ldr r3, [r7, #0] - 8004996: 781b ldrb r3, [r3, #0] - 8004998: 009b lsls r3, r3, #2 - 800499a: 441a add r2, r3 - 800499c: 8bfb ldrh r3, [r7, #30] - 800499e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80049a2: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80049a6: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 80049aa: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80049ae: b29b uxth r3, r3 - 80049b0: 8013 strh r3, [r2, #0] - PCD_CLEAR_TX_DTOG(USBx, ep->num); - 80049b2: 687a ldr r2, [r7, #4] - 80049b4: 683b ldr r3, [r7, #0] - 80049b6: 781b ldrb r3, [r3, #0] - 80049b8: 009b lsls r3, r3, #2 - 80049ba: 4413 add r3, r2 - 80049bc: 881b ldrh r3, [r3, #0] - 80049be: 83bb strh r3, [r7, #28] - 80049c0: 8bbb ldrh r3, [r7, #28] - 80049c2: f003 0340 and.w r3, r3, #64 @ 0x40 - 80049c6: 2b00 cmp r3, #0 - 80049c8: d01b beq.n 8004a02 - 80049ca: 687a ldr r2, [r7, #4] - 80049cc: 683b ldr r3, [r7, #0] - 80049ce: 781b ldrb r3, [r3, #0] - 80049d0: 009b lsls r3, r3, #2 - 80049d2: 4413 add r3, r2 - 80049d4: 881b ldrh r3, [r3, #0] - 80049d6: b29b uxth r3, r3 - 80049d8: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80049dc: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80049e0: 837b strh r3, [r7, #26] - 80049e2: 687a ldr r2, [r7, #4] - 80049e4: 683b ldr r3, [r7, #0] - 80049e6: 781b ldrb r3, [r3, #0] - 80049e8: 009b lsls r3, r3, #2 - 80049ea: 441a add r2, r3 - 80049ec: 8b7b ldrh r3, [r7, #26] - 80049ee: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80049f2: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80049f6: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 80049fa: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 80049fe: b29b uxth r3, r3 - 8004a00: 8013 strh r3, [r2, #0] - - /* Reset value of the data toggle bits for the endpoint out*/ - PCD_TX_DTOG(USBx, ep->num); - 8004a02: 687a ldr r2, [r7, #4] - 8004a04: 683b ldr r3, [r7, #0] - 8004a06: 781b ldrb r3, [r3, #0] - 8004a08: 009b lsls r3, r3, #2 - 8004a0a: 4413 add r3, r2 - 8004a0c: 881b ldrh r3, [r3, #0] - 8004a0e: b29b uxth r3, r3 - 8004a10: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004a14: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004a18: 833b strh r3, [r7, #24] - 8004a1a: 687a ldr r2, [r7, #4] - 8004a1c: 683b ldr r3, [r7, #0] - 8004a1e: 781b ldrb r3, [r3, #0] - 8004a20: 009b lsls r3, r3, #2 - 8004a22: 441a add r2, r3 - 8004a24: 8b3b ldrh r3, [r7, #24] - 8004a26: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004a2a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004a2e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004a32: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8004a36: b29b uxth r3, r3 - 8004a38: 8013 strh r3, [r2, #0] - - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); - 8004a3a: 687a ldr r2, [r7, #4] - 8004a3c: 683b ldr r3, [r7, #0] - 8004a3e: 781b ldrb r3, [r3, #0] - 8004a40: 009b lsls r3, r3, #2 - 8004a42: 4413 add r3, r2 - 8004a44: 881b ldrh r3, [r3, #0] - 8004a46: b29b uxth r3, r3 - 8004a48: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8004a4c: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004a50: 82fb strh r3, [r7, #22] - 8004a52: 687a ldr r2, [r7, #4] - 8004a54: 683b ldr r3, [r7, #0] - 8004a56: 781b ldrb r3, [r3, #0] - 8004a58: 009b lsls r3, r3, #2 - 8004a5a: 441a add r2, r3 - 8004a5c: 8afb ldrh r3, [r7, #22] - 8004a5e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004a62: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004a66: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004a6a: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004a6e: b29b uxth r3, r3 - 8004a70: 8013 strh r3, [r2, #0] - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); - 8004a72: 687a ldr r2, [r7, #4] - 8004a74: 683b ldr r3, [r7, #0] - 8004a76: 781b ldrb r3, [r3, #0] - 8004a78: 009b lsls r3, r3, #2 - 8004a7a: 4413 add r3, r2 - 8004a7c: 881b ldrh r3, [r3, #0] - 8004a7e: b29b uxth r3, r3 - 8004a80: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004a84: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8004a88: 82bb strh r3, [r7, #20] - 8004a8a: 687a ldr r2, [r7, #4] - 8004a8c: 683b ldr r3, [r7, #0] - 8004a8e: 781b ldrb r3, [r3, #0] - 8004a90: 009b lsls r3, r3, #2 - 8004a92: 441a add r2, r3 - 8004a94: 8abb ldrh r3, [r7, #20] - 8004a96: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004a9a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004a9e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004aa2: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004aa6: b29b uxth r3, r3 - 8004aa8: 8013 strh r3, [r2, #0] - 8004aaa: e0a3 b.n 8004bf4 - } - else - { - /* Clear the data toggle bits for the endpoint IN/OUT*/ - PCD_CLEAR_RX_DTOG(USBx, ep->num); - 8004aac: 687a ldr r2, [r7, #4] - 8004aae: 683b ldr r3, [r7, #0] - 8004ab0: 781b ldrb r3, [r3, #0] - 8004ab2: 009b lsls r3, r3, #2 - 8004ab4: 4413 add r3, r2 - 8004ab6: 881b ldrh r3, [r3, #0] - 8004ab8: 85fb strh r3, [r7, #46] @ 0x2e - 8004aba: 8dfb ldrh r3, [r7, #46] @ 0x2e - 8004abc: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8004ac0: 2b00 cmp r3, #0 - 8004ac2: d01b beq.n 8004afc - 8004ac4: 687a ldr r2, [r7, #4] - 8004ac6: 683b ldr r3, [r7, #0] - 8004ac8: 781b ldrb r3, [r3, #0] - 8004aca: 009b lsls r3, r3, #2 - 8004acc: 4413 add r3, r2 - 8004ace: 881b ldrh r3, [r3, #0] - 8004ad0: b29b uxth r3, r3 - 8004ad2: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004ad6: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004ada: 85bb strh r3, [r7, #44] @ 0x2c - 8004adc: 687a ldr r2, [r7, #4] - 8004ade: 683b ldr r3, [r7, #0] - 8004ae0: 781b ldrb r3, [r3, #0] - 8004ae2: 009b lsls r3, r3, #2 - 8004ae4: 441a add r2, r3 - 8004ae6: 8dbb ldrh r3, [r7, #44] @ 0x2c - 8004ae8: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004aec: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004af0: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8004af4: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004af8: b29b uxth r3, r3 - 8004afa: 8013 strh r3, [r2, #0] - PCD_CLEAR_TX_DTOG(USBx, ep->num); - 8004afc: 687a ldr r2, [r7, #4] - 8004afe: 683b ldr r3, [r7, #0] - 8004b00: 781b ldrb r3, [r3, #0] - 8004b02: 009b lsls r3, r3, #2 - 8004b04: 4413 add r3, r2 - 8004b06: 881b ldrh r3, [r3, #0] - 8004b08: 857b strh r3, [r7, #42] @ 0x2a - 8004b0a: 8d7b ldrh r3, [r7, #42] @ 0x2a - 8004b0c: f003 0340 and.w r3, r3, #64 @ 0x40 - 8004b10: 2b00 cmp r3, #0 - 8004b12: d01b beq.n 8004b4c - 8004b14: 687a ldr r2, [r7, #4] - 8004b16: 683b ldr r3, [r7, #0] - 8004b18: 781b ldrb r3, [r3, #0] - 8004b1a: 009b lsls r3, r3, #2 - 8004b1c: 4413 add r3, r2 - 8004b1e: 881b ldrh r3, [r3, #0] - 8004b20: b29b uxth r3, r3 - 8004b22: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004b26: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004b2a: 853b strh r3, [r7, #40] @ 0x28 - 8004b2c: 687a ldr r2, [r7, #4] - 8004b2e: 683b ldr r3, [r7, #0] - 8004b30: 781b ldrb r3, [r3, #0] - 8004b32: 009b lsls r3, r3, #2 - 8004b34: 441a add r2, r3 - 8004b36: 8d3b ldrh r3, [r7, #40] @ 0x28 - 8004b38: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004b3c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004b40: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004b44: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8004b48: b29b uxth r3, r3 - 8004b4a: 8013 strh r3, [r2, #0] - PCD_RX_DTOG(USBx, ep->num); - 8004b4c: 687a ldr r2, [r7, #4] - 8004b4e: 683b ldr r3, [r7, #0] - 8004b50: 781b ldrb r3, [r3, #0] - 8004b52: 009b lsls r3, r3, #2 - 8004b54: 4413 add r3, r2 - 8004b56: 881b ldrh r3, [r3, #0] - 8004b58: b29b uxth r3, r3 - 8004b5a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004b5e: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004b62: 84fb strh r3, [r7, #38] @ 0x26 - 8004b64: 687a ldr r2, [r7, #4] - 8004b66: 683b ldr r3, [r7, #0] - 8004b68: 781b ldrb r3, [r3, #0] - 8004b6a: 009b lsls r3, r3, #2 - 8004b6c: 441a add r2, r3 - 8004b6e: 8cfb ldrh r3, [r7, #38] @ 0x26 - 8004b70: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004b74: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004b78: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8004b7c: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004b80: b29b uxth r3, r3 - 8004b82: 8013 strh r3, [r2, #0] - - /* Configure DISABLE status for the Endpoint*/ - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); - 8004b84: 687a ldr r2, [r7, #4] - 8004b86: 683b ldr r3, [r7, #0] - 8004b88: 781b ldrb r3, [r3, #0] - 8004b8a: 009b lsls r3, r3, #2 - 8004b8c: 4413 add r3, r2 - 8004b8e: 881b ldrh r3, [r3, #0] - 8004b90: b29b uxth r3, r3 - 8004b92: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004b96: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8004b9a: 84bb strh r3, [r7, #36] @ 0x24 - 8004b9c: 687a ldr r2, [r7, #4] - 8004b9e: 683b ldr r3, [r7, #0] - 8004ba0: 781b ldrb r3, [r3, #0] - 8004ba2: 009b lsls r3, r3, #2 - 8004ba4: 441a add r2, r3 - 8004ba6: 8cbb ldrh r3, [r7, #36] @ 0x24 - 8004ba8: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004bac: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004bb0: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004bb4: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004bb8: b29b uxth r3, r3 - 8004bba: 8013 strh r3, [r2, #0] - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); - 8004bbc: 687a ldr r2, [r7, #4] - 8004bbe: 683b ldr r3, [r7, #0] - 8004bc0: 781b ldrb r3, [r3, #0] - 8004bc2: 009b lsls r3, r3, #2 - 8004bc4: 4413 add r3, r2 - 8004bc6: 881b ldrh r3, [r3, #0] - 8004bc8: b29b uxth r3, r3 - 8004bca: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8004bce: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004bd2: 847b strh r3, [r7, #34] @ 0x22 - 8004bd4: 687a ldr r2, [r7, #4] - 8004bd6: 683b ldr r3, [r7, #0] - 8004bd8: 781b ldrb r3, [r3, #0] - 8004bda: 009b lsls r3, r3, #2 - 8004bdc: 441a add r2, r3 - 8004bde: 8c7b ldrh r3, [r7, #34] @ 0x22 - 8004be0: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004be4: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004be8: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8004bec: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004bf0: b29b uxth r3, r3 - 8004bf2: 8013 strh r3, [r2, #0] - } - } -#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ - - return HAL_OK; - 8004bf4: 2300 movs r3, #0 -} - 8004bf6: 4618 mov r0, r3 - 8004bf8: 3734 adds r7, #52 @ 0x34 - 8004bfa: 46bd mov sp, r7 - 8004bfc: bc80 pop {r7} - 8004bfe: 4770 bx lr - -08004c00 : - * @param USBx Selected device - * @param ep pointer to endpoint structure - * @retval HAL status - */ -HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx, USB_EPTypeDef *ep) -{ - 8004c00: b580 push {r7, lr} - 8004c02: b0c2 sub sp, #264 @ 0x108 - 8004c04: af00 add r7, sp, #0 - 8004c06: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004c0a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8004c0e: 6018 str r0, [r3, #0] - 8004c10: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004c14: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004c18: 6019 str r1, [r3, #0] - uint16_t pmabuffer; - uint16_t wEPVal; -#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ - - /* IN endpoint */ - if (ep->is_in == 1U) - 8004c1a: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004c1e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004c22: 681b ldr r3, [r3, #0] - 8004c24: 785b ldrb r3, [r3, #1] - 8004c26: 2b01 cmp r3, #1 - 8004c28: f040 86b7 bne.w 800599a - { - /*Multi packet transfer*/ - if (ep->xfer_len > ep->maxpacket) - 8004c2c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004c30: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004c34: 681b ldr r3, [r3, #0] - 8004c36: 699a ldr r2, [r3, #24] - 8004c38: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004c3c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004c40: 681b ldr r3, [r3, #0] - 8004c42: 691b ldr r3, [r3, #16] - 8004c44: 429a cmp r2, r3 - 8004c46: d908 bls.n 8004c5a - { - len = ep->maxpacket; - 8004c48: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004c4c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004c50: 681b ldr r3, [r3, #0] - 8004c52: 691b ldr r3, [r3, #16] - 8004c54: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - 8004c58: e007 b.n 8004c6a - } - else - { - len = ep->xfer_len; - 8004c5a: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004c5e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004c62: 681b ldr r3, [r3, #0] - 8004c64: 699b ldr r3, [r3, #24] - 8004c66: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - } - - /* configure and validate Tx endpoint */ - if (ep->doublebuffer == 0U) - 8004c6a: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004c6e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004c72: 681b ldr r3, [r3, #0] - 8004c74: 7b1b ldrb r3, [r3, #12] - 8004c76: 2b00 cmp r3, #0 - 8004c78: d13a bne.n 8004cf0 - { - USB_WritePMA(USBx, ep->xfer_buff, ep->pmaadress, (uint16_t)len); - 8004c7a: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004c7e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004c82: 681b ldr r3, [r3, #0] - 8004c84: 6959 ldr r1, [r3, #20] - 8004c86: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004c8a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004c8e: 681b ldr r3, [r3, #0] - 8004c90: 88da ldrh r2, [r3, #6] - 8004c92: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8004c96: b29b uxth r3, r3 - 8004c98: f507 7084 add.w r0, r7, #264 @ 0x108 - 8004c9c: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 8004ca0: 6800 ldr r0, [r0, #0] - 8004ca2: f001 fc9c bl 80065de - PCD_SET_EP_TX_CNT(USBx, ep->num, len); - 8004ca6: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004caa: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8004cae: 681b ldr r3, [r3, #0] - 8004cb0: 613b str r3, [r7, #16] - 8004cb2: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004cb6: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8004cba: 681b ldr r3, [r3, #0] - 8004cbc: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8004cc0: b29b uxth r3, r3 - 8004cc2: 461a mov r2, r3 - 8004cc4: 693b ldr r3, [r7, #16] - 8004cc6: 4413 add r3, r2 - 8004cc8: 613b str r3, [r7, #16] - 8004cca: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004cce: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004cd2: 681b ldr r3, [r3, #0] - 8004cd4: 781b ldrb r3, [r3, #0] - 8004cd6: 011a lsls r2, r3, #4 - 8004cd8: 693b ldr r3, [r7, #16] - 8004cda: 4413 add r3, r2 - 8004cdc: f203 4304 addw r3, r3, #1028 @ 0x404 - 8004ce0: 60fb str r3, [r7, #12] - 8004ce2: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8004ce6: b29a uxth r2, r3 - 8004ce8: 68fb ldr r3, [r7, #12] - 8004cea: 801a strh r2, [r3, #0] - 8004cec: f000 be1f b.w 800592e - } -#if (USE_USB_DOUBLE_BUFFER == 1U) - else - { - /* double buffer bulk management */ - if (ep->type == EP_TYPE_BULK) - 8004cf0: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004cf4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004cf8: 681b ldr r3, [r3, #0] - 8004cfa: 78db ldrb r3, [r3, #3] - 8004cfc: 2b02 cmp r3, #2 - 8004cfe: f040 8462 bne.w 80055c6 - { - if (ep->xfer_len_db > ep->maxpacket) - 8004d02: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004d06: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004d0a: 681b ldr r3, [r3, #0] - 8004d0c: 6a1a ldr r2, [r3, #32] - 8004d0e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004d12: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004d16: 681b ldr r3, [r3, #0] - 8004d18: 691b ldr r3, [r3, #16] - 8004d1a: 429a cmp r2, r3 - 8004d1c: f240 83df bls.w 80054de - { - /* enable double buffer */ - PCD_SET_BULK_EP_DBUF(USBx, ep->num); - 8004d20: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004d24: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8004d28: 681a ldr r2, [r3, #0] - 8004d2a: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004d2e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004d32: 681b ldr r3, [r3, #0] - 8004d34: 781b ldrb r3, [r3, #0] - 8004d36: 009b lsls r3, r3, #2 - 8004d38: 4413 add r3, r2 - 8004d3a: 881b ldrh r3, [r3, #0] - 8004d3c: b29b uxth r3, r3 - 8004d3e: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8004d42: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8004d46: f8a7 3056 strh.w r3, [r7, #86] @ 0x56 - 8004d4a: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004d4e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8004d52: 681a ldr r2, [r3, #0] - 8004d54: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004d58: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004d5c: 681b ldr r3, [r3, #0] - 8004d5e: 781b ldrb r3, [r3, #0] - 8004d60: 009b lsls r3, r3, #2 - 8004d62: 441a add r2, r3 - 8004d64: f8b7 3056 ldrh.w r3, [r7, #86] @ 0x56 - 8004d68: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8004d6c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8004d70: f443 4301 orr.w r3, r3, #33024 @ 0x8100 - 8004d74: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8004d78: b29b uxth r3, r3 - 8004d7a: 8013 strh r3, [r2, #0] - - /* each Time to write in PMA xfer_len_db will */ - ep->xfer_len_db -= len; - 8004d7c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004d80: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004d84: 681b ldr r3, [r3, #0] - 8004d86: 6a1a ldr r2, [r3, #32] - 8004d88: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8004d8c: 1ad2 subs r2, r2, r3 - 8004d8e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004d92: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004d96: 681b ldr r3, [r3, #0] - 8004d98: 621a str r2, [r3, #32] - - /* Fill the two first buffer in the Buffer0 & Buffer1 */ - if ((PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_DTOG_TX) != 0U) - 8004d9a: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004d9e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8004da2: 681a ldr r2, [r3, #0] - 8004da4: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004da8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004dac: 681b ldr r3, [r3, #0] - 8004dae: 781b ldrb r3, [r3, #0] - 8004db0: 009b lsls r3, r3, #2 - 8004db2: 4413 add r3, r2 - 8004db4: 881b ldrh r3, [r3, #0] - 8004db6: b29b uxth r3, r3 - 8004db8: f003 0340 and.w r3, r3, #64 @ 0x40 - 8004dbc: 2b00 cmp r3, #0 - 8004dbe: f000 81c7 beq.w 8005150 - { - /* Set the Double buffer counter for pmabuffer1 */ - PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); - 8004dc2: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004dc6: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8004dca: 681b ldr r3, [r3, #0] - 8004dcc: 633b str r3, [r7, #48] @ 0x30 - 8004dce: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004dd2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004dd6: 681b ldr r3, [r3, #0] - 8004dd8: 785b ldrb r3, [r3, #1] - 8004dda: 2b00 cmp r3, #0 - 8004ddc: d177 bne.n 8004ece - 8004dde: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004de2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8004de6: 681b ldr r3, [r3, #0] - 8004de8: 62bb str r3, [r7, #40] @ 0x28 - 8004dea: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004dee: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8004df2: 681b ldr r3, [r3, #0] - 8004df4: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8004df8: b29b uxth r3, r3 - 8004dfa: 461a mov r2, r3 - 8004dfc: 6abb ldr r3, [r7, #40] @ 0x28 - 8004dfe: 4413 add r3, r2 - 8004e00: 62bb str r3, [r7, #40] @ 0x28 - 8004e02: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004e06: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004e0a: 681b ldr r3, [r3, #0] - 8004e0c: 781b ldrb r3, [r3, #0] - 8004e0e: 011a lsls r2, r3, #4 - 8004e10: 6abb ldr r3, [r7, #40] @ 0x28 - 8004e12: 4413 add r3, r2 - 8004e14: f203 430c addw r3, r3, #1036 @ 0x40c - 8004e18: 627b str r3, [r7, #36] @ 0x24 - 8004e1a: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004e1c: 881b ldrh r3, [r3, #0] - 8004e1e: b29b uxth r3, r3 - 8004e20: f3c3 0309 ubfx r3, r3, #0, #10 - 8004e24: b29a uxth r2, r3 - 8004e26: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004e28: 801a strh r2, [r3, #0] - 8004e2a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8004e2e: 2b3e cmp r3, #62 @ 0x3e - 8004e30: d921 bls.n 8004e76 - 8004e32: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8004e36: 095b lsrs r3, r3, #5 - 8004e38: f8c7 3100 str.w r3, [r7, #256] @ 0x100 - 8004e3c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8004e40: f003 031f and.w r3, r3, #31 - 8004e44: 2b00 cmp r3, #0 - 8004e46: d104 bne.n 8004e52 - 8004e48: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 - 8004e4c: 3b01 subs r3, #1 - 8004e4e: f8c7 3100 str.w r3, [r7, #256] @ 0x100 - 8004e52: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004e54: 881b ldrh r3, [r3, #0] - 8004e56: b29a uxth r2, r3 - 8004e58: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 - 8004e5c: b29b uxth r3, r3 - 8004e5e: 029b lsls r3, r3, #10 - 8004e60: b29b uxth r3, r3 - 8004e62: 4313 orrs r3, r2 - 8004e64: b29b uxth r3, r3 - 8004e66: ea6f 4343 mvn.w r3, r3, lsl #17 - 8004e6a: ea6f 4353 mvn.w r3, r3, lsr #17 - 8004e6e: b29a uxth r2, r3 - 8004e70: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004e72: 801a strh r2, [r3, #0] - 8004e74: e050 b.n 8004f18 - 8004e76: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8004e7a: 2b00 cmp r3, #0 - 8004e7c: d10a bne.n 8004e94 - 8004e7e: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004e80: 881b ldrh r3, [r3, #0] - 8004e82: b29b uxth r3, r3 - 8004e84: ea6f 4343 mvn.w r3, r3, lsl #17 - 8004e88: ea6f 4353 mvn.w r3, r3, lsr #17 - 8004e8c: b29a uxth r2, r3 - 8004e8e: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004e90: 801a strh r2, [r3, #0] - 8004e92: e041 b.n 8004f18 - 8004e94: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8004e98: 085b lsrs r3, r3, #1 - 8004e9a: f8c7 3100 str.w r3, [r7, #256] @ 0x100 - 8004e9e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8004ea2: f003 0301 and.w r3, r3, #1 - 8004ea6: 2b00 cmp r3, #0 - 8004ea8: d004 beq.n 8004eb4 - 8004eaa: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 - 8004eae: 3301 adds r3, #1 - 8004eb0: f8c7 3100 str.w r3, [r7, #256] @ 0x100 - 8004eb4: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004eb6: 881b ldrh r3, [r3, #0] - 8004eb8: b29a uxth r2, r3 - 8004eba: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 - 8004ebe: b29b uxth r3, r3 - 8004ec0: 029b lsls r3, r3, #10 - 8004ec2: b29b uxth r3, r3 - 8004ec4: 4313 orrs r3, r2 - 8004ec6: b29a uxth r2, r3 - 8004ec8: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004eca: 801a strh r2, [r3, #0] - 8004ecc: e024 b.n 8004f18 - 8004ece: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004ed2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004ed6: 681b ldr r3, [r3, #0] - 8004ed8: 785b ldrb r3, [r3, #1] - 8004eda: 2b01 cmp r3, #1 - 8004edc: d11c bne.n 8004f18 - 8004ede: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004ee2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8004ee6: 681b ldr r3, [r3, #0] - 8004ee8: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8004eec: b29b uxth r3, r3 - 8004eee: 461a mov r2, r3 - 8004ef0: 6b3b ldr r3, [r7, #48] @ 0x30 - 8004ef2: 4413 add r3, r2 - 8004ef4: 633b str r3, [r7, #48] @ 0x30 - 8004ef6: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004efa: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004efe: 681b ldr r3, [r3, #0] - 8004f00: 781b ldrb r3, [r3, #0] - 8004f02: 011a lsls r2, r3, #4 - 8004f04: 6b3b ldr r3, [r7, #48] @ 0x30 - 8004f06: 4413 add r3, r2 - 8004f08: f203 430c addw r3, r3, #1036 @ 0x40c - 8004f0c: 62fb str r3, [r7, #44] @ 0x2c - 8004f0e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8004f12: b29a uxth r2, r3 - 8004f14: 6afb ldr r3, [r7, #44] @ 0x2c - 8004f16: 801a strh r2, [r3, #0] - pmabuffer = ep->pmaaddr1; - 8004f18: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004f1c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004f20: 681b ldr r3, [r3, #0] - 8004f22: 895b ldrh r3, [r3, #10] - 8004f24: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 - - /* Write the user buffer to USB PMA */ - USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); - 8004f28: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004f2c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004f30: 681b ldr r3, [r3, #0] - 8004f32: 6959 ldr r1, [r3, #20] - 8004f34: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8004f38: b29b uxth r3, r3 - 8004f3a: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 - 8004f3e: f507 7084 add.w r0, r7, #264 @ 0x108 - 8004f42: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 8004f46: 6800 ldr r0, [r0, #0] - 8004f48: f001 fb49 bl 80065de - ep->xfer_buff += len; - 8004f4c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004f50: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004f54: 681b ldr r3, [r3, #0] - 8004f56: 695a ldr r2, [r3, #20] - 8004f58: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8004f5c: 441a add r2, r3 - 8004f5e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004f62: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004f66: 681b ldr r3, [r3, #0] - 8004f68: 615a str r2, [r3, #20] - - if (ep->xfer_len_db > ep->maxpacket) - 8004f6a: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004f6e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004f72: 681b ldr r3, [r3, #0] - 8004f74: 6a1a ldr r2, [r3, #32] - 8004f76: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004f7a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004f7e: 681b ldr r3, [r3, #0] - 8004f80: 691b ldr r3, [r3, #16] - 8004f82: 429a cmp r2, r3 - 8004f84: d90f bls.n 8004fa6 - { - ep->xfer_len_db -= len; - 8004f86: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004f8a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004f8e: 681b ldr r3, [r3, #0] - 8004f90: 6a1a ldr r2, [r3, #32] - 8004f92: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8004f96: 1ad2 subs r2, r2, r3 - 8004f98: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004f9c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004fa0: 681b ldr r3, [r3, #0] - 8004fa2: 621a str r2, [r3, #32] - 8004fa4: e00e b.n 8004fc4 - } - else - { - len = ep->xfer_len_db; - 8004fa6: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004faa: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004fae: 681b ldr r3, [r3, #0] - 8004fb0: 6a1b ldr r3, [r3, #32] - 8004fb2: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - ep->xfer_len_db = 0U; - 8004fb6: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004fba: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004fbe: 681b ldr r3, [r3, #0] - 8004fc0: 2200 movs r2, #0 - 8004fc2: 621a str r2, [r3, #32] - } - - /* Set the Double buffer counter for pmabuffer0 */ - PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); - 8004fc4: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004fc8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8004fcc: 681b ldr r3, [r3, #0] - 8004fce: 785b ldrb r3, [r3, #1] - 8004fd0: 2b00 cmp r3, #0 - 8004fd2: d177 bne.n 80050c4 - 8004fd4: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004fd8: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8004fdc: 681b ldr r3, [r3, #0] - 8004fde: 61bb str r3, [r7, #24] - 8004fe0: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004fe4: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8004fe8: 681b ldr r3, [r3, #0] - 8004fea: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8004fee: b29b uxth r3, r3 - 8004ff0: 461a mov r2, r3 - 8004ff2: 69bb ldr r3, [r7, #24] - 8004ff4: 4413 add r3, r2 - 8004ff6: 61bb str r3, [r7, #24] - 8004ff8: f507 7384 add.w r3, r7, #264 @ 0x108 - 8004ffc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005000: 681b ldr r3, [r3, #0] - 8005002: 781b ldrb r3, [r3, #0] - 8005004: 011a lsls r2, r3, #4 - 8005006: 69bb ldr r3, [r7, #24] - 8005008: 4413 add r3, r2 - 800500a: f203 4304 addw r3, r3, #1028 @ 0x404 - 800500e: 617b str r3, [r7, #20] - 8005010: 697b ldr r3, [r7, #20] - 8005012: 881b ldrh r3, [r3, #0] - 8005014: b29b uxth r3, r3 - 8005016: f3c3 0309 ubfx r3, r3, #0, #10 - 800501a: b29a uxth r2, r3 - 800501c: 697b ldr r3, [r7, #20] - 800501e: 801a strh r2, [r3, #0] - 8005020: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005024: 2b3e cmp r3, #62 @ 0x3e - 8005026: d921 bls.n 800506c - 8005028: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800502c: 095b lsrs r3, r3, #5 - 800502e: f8c7 30fc str.w r3, [r7, #252] @ 0xfc - 8005032: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005036: f003 031f and.w r3, r3, #31 - 800503a: 2b00 cmp r3, #0 - 800503c: d104 bne.n 8005048 - 800503e: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 8005042: 3b01 subs r3, #1 - 8005044: f8c7 30fc str.w r3, [r7, #252] @ 0xfc - 8005048: 697b ldr r3, [r7, #20] - 800504a: 881b ldrh r3, [r3, #0] - 800504c: b29a uxth r2, r3 - 800504e: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 8005052: b29b uxth r3, r3 - 8005054: 029b lsls r3, r3, #10 - 8005056: b29b uxth r3, r3 - 8005058: 4313 orrs r3, r2 - 800505a: b29b uxth r3, r3 - 800505c: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005060: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005064: b29a uxth r2, r3 - 8005066: 697b ldr r3, [r7, #20] - 8005068: 801a strh r2, [r3, #0] - 800506a: e056 b.n 800511a - 800506c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005070: 2b00 cmp r3, #0 - 8005072: d10a bne.n 800508a - 8005074: 697b ldr r3, [r7, #20] - 8005076: 881b ldrh r3, [r3, #0] - 8005078: b29b uxth r3, r3 - 800507a: ea6f 4343 mvn.w r3, r3, lsl #17 - 800507e: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005082: b29a uxth r2, r3 - 8005084: 697b ldr r3, [r7, #20] - 8005086: 801a strh r2, [r3, #0] - 8005088: e047 b.n 800511a - 800508a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800508e: 085b lsrs r3, r3, #1 - 8005090: f8c7 30fc str.w r3, [r7, #252] @ 0xfc - 8005094: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005098: f003 0301 and.w r3, r3, #1 - 800509c: 2b00 cmp r3, #0 - 800509e: d004 beq.n 80050aa - 80050a0: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 80050a4: 3301 adds r3, #1 - 80050a6: f8c7 30fc str.w r3, [r7, #252] @ 0xfc - 80050aa: 697b ldr r3, [r7, #20] - 80050ac: 881b ldrh r3, [r3, #0] - 80050ae: b29a uxth r2, r3 - 80050b0: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc - 80050b4: b29b uxth r3, r3 - 80050b6: 029b lsls r3, r3, #10 - 80050b8: b29b uxth r3, r3 - 80050ba: 4313 orrs r3, r2 - 80050bc: b29a uxth r2, r3 - 80050be: 697b ldr r3, [r7, #20] - 80050c0: 801a strh r2, [r3, #0] - 80050c2: e02a b.n 800511a - 80050c4: f507 7384 add.w r3, r7, #264 @ 0x108 - 80050c8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80050cc: 681b ldr r3, [r3, #0] - 80050ce: 785b ldrb r3, [r3, #1] - 80050d0: 2b01 cmp r3, #1 - 80050d2: d122 bne.n 800511a - 80050d4: f507 7384 add.w r3, r7, #264 @ 0x108 - 80050d8: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80050dc: 681b ldr r3, [r3, #0] - 80050de: 623b str r3, [r7, #32] - 80050e0: f507 7384 add.w r3, r7, #264 @ 0x108 - 80050e4: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80050e8: 681b ldr r3, [r3, #0] - 80050ea: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80050ee: b29b uxth r3, r3 - 80050f0: 461a mov r2, r3 - 80050f2: 6a3b ldr r3, [r7, #32] - 80050f4: 4413 add r3, r2 - 80050f6: 623b str r3, [r7, #32] - 80050f8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80050fc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005100: 681b ldr r3, [r3, #0] - 8005102: 781b ldrb r3, [r3, #0] - 8005104: 011a lsls r2, r3, #4 - 8005106: 6a3b ldr r3, [r7, #32] - 8005108: 4413 add r3, r2 - 800510a: f203 4304 addw r3, r3, #1028 @ 0x404 - 800510e: 61fb str r3, [r7, #28] - 8005110: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005114: b29a uxth r2, r3 - 8005116: 69fb ldr r3, [r7, #28] - 8005118: 801a strh r2, [r3, #0] - pmabuffer = ep->pmaaddr0; - 800511a: f507 7384 add.w r3, r7, #264 @ 0x108 - 800511e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005122: 681b ldr r3, [r3, #0] - 8005124: 891b ldrh r3, [r3, #8] - 8005126: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 - - /* Write the user buffer to USB PMA */ - USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); - 800512a: f507 7384 add.w r3, r7, #264 @ 0x108 - 800512e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005132: 681b ldr r3, [r3, #0] - 8005134: 6959 ldr r1, [r3, #20] - 8005136: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800513a: b29b uxth r3, r3 - 800513c: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 - 8005140: f507 7084 add.w r0, r7, #264 @ 0x108 - 8005144: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 8005148: 6800 ldr r0, [r0, #0] - 800514a: f001 fa48 bl 80065de - 800514e: e3ee b.n 800592e - } - else - { - /* Set the Double buffer counter for pmabuffer0 */ - PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); - 8005150: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005154: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005158: 681b ldr r3, [r3, #0] - 800515a: 785b ldrb r3, [r3, #1] - 800515c: 2b00 cmp r3, #0 - 800515e: d177 bne.n 8005250 - 8005160: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005164: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005168: 681b ldr r3, [r3, #0] - 800516a: 64bb str r3, [r7, #72] @ 0x48 - 800516c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005170: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005174: 681b ldr r3, [r3, #0] - 8005176: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800517a: b29b uxth r3, r3 - 800517c: 461a mov r2, r3 - 800517e: 6cbb ldr r3, [r7, #72] @ 0x48 - 8005180: 4413 add r3, r2 - 8005182: 64bb str r3, [r7, #72] @ 0x48 - 8005184: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005188: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800518c: 681b ldr r3, [r3, #0] - 800518e: 781b ldrb r3, [r3, #0] - 8005190: 011a lsls r2, r3, #4 - 8005192: 6cbb ldr r3, [r7, #72] @ 0x48 - 8005194: 4413 add r3, r2 - 8005196: f203 4304 addw r3, r3, #1028 @ 0x404 - 800519a: 647b str r3, [r7, #68] @ 0x44 - 800519c: 6c7b ldr r3, [r7, #68] @ 0x44 - 800519e: 881b ldrh r3, [r3, #0] - 80051a0: b29b uxth r3, r3 - 80051a2: f3c3 0309 ubfx r3, r3, #0, #10 - 80051a6: b29a uxth r2, r3 - 80051a8: 6c7b ldr r3, [r7, #68] @ 0x44 - 80051aa: 801a strh r2, [r3, #0] - 80051ac: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80051b0: 2b3e cmp r3, #62 @ 0x3e - 80051b2: d921 bls.n 80051f8 - 80051b4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80051b8: 095b lsrs r3, r3, #5 - 80051ba: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 - 80051be: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80051c2: f003 031f and.w r3, r3, #31 - 80051c6: 2b00 cmp r3, #0 - 80051c8: d104 bne.n 80051d4 - 80051ca: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 - 80051ce: 3b01 subs r3, #1 - 80051d0: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 - 80051d4: 6c7b ldr r3, [r7, #68] @ 0x44 - 80051d6: 881b ldrh r3, [r3, #0] - 80051d8: b29a uxth r2, r3 - 80051da: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 - 80051de: b29b uxth r3, r3 - 80051e0: 029b lsls r3, r3, #10 - 80051e2: b29b uxth r3, r3 - 80051e4: 4313 orrs r3, r2 - 80051e6: b29b uxth r3, r3 - 80051e8: ea6f 4343 mvn.w r3, r3, lsl #17 - 80051ec: ea6f 4353 mvn.w r3, r3, lsr #17 - 80051f0: b29a uxth r2, r3 - 80051f2: 6c7b ldr r3, [r7, #68] @ 0x44 - 80051f4: 801a strh r2, [r3, #0] - 80051f6: e056 b.n 80052a6 - 80051f8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80051fc: 2b00 cmp r3, #0 - 80051fe: d10a bne.n 8005216 - 8005200: 6c7b ldr r3, [r7, #68] @ 0x44 - 8005202: 881b ldrh r3, [r3, #0] - 8005204: b29b uxth r3, r3 - 8005206: ea6f 4343 mvn.w r3, r3, lsl #17 - 800520a: ea6f 4353 mvn.w r3, r3, lsr #17 - 800520e: b29a uxth r2, r3 - 8005210: 6c7b ldr r3, [r7, #68] @ 0x44 - 8005212: 801a strh r2, [r3, #0] - 8005214: e047 b.n 80052a6 - 8005216: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800521a: 085b lsrs r3, r3, #1 - 800521c: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 - 8005220: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005224: f003 0301 and.w r3, r3, #1 - 8005228: 2b00 cmp r3, #0 - 800522a: d004 beq.n 8005236 - 800522c: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 - 8005230: 3301 adds r3, #1 - 8005232: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 - 8005236: 6c7b ldr r3, [r7, #68] @ 0x44 - 8005238: 881b ldrh r3, [r3, #0] - 800523a: b29a uxth r2, r3 - 800523c: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 - 8005240: b29b uxth r3, r3 - 8005242: 029b lsls r3, r3, #10 - 8005244: b29b uxth r3, r3 - 8005246: 4313 orrs r3, r2 - 8005248: b29a uxth r2, r3 - 800524a: 6c7b ldr r3, [r7, #68] @ 0x44 - 800524c: 801a strh r2, [r3, #0] - 800524e: e02a b.n 80052a6 - 8005250: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005254: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005258: 681b ldr r3, [r3, #0] - 800525a: 785b ldrb r3, [r3, #1] - 800525c: 2b01 cmp r3, #1 - 800525e: d122 bne.n 80052a6 - 8005260: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005264: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005268: 681b ldr r3, [r3, #0] - 800526a: 653b str r3, [r7, #80] @ 0x50 - 800526c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005270: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005274: 681b ldr r3, [r3, #0] - 8005276: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800527a: b29b uxth r3, r3 - 800527c: 461a mov r2, r3 - 800527e: 6d3b ldr r3, [r7, #80] @ 0x50 - 8005280: 4413 add r3, r2 - 8005282: 653b str r3, [r7, #80] @ 0x50 - 8005284: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005288: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800528c: 681b ldr r3, [r3, #0] - 800528e: 781b ldrb r3, [r3, #0] - 8005290: 011a lsls r2, r3, #4 - 8005292: 6d3b ldr r3, [r7, #80] @ 0x50 - 8005294: 4413 add r3, r2 - 8005296: f203 4304 addw r3, r3, #1028 @ 0x404 - 800529a: 64fb str r3, [r7, #76] @ 0x4c - 800529c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80052a0: b29a uxth r2, r3 - 80052a2: 6cfb ldr r3, [r7, #76] @ 0x4c - 80052a4: 801a strh r2, [r3, #0] - pmabuffer = ep->pmaaddr0; - 80052a6: f507 7384 add.w r3, r7, #264 @ 0x108 - 80052aa: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80052ae: 681b ldr r3, [r3, #0] - 80052b0: 891b ldrh r3, [r3, #8] - 80052b2: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 - - /* Write the user buffer to USB PMA */ - USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); - 80052b6: f507 7384 add.w r3, r7, #264 @ 0x108 - 80052ba: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80052be: 681b ldr r3, [r3, #0] - 80052c0: 6959 ldr r1, [r3, #20] - 80052c2: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80052c6: b29b uxth r3, r3 - 80052c8: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 - 80052cc: f507 7084 add.w r0, r7, #264 @ 0x108 - 80052d0: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 80052d4: 6800 ldr r0, [r0, #0] - 80052d6: f001 f982 bl 80065de - ep->xfer_buff += len; - 80052da: f507 7384 add.w r3, r7, #264 @ 0x108 - 80052de: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80052e2: 681b ldr r3, [r3, #0] - 80052e4: 695a ldr r2, [r3, #20] - 80052e6: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80052ea: 441a add r2, r3 - 80052ec: f507 7384 add.w r3, r7, #264 @ 0x108 - 80052f0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80052f4: 681b ldr r3, [r3, #0] - 80052f6: 615a str r2, [r3, #20] - - if (ep->xfer_len_db > ep->maxpacket) - 80052f8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80052fc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005300: 681b ldr r3, [r3, #0] - 8005302: 6a1a ldr r2, [r3, #32] - 8005304: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005308: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800530c: 681b ldr r3, [r3, #0] - 800530e: 691b ldr r3, [r3, #16] - 8005310: 429a cmp r2, r3 - 8005312: d90f bls.n 8005334 - { - ep->xfer_len_db -= len; - 8005314: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005318: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800531c: 681b ldr r3, [r3, #0] - 800531e: 6a1a ldr r2, [r3, #32] - 8005320: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005324: 1ad2 subs r2, r2, r3 - 8005326: f507 7384 add.w r3, r7, #264 @ 0x108 - 800532a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800532e: 681b ldr r3, [r3, #0] - 8005330: 621a str r2, [r3, #32] - 8005332: e00e b.n 8005352 - } - else - { - len = ep->xfer_len_db; - 8005334: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005338: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800533c: 681b ldr r3, [r3, #0] - 800533e: 6a1b ldr r3, [r3, #32] - 8005340: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - ep->xfer_len_db = 0U; - 8005344: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005348: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800534c: 681b ldr r3, [r3, #0] - 800534e: 2200 movs r2, #0 - 8005350: 621a str r2, [r3, #32] - } - - /* Set the Double buffer counter for pmabuffer1 */ - PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); - 8005352: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005356: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 800535a: 681b ldr r3, [r3, #0] - 800535c: 643b str r3, [r7, #64] @ 0x40 - 800535e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005362: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005366: 681b ldr r3, [r3, #0] - 8005368: 785b ldrb r3, [r3, #1] - 800536a: 2b00 cmp r3, #0 - 800536c: d177 bne.n 800545e - 800536e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005372: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005376: 681b ldr r3, [r3, #0] - 8005378: 63bb str r3, [r7, #56] @ 0x38 - 800537a: f507 7384 add.w r3, r7, #264 @ 0x108 - 800537e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005382: 681b ldr r3, [r3, #0] - 8005384: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005388: b29b uxth r3, r3 - 800538a: 461a mov r2, r3 - 800538c: 6bbb ldr r3, [r7, #56] @ 0x38 - 800538e: 4413 add r3, r2 - 8005390: 63bb str r3, [r7, #56] @ 0x38 - 8005392: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005396: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800539a: 681b ldr r3, [r3, #0] - 800539c: 781b ldrb r3, [r3, #0] - 800539e: 011a lsls r2, r3, #4 - 80053a0: 6bbb ldr r3, [r7, #56] @ 0x38 - 80053a2: 4413 add r3, r2 - 80053a4: f203 430c addw r3, r3, #1036 @ 0x40c - 80053a8: 637b str r3, [r7, #52] @ 0x34 - 80053aa: 6b7b ldr r3, [r7, #52] @ 0x34 - 80053ac: 881b ldrh r3, [r3, #0] - 80053ae: b29b uxth r3, r3 - 80053b0: f3c3 0309 ubfx r3, r3, #0, #10 - 80053b4: b29a uxth r2, r3 - 80053b6: 6b7b ldr r3, [r7, #52] @ 0x34 - 80053b8: 801a strh r2, [r3, #0] - 80053ba: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80053be: 2b3e cmp r3, #62 @ 0x3e - 80053c0: d921 bls.n 8005406 - 80053c2: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80053c6: 095b lsrs r3, r3, #5 - 80053c8: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 - 80053cc: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80053d0: f003 031f and.w r3, r3, #31 - 80053d4: 2b00 cmp r3, #0 - 80053d6: d104 bne.n 80053e2 - 80053d8: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 80053dc: 3b01 subs r3, #1 - 80053de: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 - 80053e2: 6b7b ldr r3, [r7, #52] @ 0x34 - 80053e4: 881b ldrh r3, [r3, #0] - 80053e6: b29a uxth r2, r3 - 80053e8: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 80053ec: b29b uxth r3, r3 - 80053ee: 029b lsls r3, r3, #10 - 80053f0: b29b uxth r3, r3 - 80053f2: 4313 orrs r3, r2 - 80053f4: b29b uxth r3, r3 - 80053f6: ea6f 4343 mvn.w r3, r3, lsl #17 - 80053fa: ea6f 4353 mvn.w r3, r3, lsr #17 - 80053fe: b29a uxth r2, r3 - 8005400: 6b7b ldr r3, [r7, #52] @ 0x34 - 8005402: 801a strh r2, [r3, #0] - 8005404: e050 b.n 80054a8 - 8005406: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800540a: 2b00 cmp r3, #0 - 800540c: d10a bne.n 8005424 - 800540e: 6b7b ldr r3, [r7, #52] @ 0x34 - 8005410: 881b ldrh r3, [r3, #0] - 8005412: b29b uxth r3, r3 - 8005414: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005418: ea6f 4353 mvn.w r3, r3, lsr #17 - 800541c: b29a uxth r2, r3 - 800541e: 6b7b ldr r3, [r7, #52] @ 0x34 - 8005420: 801a strh r2, [r3, #0] - 8005422: e041 b.n 80054a8 - 8005424: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005428: 085b lsrs r3, r3, #1 - 800542a: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 - 800542e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005432: f003 0301 and.w r3, r3, #1 - 8005436: 2b00 cmp r3, #0 - 8005438: d004 beq.n 8005444 - 800543a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800543e: 3301 adds r3, #1 - 8005440: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 - 8005444: 6b7b ldr r3, [r7, #52] @ 0x34 - 8005446: 881b ldrh r3, [r3, #0] - 8005448: b29a uxth r2, r3 - 800544a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 - 800544e: b29b uxth r3, r3 - 8005450: 029b lsls r3, r3, #10 - 8005452: b29b uxth r3, r3 - 8005454: 4313 orrs r3, r2 - 8005456: b29a uxth r2, r3 - 8005458: 6b7b ldr r3, [r7, #52] @ 0x34 - 800545a: 801a strh r2, [r3, #0] - 800545c: e024 b.n 80054a8 - 800545e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005462: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005466: 681b ldr r3, [r3, #0] - 8005468: 785b ldrb r3, [r3, #1] - 800546a: 2b01 cmp r3, #1 - 800546c: d11c bne.n 80054a8 - 800546e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005472: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005476: 681b ldr r3, [r3, #0] - 8005478: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800547c: b29b uxth r3, r3 - 800547e: 461a mov r2, r3 - 8005480: 6c3b ldr r3, [r7, #64] @ 0x40 - 8005482: 4413 add r3, r2 - 8005484: 643b str r3, [r7, #64] @ 0x40 - 8005486: f507 7384 add.w r3, r7, #264 @ 0x108 - 800548a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800548e: 681b ldr r3, [r3, #0] - 8005490: 781b ldrb r3, [r3, #0] - 8005492: 011a lsls r2, r3, #4 - 8005494: 6c3b ldr r3, [r7, #64] @ 0x40 - 8005496: 4413 add r3, r2 - 8005498: f203 430c addw r3, r3, #1036 @ 0x40c - 800549c: 63fb str r3, [r7, #60] @ 0x3c - 800549e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80054a2: b29a uxth r2, r3 - 80054a4: 6bfb ldr r3, [r7, #60] @ 0x3c - 80054a6: 801a strh r2, [r3, #0] - pmabuffer = ep->pmaaddr1; - 80054a8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80054ac: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80054b0: 681b ldr r3, [r3, #0] - 80054b2: 895b ldrh r3, [r3, #10] - 80054b4: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 - - /* Write the user buffer to USB PMA */ - USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); - 80054b8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80054bc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80054c0: 681b ldr r3, [r3, #0] - 80054c2: 6959 ldr r1, [r3, #20] - 80054c4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80054c8: b29b uxth r3, r3 - 80054ca: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 - 80054ce: f507 7084 add.w r0, r7, #264 @ 0x108 - 80054d2: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 80054d6: 6800 ldr r0, [r0, #0] - 80054d8: f001 f881 bl 80065de - 80054dc: e227 b.n 800592e - } - } - /* auto Switch to single buffer mode when transfer xfer_len_db; - 80054de: f507 7384 add.w r3, r7, #264 @ 0x108 - 80054e2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80054e6: 681b ldr r3, [r3, #0] - 80054e8: 6a1b ldr r3, [r3, #32] - 80054ea: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - - /* disable double buffer mode for Bulk endpoint */ - PCD_CLEAR_BULK_EP_DBUF(USBx, ep->num); - 80054ee: f507 7384 add.w r3, r7, #264 @ 0x108 - 80054f2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80054f6: 681a ldr r2, [r3, #0] - 80054f8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80054fc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005500: 681b ldr r3, [r3, #0] - 8005502: 781b ldrb r3, [r3, #0] - 8005504: 009b lsls r3, r3, #2 - 8005506: 4413 add r3, r2 - 8005508: 881b ldrh r3, [r3, #0] - 800550a: b29b uxth r3, r3 - 800550c: f423 43e2 bic.w r3, r3, #28928 @ 0x7100 - 8005510: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8005514: f8a7 3062 strh.w r3, [r7, #98] @ 0x62 - 8005518: f507 7384 add.w r3, r7, #264 @ 0x108 - 800551c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005520: 681a ldr r2, [r3, #0] - 8005522: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005526: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800552a: 681b ldr r3, [r3, #0] - 800552c: 781b ldrb r3, [r3, #0] - 800552e: 009b lsls r3, r3, #2 - 8005530: 441a add r2, r3 - 8005532: f8b7 3062 ldrh.w r3, [r7, #98] @ 0x62 - 8005536: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800553a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800553e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8005542: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8005546: b29b uxth r3, r3 - 8005548: 8013 strh r3, [r2, #0] - - /* Set Tx count with nbre of byte to be transmitted */ - PCD_SET_EP_TX_CNT(USBx, ep->num, len); - 800554a: f507 7384 add.w r3, r7, #264 @ 0x108 - 800554e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005552: 681b ldr r3, [r3, #0] - 8005554: 65fb str r3, [r7, #92] @ 0x5c - 8005556: f507 7384 add.w r3, r7, #264 @ 0x108 - 800555a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 800555e: 681b ldr r3, [r3, #0] - 8005560: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005564: b29b uxth r3, r3 - 8005566: 461a mov r2, r3 - 8005568: 6dfb ldr r3, [r7, #92] @ 0x5c - 800556a: 4413 add r3, r2 - 800556c: 65fb str r3, [r7, #92] @ 0x5c - 800556e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005572: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005576: 681b ldr r3, [r3, #0] - 8005578: 781b ldrb r3, [r3, #0] - 800557a: 011a lsls r2, r3, #4 - 800557c: 6dfb ldr r3, [r7, #92] @ 0x5c - 800557e: 4413 add r3, r2 - 8005580: f203 4304 addw r3, r3, #1028 @ 0x404 - 8005584: 65bb str r3, [r7, #88] @ 0x58 - 8005586: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800558a: b29a uxth r2, r3 - 800558c: 6dbb ldr r3, [r7, #88] @ 0x58 - 800558e: 801a strh r2, [r3, #0] - pmabuffer = ep->pmaaddr0; - 8005590: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005594: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005598: 681b ldr r3, [r3, #0] - 800559a: 891b ldrh r3, [r3, #8] - 800559c: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 - - /* Write the user buffer to USB PMA */ - USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); - 80055a0: f507 7384 add.w r3, r7, #264 @ 0x108 - 80055a4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80055a8: 681b ldr r3, [r3, #0] - 80055aa: 6959 ldr r1, [r3, #20] - 80055ac: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80055b0: b29b uxth r3, r3 - 80055b2: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 - 80055b6: f507 7084 add.w r0, r7, #264 @ 0x108 - 80055ba: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 80055be: 6800 ldr r0, [r0, #0] - 80055c0: f001 f80d bl 80065de - 80055c4: e1b3 b.n 800592e - } - } - else /* manage isochronous double buffer IN mode */ - { - /* each Time to write in PMA xfer_len_db will */ - ep->xfer_len_db -= len; - 80055c6: f507 7384 add.w r3, r7, #264 @ 0x108 - 80055ca: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80055ce: 681b ldr r3, [r3, #0] - 80055d0: 6a1a ldr r2, [r3, #32] - 80055d2: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80055d6: 1ad2 subs r2, r2, r3 - 80055d8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80055dc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80055e0: 681b ldr r3, [r3, #0] - 80055e2: 621a str r2, [r3, #32] - - /* Fill the data buffer */ - if ((PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_DTOG_TX) != 0U) - 80055e4: f507 7384 add.w r3, r7, #264 @ 0x108 - 80055e8: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80055ec: 681a ldr r2, [r3, #0] - 80055ee: f507 7384 add.w r3, r7, #264 @ 0x108 - 80055f2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80055f6: 681b ldr r3, [r3, #0] - 80055f8: 781b ldrb r3, [r3, #0] - 80055fa: 009b lsls r3, r3, #2 - 80055fc: 4413 add r3, r2 - 80055fe: 881b ldrh r3, [r3, #0] - 8005600: b29b uxth r3, r3 - 8005602: f003 0340 and.w r3, r3, #64 @ 0x40 - 8005606: 2b00 cmp r3, #0 - 8005608: f000 80c6 beq.w 8005798 - { - /* Set the Double buffer counter for pmabuffer1 */ - PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); - 800560c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005610: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005614: 681b ldr r3, [r3, #0] - 8005616: 673b str r3, [r7, #112] @ 0x70 - 8005618: f507 7384 add.w r3, r7, #264 @ 0x108 - 800561c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005620: 681b ldr r3, [r3, #0] - 8005622: 785b ldrb r3, [r3, #1] - 8005624: 2b00 cmp r3, #0 - 8005626: d177 bne.n 8005718 - 8005628: f507 7384 add.w r3, r7, #264 @ 0x108 - 800562c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005630: 681b ldr r3, [r3, #0] - 8005632: 66bb str r3, [r7, #104] @ 0x68 - 8005634: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005638: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 800563c: 681b ldr r3, [r3, #0] - 800563e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005642: b29b uxth r3, r3 - 8005644: 461a mov r2, r3 - 8005646: 6ebb ldr r3, [r7, #104] @ 0x68 - 8005648: 4413 add r3, r2 - 800564a: 66bb str r3, [r7, #104] @ 0x68 - 800564c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005650: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005654: 681b ldr r3, [r3, #0] - 8005656: 781b ldrb r3, [r3, #0] - 8005658: 011a lsls r2, r3, #4 - 800565a: 6ebb ldr r3, [r7, #104] @ 0x68 - 800565c: 4413 add r3, r2 - 800565e: f203 430c addw r3, r3, #1036 @ 0x40c - 8005662: 667b str r3, [r7, #100] @ 0x64 - 8005664: 6e7b ldr r3, [r7, #100] @ 0x64 - 8005666: 881b ldrh r3, [r3, #0] - 8005668: b29b uxth r3, r3 - 800566a: f3c3 0309 ubfx r3, r3, #0, #10 - 800566e: b29a uxth r2, r3 - 8005670: 6e7b ldr r3, [r7, #100] @ 0x64 - 8005672: 801a strh r2, [r3, #0] - 8005674: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005678: 2b3e cmp r3, #62 @ 0x3e - 800567a: d921 bls.n 80056c0 - 800567c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005680: 095b lsrs r3, r3, #5 - 8005682: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 - 8005686: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800568a: f003 031f and.w r3, r3, #31 - 800568e: 2b00 cmp r3, #0 - 8005690: d104 bne.n 800569c - 8005692: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 - 8005696: 3b01 subs r3, #1 - 8005698: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 - 800569c: 6e7b ldr r3, [r7, #100] @ 0x64 - 800569e: 881b ldrh r3, [r3, #0] - 80056a0: b29a uxth r2, r3 - 80056a2: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 - 80056a6: b29b uxth r3, r3 - 80056a8: 029b lsls r3, r3, #10 - 80056aa: b29b uxth r3, r3 - 80056ac: 4313 orrs r3, r2 - 80056ae: b29b uxth r3, r3 - 80056b0: ea6f 4343 mvn.w r3, r3, lsl #17 - 80056b4: ea6f 4353 mvn.w r3, r3, lsr #17 - 80056b8: b29a uxth r2, r3 - 80056ba: 6e7b ldr r3, [r7, #100] @ 0x64 - 80056bc: 801a strh r2, [r3, #0] - 80056be: e050 b.n 8005762 - 80056c0: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80056c4: 2b00 cmp r3, #0 - 80056c6: d10a bne.n 80056de - 80056c8: 6e7b ldr r3, [r7, #100] @ 0x64 - 80056ca: 881b ldrh r3, [r3, #0] - 80056cc: b29b uxth r3, r3 - 80056ce: ea6f 4343 mvn.w r3, r3, lsl #17 - 80056d2: ea6f 4353 mvn.w r3, r3, lsr #17 - 80056d6: b29a uxth r2, r3 - 80056d8: 6e7b ldr r3, [r7, #100] @ 0x64 - 80056da: 801a strh r2, [r3, #0] - 80056dc: e041 b.n 8005762 - 80056de: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80056e2: 085b lsrs r3, r3, #1 - 80056e4: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 - 80056e8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80056ec: f003 0301 and.w r3, r3, #1 - 80056f0: 2b00 cmp r3, #0 - 80056f2: d004 beq.n 80056fe - 80056f4: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 - 80056f8: 3301 adds r3, #1 - 80056fa: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 - 80056fe: 6e7b ldr r3, [r7, #100] @ 0x64 - 8005700: 881b ldrh r3, [r3, #0] - 8005702: b29a uxth r2, r3 - 8005704: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 - 8005708: b29b uxth r3, r3 - 800570a: 029b lsls r3, r3, #10 - 800570c: b29b uxth r3, r3 - 800570e: 4313 orrs r3, r2 - 8005710: b29a uxth r2, r3 - 8005712: 6e7b ldr r3, [r7, #100] @ 0x64 - 8005714: 801a strh r2, [r3, #0] - 8005716: e024 b.n 8005762 - 8005718: f507 7384 add.w r3, r7, #264 @ 0x108 - 800571c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005720: 681b ldr r3, [r3, #0] - 8005722: 785b ldrb r3, [r3, #1] - 8005724: 2b01 cmp r3, #1 - 8005726: d11c bne.n 8005762 - 8005728: f507 7384 add.w r3, r7, #264 @ 0x108 - 800572c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005730: 681b ldr r3, [r3, #0] - 8005732: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005736: b29b uxth r3, r3 - 8005738: 461a mov r2, r3 - 800573a: 6f3b ldr r3, [r7, #112] @ 0x70 - 800573c: 4413 add r3, r2 - 800573e: 673b str r3, [r7, #112] @ 0x70 - 8005740: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005744: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005748: 681b ldr r3, [r3, #0] - 800574a: 781b ldrb r3, [r3, #0] - 800574c: 011a lsls r2, r3, #4 - 800574e: 6f3b ldr r3, [r7, #112] @ 0x70 - 8005750: 4413 add r3, r2 - 8005752: f203 430c addw r3, r3, #1036 @ 0x40c - 8005756: 66fb str r3, [r7, #108] @ 0x6c - 8005758: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800575c: b29a uxth r2, r3 - 800575e: 6efb ldr r3, [r7, #108] @ 0x6c - 8005760: 801a strh r2, [r3, #0] - pmabuffer = ep->pmaaddr1; - 8005762: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005766: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800576a: 681b ldr r3, [r3, #0] - 800576c: 895b ldrh r3, [r3, #10] - 800576e: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 - - /* Write the user buffer to USB PMA */ - USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); - 8005772: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005776: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800577a: 681b ldr r3, [r3, #0] - 800577c: 6959 ldr r1, [r3, #20] - 800577e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005782: b29b uxth r3, r3 - 8005784: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 - 8005788: f507 7084 add.w r0, r7, #264 @ 0x108 - 800578c: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 8005790: 6800 ldr r0, [r0, #0] - 8005792: f000 ff24 bl 80065de - 8005796: e0ca b.n 800592e - } - else - { - /* Set the Double buffer counter for pmabuffer0 */ - PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); - 8005798: f507 7384 add.w r3, r7, #264 @ 0x108 - 800579c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80057a0: 681b ldr r3, [r3, #0] - 80057a2: 785b ldrb r3, [r3, #1] - 80057a4: 2b00 cmp r3, #0 - 80057a6: d177 bne.n 8005898 - 80057a8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80057ac: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80057b0: 681b ldr r3, [r3, #0] - 80057b2: 67fb str r3, [r7, #124] @ 0x7c - 80057b4: f507 7384 add.w r3, r7, #264 @ 0x108 - 80057b8: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80057bc: 681b ldr r3, [r3, #0] - 80057be: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80057c2: b29b uxth r3, r3 - 80057c4: 461a mov r2, r3 - 80057c6: 6ffb ldr r3, [r7, #124] @ 0x7c - 80057c8: 4413 add r3, r2 - 80057ca: 67fb str r3, [r7, #124] @ 0x7c - 80057cc: f507 7384 add.w r3, r7, #264 @ 0x108 - 80057d0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80057d4: 681b ldr r3, [r3, #0] - 80057d6: 781b ldrb r3, [r3, #0] - 80057d8: 011a lsls r2, r3, #4 - 80057da: 6ffb ldr r3, [r7, #124] @ 0x7c - 80057dc: 4413 add r3, r2 - 80057de: f203 4304 addw r3, r3, #1028 @ 0x404 - 80057e2: 67bb str r3, [r7, #120] @ 0x78 - 80057e4: 6fbb ldr r3, [r7, #120] @ 0x78 - 80057e6: 881b ldrh r3, [r3, #0] - 80057e8: b29b uxth r3, r3 - 80057ea: f3c3 0309 ubfx r3, r3, #0, #10 - 80057ee: b29a uxth r2, r3 - 80057f0: 6fbb ldr r3, [r7, #120] @ 0x78 - 80057f2: 801a strh r2, [r3, #0] - 80057f4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80057f8: 2b3e cmp r3, #62 @ 0x3e - 80057fa: d921 bls.n 8005840 - 80057fc: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005800: 095b lsrs r3, r3, #5 - 8005802: f8c7 30ec str.w r3, [r7, #236] @ 0xec - 8005806: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800580a: f003 031f and.w r3, r3, #31 - 800580e: 2b00 cmp r3, #0 - 8005810: d104 bne.n 800581c - 8005812: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec - 8005816: 3b01 subs r3, #1 - 8005818: f8c7 30ec str.w r3, [r7, #236] @ 0xec - 800581c: 6fbb ldr r3, [r7, #120] @ 0x78 - 800581e: 881b ldrh r3, [r3, #0] - 8005820: b29a uxth r2, r3 - 8005822: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec - 8005826: b29b uxth r3, r3 - 8005828: 029b lsls r3, r3, #10 - 800582a: b29b uxth r3, r3 - 800582c: 4313 orrs r3, r2 - 800582e: b29b uxth r3, r3 - 8005830: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005834: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005838: b29a uxth r2, r3 - 800583a: 6fbb ldr r3, [r7, #120] @ 0x78 - 800583c: 801a strh r2, [r3, #0] - 800583e: e05c b.n 80058fa - 8005840: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005844: 2b00 cmp r3, #0 - 8005846: d10a bne.n 800585e - 8005848: 6fbb ldr r3, [r7, #120] @ 0x78 - 800584a: 881b ldrh r3, [r3, #0] - 800584c: b29b uxth r3, r3 - 800584e: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005852: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005856: b29a uxth r2, r3 - 8005858: 6fbb ldr r3, [r7, #120] @ 0x78 - 800585a: 801a strh r2, [r3, #0] - 800585c: e04d b.n 80058fa - 800585e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005862: 085b lsrs r3, r3, #1 - 8005864: f8c7 30ec str.w r3, [r7, #236] @ 0xec - 8005868: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800586c: f003 0301 and.w r3, r3, #1 - 8005870: 2b00 cmp r3, #0 - 8005872: d004 beq.n 800587e - 8005874: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec - 8005878: 3301 adds r3, #1 - 800587a: f8c7 30ec str.w r3, [r7, #236] @ 0xec - 800587e: 6fbb ldr r3, [r7, #120] @ 0x78 - 8005880: 881b ldrh r3, [r3, #0] - 8005882: b29a uxth r2, r3 - 8005884: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec - 8005888: b29b uxth r3, r3 - 800588a: 029b lsls r3, r3, #10 - 800588c: b29b uxth r3, r3 - 800588e: 4313 orrs r3, r2 - 8005890: b29a uxth r2, r3 - 8005892: 6fbb ldr r3, [r7, #120] @ 0x78 - 8005894: 801a strh r2, [r3, #0] - 8005896: e030 b.n 80058fa - 8005898: f507 7384 add.w r3, r7, #264 @ 0x108 - 800589c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80058a0: 681b ldr r3, [r3, #0] - 80058a2: 785b ldrb r3, [r3, #1] - 80058a4: 2b01 cmp r3, #1 - 80058a6: d128 bne.n 80058fa - 80058a8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80058ac: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80058b0: 681b ldr r3, [r3, #0] - 80058b2: f8c7 3084 str.w r3, [r7, #132] @ 0x84 - 80058b6: f507 7384 add.w r3, r7, #264 @ 0x108 - 80058ba: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80058be: 681b ldr r3, [r3, #0] - 80058c0: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80058c4: b29b uxth r3, r3 - 80058c6: 461a mov r2, r3 - 80058c8: f8d7 3084 ldr.w r3, [r7, #132] @ 0x84 - 80058cc: 4413 add r3, r2 - 80058ce: f8c7 3084 str.w r3, [r7, #132] @ 0x84 - 80058d2: f507 7384 add.w r3, r7, #264 @ 0x108 - 80058d6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80058da: 681b ldr r3, [r3, #0] - 80058dc: 781b ldrb r3, [r3, #0] - 80058de: 011a lsls r2, r3, #4 - 80058e0: f8d7 3084 ldr.w r3, [r7, #132] @ 0x84 - 80058e4: 4413 add r3, r2 - 80058e6: f203 4304 addw r3, r3, #1028 @ 0x404 - 80058ea: f8c7 3080 str.w r3, [r7, #128] @ 0x80 - 80058ee: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80058f2: b29a uxth r2, r3 - 80058f4: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 - 80058f8: 801a strh r2, [r3, #0] - pmabuffer = ep->pmaaddr0; - 80058fa: f507 7384 add.w r3, r7, #264 @ 0x108 - 80058fe: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005902: 681b ldr r3, [r3, #0] - 8005904: 891b ldrh r3, [r3, #8] - 8005906: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 - - /* Write the user buffer to USB PMA */ - USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); - 800590a: f507 7384 add.w r3, r7, #264 @ 0x108 - 800590e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005912: 681b ldr r3, [r3, #0] - 8005914: 6959 ldr r1, [r3, #20] - 8005916: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800591a: b29b uxth r3, r3 - 800591c: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 - 8005920: f507 7084 add.w r0, r7, #264 @ 0x108 - 8005924: f5a0 7082 sub.w r0, r0, #260 @ 0x104 - 8005928: 6800 ldr r0, [r0, #0] - 800592a: f000 fe58 bl 80065de - } - } - } -#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ - - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_VALID); - 800592e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005932: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005936: 681a ldr r2, [r3, #0] - 8005938: f507 7384 add.w r3, r7, #264 @ 0x108 - 800593c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005940: 681b ldr r3, [r3, #0] - 8005942: 781b ldrb r3, [r3, #0] - 8005944: 009b lsls r3, r3, #2 - 8005946: 4413 add r3, r2 - 8005948: 881b ldrh r3, [r3, #0] - 800594a: b29b uxth r3, r3 - 800594c: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8005950: f023 0340 bic.w r3, r3, #64 @ 0x40 - 8005954: 817b strh r3, [r7, #10] - 8005956: 897b ldrh r3, [r7, #10] - 8005958: f083 0310 eor.w r3, r3, #16 - 800595c: 817b strh r3, [r7, #10] - 800595e: 897b ldrh r3, [r7, #10] - 8005960: f083 0320 eor.w r3, r3, #32 - 8005964: 817b strh r3, [r7, #10] - 8005966: f507 7384 add.w r3, r7, #264 @ 0x108 - 800596a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 800596e: 681a ldr r2, [r3, #0] - 8005970: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005974: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005978: 681b ldr r3, [r3, #0] - 800597a: 781b ldrb r3, [r3, #0] - 800597c: 009b lsls r3, r3, #2 - 800597e: 441a add r2, r3 - 8005980: 897b ldrh r3, [r7, #10] - 8005982: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8005986: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800598a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800598e: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8005992: b29b uxth r3, r3 - 8005994: 8013 strh r3, [r2, #0] - 8005996: f000 bcde b.w 8006356 - } - else /* OUT endpoint */ - { - if (ep->doublebuffer == 0U) - 800599a: f507 7384 add.w r3, r7, #264 @ 0x108 - 800599e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80059a2: 681b ldr r3, [r3, #0] - 80059a4: 7b1b ldrb r3, [r3, #12] - 80059a6: 2b00 cmp r3, #0 - 80059a8: f040 80bb bne.w 8005b22 - { - /* Multi packet transfer */ - if (ep->xfer_len > ep->maxpacket) - 80059ac: f507 7384 add.w r3, r7, #264 @ 0x108 - 80059b0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80059b4: 681b ldr r3, [r3, #0] - 80059b6: 699a ldr r2, [r3, #24] - 80059b8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80059bc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80059c0: 681b ldr r3, [r3, #0] - 80059c2: 691b ldr r3, [r3, #16] - 80059c4: 429a cmp r2, r3 - 80059c6: d917 bls.n 80059f8 - { - len = ep->maxpacket; - 80059c8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80059cc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80059d0: 681b ldr r3, [r3, #0] - 80059d2: 691b ldr r3, [r3, #16] - 80059d4: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - ep->xfer_len -= len; - 80059d8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80059dc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80059e0: 681b ldr r3, [r3, #0] - 80059e2: 699a ldr r2, [r3, #24] - 80059e4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80059e8: 1ad2 subs r2, r2, r3 - 80059ea: f507 7384 add.w r3, r7, #264 @ 0x108 - 80059ee: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80059f2: 681b ldr r3, [r3, #0] - 80059f4: 619a str r2, [r3, #24] - 80059f6: e00e b.n 8005a16 - } - else - { - len = ep->xfer_len; - 80059f8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80059fc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005a00: 681b ldr r3, [r3, #0] - 8005a02: 699b ldr r3, [r3, #24] - 8005a04: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - ep->xfer_len = 0U; - 8005a08: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005a0c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005a10: 681b ldr r3, [r3, #0] - 8005a12: 2200 movs r2, #0 - 8005a14: 619a str r2, [r3, #24] - } - /* configure and validate Rx endpoint */ - PCD_SET_EP_RX_CNT(USBx, ep->num, len); - 8005a16: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005a1a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005a1e: 681b ldr r3, [r3, #0] - 8005a20: f8c7 3090 str.w r3, [r7, #144] @ 0x90 - 8005a24: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005a28: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005a2c: 681b ldr r3, [r3, #0] - 8005a2e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005a32: b29b uxth r3, r3 - 8005a34: 461a mov r2, r3 - 8005a36: f8d7 3090 ldr.w r3, [r7, #144] @ 0x90 - 8005a3a: 4413 add r3, r2 - 8005a3c: f8c7 3090 str.w r3, [r7, #144] @ 0x90 - 8005a40: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005a44: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005a48: 681b ldr r3, [r3, #0] - 8005a4a: 781b ldrb r3, [r3, #0] - 8005a4c: 011a lsls r2, r3, #4 - 8005a4e: f8d7 3090 ldr.w r3, [r7, #144] @ 0x90 - 8005a52: 4413 add r3, r2 - 8005a54: f203 430c addw r3, r3, #1036 @ 0x40c - 8005a58: f8c7 308c str.w r3, [r7, #140] @ 0x8c - 8005a5c: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8005a60: 881b ldrh r3, [r3, #0] - 8005a62: b29b uxth r3, r3 - 8005a64: f3c3 0309 ubfx r3, r3, #0, #10 - 8005a68: b29a uxth r2, r3 - 8005a6a: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8005a6e: 801a strh r2, [r3, #0] - 8005a70: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005a74: 2b3e cmp r3, #62 @ 0x3e - 8005a76: d924 bls.n 8005ac2 - 8005a78: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005a7c: 095b lsrs r3, r3, #5 - 8005a7e: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 - 8005a82: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005a86: f003 031f and.w r3, r3, #31 - 8005a8a: 2b00 cmp r3, #0 - 8005a8c: d104 bne.n 8005a98 - 8005a8e: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 - 8005a92: 3b01 subs r3, #1 - 8005a94: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 - 8005a98: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8005a9c: 881b ldrh r3, [r3, #0] - 8005a9e: b29a uxth r2, r3 - 8005aa0: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 - 8005aa4: b29b uxth r3, r3 - 8005aa6: 029b lsls r3, r3, #10 - 8005aa8: b29b uxth r3, r3 - 8005aaa: 4313 orrs r3, r2 - 8005aac: b29b uxth r3, r3 - 8005aae: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005ab2: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005ab6: b29a uxth r2, r3 - 8005ab8: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8005abc: 801a strh r2, [r3, #0] - 8005abe: f000 bc10 b.w 80062e2 - 8005ac2: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005ac6: 2b00 cmp r3, #0 - 8005ac8: d10c bne.n 8005ae4 - 8005aca: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8005ace: 881b ldrh r3, [r3, #0] - 8005ad0: b29b uxth r3, r3 - 8005ad2: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005ad6: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005ada: b29a uxth r2, r3 - 8005adc: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8005ae0: 801a strh r2, [r3, #0] - 8005ae2: e3fe b.n 80062e2 - 8005ae4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005ae8: 085b lsrs r3, r3, #1 - 8005aea: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 - 8005aee: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005af2: f003 0301 and.w r3, r3, #1 - 8005af6: 2b00 cmp r3, #0 - 8005af8: d004 beq.n 8005b04 - 8005afa: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 - 8005afe: 3301 adds r3, #1 - 8005b00: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 - 8005b04: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8005b08: 881b ldrh r3, [r3, #0] - 8005b0a: b29a uxth r2, r3 - 8005b0c: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 - 8005b10: b29b uxth r3, r3 - 8005b12: 029b lsls r3, r3, #10 - 8005b14: b29b uxth r3, r3 - 8005b16: 4313 orrs r3, r2 - 8005b18: b29a uxth r2, r3 - 8005b1a: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c - 8005b1e: 801a strh r2, [r3, #0] - 8005b20: e3df b.n 80062e2 -#if (USE_USB_DOUBLE_BUFFER == 1U) - else - { - /* First Transfer Coming From HAL_PCD_EP_Receive & From ISR */ - /* Set the Double buffer counter */ - if (ep->type == EP_TYPE_BULK) - 8005b22: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005b26: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005b2a: 681b ldr r3, [r3, #0] - 8005b2c: 78db ldrb r3, [r3, #3] - 8005b2e: 2b02 cmp r3, #2 - 8005b30: f040 8218 bne.w 8005f64 - { - PCD_SET_EP_DBUF_CNT(USBx, ep->num, ep->is_in, ep->maxpacket); - 8005b34: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005b38: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005b3c: 681b ldr r3, [r3, #0] - 8005b3e: 785b ldrb r3, [r3, #1] - 8005b40: 2b00 cmp r3, #0 - 8005b42: f040 809d bne.w 8005c80 - 8005b46: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005b4a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005b4e: 681b ldr r3, [r3, #0] - 8005b50: f8c7 30ac str.w r3, [r7, #172] @ 0xac - 8005b54: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005b58: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005b5c: 681b ldr r3, [r3, #0] - 8005b5e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005b62: b29b uxth r3, r3 - 8005b64: 461a mov r2, r3 - 8005b66: f8d7 30ac ldr.w r3, [r7, #172] @ 0xac - 8005b6a: 4413 add r3, r2 - 8005b6c: f8c7 30ac str.w r3, [r7, #172] @ 0xac - 8005b70: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005b74: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005b78: 681b ldr r3, [r3, #0] - 8005b7a: 781b ldrb r3, [r3, #0] - 8005b7c: 011a lsls r2, r3, #4 - 8005b7e: f8d7 30ac ldr.w r3, [r7, #172] @ 0xac - 8005b82: 4413 add r3, r2 - 8005b84: f203 4304 addw r3, r3, #1028 @ 0x404 - 8005b88: f8c7 30a8 str.w r3, [r7, #168] @ 0xa8 - 8005b8c: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 8005b90: 881b ldrh r3, [r3, #0] - 8005b92: b29b uxth r3, r3 - 8005b94: f3c3 0309 ubfx r3, r3, #0, #10 - 8005b98: b29a uxth r2, r3 - 8005b9a: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 8005b9e: 801a strh r2, [r3, #0] - 8005ba0: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005ba4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005ba8: 681b ldr r3, [r3, #0] - 8005baa: 691b ldr r3, [r3, #16] - 8005bac: 2b3e cmp r3, #62 @ 0x3e - 8005bae: d92b bls.n 8005c08 - 8005bb0: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005bb4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005bb8: 681b ldr r3, [r3, #0] - 8005bba: 691b ldr r3, [r3, #16] - 8005bbc: 095b lsrs r3, r3, #5 - 8005bbe: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 - 8005bc2: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005bc6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005bca: 681b ldr r3, [r3, #0] - 8005bcc: 691b ldr r3, [r3, #16] - 8005bce: f003 031f and.w r3, r3, #31 - 8005bd2: 2b00 cmp r3, #0 - 8005bd4: d104 bne.n 8005be0 - 8005bd6: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8005bda: 3b01 subs r3, #1 - 8005bdc: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 - 8005be0: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 8005be4: 881b ldrh r3, [r3, #0] - 8005be6: b29a uxth r2, r3 - 8005be8: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8005bec: b29b uxth r3, r3 - 8005bee: 029b lsls r3, r3, #10 - 8005bf0: b29b uxth r3, r3 - 8005bf2: 4313 orrs r3, r2 - 8005bf4: b29b uxth r3, r3 - 8005bf6: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005bfa: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005bfe: b29a uxth r2, r3 - 8005c00: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 8005c04: 801a strh r2, [r3, #0] - 8005c06: e070 b.n 8005cea - 8005c08: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005c0c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005c10: 681b ldr r3, [r3, #0] - 8005c12: 691b ldr r3, [r3, #16] - 8005c14: 2b00 cmp r3, #0 - 8005c16: d10c bne.n 8005c32 - 8005c18: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 8005c1c: 881b ldrh r3, [r3, #0] - 8005c1e: b29b uxth r3, r3 - 8005c20: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005c24: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005c28: b29a uxth r2, r3 - 8005c2a: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 8005c2e: 801a strh r2, [r3, #0] - 8005c30: e05b b.n 8005cea - 8005c32: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005c36: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005c3a: 681b ldr r3, [r3, #0] - 8005c3c: 691b ldr r3, [r3, #16] - 8005c3e: 085b lsrs r3, r3, #1 - 8005c40: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 - 8005c44: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005c48: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005c4c: 681b ldr r3, [r3, #0] - 8005c4e: 691b ldr r3, [r3, #16] - 8005c50: f003 0301 and.w r3, r3, #1 - 8005c54: 2b00 cmp r3, #0 - 8005c56: d004 beq.n 8005c62 - 8005c58: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8005c5c: 3301 adds r3, #1 - 8005c5e: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 - 8005c62: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 8005c66: 881b ldrh r3, [r3, #0] - 8005c68: b29a uxth r2, r3 - 8005c6a: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 - 8005c6e: b29b uxth r3, r3 - 8005c70: 029b lsls r3, r3, #10 - 8005c72: b29b uxth r3, r3 - 8005c74: 4313 orrs r3, r2 - 8005c76: b29a uxth r2, r3 - 8005c78: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 - 8005c7c: 801a strh r2, [r3, #0] - 8005c7e: e034 b.n 8005cea - 8005c80: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005c84: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005c88: 681b ldr r3, [r3, #0] - 8005c8a: 785b ldrb r3, [r3, #1] - 8005c8c: 2b01 cmp r3, #1 - 8005c8e: d12c bne.n 8005cea - 8005c90: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005c94: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005c98: 681b ldr r3, [r3, #0] - 8005c9a: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 - 8005c9e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005ca2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005ca6: 681b ldr r3, [r3, #0] - 8005ca8: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005cac: b29b uxth r3, r3 - 8005cae: 461a mov r2, r3 - 8005cb0: f8d7 30b4 ldr.w r3, [r7, #180] @ 0xb4 - 8005cb4: 4413 add r3, r2 - 8005cb6: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 - 8005cba: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005cbe: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005cc2: 681b ldr r3, [r3, #0] - 8005cc4: 781b ldrb r3, [r3, #0] - 8005cc6: 011a lsls r2, r3, #4 - 8005cc8: f8d7 30b4 ldr.w r3, [r7, #180] @ 0xb4 - 8005ccc: 4413 add r3, r2 - 8005cce: f203 4304 addw r3, r3, #1028 @ 0x404 - 8005cd2: f8c7 30b0 str.w r3, [r7, #176] @ 0xb0 - 8005cd6: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005cda: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005cde: 681b ldr r3, [r3, #0] - 8005ce0: 691b ldr r3, [r3, #16] - 8005ce2: b29a uxth r2, r3 - 8005ce4: f8d7 30b0 ldr.w r3, [r7, #176] @ 0xb0 - 8005ce8: 801a strh r2, [r3, #0] - 8005cea: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005cee: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005cf2: 681b ldr r3, [r3, #0] - 8005cf4: f8c7 30a4 str.w r3, [r7, #164] @ 0xa4 - 8005cf8: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005cfc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005d00: 681b ldr r3, [r3, #0] - 8005d02: 785b ldrb r3, [r3, #1] - 8005d04: 2b00 cmp r3, #0 - 8005d06: f040 809d bne.w 8005e44 - 8005d0a: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005d0e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005d12: 681b ldr r3, [r3, #0] - 8005d14: f8c7 309c str.w r3, [r7, #156] @ 0x9c - 8005d18: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005d1c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005d20: 681b ldr r3, [r3, #0] - 8005d22: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005d26: b29b uxth r3, r3 - 8005d28: 461a mov r2, r3 - 8005d2a: f8d7 309c ldr.w r3, [r7, #156] @ 0x9c - 8005d2e: 4413 add r3, r2 - 8005d30: f8c7 309c str.w r3, [r7, #156] @ 0x9c - 8005d34: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005d38: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005d3c: 681b ldr r3, [r3, #0] - 8005d3e: 781b ldrb r3, [r3, #0] - 8005d40: 011a lsls r2, r3, #4 - 8005d42: f8d7 309c ldr.w r3, [r7, #156] @ 0x9c - 8005d46: 4413 add r3, r2 - 8005d48: f203 430c addw r3, r3, #1036 @ 0x40c - 8005d4c: f8c7 3098 str.w r3, [r7, #152] @ 0x98 - 8005d50: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 8005d54: 881b ldrh r3, [r3, #0] - 8005d56: b29b uxth r3, r3 - 8005d58: f3c3 0309 ubfx r3, r3, #0, #10 - 8005d5c: b29a uxth r2, r3 - 8005d5e: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 8005d62: 801a strh r2, [r3, #0] - 8005d64: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005d68: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005d6c: 681b ldr r3, [r3, #0] - 8005d6e: 691b ldr r3, [r3, #16] - 8005d70: 2b3e cmp r3, #62 @ 0x3e - 8005d72: d92b bls.n 8005dcc - 8005d74: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005d78: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005d7c: 681b ldr r3, [r3, #0] - 8005d7e: 691b ldr r3, [r3, #16] - 8005d80: 095b lsrs r3, r3, #5 - 8005d82: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 - 8005d86: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005d8a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005d8e: 681b ldr r3, [r3, #0] - 8005d90: 691b ldr r3, [r3, #16] - 8005d92: f003 031f and.w r3, r3, #31 - 8005d96: 2b00 cmp r3, #0 - 8005d98: d104 bne.n 8005da4 - 8005d9a: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 8005d9e: 3b01 subs r3, #1 - 8005da0: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 - 8005da4: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 8005da8: 881b ldrh r3, [r3, #0] - 8005daa: b29a uxth r2, r3 - 8005dac: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 8005db0: b29b uxth r3, r3 - 8005db2: 029b lsls r3, r3, #10 - 8005db4: b29b uxth r3, r3 - 8005db6: 4313 orrs r3, r2 - 8005db8: b29b uxth r3, r3 - 8005dba: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005dbe: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005dc2: b29a uxth r2, r3 - 8005dc4: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 8005dc8: 801a strh r2, [r3, #0] - 8005dca: e069 b.n 8005ea0 - 8005dcc: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005dd0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005dd4: 681b ldr r3, [r3, #0] - 8005dd6: 691b ldr r3, [r3, #16] - 8005dd8: 2b00 cmp r3, #0 - 8005dda: d10c bne.n 8005df6 - 8005ddc: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 8005de0: 881b ldrh r3, [r3, #0] - 8005de2: b29b uxth r3, r3 - 8005de4: ea6f 4343 mvn.w r3, r3, lsl #17 - 8005de8: ea6f 4353 mvn.w r3, r3, lsr #17 - 8005dec: b29a uxth r2, r3 - 8005dee: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 8005df2: 801a strh r2, [r3, #0] - 8005df4: e054 b.n 8005ea0 - 8005df6: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005dfa: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005dfe: 681b ldr r3, [r3, #0] - 8005e00: 691b ldr r3, [r3, #16] - 8005e02: 085b lsrs r3, r3, #1 - 8005e04: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 - 8005e08: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005e0c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005e10: 681b ldr r3, [r3, #0] - 8005e12: 691b ldr r3, [r3, #16] - 8005e14: f003 0301 and.w r3, r3, #1 - 8005e18: 2b00 cmp r3, #0 - 8005e1a: d004 beq.n 8005e26 - 8005e1c: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 8005e20: 3301 adds r3, #1 - 8005e22: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 - 8005e26: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 8005e2a: 881b ldrh r3, [r3, #0] - 8005e2c: b29a uxth r2, r3 - 8005e2e: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 - 8005e32: b29b uxth r3, r3 - 8005e34: 029b lsls r3, r3, #10 - 8005e36: b29b uxth r3, r3 - 8005e38: 4313 orrs r3, r2 - 8005e3a: b29a uxth r2, r3 - 8005e3c: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 - 8005e40: 801a strh r2, [r3, #0] - 8005e42: e02d b.n 8005ea0 - 8005e44: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005e48: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005e4c: 681b ldr r3, [r3, #0] - 8005e4e: 785b ldrb r3, [r3, #1] - 8005e50: 2b01 cmp r3, #1 - 8005e52: d125 bne.n 8005ea0 - 8005e54: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005e58: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005e5c: 681b ldr r3, [r3, #0] - 8005e5e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8005e62: b29b uxth r3, r3 - 8005e64: 461a mov r2, r3 - 8005e66: f8d7 30a4 ldr.w r3, [r7, #164] @ 0xa4 - 8005e6a: 4413 add r3, r2 - 8005e6c: f8c7 30a4 str.w r3, [r7, #164] @ 0xa4 - 8005e70: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005e74: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005e78: 681b ldr r3, [r3, #0] - 8005e7a: 781b ldrb r3, [r3, #0] - 8005e7c: 011a lsls r2, r3, #4 - 8005e7e: f8d7 30a4 ldr.w r3, [r7, #164] @ 0xa4 - 8005e82: 4413 add r3, r2 - 8005e84: f203 430c addw r3, r3, #1036 @ 0x40c - 8005e88: f8c7 30a0 str.w r3, [r7, #160] @ 0xa0 - 8005e8c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005e90: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005e94: 681b ldr r3, [r3, #0] - 8005e96: 691b ldr r3, [r3, #16] - 8005e98: b29a uxth r2, r3 - 8005e9a: f8d7 30a0 ldr.w r3, [r7, #160] @ 0xa0 - 8005e9e: 801a strh r2, [r3, #0] - - /* Coming from ISR */ - if (ep->xfer_count != 0U) - 8005ea0: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005ea4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005ea8: 681b ldr r3, [r3, #0] - 8005eaa: 69db ldr r3, [r3, #28] - 8005eac: 2b00 cmp r3, #0 - 8005eae: f000 8218 beq.w 80062e2 - { - /* update last value to check if there is blocking state */ - wEPVal = PCD_GET_ENDPOINT(USBx, ep->num); - 8005eb2: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005eb6: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005eba: 681a ldr r2, [r3, #0] - 8005ebc: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005ec0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005ec4: 681b ldr r3, [r3, #0] - 8005ec6: 781b ldrb r3, [r3, #0] - 8005ec8: 009b lsls r3, r3, #2 - 8005eca: 4413 add r3, r2 - 8005ecc: 881b ldrh r3, [r3, #0] - 8005ece: f8a7 3096 strh.w r3, [r7, #150] @ 0x96 - - /*Blocking State */ - if ((((wEPVal & USB_EP_DTOG_RX) != 0U) && ((wEPVal & USB_EP_DTOG_TX) != 0U)) || - 8005ed2: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 - 8005ed6: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8005eda: 2b00 cmp r3, #0 - 8005edc: d005 beq.n 8005eea - 8005ede: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 - 8005ee2: f003 0340 and.w r3, r3, #64 @ 0x40 - 8005ee6: 2b00 cmp r3, #0 - 8005ee8: d10d bne.n 8005f06 - (((wEPVal & USB_EP_DTOG_RX) == 0U) && ((wEPVal & USB_EP_DTOG_TX) == 0U))) - 8005eea: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 - 8005eee: f403 4380 and.w r3, r3, #16384 @ 0x4000 - if ((((wEPVal & USB_EP_DTOG_RX) != 0U) && ((wEPVal & USB_EP_DTOG_TX) != 0U)) || - 8005ef2: 2b00 cmp r3, #0 - 8005ef4: f040 81f5 bne.w 80062e2 - (((wEPVal & USB_EP_DTOG_RX) == 0U) && ((wEPVal & USB_EP_DTOG_TX) == 0U))) - 8005ef8: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 - 8005efc: f003 0340 and.w r3, r3, #64 @ 0x40 - 8005f00: 2b00 cmp r3, #0 - 8005f02: f040 81ee bne.w 80062e2 - { - PCD_FREE_USER_BUFFER(USBx, ep->num, 0U); - 8005f06: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005f0a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005f0e: 681a ldr r2, [r3, #0] - 8005f10: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005f14: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005f18: 681b ldr r3, [r3, #0] - 8005f1a: 781b ldrb r3, [r3, #0] - 8005f1c: 009b lsls r3, r3, #2 - 8005f1e: 4413 add r3, r2 - 8005f20: 881b ldrh r3, [r3, #0] - 8005f22: b29b uxth r3, r3 - 8005f24: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8005f28: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8005f2c: f8a7 3094 strh.w r3, [r7, #148] @ 0x94 - 8005f30: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005f34: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005f38: 681a ldr r2, [r3, #0] - 8005f3a: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005f3e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005f42: 681b ldr r3, [r3, #0] - 8005f44: 781b ldrb r3, [r3, #0] - 8005f46: 009b lsls r3, r3, #2 - 8005f48: 441a add r2, r3 - 8005f4a: f8b7 3094 ldrh.w r3, [r7, #148] @ 0x94 - 8005f4e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8005f52: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8005f56: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8005f5a: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 8005f5e: b29b uxth r3, r3 - 8005f60: 8013 strh r3, [r2, #0] - 8005f62: e1be b.n 80062e2 - } - } - } - /* iso out double */ - else if (ep->type == EP_TYPE_ISOC) - 8005f64: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005f68: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005f6c: 681b ldr r3, [r3, #0] - 8005f6e: 78db ldrb r3, [r3, #3] - 8005f70: 2b01 cmp r3, #1 - 8005f72: f040 81b4 bne.w 80062de - { - /* Multi packet transfer */ - if (ep->xfer_len > ep->maxpacket) - 8005f76: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005f7a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005f7e: 681b ldr r3, [r3, #0] - 8005f80: 699a ldr r2, [r3, #24] - 8005f82: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005f86: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005f8a: 681b ldr r3, [r3, #0] - 8005f8c: 691b ldr r3, [r3, #16] - 8005f8e: 429a cmp r2, r3 - 8005f90: d917 bls.n 8005fc2 - { - len = ep->maxpacket; - 8005f92: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005f96: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005f9a: 681b ldr r3, [r3, #0] - 8005f9c: 691b ldr r3, [r3, #16] - 8005f9e: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - ep->xfer_len -= len; - 8005fa2: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005fa6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005faa: 681b ldr r3, [r3, #0] - 8005fac: 699a ldr r2, [r3, #24] - 8005fae: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8005fb2: 1ad2 subs r2, r2, r3 - 8005fb4: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005fb8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005fbc: 681b ldr r3, [r3, #0] - 8005fbe: 619a str r2, [r3, #24] - 8005fc0: e00e b.n 8005fe0 - } - else - { - len = ep->xfer_len; - 8005fc2: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005fc6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005fca: 681b ldr r3, [r3, #0] - 8005fcc: 699b ldr r3, [r3, #24] - 8005fce: f8c7 3104 str.w r3, [r7, #260] @ 0x104 - ep->xfer_len = 0U; - 8005fd2: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005fd6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005fda: 681b ldr r3, [r3, #0] - 8005fdc: 2200 movs r2, #0 - 8005fde: 619a str r2, [r3, #24] - } - PCD_SET_EP_DBUF_CNT(USBx, ep->num, ep->is_in, len); - 8005fe0: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005fe4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8005fe8: 681b ldr r3, [r3, #0] - 8005fea: 785b ldrb r3, [r3, #1] - 8005fec: 2b00 cmp r3, #0 - 8005fee: f040 8085 bne.w 80060fc - 8005ff2: f507 7384 add.w r3, r7, #264 @ 0x108 - 8005ff6: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8005ffa: 681b ldr r3, [r3, #0] - 8005ffc: f8c7 30cc str.w r3, [r7, #204] @ 0xcc - 8006000: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006004: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006008: 681b ldr r3, [r3, #0] - 800600a: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800600e: b29b uxth r3, r3 - 8006010: 461a mov r2, r3 - 8006012: f8d7 30cc ldr.w r3, [r7, #204] @ 0xcc - 8006016: 4413 add r3, r2 - 8006018: f8c7 30cc str.w r3, [r7, #204] @ 0xcc - 800601c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006020: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006024: 681b ldr r3, [r3, #0] - 8006026: 781b ldrb r3, [r3, #0] - 8006028: 011a lsls r2, r3, #4 - 800602a: f8d7 30cc ldr.w r3, [r7, #204] @ 0xcc - 800602e: 4413 add r3, r2 - 8006030: f203 4304 addw r3, r3, #1028 @ 0x404 - 8006034: f8c7 30c8 str.w r3, [r7, #200] @ 0xc8 - 8006038: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 800603c: 881b ldrh r3, [r3, #0] - 800603e: b29b uxth r3, r3 - 8006040: f3c3 0309 ubfx r3, r3, #0, #10 - 8006044: b29a uxth r2, r3 - 8006046: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 800604a: 801a strh r2, [r3, #0] - 800604c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8006050: 2b3e cmp r3, #62 @ 0x3e - 8006052: d923 bls.n 800609c - 8006054: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8006058: 095b lsrs r3, r3, #5 - 800605a: f8c7 30dc str.w r3, [r7, #220] @ 0xdc - 800605e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8006062: f003 031f and.w r3, r3, #31 - 8006066: 2b00 cmp r3, #0 - 8006068: d104 bne.n 8006074 - 800606a: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 800606e: 3b01 subs r3, #1 - 8006070: f8c7 30dc str.w r3, [r7, #220] @ 0xdc - 8006074: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 8006078: 881b ldrh r3, [r3, #0] - 800607a: b29a uxth r2, r3 - 800607c: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 8006080: b29b uxth r3, r3 - 8006082: 029b lsls r3, r3, #10 - 8006084: b29b uxth r3, r3 - 8006086: 4313 orrs r3, r2 - 8006088: b29b uxth r3, r3 - 800608a: ea6f 4343 mvn.w r3, r3, lsl #17 - 800608e: ea6f 4353 mvn.w r3, r3, lsr #17 - 8006092: b29a uxth r2, r3 - 8006094: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 8006098: 801a strh r2, [r3, #0] - 800609a: e060 b.n 800615e - 800609c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80060a0: 2b00 cmp r3, #0 - 80060a2: d10c bne.n 80060be - 80060a4: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 80060a8: 881b ldrh r3, [r3, #0] - 80060aa: b29b uxth r3, r3 - 80060ac: ea6f 4343 mvn.w r3, r3, lsl #17 - 80060b0: ea6f 4353 mvn.w r3, r3, lsr #17 - 80060b4: b29a uxth r2, r3 - 80060b6: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 80060ba: 801a strh r2, [r3, #0] - 80060bc: e04f b.n 800615e - 80060be: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80060c2: 085b lsrs r3, r3, #1 - 80060c4: f8c7 30dc str.w r3, [r7, #220] @ 0xdc - 80060c8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80060cc: f003 0301 and.w r3, r3, #1 - 80060d0: 2b00 cmp r3, #0 - 80060d2: d004 beq.n 80060de - 80060d4: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 80060d8: 3301 adds r3, #1 - 80060da: f8c7 30dc str.w r3, [r7, #220] @ 0xdc - 80060de: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 80060e2: 881b ldrh r3, [r3, #0] - 80060e4: b29a uxth r2, r3 - 80060e6: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc - 80060ea: b29b uxth r3, r3 - 80060ec: 029b lsls r3, r3, #10 - 80060ee: b29b uxth r3, r3 - 80060f0: 4313 orrs r3, r2 - 80060f2: b29a uxth r2, r3 - 80060f4: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 - 80060f8: 801a strh r2, [r3, #0] - 80060fa: e030 b.n 800615e - 80060fc: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006100: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006104: 681b ldr r3, [r3, #0] - 8006106: 785b ldrb r3, [r3, #1] - 8006108: 2b01 cmp r3, #1 - 800610a: d128 bne.n 800615e - 800610c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006110: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006114: 681b ldr r3, [r3, #0] - 8006116: f8c7 30d4 str.w r3, [r7, #212] @ 0xd4 - 800611a: f507 7384 add.w r3, r7, #264 @ 0x108 - 800611e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006122: 681b ldr r3, [r3, #0] - 8006124: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 8006128: b29b uxth r3, r3 - 800612a: 461a mov r2, r3 - 800612c: f8d7 30d4 ldr.w r3, [r7, #212] @ 0xd4 - 8006130: 4413 add r3, r2 - 8006132: f8c7 30d4 str.w r3, [r7, #212] @ 0xd4 - 8006136: f507 7384 add.w r3, r7, #264 @ 0x108 - 800613a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 800613e: 681b ldr r3, [r3, #0] - 8006140: 781b ldrb r3, [r3, #0] - 8006142: 011a lsls r2, r3, #4 - 8006144: f8d7 30d4 ldr.w r3, [r7, #212] @ 0xd4 - 8006148: 4413 add r3, r2 - 800614a: f203 4304 addw r3, r3, #1028 @ 0x404 - 800614e: f8c7 30d0 str.w r3, [r7, #208] @ 0xd0 - 8006152: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8006156: b29a uxth r2, r3 - 8006158: f8d7 30d0 ldr.w r3, [r7, #208] @ 0xd0 - 800615c: 801a strh r2, [r3, #0] - 800615e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006162: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006166: 681b ldr r3, [r3, #0] - 8006168: f8c7 30c4 str.w r3, [r7, #196] @ 0xc4 - 800616c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006170: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006174: 681b ldr r3, [r3, #0] - 8006176: 785b ldrb r3, [r3, #1] - 8006178: 2b00 cmp r3, #0 - 800617a: f040 8085 bne.w 8006288 - 800617e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006182: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006186: 681b ldr r3, [r3, #0] - 8006188: f8c7 30bc str.w r3, [r7, #188] @ 0xbc - 800618c: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006190: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 8006194: 681b ldr r3, [r3, #0] - 8006196: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 800619a: b29b uxth r3, r3 - 800619c: 461a mov r2, r3 - 800619e: f8d7 30bc ldr.w r3, [r7, #188] @ 0xbc - 80061a2: 4413 add r3, r2 - 80061a4: f8c7 30bc str.w r3, [r7, #188] @ 0xbc - 80061a8: f507 7384 add.w r3, r7, #264 @ 0x108 - 80061ac: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80061b0: 681b ldr r3, [r3, #0] - 80061b2: 781b ldrb r3, [r3, #0] - 80061b4: 011a lsls r2, r3, #4 - 80061b6: f8d7 30bc ldr.w r3, [r7, #188] @ 0xbc - 80061ba: 4413 add r3, r2 - 80061bc: f203 430c addw r3, r3, #1036 @ 0x40c - 80061c0: f8c7 30b8 str.w r3, [r7, #184] @ 0xb8 - 80061c4: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 80061c8: 881b ldrh r3, [r3, #0] - 80061ca: b29b uxth r3, r3 - 80061cc: f3c3 0309 ubfx r3, r3, #0, #10 - 80061d0: b29a uxth r2, r3 - 80061d2: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 80061d6: 801a strh r2, [r3, #0] - 80061d8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80061dc: 2b3e cmp r3, #62 @ 0x3e - 80061de: d923 bls.n 8006228 - 80061e0: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80061e4: 095b lsrs r3, r3, #5 - 80061e6: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 - 80061ea: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80061ee: f003 031f and.w r3, r3, #31 - 80061f2: 2b00 cmp r3, #0 - 80061f4: d104 bne.n 8006200 - 80061f6: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 - 80061fa: 3b01 subs r3, #1 - 80061fc: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 - 8006200: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 8006204: 881b ldrh r3, [r3, #0] - 8006206: b29a uxth r2, r3 - 8006208: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 - 800620c: b29b uxth r3, r3 - 800620e: 029b lsls r3, r3, #10 - 8006210: b29b uxth r3, r3 - 8006212: 4313 orrs r3, r2 - 8006214: b29b uxth r3, r3 - 8006216: ea6f 4343 mvn.w r3, r3, lsl #17 - 800621a: ea6f 4353 mvn.w r3, r3, lsr #17 - 800621e: b29a uxth r2, r3 - 8006220: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 8006224: 801a strh r2, [r3, #0] - 8006226: e05c b.n 80062e2 - 8006228: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800622c: 2b00 cmp r3, #0 - 800622e: d10c bne.n 800624a - 8006230: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 8006234: 881b ldrh r3, [r3, #0] - 8006236: b29b uxth r3, r3 - 8006238: ea6f 4343 mvn.w r3, r3, lsl #17 - 800623c: ea6f 4353 mvn.w r3, r3, lsr #17 - 8006240: b29a uxth r2, r3 - 8006242: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 8006246: 801a strh r2, [r3, #0] - 8006248: e04b b.n 80062e2 - 800624a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 800624e: 085b lsrs r3, r3, #1 - 8006250: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 - 8006254: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 8006258: f003 0301 and.w r3, r3, #1 - 800625c: 2b00 cmp r3, #0 - 800625e: d004 beq.n 800626a - 8006260: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 - 8006264: 3301 adds r3, #1 - 8006266: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 - 800626a: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 800626e: 881b ldrh r3, [r3, #0] - 8006270: b29a uxth r2, r3 - 8006272: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 - 8006276: b29b uxth r3, r3 - 8006278: 029b lsls r3, r3, #10 - 800627a: b29b uxth r3, r3 - 800627c: 4313 orrs r3, r2 - 800627e: b29a uxth r2, r3 - 8006280: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 - 8006284: 801a strh r2, [r3, #0] - 8006286: e02c b.n 80062e2 - 8006288: f507 7384 add.w r3, r7, #264 @ 0x108 - 800628c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006290: 681b ldr r3, [r3, #0] - 8006292: 785b ldrb r3, [r3, #1] - 8006294: 2b01 cmp r3, #1 - 8006296: d124 bne.n 80062e2 - 8006298: f507 7384 add.w r3, r7, #264 @ 0x108 - 800629c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80062a0: 681b ldr r3, [r3, #0] - 80062a2: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 - 80062a6: b29b uxth r3, r3 - 80062a8: 461a mov r2, r3 - 80062aa: f8d7 30c4 ldr.w r3, [r7, #196] @ 0xc4 - 80062ae: 4413 add r3, r2 - 80062b0: f8c7 30c4 str.w r3, [r7, #196] @ 0xc4 - 80062b4: f507 7384 add.w r3, r7, #264 @ 0x108 - 80062b8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80062bc: 681b ldr r3, [r3, #0] - 80062be: 781b ldrb r3, [r3, #0] - 80062c0: 011a lsls r2, r3, #4 - 80062c2: f8d7 30c4 ldr.w r3, [r7, #196] @ 0xc4 - 80062c6: 4413 add r3, r2 - 80062c8: f203 430c addw r3, r3, #1036 @ 0x40c - 80062cc: f8c7 30c0 str.w r3, [r7, #192] @ 0xc0 - 80062d0: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 - 80062d4: b29a uxth r2, r3 - 80062d6: f8d7 30c0 ldr.w r3, [r7, #192] @ 0xc0 - 80062da: 801a strh r2, [r3, #0] - 80062dc: e001 b.n 80062e2 - } - else - { - return HAL_ERROR; - 80062de: 2301 movs r3, #1 - 80062e0: e03a b.n 8006358 - } - } -#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ - - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); - 80062e2: f507 7384 add.w r3, r7, #264 @ 0x108 - 80062e6: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 80062ea: 681a ldr r2, [r3, #0] - 80062ec: f507 7384 add.w r3, r7, #264 @ 0x108 - 80062f0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 80062f4: 681b ldr r3, [r3, #0] - 80062f6: 781b ldrb r3, [r3, #0] - 80062f8: 009b lsls r3, r3, #2 - 80062fa: 4413 add r3, r2 - 80062fc: 881b ldrh r3, [r3, #0] - 80062fe: b29b uxth r3, r3 - 8006300: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 8006304: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8006308: f8a7 308a strh.w r3, [r7, #138] @ 0x8a - 800630c: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a - 8006310: f483 5380 eor.w r3, r3, #4096 @ 0x1000 - 8006314: f8a7 308a strh.w r3, [r7, #138] @ 0x8a - 8006318: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a - 800631c: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 8006320: f8a7 308a strh.w r3, [r7, #138] @ 0x8a - 8006324: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006328: f5a3 7382 sub.w r3, r3, #260 @ 0x104 - 800632c: 681a ldr r2, [r3, #0] - 800632e: f507 7384 add.w r3, r7, #264 @ 0x108 - 8006332: f5a3 7384 sub.w r3, r3, #264 @ 0x108 - 8006336: 681b ldr r3, [r3, #0] - 8006338: 781b ldrb r3, [r3, #0] - 800633a: 009b lsls r3, r3, #2 - 800633c: 441a add r2, r3 - 800633e: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a - 8006342: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8006346: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 800634a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 800634e: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8006352: b29b uxth r3, r3 - 8006354: 8013 strh r3, [r2, #0] - } - - return HAL_OK; - 8006356: 2300 movs r3, #0 -} - 8006358: 4618 mov r0, r3 - 800635a: f507 7784 add.w r7, r7, #264 @ 0x108 - 800635e: 46bd mov sp, r7 - 8006360: bd80 pop {r7, pc} - -08006362 : - * @param USBx Selected device - * @param ep pointer to endpoint structure - * @retval HAL status - */ -HAL_StatusTypeDef USB_EPSetStall(USB_TypeDef *USBx, USB_EPTypeDef *ep) -{ - 8006362: b480 push {r7} - 8006364: b085 sub sp, #20 - 8006366: af00 add r7, sp, #0 - 8006368: 6078 str r0, [r7, #4] - 800636a: 6039 str r1, [r7, #0] - if (ep->is_in != 0U) - 800636c: 683b ldr r3, [r7, #0] - 800636e: 785b ldrb r3, [r3, #1] - 8006370: 2b00 cmp r3, #0 - 8006372: d020 beq.n 80063b6 - { - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_STALL); - 8006374: 687a ldr r2, [r7, #4] - 8006376: 683b ldr r3, [r7, #0] - 8006378: 781b ldrb r3, [r3, #0] - 800637a: 009b lsls r3, r3, #2 - 800637c: 4413 add r3, r2 - 800637e: 881b ldrh r3, [r3, #0] - 8006380: b29b uxth r3, r3 - 8006382: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8006386: f023 0340 bic.w r3, r3, #64 @ 0x40 - 800638a: 81bb strh r3, [r7, #12] - 800638c: 89bb ldrh r3, [r7, #12] - 800638e: f083 0310 eor.w r3, r3, #16 - 8006392: 81bb strh r3, [r7, #12] - 8006394: 687a ldr r2, [r7, #4] - 8006396: 683b ldr r3, [r7, #0] - 8006398: 781b ldrb r3, [r3, #0] - 800639a: 009b lsls r3, r3, #2 - 800639c: 441a add r2, r3 - 800639e: 89bb ldrh r3, [r7, #12] - 80063a0: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80063a4: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80063a8: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 80063ac: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80063b0: b29b uxth r3, r3 - 80063b2: 8013 strh r3, [r2, #0] - 80063b4: e01f b.n 80063f6 - } - else - { - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_STALL); - 80063b6: 687a ldr r2, [r7, #4] - 80063b8: 683b ldr r3, [r7, #0] - 80063ba: 781b ldrb r3, [r3, #0] - 80063bc: 009b lsls r3, r3, #2 - 80063be: 4413 add r3, r2 - 80063c0: 881b ldrh r3, [r3, #0] - 80063c2: b29b uxth r3, r3 - 80063c4: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 80063c8: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80063cc: 81fb strh r3, [r7, #14] - 80063ce: 89fb ldrh r3, [r7, #14] - 80063d0: f483 5380 eor.w r3, r3, #4096 @ 0x1000 - 80063d4: 81fb strh r3, [r7, #14] - 80063d6: 687a ldr r2, [r7, #4] - 80063d8: 683b ldr r3, [r7, #0] - 80063da: 781b ldrb r3, [r3, #0] - 80063dc: 009b lsls r3, r3, #2 - 80063de: 441a add r2, r3 - 80063e0: 89fb ldrh r3, [r7, #14] - 80063e2: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80063e6: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80063ea: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 80063ee: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80063f2: b29b uxth r3, r3 - 80063f4: 8013 strh r3, [r2, #0] - } - - return HAL_OK; - 80063f6: 2300 movs r3, #0 -} - 80063f8: 4618 mov r0, r3 - 80063fa: 3714 adds r7, #20 - 80063fc: 46bd mov sp, r7 - 80063fe: bc80 pop {r7} - 8006400: 4770 bx lr - -08006402 : - * @param USBx Selected device - * @param ep pointer to endpoint structure - * @retval HAL status - */ -HAL_StatusTypeDef USB_EPClearStall(USB_TypeDef *USBx, USB_EPTypeDef *ep) -{ - 8006402: b480 push {r7} - 8006404: b087 sub sp, #28 - 8006406: af00 add r7, sp, #0 - 8006408: 6078 str r0, [r7, #4] - 800640a: 6039 str r1, [r7, #0] - if (ep->doublebuffer == 0U) - 800640c: 683b ldr r3, [r7, #0] - 800640e: 7b1b ldrb r3, [r3, #12] - 8006410: 2b00 cmp r3, #0 - 8006412: f040 809d bne.w 8006550 - { - if (ep->is_in != 0U) - 8006416: 683b ldr r3, [r7, #0] - 8006418: 785b ldrb r3, [r3, #1] - 800641a: 2b00 cmp r3, #0 - 800641c: d04c beq.n 80064b8 - { - PCD_CLEAR_TX_DTOG(USBx, ep->num); - 800641e: 687a ldr r2, [r7, #4] - 8006420: 683b ldr r3, [r7, #0] - 8006422: 781b ldrb r3, [r3, #0] - 8006424: 009b lsls r3, r3, #2 - 8006426: 4413 add r3, r2 - 8006428: 881b ldrh r3, [r3, #0] - 800642a: 823b strh r3, [r7, #16] - 800642c: 8a3b ldrh r3, [r7, #16] - 800642e: f003 0340 and.w r3, r3, #64 @ 0x40 - 8006432: 2b00 cmp r3, #0 - 8006434: d01b beq.n 800646e - 8006436: 687a ldr r2, [r7, #4] - 8006438: 683b ldr r3, [r7, #0] - 800643a: 781b ldrb r3, [r3, #0] - 800643c: 009b lsls r3, r3, #2 - 800643e: 4413 add r3, r2 - 8006440: 881b ldrh r3, [r3, #0] - 8006442: b29b uxth r3, r3 - 8006444: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8006448: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800644c: 81fb strh r3, [r7, #14] - 800644e: 687a ldr r2, [r7, #4] - 8006450: 683b ldr r3, [r7, #0] - 8006452: 781b ldrb r3, [r3, #0] - 8006454: 009b lsls r3, r3, #2 - 8006456: 441a add r2, r3 - 8006458: 89fb ldrh r3, [r7, #14] - 800645a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 800645e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8006462: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8006466: f043 03c0 orr.w r3, r3, #192 @ 0xc0 - 800646a: b29b uxth r3, r3 - 800646c: 8013 strh r3, [r2, #0] - - if (ep->type != EP_TYPE_ISOC) - 800646e: 683b ldr r3, [r7, #0] - 8006470: 78db ldrb r3, [r3, #3] - 8006472: 2b01 cmp r3, #1 - 8006474: d06c beq.n 8006550 - { - /* Configure NAK status for the Endpoint */ - PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); - 8006476: 687a ldr r2, [r7, #4] - 8006478: 683b ldr r3, [r7, #0] - 800647a: 781b ldrb r3, [r3, #0] - 800647c: 009b lsls r3, r3, #2 - 800647e: 4413 add r3, r2 - 8006480: 881b ldrh r3, [r3, #0] - 8006482: b29b uxth r3, r3 - 8006484: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 8006488: f023 0340 bic.w r3, r3, #64 @ 0x40 - 800648c: 81bb strh r3, [r7, #12] - 800648e: 89bb ldrh r3, [r7, #12] - 8006490: f083 0320 eor.w r3, r3, #32 - 8006494: 81bb strh r3, [r7, #12] - 8006496: 687a ldr r2, [r7, #4] - 8006498: 683b ldr r3, [r7, #0] - 800649a: 781b ldrb r3, [r3, #0] - 800649c: 009b lsls r3, r3, #2 - 800649e: 441a add r2, r3 - 80064a0: 89bb ldrh r3, [r7, #12] - 80064a2: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80064a6: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80064aa: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 80064ae: f043 0380 orr.w r3, r3, #128 @ 0x80 - 80064b2: b29b uxth r3, r3 - 80064b4: 8013 strh r3, [r2, #0] - 80064b6: e04b b.n 8006550 - } - } - else - { - PCD_CLEAR_RX_DTOG(USBx, ep->num); - 80064b8: 687a ldr r2, [r7, #4] - 80064ba: 683b ldr r3, [r7, #0] - 80064bc: 781b ldrb r3, [r3, #0] - 80064be: 009b lsls r3, r3, #2 - 80064c0: 4413 add r3, r2 - 80064c2: 881b ldrh r3, [r3, #0] - 80064c4: 82fb strh r3, [r7, #22] - 80064c6: 8afb ldrh r3, [r7, #22] - 80064c8: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 80064cc: 2b00 cmp r3, #0 - 80064ce: d01b beq.n 8006508 - 80064d0: 687a ldr r2, [r7, #4] - 80064d2: 683b ldr r3, [r7, #0] - 80064d4: 781b ldrb r3, [r3, #0] - 80064d6: 009b lsls r3, r3, #2 - 80064d8: 4413 add r3, r2 - 80064da: 881b ldrh r3, [r3, #0] - 80064dc: b29b uxth r3, r3 - 80064de: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 - 80064e2: f023 0370 bic.w r3, r3, #112 @ 0x70 - 80064e6: 82bb strh r3, [r7, #20] - 80064e8: 687a ldr r2, [r7, #4] - 80064ea: 683b ldr r3, [r7, #0] - 80064ec: 781b ldrb r3, [r3, #0] - 80064ee: 009b lsls r3, r3, #2 - 80064f0: 441a add r2, r3 - 80064f2: 8abb ldrh r3, [r7, #20] - 80064f4: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 80064f8: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 80064fc: f443 4340 orr.w r3, r3, #49152 @ 0xc000 - 8006500: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8006504: b29b uxth r3, r3 - 8006506: 8013 strh r3, [r2, #0] - - /* Configure VALID status for the Endpoint */ - PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); - 8006508: 687a ldr r2, [r7, #4] - 800650a: 683b ldr r3, [r7, #0] - 800650c: 781b ldrb r3, [r3, #0] - 800650e: 009b lsls r3, r3, #2 - 8006510: 4413 add r3, r2 - 8006512: 881b ldrh r3, [r3, #0] - 8006514: b29b uxth r3, r3 - 8006516: f423 4380 bic.w r3, r3, #16384 @ 0x4000 - 800651a: f023 0370 bic.w r3, r3, #112 @ 0x70 - 800651e: 827b strh r3, [r7, #18] - 8006520: 8a7b ldrh r3, [r7, #18] - 8006522: f483 5380 eor.w r3, r3, #4096 @ 0x1000 - 8006526: 827b strh r3, [r7, #18] - 8006528: 8a7b ldrh r3, [r7, #18] - 800652a: f483 5300 eor.w r3, r3, #8192 @ 0x2000 - 800652e: 827b strh r3, [r7, #18] - 8006530: 687a ldr r2, [r7, #4] - 8006532: 683b ldr r3, [r7, #0] - 8006534: 781b ldrb r3, [r3, #0] - 8006536: 009b lsls r3, r3, #2 - 8006538: 441a add r2, r3 - 800653a: 8a7b ldrh r3, [r7, #18] - 800653c: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 - 8006540: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 - 8006544: f443 4300 orr.w r3, r3, #32768 @ 0x8000 - 8006548: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800654c: b29b uxth r3, r3 - 800654e: 8013 strh r3, [r2, #0] - } - } - - return HAL_OK; - 8006550: 2300 movs r3, #0 -} - 8006552: 4618 mov r0, r3 - 8006554: 371c adds r7, #28 - 8006556: 46bd mov sp, r7 - 8006558: bc80 pop {r7} - 800655a: 4770 bx lr - -0800655c : - * @param address new device address to be assigned - * This parameter can be a value from 0 to 255 - * @retval HAL status - */ -HAL_StatusTypeDef USB_SetDevAddress(USB_TypeDef *USBx, uint8_t address) -{ - 800655c: b480 push {r7} - 800655e: b083 sub sp, #12 - 8006560: af00 add r7, sp, #0 - 8006562: 6078 str r0, [r7, #4] - 8006564: 460b mov r3, r1 - 8006566: 70fb strb r3, [r7, #3] - if (address == 0U) - 8006568: 78fb ldrb r3, [r7, #3] - 800656a: 2b00 cmp r3, #0 - 800656c: d103 bne.n 8006576 - { - /* set device address and enable function */ - USBx->DADDR = (uint16_t)USB_DADDR_EF; - 800656e: 687b ldr r3, [r7, #4] - 8006570: 2280 movs r2, #128 @ 0x80 - 8006572: f8a3 204c strh.w r2, [r3, #76] @ 0x4c - } - - return HAL_OK; - 8006576: 2300 movs r3, #0 -} - 8006578: 4618 mov r0, r3 - 800657a: 370c adds r7, #12 - 800657c: 46bd mov sp, r7 - 800657e: bc80 pop {r7} - 8006580: 4770 bx lr - -08006582 : - * @brief USB_DevConnect Connect the USB device by enabling the pull-up/pull-down - * @param USBx Selected device - * @retval HAL status - */ -HAL_StatusTypeDef USB_DevConnect(USB_TypeDef *USBx) -{ - 8006582: b480 push {r7} - 8006584: b083 sub sp, #12 - 8006586: af00 add r7, sp, #0 - 8006588: 6078 str r0, [r7, #4] - /* NOTE : - This function is not required by USB Device FS peripheral, it is used - only by USB OTG FS peripheral. - - This function is added to ensure compatibility across platforms. - */ - - return HAL_OK; - 800658a: 2300 movs r3, #0 -} - 800658c: 4618 mov r0, r3 - 800658e: 370c adds r7, #12 - 8006590: 46bd mov sp, r7 - 8006592: bc80 pop {r7} - 8006594: 4770 bx lr - -08006596 : - * @brief USB_DevDisconnect Disconnect the USB device by disabling the pull-up/pull-down - * @param USBx Selected device - * @retval HAL status - */ -HAL_StatusTypeDef USB_DevDisconnect(USB_TypeDef *USBx) -{ - 8006596: b480 push {r7} - 8006598: b083 sub sp, #12 - 800659a: af00 add r7, sp, #0 - 800659c: 6078 str r0, [r7, #4] - /* NOTE : - This function is not required by USB Device FS peripheral, it is used - only by USB OTG FS peripheral. - - This function is added to ensure compatibility across platforms. - */ - - return HAL_OK; - 800659e: 2300 movs r3, #0 -} - 80065a0: 4618 mov r0, r3 - 80065a2: 370c adds r7, #12 - 80065a4: 46bd mov sp, r7 - 80065a6: bc80 pop {r7} - 80065a8: 4770 bx lr - -080065aa : - * @brief USB_ReadInterrupts return the global USB interrupt status - * @param USBx Selected device - * @retval USB Global Interrupt status - */ -uint32_t USB_ReadInterrupts(USB_TypeDef const *USBx) -{ - 80065aa: b480 push {r7} - 80065ac: b085 sub sp, #20 - 80065ae: af00 add r7, sp, #0 - 80065b0: 6078 str r0, [r7, #4] - uint32_t tmpreg; - - tmpreg = USBx->ISTR; - 80065b2: 687b ldr r3, [r7, #4] - 80065b4: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 - 80065b8: b29b uxth r3, r3 - 80065ba: 60fb str r3, [r7, #12] - return tmpreg; - 80065bc: 68fb ldr r3, [r7, #12] -} - 80065be: 4618 mov r0, r3 - 80065c0: 3714 adds r7, #20 - 80065c2: 46bd mov sp, r7 - 80065c4: bc80 pop {r7} - 80065c6: 4770 bx lr - -080065c8 : - * @param USBx Selected device - * @param psetup pointer to setup packet - * @retval HAL status - */ -HAL_StatusTypeDef USB_EP0_OutStart(USB_TypeDef *USBx, uint8_t *psetup) -{ - 80065c8: b480 push {r7} - 80065ca: b083 sub sp, #12 - 80065cc: af00 add r7, sp, #0 - 80065ce: 6078 str r0, [r7, #4] - 80065d0: 6039 str r1, [r7, #0] - UNUSED(psetup); - /* NOTE : - This function is not required by USB Device FS peripheral, it is used - only by USB OTG FS peripheral. - - This function is added to ensure compatibility across platforms. - */ - return HAL_OK; - 80065d2: 2300 movs r3, #0 -} - 80065d4: 4618 mov r0, r3 - 80065d6: 370c adds r7, #12 - 80065d8: 46bd mov sp, r7 - 80065da: bc80 pop {r7} - 80065dc: 4770 bx lr - -080065de : - * @param wPMABufAddr address into PMA. - * @param wNBytes no. of bytes to be copied. - * @retval None - */ -void USB_WritePMA(USB_TypeDef const *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) -{ - 80065de: b480 push {r7} - 80065e0: b08b sub sp, #44 @ 0x2c - 80065e2: af00 add r7, sp, #0 - 80065e4: 60f8 str r0, [r7, #12] - 80065e6: 60b9 str r1, [r7, #8] - 80065e8: 4611 mov r1, r2 - 80065ea: 461a mov r2, r3 - 80065ec: 460b mov r3, r1 - 80065ee: 80fb strh r3, [r7, #6] - 80065f0: 4613 mov r3, r2 - 80065f2: 80bb strh r3, [r7, #4] - uint32_t n = ((uint32_t)wNBytes + 1U) >> 1; - 80065f4: 88bb ldrh r3, [r7, #4] - 80065f6: 3301 adds r3, #1 - 80065f8: 085b lsrs r3, r3, #1 - 80065fa: 61bb str r3, [r7, #24] - uint32_t BaseAddr = (uint32_t)USBx; - 80065fc: 68fb ldr r3, [r7, #12] - 80065fe: 617b str r3, [r7, #20] - uint32_t count; - uint16_t WrVal; - __IO uint16_t *pdwVal; - uint8_t *pBuf = pbUsrBuf; - 8006600: 68bb ldr r3, [r7, #8] - 8006602: 61fb str r3, [r7, #28] - - pdwVal = (__IO uint16_t *)(BaseAddr + 0x400U + ((uint32_t)wPMABufAddr * PMA_ACCESS)); - 8006604: 88fb ldrh r3, [r7, #6] - 8006606: 005a lsls r2, r3, #1 - 8006608: 697b ldr r3, [r7, #20] - 800660a: 4413 add r3, r2 - 800660c: f503 6380 add.w r3, r3, #1024 @ 0x400 - 8006610: 623b str r3, [r7, #32] - - for (count = n; count != 0U; count--) - 8006612: 69bb ldr r3, [r7, #24] - 8006614: 627b str r3, [r7, #36] @ 0x24 - 8006616: e01f b.n 8006658 - { - WrVal = pBuf[0]; - 8006618: 69fb ldr r3, [r7, #28] - 800661a: 781b ldrb r3, [r3, #0] - 800661c: 827b strh r3, [r7, #18] - WrVal |= (uint16_t)pBuf[1] << 8; - 800661e: 69fb ldr r3, [r7, #28] - 8006620: 3301 adds r3, #1 - 8006622: 781b ldrb r3, [r3, #0] - 8006624: b21b sxth r3, r3 - 8006626: 021b lsls r3, r3, #8 - 8006628: b21a sxth r2, r3 - 800662a: f9b7 3012 ldrsh.w r3, [r7, #18] - 800662e: 4313 orrs r3, r2 - 8006630: b21b sxth r3, r3 - 8006632: 827b strh r3, [r7, #18] - *pdwVal = (WrVal & 0xFFFFU); - 8006634: 6a3b ldr r3, [r7, #32] - 8006636: 8a7a ldrh r2, [r7, #18] - 8006638: 801a strh r2, [r3, #0] - pdwVal++; - 800663a: 6a3b ldr r3, [r7, #32] - 800663c: 3302 adds r3, #2 - 800663e: 623b str r3, [r7, #32] - -#if PMA_ACCESS > 1U - pdwVal++; - 8006640: 6a3b ldr r3, [r7, #32] - 8006642: 3302 adds r3, #2 - 8006644: 623b str r3, [r7, #32] -#endif /* PMA_ACCESS */ - - pBuf++; - 8006646: 69fb ldr r3, [r7, #28] - 8006648: 3301 adds r3, #1 - 800664a: 61fb str r3, [r7, #28] - pBuf++; - 800664c: 69fb ldr r3, [r7, #28] - 800664e: 3301 adds r3, #1 - 8006650: 61fb str r3, [r7, #28] - for (count = n; count != 0U; count--) - 8006652: 6a7b ldr r3, [r7, #36] @ 0x24 - 8006654: 3b01 subs r3, #1 - 8006656: 627b str r3, [r7, #36] @ 0x24 - 8006658: 6a7b ldr r3, [r7, #36] @ 0x24 - 800665a: 2b00 cmp r3, #0 - 800665c: d1dc bne.n 8006618 - } -} - 800665e: bf00 nop - 8006660: bf00 nop - 8006662: 372c adds r7, #44 @ 0x2c - 8006664: 46bd mov sp, r7 - 8006666: bc80 pop {r7} - 8006668: 4770 bx lr - -0800666a : - * @param wPMABufAddr address into PMA. - * @param wNBytes no. of bytes to be copied. - * @retval None - */ -void USB_ReadPMA(USB_TypeDef const *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) -{ - 800666a: b480 push {r7} - 800666c: b08b sub sp, #44 @ 0x2c - 800666e: af00 add r7, sp, #0 - 8006670: 60f8 str r0, [r7, #12] - 8006672: 60b9 str r1, [r7, #8] - 8006674: 4611 mov r1, r2 - 8006676: 461a mov r2, r3 - 8006678: 460b mov r3, r1 - 800667a: 80fb strh r3, [r7, #6] - 800667c: 4613 mov r3, r2 - 800667e: 80bb strh r3, [r7, #4] - uint32_t n = (uint32_t)wNBytes >> 1; - 8006680: 88bb ldrh r3, [r7, #4] - 8006682: 085b lsrs r3, r3, #1 - 8006684: b29b uxth r3, r3 - 8006686: 61bb str r3, [r7, #24] - uint32_t BaseAddr = (uint32_t)USBx; - 8006688: 68fb ldr r3, [r7, #12] - 800668a: 617b str r3, [r7, #20] - uint32_t count; - uint32_t RdVal; - __IO uint16_t *pdwVal; - uint8_t *pBuf = pbUsrBuf; - 800668c: 68bb ldr r3, [r7, #8] - 800668e: 61fb str r3, [r7, #28] - - pdwVal = (__IO uint16_t *)(BaseAddr + 0x400U + ((uint32_t)wPMABufAddr * PMA_ACCESS)); - 8006690: 88fb ldrh r3, [r7, #6] - 8006692: 005a lsls r2, r3, #1 - 8006694: 697b ldr r3, [r7, #20] - 8006696: 4413 add r3, r2 - 8006698: f503 6380 add.w r3, r3, #1024 @ 0x400 - 800669c: 623b str r3, [r7, #32] - - for (count = n; count != 0U; count--) - 800669e: 69bb ldr r3, [r7, #24] - 80066a0: 627b str r3, [r7, #36] @ 0x24 - 80066a2: e01b b.n 80066dc - { - RdVal = *(__IO uint16_t *)pdwVal; - 80066a4: 6a3b ldr r3, [r7, #32] - 80066a6: 881b ldrh r3, [r3, #0] - 80066a8: b29b uxth r3, r3 - 80066aa: 613b str r3, [r7, #16] - pdwVal++; - 80066ac: 6a3b ldr r3, [r7, #32] - 80066ae: 3302 adds r3, #2 - 80066b0: 623b str r3, [r7, #32] - *pBuf = (uint8_t)((RdVal >> 0) & 0xFFU); - 80066b2: 693b ldr r3, [r7, #16] - 80066b4: b2da uxtb r2, r3 - 80066b6: 69fb ldr r3, [r7, #28] - 80066b8: 701a strb r2, [r3, #0] - pBuf++; - 80066ba: 69fb ldr r3, [r7, #28] - 80066bc: 3301 adds r3, #1 - 80066be: 61fb str r3, [r7, #28] - *pBuf = (uint8_t)((RdVal >> 8) & 0xFFU); - 80066c0: 693b ldr r3, [r7, #16] - 80066c2: 0a1b lsrs r3, r3, #8 - 80066c4: b2da uxtb r2, r3 - 80066c6: 69fb ldr r3, [r7, #28] - 80066c8: 701a strb r2, [r3, #0] - pBuf++; - 80066ca: 69fb ldr r3, [r7, #28] - 80066cc: 3301 adds r3, #1 - 80066ce: 61fb str r3, [r7, #28] - -#if PMA_ACCESS > 1U - pdwVal++; - 80066d0: 6a3b ldr r3, [r7, #32] - 80066d2: 3302 adds r3, #2 - 80066d4: 623b str r3, [r7, #32] - for (count = n; count != 0U; count--) - 80066d6: 6a7b ldr r3, [r7, #36] @ 0x24 - 80066d8: 3b01 subs r3, #1 - 80066da: 627b str r3, [r7, #36] @ 0x24 - 80066dc: 6a7b ldr r3, [r7, #36] @ 0x24 - 80066de: 2b00 cmp r3, #0 - 80066e0: d1e0 bne.n 80066a4 -#endif /* PMA_ACCESS */ - } - - if ((wNBytes % 2U) != 0U) - 80066e2: 88bb ldrh r3, [r7, #4] - 80066e4: f003 0301 and.w r3, r3, #1 - 80066e8: b29b uxth r3, r3 - 80066ea: 2b00 cmp r3, #0 - 80066ec: d007 beq.n 80066fe - { - RdVal = *pdwVal; - 80066ee: 6a3b ldr r3, [r7, #32] - 80066f0: 881b ldrh r3, [r3, #0] - 80066f2: b29b uxth r3, r3 - 80066f4: 613b str r3, [r7, #16] - *pBuf = (uint8_t)((RdVal >> 0) & 0xFFU); - 80066f6: 693b ldr r3, [r7, #16] - 80066f8: b2da uxtb r2, r3 - 80066fa: 69fb ldr r3, [r7, #28] - 80066fc: 701a strb r2, [r3, #0] - } -} - 80066fe: bf00 nop - 8006700: 372c adds r7, #44 @ 0x2c - 8006702: 46bd mov sp, r7 - 8006704: bc80 pop {r7} - 8006706: 4770 bx lr - -08006708 : - * @param pdev: device instance - * @param cfgidx: Configuration index - * @retval status - */ -static uint8_t USBD_CDC_Init(USBD_HandleTypeDef *pdev, uint8_t cfgidx) -{ - 8006708: b580 push {r7, lr} - 800670a: b084 sub sp, #16 - 800670c: af00 add r7, sp, #0 - 800670e: 6078 str r0, [r7, #4] - 8006710: 460b mov r3, r1 - 8006712: 70fb strb r3, [r7, #3] - uint8_t ret = 0U; - 8006714: 2300 movs r3, #0 - 8006716: 73fb strb r3, [r7, #15] - USBD_CDC_HandleTypeDef *hcdc; - - if (pdev->dev_speed == USBD_SPEED_HIGH) - 8006718: 687b ldr r3, [r7, #4] - 800671a: 7c1b ldrb r3, [r3, #16] - 800671c: 2b00 cmp r3, #0 - 800671e: d115 bne.n 800674c - { - /* Open EP IN */ - USBD_LL_OpenEP(pdev, CDC_IN_EP, USBD_EP_TYPE_BULK, - 8006720: f44f 7300 mov.w r3, #512 @ 0x200 - 8006724: 2202 movs r2, #2 - 8006726: 2181 movs r1, #129 @ 0x81 - 8006728: 6878 ldr r0, [r7, #4] - 800672a: f001 ff00 bl 800852e - CDC_DATA_HS_IN_PACKET_SIZE); - - pdev->ep_in[CDC_IN_EP & 0xFU].is_used = 1U; - 800672e: 687b ldr r3, [r7, #4] - 8006730: 2201 movs r2, #1 - 8006732: 62da str r2, [r3, #44] @ 0x2c - - /* Open EP OUT */ - USBD_LL_OpenEP(pdev, CDC_OUT_EP, USBD_EP_TYPE_BULK, - 8006734: f44f 7300 mov.w r3, #512 @ 0x200 - 8006738: 2202 movs r2, #2 - 800673a: 2101 movs r1, #1 - 800673c: 6878 ldr r0, [r7, #4] - 800673e: f001 fef6 bl 800852e - CDC_DATA_HS_OUT_PACKET_SIZE); - - pdev->ep_out[CDC_OUT_EP & 0xFU].is_used = 1U; - 8006742: 687b ldr r3, [r7, #4] - 8006744: 2201 movs r2, #1 - 8006746: f8c3 216c str.w r2, [r3, #364] @ 0x16c - 800674a: e012 b.n 8006772 - - } - else - { - /* Open EP IN */ - USBD_LL_OpenEP(pdev, CDC_IN_EP, USBD_EP_TYPE_BULK, - 800674c: 2340 movs r3, #64 @ 0x40 - 800674e: 2202 movs r2, #2 - 8006750: 2181 movs r1, #129 @ 0x81 - 8006752: 6878 ldr r0, [r7, #4] - 8006754: f001 feeb bl 800852e - CDC_DATA_FS_IN_PACKET_SIZE); - - pdev->ep_in[CDC_IN_EP & 0xFU].is_used = 1U; - 8006758: 687b ldr r3, [r7, #4] - 800675a: 2201 movs r2, #1 - 800675c: 62da str r2, [r3, #44] @ 0x2c - - /* Open EP OUT */ - USBD_LL_OpenEP(pdev, CDC_OUT_EP, USBD_EP_TYPE_BULK, - 800675e: 2340 movs r3, #64 @ 0x40 - 8006760: 2202 movs r2, #2 - 8006762: 2101 movs r1, #1 - 8006764: 6878 ldr r0, [r7, #4] - 8006766: f001 fee2 bl 800852e - CDC_DATA_FS_OUT_PACKET_SIZE); - - pdev->ep_out[CDC_OUT_EP & 0xFU].is_used = 1U; - 800676a: 687b ldr r3, [r7, #4] - 800676c: 2201 movs r2, #1 - 800676e: f8c3 216c str.w r2, [r3, #364] @ 0x16c - } - /* Open Command IN EP */ - USBD_LL_OpenEP(pdev, CDC_CMD_EP, USBD_EP_TYPE_INTR, CDC_CMD_PACKET_SIZE); - 8006772: 2308 movs r3, #8 - 8006774: 2203 movs r2, #3 - 8006776: 2182 movs r1, #130 @ 0x82 - 8006778: 6878 ldr r0, [r7, #4] - 800677a: f001 fed8 bl 800852e - pdev->ep_in[CDC_CMD_EP & 0xFU].is_used = 1U; - 800677e: 687b ldr r3, [r7, #4] - 8006780: 2201 movs r2, #1 - 8006782: 641a str r2, [r3, #64] @ 0x40 - - pdev->pClassData = USBD_malloc(sizeof(USBD_CDC_HandleTypeDef)); - 8006784: f44f 7007 mov.w r0, #540 @ 0x21c - 8006788: f001 fff8 bl 800877c - 800678c: 4602 mov r2, r0 - 800678e: 687b ldr r3, [r7, #4] - 8006790: f8c3 22b8 str.w r2, [r3, #696] @ 0x2b8 - - if (pdev->pClassData == NULL) - 8006794: 687b ldr r3, [r7, #4] - 8006796: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 800679a: 2b00 cmp r3, #0 - 800679c: d102 bne.n 80067a4 - { - ret = 1U; - 800679e: 2301 movs r3, #1 - 80067a0: 73fb strb r3, [r7, #15] - 80067a2: e026 b.n 80067f2 - } - else - { - hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 80067a4: 687b ldr r3, [r7, #4] - 80067a6: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 80067aa: 60bb str r3, [r7, #8] - - /* Init physical Interface components */ - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Init(); - 80067ac: 687b ldr r3, [r7, #4] - 80067ae: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc - 80067b2: 681b ldr r3, [r3, #0] - 80067b4: 4798 blx r3 - - /* Init Xfer states */ - hcdc->TxState = 0U; - 80067b6: 68bb ldr r3, [r7, #8] - 80067b8: 2200 movs r2, #0 - 80067ba: f8c3 2214 str.w r2, [r3, #532] @ 0x214 - hcdc->RxState = 0U; - 80067be: 68bb ldr r3, [r7, #8] - 80067c0: 2200 movs r2, #0 - 80067c2: f8c3 2218 str.w r2, [r3, #536] @ 0x218 - - if (pdev->dev_speed == USBD_SPEED_HIGH) - 80067c6: 687b ldr r3, [r7, #4] - 80067c8: 7c1b ldrb r3, [r3, #16] - 80067ca: 2b00 cmp r3, #0 - 80067cc: d109 bne.n 80067e2 - { - /* Prepare Out endpoint to receive next packet */ - USBD_LL_PrepareReceive(pdev, CDC_OUT_EP, hcdc->RxBuffer, - 80067ce: 68bb ldr r3, [r7, #8] - 80067d0: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 - 80067d4: f44f 7300 mov.w r3, #512 @ 0x200 - 80067d8: 2101 movs r1, #1 - 80067da: 6878 ldr r0, [r7, #4] - 80067dc: f001 ff97 bl 800870e - 80067e0: e007 b.n 80067f2 - CDC_DATA_HS_OUT_PACKET_SIZE); - } - else - { - /* Prepare Out endpoint to receive next packet */ - USBD_LL_PrepareReceive(pdev, CDC_OUT_EP, hcdc->RxBuffer, - 80067e2: 68bb ldr r3, [r7, #8] - 80067e4: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 - 80067e8: 2340 movs r3, #64 @ 0x40 - 80067ea: 2101 movs r1, #1 - 80067ec: 6878 ldr r0, [r7, #4] - 80067ee: f001 ff8e bl 800870e - CDC_DATA_FS_OUT_PACKET_SIZE); - } - } - return ret; - 80067f2: 7bfb ldrb r3, [r7, #15] -} - 80067f4: 4618 mov r0, r3 - 80067f6: 3710 adds r7, #16 - 80067f8: 46bd mov sp, r7 - 80067fa: bd80 pop {r7, pc} - -080067fc : - * @param pdev: device instance - * @param cfgidx: Configuration index - * @retval status - */ -static uint8_t USBD_CDC_DeInit(USBD_HandleTypeDef *pdev, uint8_t cfgidx) -{ - 80067fc: b580 push {r7, lr} - 80067fe: b084 sub sp, #16 - 8006800: af00 add r7, sp, #0 - 8006802: 6078 str r0, [r7, #4] - 8006804: 460b mov r3, r1 - 8006806: 70fb strb r3, [r7, #3] - uint8_t ret = 0U; - 8006808: 2300 movs r3, #0 - 800680a: 73fb strb r3, [r7, #15] - - /* Close EP IN */ - USBD_LL_CloseEP(pdev, CDC_IN_EP); - 800680c: 2181 movs r1, #129 @ 0x81 - 800680e: 6878 ldr r0, [r7, #4] - 8006810: f001 feb3 bl 800857a - pdev->ep_in[CDC_IN_EP & 0xFU].is_used = 0U; - 8006814: 687b ldr r3, [r7, #4] - 8006816: 2200 movs r2, #0 - 8006818: 62da str r2, [r3, #44] @ 0x2c - - /* Close EP OUT */ - USBD_LL_CloseEP(pdev, CDC_OUT_EP); - 800681a: 2101 movs r1, #1 - 800681c: 6878 ldr r0, [r7, #4] - 800681e: f001 feac bl 800857a - pdev->ep_out[CDC_OUT_EP & 0xFU].is_used = 0U; - 8006822: 687b ldr r3, [r7, #4] - 8006824: 2200 movs r2, #0 - 8006826: f8c3 216c str.w r2, [r3, #364] @ 0x16c - - /* Close Command IN EP */ - USBD_LL_CloseEP(pdev, CDC_CMD_EP); - 800682a: 2182 movs r1, #130 @ 0x82 - 800682c: 6878 ldr r0, [r7, #4] - 800682e: f001 fea4 bl 800857a - pdev->ep_in[CDC_CMD_EP & 0xFU].is_used = 0U; - 8006832: 687b ldr r3, [r7, #4] - 8006834: 2200 movs r2, #0 - 8006836: 641a str r2, [r3, #64] @ 0x40 - - /* DeInit physical Interface components */ - if (pdev->pClassData != NULL) - 8006838: 687b ldr r3, [r7, #4] - 800683a: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 800683e: 2b00 cmp r3, #0 - 8006840: d00e beq.n 8006860 - { - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->DeInit(); - 8006842: 687b ldr r3, [r7, #4] - 8006844: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc - 8006848: 685b ldr r3, [r3, #4] - 800684a: 4798 blx r3 - USBD_free(pdev->pClassData); - 800684c: 687b ldr r3, [r7, #4] - 800684e: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8006852: 4618 mov r0, r3 - 8006854: f001 ff9e bl 8008794 - pdev->pClassData = NULL; - 8006858: 687b ldr r3, [r7, #4] - 800685a: 2200 movs r2, #0 - 800685c: f8c3 22b8 str.w r2, [r3, #696] @ 0x2b8 - } - - return ret; - 8006860: 7bfb ldrb r3, [r7, #15] -} - 8006862: 4618 mov r0, r3 - 8006864: 3710 adds r7, #16 - 8006866: 46bd mov sp, r7 - 8006868: bd80 pop {r7, pc} - -0800686a : - * @param req: usb requests - * @retval status - */ -static uint8_t USBD_CDC_Setup(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 800686a: b580 push {r7, lr} - 800686c: b086 sub sp, #24 - 800686e: af00 add r7, sp, #0 - 8006870: 6078 str r0, [r7, #4] - 8006872: 6039 str r1, [r7, #0] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 8006874: 687b ldr r3, [r7, #4] - 8006876: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 800687a: 613b str r3, [r7, #16] - uint8_t ifalt = 0U; - 800687c: 2300 movs r3, #0 - 800687e: 73fb strb r3, [r7, #15] - uint16_t status_info = 0U; - 8006880: 2300 movs r3, #0 - 8006882: 81bb strh r3, [r7, #12] - uint8_t ret = USBD_OK; - 8006884: 2300 movs r3, #0 - 8006886: 75fb strb r3, [r7, #23] - - switch (req->bmRequest & USB_REQ_TYPE_MASK) - 8006888: 683b ldr r3, [r7, #0] - 800688a: 781b ldrb r3, [r3, #0] - 800688c: f003 0360 and.w r3, r3, #96 @ 0x60 - 8006890: 2b00 cmp r3, #0 - 8006892: d039 beq.n 8006908 - 8006894: 2b20 cmp r3, #32 - 8006896: d17f bne.n 8006998 - { - case USB_REQ_TYPE_CLASS : - if (req->wLength) - 8006898: 683b ldr r3, [r7, #0] - 800689a: 88db ldrh r3, [r3, #6] - 800689c: 2b00 cmp r3, #0 - 800689e: d029 beq.n 80068f4 - { - if (req->bmRequest & 0x80U) - 80068a0: 683b ldr r3, [r7, #0] - 80068a2: 781b ldrb r3, [r3, #0] - 80068a4: b25b sxtb r3, r3 - 80068a6: 2b00 cmp r3, #0 - 80068a8: da11 bge.n 80068ce - { - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, - 80068aa: 687b ldr r3, [r7, #4] - 80068ac: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc - 80068b0: 689b ldr r3, [r3, #8] - 80068b2: 683a ldr r2, [r7, #0] - 80068b4: 7850 ldrb r0, [r2, #1] - (uint8_t *)(void *)hcdc->data, - 80068b6: 6939 ldr r1, [r7, #16] - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, - 80068b8: 683a ldr r2, [r7, #0] - 80068ba: 88d2 ldrh r2, [r2, #6] - 80068bc: 4798 blx r3 - req->wLength); - - USBD_CtlSendData(pdev, (uint8_t *)(void *)hcdc->data, req->wLength); - 80068be: 6939 ldr r1, [r7, #16] - 80068c0: 683b ldr r3, [r7, #0] - 80068c2: 88db ldrh r3, [r3, #6] - 80068c4: 461a mov r2, r3 - 80068c6: 6878 ldr r0, [r7, #4] - 80068c8: f001 fa06 bl 8007cd8 - else - { - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, - (uint8_t *)(void *)req, 0U); - } - break; - 80068cc: e06b b.n 80069a6 - hcdc->CmdOpCode = req->bRequest; - 80068ce: 683b ldr r3, [r7, #0] - 80068d0: 785a ldrb r2, [r3, #1] - 80068d2: 693b ldr r3, [r7, #16] - 80068d4: f883 2200 strb.w r2, [r3, #512] @ 0x200 - hcdc->CmdLength = (uint8_t)req->wLength; - 80068d8: 683b ldr r3, [r7, #0] - 80068da: 88db ldrh r3, [r3, #6] - 80068dc: b2da uxtb r2, r3 - 80068de: 693b ldr r3, [r7, #16] - 80068e0: f883 2201 strb.w r2, [r3, #513] @ 0x201 - USBD_CtlPrepareRx(pdev, (uint8_t *)(void *)hcdc->data, req->wLength); - 80068e4: 6939 ldr r1, [r7, #16] - 80068e6: 683b ldr r3, [r7, #0] - 80068e8: 88db ldrh r3, [r3, #6] - 80068ea: 461a mov r2, r3 - 80068ec: 6878 ldr r0, [r7, #4] - 80068ee: f001 fa21 bl 8007d34 - break; - 80068f2: e058 b.n 80069a6 - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, - 80068f4: 687b ldr r3, [r7, #4] - 80068f6: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc - 80068fa: 689b ldr r3, [r3, #8] - 80068fc: 683a ldr r2, [r7, #0] - 80068fe: 7850 ldrb r0, [r2, #1] - 8006900: 2200 movs r2, #0 - 8006902: 6839 ldr r1, [r7, #0] - 8006904: 4798 blx r3 - break; - 8006906: e04e b.n 80069a6 - - case USB_REQ_TYPE_STANDARD: - switch (req->bRequest) - 8006908: 683b ldr r3, [r7, #0] - 800690a: 785b ldrb r3, [r3, #1] - 800690c: 2b0b cmp r3, #11 - 800690e: d02e beq.n 800696e - 8006910: 2b0b cmp r3, #11 - 8006912: dc38 bgt.n 8006986 - 8006914: 2b00 cmp r3, #0 - 8006916: d002 beq.n 800691e - 8006918: 2b0a cmp r3, #10 - 800691a: d014 beq.n 8006946 - 800691c: e033 b.n 8006986 - { - case USB_REQ_GET_STATUS: - if (pdev->dev_state == USBD_STATE_CONFIGURED) - 800691e: 687b ldr r3, [r7, #4] - 8006920: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8006924: 2b03 cmp r3, #3 - 8006926: d107 bne.n 8006938 - { - USBD_CtlSendData(pdev, (uint8_t *)(void *)&status_info, 2U); - 8006928: f107 030c add.w r3, r7, #12 - 800692c: 2202 movs r2, #2 - 800692e: 4619 mov r1, r3 - 8006930: 6878 ldr r0, [r7, #4] - 8006932: f001 f9d1 bl 8007cd8 - else - { - USBD_CtlError(pdev, req); - ret = USBD_FAIL; - } - break; - 8006936: e02e b.n 8006996 - USBD_CtlError(pdev, req); - 8006938: 6839 ldr r1, [r7, #0] - 800693a: 6878 ldr r0, [r7, #4] - 800693c: f001 f962 bl 8007c04 - ret = USBD_FAIL; - 8006940: 2302 movs r3, #2 - 8006942: 75fb strb r3, [r7, #23] - break; - 8006944: e027 b.n 8006996 - - case USB_REQ_GET_INTERFACE: - if (pdev->dev_state == USBD_STATE_CONFIGURED) - 8006946: 687b ldr r3, [r7, #4] - 8006948: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 800694c: 2b03 cmp r3, #3 - 800694e: d107 bne.n 8006960 - { - USBD_CtlSendData(pdev, &ifalt, 1U); - 8006950: f107 030f add.w r3, r7, #15 - 8006954: 2201 movs r2, #1 - 8006956: 4619 mov r1, r3 - 8006958: 6878 ldr r0, [r7, #4] - 800695a: f001 f9bd bl 8007cd8 - else - { - USBD_CtlError(pdev, req); - ret = USBD_FAIL; - } - break; - 800695e: e01a b.n 8006996 - USBD_CtlError(pdev, req); - 8006960: 6839 ldr r1, [r7, #0] - 8006962: 6878 ldr r0, [r7, #4] - 8006964: f001 f94e bl 8007c04 - ret = USBD_FAIL; - 8006968: 2302 movs r3, #2 - 800696a: 75fb strb r3, [r7, #23] - break; - 800696c: e013 b.n 8006996 - - case USB_REQ_SET_INTERFACE: - if (pdev->dev_state != USBD_STATE_CONFIGURED) - 800696e: 687b ldr r3, [r7, #4] - 8006970: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8006974: 2b03 cmp r3, #3 - 8006976: d00d beq.n 8006994 - { - USBD_CtlError(pdev, req); - 8006978: 6839 ldr r1, [r7, #0] - 800697a: 6878 ldr r0, [r7, #4] - 800697c: f001 f942 bl 8007c04 - ret = USBD_FAIL; - 8006980: 2302 movs r3, #2 - 8006982: 75fb strb r3, [r7, #23] - } - break; - 8006984: e006 b.n 8006994 - - default: - USBD_CtlError(pdev, req); - 8006986: 6839 ldr r1, [r7, #0] - 8006988: 6878 ldr r0, [r7, #4] - 800698a: f001 f93b bl 8007c04 - ret = USBD_FAIL; - 800698e: 2302 movs r3, #2 - 8006990: 75fb strb r3, [r7, #23] - break; - 8006992: e000 b.n 8006996 - break; - 8006994: bf00 nop - } - break; - 8006996: e006 b.n 80069a6 - - default: - USBD_CtlError(pdev, req); - 8006998: 6839 ldr r1, [r7, #0] - 800699a: 6878 ldr r0, [r7, #4] - 800699c: f001 f932 bl 8007c04 - ret = USBD_FAIL; - 80069a0: 2302 movs r3, #2 - 80069a2: 75fb strb r3, [r7, #23] - break; - 80069a4: bf00 nop - } - - return ret; - 80069a6: 7dfb ldrb r3, [r7, #23] -} - 80069a8: 4618 mov r0, r3 - 80069aa: 3718 adds r7, #24 - 80069ac: 46bd mov sp, r7 - 80069ae: bd80 pop {r7, pc} - -080069b0 : - * @param pdev: device instance - * @param epnum: endpoint number - * @retval status - */ -static uint8_t USBD_CDC_DataIn(USBD_HandleTypeDef *pdev, uint8_t epnum) -{ - 80069b0: b580 push {r7, lr} - 80069b2: b084 sub sp, #16 - 80069b4: af00 add r7, sp, #0 - 80069b6: 6078 str r0, [r7, #4] - 80069b8: 460b mov r3, r1 - 80069ba: 70fb strb r3, [r7, #3] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *)pdev->pClassData; - 80069bc: 687b ldr r3, [r7, #4] - 80069be: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 80069c2: 60fb str r3, [r7, #12] - PCD_HandleTypeDef *hpcd = pdev->pData; - 80069c4: 687b ldr r3, [r7, #4] - 80069c6: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 80069ca: 60bb str r3, [r7, #8] - - if (pdev->pClassData != NULL) - 80069cc: 687b ldr r3, [r7, #4] - 80069ce: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 80069d2: 2b00 cmp r3, #0 - 80069d4: d03a beq.n 8006a4c - { - if ((pdev->ep_in[epnum].total_length > 0U) && ((pdev->ep_in[epnum].total_length % hpcd->IN_ep[epnum].maxpacket) == 0U)) - 80069d6: 78fa ldrb r2, [r7, #3] - 80069d8: 6879 ldr r1, [r7, #4] - 80069da: 4613 mov r3, r2 - 80069dc: 009b lsls r3, r3, #2 - 80069de: 4413 add r3, r2 - 80069e0: 009b lsls r3, r3, #2 - 80069e2: 440b add r3, r1 - 80069e4: 331c adds r3, #28 - 80069e6: 681b ldr r3, [r3, #0] - 80069e8: 2b00 cmp r3, #0 - 80069ea: d029 beq.n 8006a40 - 80069ec: 78fa ldrb r2, [r7, #3] - 80069ee: 6879 ldr r1, [r7, #4] - 80069f0: 4613 mov r3, r2 - 80069f2: 009b lsls r3, r3, #2 - 80069f4: 4413 add r3, r2 - 80069f6: 009b lsls r3, r3, #2 - 80069f8: 440b add r3, r1 - 80069fa: 331c adds r3, #28 - 80069fc: 681a ldr r2, [r3, #0] - 80069fe: 78f9 ldrb r1, [r7, #3] - 8006a00: 68b8 ldr r0, [r7, #8] - 8006a02: 460b mov r3, r1 - 8006a04: 009b lsls r3, r3, #2 - 8006a06: 440b add r3, r1 - 8006a08: 00db lsls r3, r3, #3 - 8006a0a: 4403 add r3, r0 - 8006a0c: 3320 adds r3, #32 - 8006a0e: 681b ldr r3, [r3, #0] - 8006a10: fbb2 f1f3 udiv r1, r2, r3 - 8006a14: fb01 f303 mul.w r3, r1, r3 - 8006a18: 1ad3 subs r3, r2, r3 - 8006a1a: 2b00 cmp r3, #0 - 8006a1c: d110 bne.n 8006a40 - { - /* Update the packet total length */ - pdev->ep_in[epnum].total_length = 0U; - 8006a1e: 78fa ldrb r2, [r7, #3] - 8006a20: 6879 ldr r1, [r7, #4] - 8006a22: 4613 mov r3, r2 - 8006a24: 009b lsls r3, r3, #2 - 8006a26: 4413 add r3, r2 - 8006a28: 009b lsls r3, r3, #2 - 8006a2a: 440b add r3, r1 - 8006a2c: 331c adds r3, #28 - 8006a2e: 2200 movs r2, #0 - 8006a30: 601a str r2, [r3, #0] - - /* Send ZLP */ - USBD_LL_Transmit(pdev, epnum, NULL, 0U); - 8006a32: 78f9 ldrb r1, [r7, #3] - 8006a34: 2300 movs r3, #0 - 8006a36: 2200 movs r2, #0 - 8006a38: 6878 ldr r0, [r7, #4] - 8006a3a: f001 fe45 bl 80086c8 - 8006a3e: e003 b.n 8006a48 - } - else - { - hcdc->TxState = 0U; - 8006a40: 68fb ldr r3, [r7, #12] - 8006a42: 2200 movs r2, #0 - 8006a44: f8c3 2214 str.w r2, [r3, #532] @ 0x214 - } - return USBD_OK; - 8006a48: 2300 movs r3, #0 - 8006a4a: e000 b.n 8006a4e - } - else - { - return USBD_FAIL; - 8006a4c: 2302 movs r3, #2 - } -} - 8006a4e: 4618 mov r0, r3 - 8006a50: 3710 adds r7, #16 - 8006a52: 46bd mov sp, r7 - 8006a54: bd80 pop {r7, pc} - -08006a56 : - * @param pdev: device instance - * @param epnum: endpoint number - * @retval status - */ -static uint8_t USBD_CDC_DataOut(USBD_HandleTypeDef *pdev, uint8_t epnum) -{ - 8006a56: b580 push {r7, lr} - 8006a58: b084 sub sp, #16 - 8006a5a: af00 add r7, sp, #0 - 8006a5c: 6078 str r0, [r7, #4] - 8006a5e: 460b mov r3, r1 - 8006a60: 70fb strb r3, [r7, #3] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 8006a62: 687b ldr r3, [r7, #4] - 8006a64: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8006a68: 60fb str r3, [r7, #12] - - /* Get the received data length */ - hcdc->RxLength = USBD_LL_GetRxDataSize(pdev, epnum); - 8006a6a: 78fb ldrb r3, [r7, #3] - 8006a6c: 4619 mov r1, r3 - 8006a6e: 6878 ldr r0, [r7, #4] - 8006a70: f001 fe70 bl 8008754 - 8006a74: 4602 mov r2, r0 - 8006a76: 68fb ldr r3, [r7, #12] - 8006a78: f8c3 220c str.w r2, [r3, #524] @ 0x20c - - /* USB data will be immediately processed, this allow next USB traffic being - NAKed till the end of the application Xfer */ - if (pdev->pClassData != NULL) - 8006a7c: 687b ldr r3, [r7, #4] - 8006a7e: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8006a82: 2b00 cmp r3, #0 - 8006a84: d00d beq.n 8006aa2 - { - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Receive(hcdc->RxBuffer, &hcdc->RxLength); - 8006a86: 687b ldr r3, [r7, #4] - 8006a88: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc - 8006a8c: 68db ldr r3, [r3, #12] - 8006a8e: 68fa ldr r2, [r7, #12] - 8006a90: f8d2 0204 ldr.w r0, [r2, #516] @ 0x204 - 8006a94: 68fa ldr r2, [r7, #12] - 8006a96: f502 7203 add.w r2, r2, #524 @ 0x20c - 8006a9a: 4611 mov r1, r2 - 8006a9c: 4798 blx r3 - - return USBD_OK; - 8006a9e: 2300 movs r3, #0 - 8006aa0: e000 b.n 8006aa4 - } - else - { - return USBD_FAIL; - 8006aa2: 2302 movs r3, #2 - } -} - 8006aa4: 4618 mov r0, r3 - 8006aa6: 3710 adds r7, #16 - 8006aa8: 46bd mov sp, r7 - 8006aaa: bd80 pop {r7, pc} - -08006aac : - * Handle EP0 Rx Ready event - * @param pdev: device instance - * @retval status - */ -static uint8_t USBD_CDC_EP0_RxReady(USBD_HandleTypeDef *pdev) -{ - 8006aac: b580 push {r7, lr} - 8006aae: b084 sub sp, #16 - 8006ab0: af00 add r7, sp, #0 - 8006ab2: 6078 str r0, [r7, #4] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 8006ab4: 687b ldr r3, [r7, #4] - 8006ab6: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8006aba: 60fb str r3, [r7, #12] - - if ((pdev->pUserData != NULL) && (hcdc->CmdOpCode != 0xFFU)) - 8006abc: 687b ldr r3, [r7, #4] - 8006abe: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc - 8006ac2: 2b00 cmp r3, #0 - 8006ac4: d014 beq.n 8006af0 - 8006ac6: 68fb ldr r3, [r7, #12] - 8006ac8: f893 3200 ldrb.w r3, [r3, #512] @ 0x200 - 8006acc: 2bff cmp r3, #255 @ 0xff - 8006ace: d00f beq.n 8006af0 - { - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(hcdc->CmdOpCode, - 8006ad0: 687b ldr r3, [r7, #4] - 8006ad2: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc - 8006ad6: 689b ldr r3, [r3, #8] - 8006ad8: 68fa ldr r2, [r7, #12] - 8006ada: f892 0200 ldrb.w r0, [r2, #512] @ 0x200 - (uint8_t *)(void *)hcdc->data, - 8006ade: 68f9 ldr r1, [r7, #12] - (uint16_t)hcdc->CmdLength); - 8006ae0: 68fa ldr r2, [r7, #12] - 8006ae2: f892 2201 ldrb.w r2, [r2, #513] @ 0x201 - ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(hcdc->CmdOpCode, - 8006ae6: 4798 blx r3 - hcdc->CmdOpCode = 0xFFU; - 8006ae8: 68fb ldr r3, [r7, #12] - 8006aea: 22ff movs r2, #255 @ 0xff - 8006aec: f883 2200 strb.w r2, [r3, #512] @ 0x200 - - } - return USBD_OK; - 8006af0: 2300 movs r3, #0 -} - 8006af2: 4618 mov r0, r3 - 8006af4: 3710 adds r7, #16 - 8006af6: 46bd mov sp, r7 - 8006af8: bd80 pop {r7, pc} - ... - -08006afc : - * @param speed : current device speed - * @param length : pointer data length - * @retval pointer to descriptor buffer - */ -static uint8_t *USBD_CDC_GetFSCfgDesc(uint16_t *length) -{ - 8006afc: b480 push {r7} - 8006afe: b083 sub sp, #12 - 8006b00: af00 add r7, sp, #0 - 8006b02: 6078 str r0, [r7, #4] - *length = sizeof(USBD_CDC_CfgFSDesc); - 8006b04: 687b ldr r3, [r7, #4] - 8006b06: 2243 movs r2, #67 @ 0x43 - 8006b08: 801a strh r2, [r3, #0] - return USBD_CDC_CfgFSDesc; - 8006b0a: 4b03 ldr r3, [pc, #12] @ (8006b18 ) -} - 8006b0c: 4618 mov r0, r3 - 8006b0e: 370c adds r7, #12 - 8006b10: 46bd mov sp, r7 - 8006b12: bc80 pop {r7} - 8006b14: 4770 bx lr - 8006b16: bf00 nop - 8006b18: 20000094 .word 0x20000094 - -08006b1c : - * @param speed : current device speed - * @param length : pointer data length - * @retval pointer to descriptor buffer - */ -static uint8_t *USBD_CDC_GetHSCfgDesc(uint16_t *length) -{ - 8006b1c: b480 push {r7} - 8006b1e: b083 sub sp, #12 - 8006b20: af00 add r7, sp, #0 - 8006b22: 6078 str r0, [r7, #4] - *length = sizeof(USBD_CDC_CfgHSDesc); - 8006b24: 687b ldr r3, [r7, #4] - 8006b26: 2243 movs r2, #67 @ 0x43 - 8006b28: 801a strh r2, [r3, #0] - return USBD_CDC_CfgHSDesc; - 8006b2a: 4b03 ldr r3, [pc, #12] @ (8006b38 ) -} - 8006b2c: 4618 mov r0, r3 - 8006b2e: 370c adds r7, #12 - 8006b30: 46bd mov sp, r7 - 8006b32: bc80 pop {r7} - 8006b34: 4770 bx lr - 8006b36: bf00 nop - 8006b38: 20000050 .word 0x20000050 - -08006b3c : - * @param speed : current device speed - * @param length : pointer data length - * @retval pointer to descriptor buffer - */ -static uint8_t *USBD_CDC_GetOtherSpeedCfgDesc(uint16_t *length) -{ - 8006b3c: b480 push {r7} - 8006b3e: b083 sub sp, #12 - 8006b40: af00 add r7, sp, #0 - 8006b42: 6078 str r0, [r7, #4] - *length = sizeof(USBD_CDC_OtherSpeedCfgDesc); - 8006b44: 687b ldr r3, [r7, #4] - 8006b46: 2243 movs r2, #67 @ 0x43 - 8006b48: 801a strh r2, [r3, #0] - return USBD_CDC_OtherSpeedCfgDesc; - 8006b4a: 4b03 ldr r3, [pc, #12] @ (8006b58 ) -} - 8006b4c: 4618 mov r0, r3 - 8006b4e: 370c adds r7, #12 - 8006b50: 46bd mov sp, r7 - 8006b52: bc80 pop {r7} - 8006b54: 4770 bx lr - 8006b56: bf00 nop - 8006b58: 200000d8 .word 0x200000d8 - -08006b5c : -* return Device Qualifier descriptor -* @param length : pointer data length -* @retval pointer to descriptor buffer -*/ -uint8_t *USBD_CDC_GetDeviceQualifierDescriptor(uint16_t *length) -{ - 8006b5c: b480 push {r7} - 8006b5e: b083 sub sp, #12 - 8006b60: af00 add r7, sp, #0 - 8006b62: 6078 str r0, [r7, #4] - *length = sizeof(USBD_CDC_DeviceQualifierDesc); - 8006b64: 687b ldr r3, [r7, #4] - 8006b66: 220a movs r2, #10 - 8006b68: 801a strh r2, [r3, #0] - return USBD_CDC_DeviceQualifierDesc; - 8006b6a: 4b03 ldr r3, [pc, #12] @ (8006b78 ) -} - 8006b6c: 4618 mov r0, r3 - 8006b6e: 370c adds r7, #12 - 8006b70: 46bd mov sp, r7 - 8006b72: bc80 pop {r7} - 8006b74: 4770 bx lr - 8006b76: bf00 nop - 8006b78: 2000000c .word 0x2000000c - -08006b7c : - * @param fops: CD Interface callback - * @retval status - */ -uint8_t USBD_CDC_RegisterInterface(USBD_HandleTypeDef *pdev, - USBD_CDC_ItfTypeDef *fops) -{ - 8006b7c: b480 push {r7} - 8006b7e: b085 sub sp, #20 - 8006b80: af00 add r7, sp, #0 - 8006b82: 6078 str r0, [r7, #4] - 8006b84: 6039 str r1, [r7, #0] - uint8_t ret = USBD_FAIL; - 8006b86: 2302 movs r3, #2 - 8006b88: 73fb strb r3, [r7, #15] - - if (fops != NULL) - 8006b8a: 683b ldr r3, [r7, #0] - 8006b8c: 2b00 cmp r3, #0 - 8006b8e: d005 beq.n 8006b9c - { - pdev->pUserData = fops; - 8006b90: 687b ldr r3, [r7, #4] - 8006b92: 683a ldr r2, [r7, #0] - 8006b94: f8c3 22bc str.w r2, [r3, #700] @ 0x2bc - ret = USBD_OK; - 8006b98: 2300 movs r3, #0 - 8006b9a: 73fb strb r3, [r7, #15] - } - - return ret; - 8006b9c: 7bfb ldrb r3, [r7, #15] -} - 8006b9e: 4618 mov r0, r3 - 8006ba0: 3714 adds r7, #20 - 8006ba2: 46bd mov sp, r7 - 8006ba4: bc80 pop {r7} - 8006ba6: 4770 bx lr - -08006ba8 : - * @retval status - */ -uint8_t USBD_CDC_SetTxBuffer(USBD_HandleTypeDef *pdev, - uint8_t *pbuff, - uint16_t length) -{ - 8006ba8: b480 push {r7} - 8006baa: b087 sub sp, #28 - 8006bac: af00 add r7, sp, #0 - 8006bae: 60f8 str r0, [r7, #12] - 8006bb0: 60b9 str r1, [r7, #8] - 8006bb2: 4613 mov r3, r2 - 8006bb4: 80fb strh r3, [r7, #6] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 8006bb6: 68fb ldr r3, [r7, #12] - 8006bb8: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8006bbc: 617b str r3, [r7, #20] - - hcdc->TxBuffer = pbuff; - 8006bbe: 697b ldr r3, [r7, #20] - 8006bc0: 68ba ldr r2, [r7, #8] - 8006bc2: f8c3 2208 str.w r2, [r3, #520] @ 0x208 - hcdc->TxLength = length; - 8006bc6: 88fa ldrh r2, [r7, #6] - 8006bc8: 697b ldr r3, [r7, #20] - 8006bca: f8c3 2210 str.w r2, [r3, #528] @ 0x210 - - return USBD_OK; - 8006bce: 2300 movs r3, #0 -} - 8006bd0: 4618 mov r0, r3 - 8006bd2: 371c adds r7, #28 - 8006bd4: 46bd mov sp, r7 - 8006bd6: bc80 pop {r7} - 8006bd8: 4770 bx lr - -08006bda : - * @param pbuff: Rx Buffer - * @retval status - */ -uint8_t USBD_CDC_SetRxBuffer(USBD_HandleTypeDef *pdev, - uint8_t *pbuff) -{ - 8006bda: b480 push {r7} - 8006bdc: b085 sub sp, #20 - 8006bde: af00 add r7, sp, #0 - 8006be0: 6078 str r0, [r7, #4] - 8006be2: 6039 str r1, [r7, #0] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 8006be4: 687b ldr r3, [r7, #4] - 8006be6: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8006bea: 60fb str r3, [r7, #12] - - hcdc->RxBuffer = pbuff; - 8006bec: 68fb ldr r3, [r7, #12] - 8006bee: 683a ldr r2, [r7, #0] - 8006bf0: f8c3 2204 str.w r2, [r3, #516] @ 0x204 - - return USBD_OK; - 8006bf4: 2300 movs r3, #0 -} - 8006bf6: 4618 mov r0, r3 - 8006bf8: 3714 adds r7, #20 - 8006bfa: 46bd mov sp, r7 - 8006bfc: bc80 pop {r7} - 8006bfe: 4770 bx lr - -08006c00 : - * Transmit packet on IN endpoint - * @param pdev: device instance - * @retval status - */ -uint8_t USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev) -{ - 8006c00: b580 push {r7, lr} - 8006c02: b084 sub sp, #16 - 8006c04: af00 add r7, sp, #0 - 8006c06: 6078 str r0, [r7, #4] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 8006c08: 687b ldr r3, [r7, #4] - 8006c0a: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8006c0e: 60fb str r3, [r7, #12] - - if (pdev->pClassData != NULL) - 8006c10: 687b ldr r3, [r7, #4] - 8006c12: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8006c16: 2b00 cmp r3, #0 - 8006c18: d01c beq.n 8006c54 - { - if (hcdc->TxState == 0U) - 8006c1a: 68fb ldr r3, [r7, #12] - 8006c1c: f8d3 3214 ldr.w r3, [r3, #532] @ 0x214 - 8006c20: 2b00 cmp r3, #0 - 8006c22: d115 bne.n 8006c50 - { - /* Tx Transfer in progress */ - hcdc->TxState = 1U; - 8006c24: 68fb ldr r3, [r7, #12] - 8006c26: 2201 movs r2, #1 - 8006c28: f8c3 2214 str.w r2, [r3, #532] @ 0x214 - - /* Update the packet total length */ - pdev->ep_in[CDC_IN_EP & 0xFU].total_length = hcdc->TxLength; - 8006c2c: 68fb ldr r3, [r7, #12] - 8006c2e: f8d3 2210 ldr.w r2, [r3, #528] @ 0x210 - 8006c32: 687b ldr r3, [r7, #4] - 8006c34: 631a str r2, [r3, #48] @ 0x30 - - /* Transmit next packet */ - USBD_LL_Transmit(pdev, CDC_IN_EP, hcdc->TxBuffer, - 8006c36: 68fb ldr r3, [r7, #12] - 8006c38: f8d3 2208 ldr.w r2, [r3, #520] @ 0x208 - (uint16_t)hcdc->TxLength); - 8006c3c: 68fb ldr r3, [r7, #12] - 8006c3e: f8d3 3210 ldr.w r3, [r3, #528] @ 0x210 - USBD_LL_Transmit(pdev, CDC_IN_EP, hcdc->TxBuffer, - 8006c42: b29b uxth r3, r3 - 8006c44: 2181 movs r1, #129 @ 0x81 - 8006c46: 6878 ldr r0, [r7, #4] - 8006c48: f001 fd3e bl 80086c8 - - return USBD_OK; - 8006c4c: 2300 movs r3, #0 - 8006c4e: e002 b.n 8006c56 - } - else - { - return USBD_BUSY; - 8006c50: 2301 movs r3, #1 - 8006c52: e000 b.n 8006c56 - } - } - else - { - return USBD_FAIL; - 8006c54: 2302 movs r3, #2 - } -} - 8006c56: 4618 mov r0, r3 - 8006c58: 3710 adds r7, #16 - 8006c5a: 46bd mov sp, r7 - 8006c5c: bd80 pop {r7, pc} - -08006c5e : - * prepare OUT Endpoint for reception - * @param pdev: device instance - * @retval status - */ -uint8_t USBD_CDC_ReceivePacket(USBD_HandleTypeDef *pdev) -{ - 8006c5e: b580 push {r7, lr} - 8006c60: b084 sub sp, #16 - 8006c62: af00 add r7, sp, #0 - 8006c64: 6078 str r0, [r7, #4] - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; - 8006c66: 687b ldr r3, [r7, #4] - 8006c68: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8006c6c: 60fb str r3, [r7, #12] - - /* Suspend or Resume USB Out process */ - if (pdev->pClassData != NULL) - 8006c6e: 687b ldr r3, [r7, #4] - 8006c70: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 8006c74: 2b00 cmp r3, #0 - 8006c76: d017 beq.n 8006ca8 - { - if (pdev->dev_speed == USBD_SPEED_HIGH) - 8006c78: 687b ldr r3, [r7, #4] - 8006c7a: 7c1b ldrb r3, [r3, #16] - 8006c7c: 2b00 cmp r3, #0 - 8006c7e: d109 bne.n 8006c94 - { - /* Prepare Out endpoint to receive next packet */ - USBD_LL_PrepareReceive(pdev, - 8006c80: 68fb ldr r3, [r7, #12] - 8006c82: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 - 8006c86: f44f 7300 mov.w r3, #512 @ 0x200 - 8006c8a: 2101 movs r1, #1 - 8006c8c: 6878 ldr r0, [r7, #4] - 8006c8e: f001 fd3e bl 800870e - 8006c92: e007 b.n 8006ca4 - CDC_DATA_HS_OUT_PACKET_SIZE); - } - else - { - /* Prepare Out endpoint to receive next packet */ - USBD_LL_PrepareReceive(pdev, - 8006c94: 68fb ldr r3, [r7, #12] - 8006c96: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 - 8006c9a: 2340 movs r3, #64 @ 0x40 - 8006c9c: 2101 movs r1, #1 - 8006c9e: 6878 ldr r0, [r7, #4] - 8006ca0: f001 fd35 bl 800870e - CDC_OUT_EP, - hcdc->RxBuffer, - CDC_DATA_FS_OUT_PACKET_SIZE); - } - return USBD_OK; - 8006ca4: 2300 movs r3, #0 - 8006ca6: e000 b.n 8006caa - } - else - { - return USBD_FAIL; - 8006ca8: 2302 movs r3, #2 - } -} - 8006caa: 4618 mov r0, r3 - 8006cac: 3710 adds r7, #16 - 8006cae: 46bd mov sp, r7 - 8006cb0: bd80 pop {r7, pc} - -08006cb2 : -* @param id: Low level core index -* @retval None -*/ -USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, - USBD_DescriptorsTypeDef *pdesc, uint8_t id) -{ - 8006cb2: b580 push {r7, lr} - 8006cb4: b084 sub sp, #16 - 8006cb6: af00 add r7, sp, #0 - 8006cb8: 60f8 str r0, [r7, #12] - 8006cba: 60b9 str r1, [r7, #8] - 8006cbc: 4613 mov r3, r2 - 8006cbe: 71fb strb r3, [r7, #7] - /* Check whether the USB Host handle is valid */ - if (pdev == NULL) - 8006cc0: 68fb ldr r3, [r7, #12] - 8006cc2: 2b00 cmp r3, #0 - 8006cc4: d101 bne.n 8006cca - { -#if (USBD_DEBUG_LEVEL > 1U) - USBD_ErrLog("Invalid Device handle"); -#endif - return USBD_FAIL; - 8006cc6: 2302 movs r3, #2 - 8006cc8: e01a b.n 8006d00 - } - - /* Unlink previous class*/ - if (pdev->pClass != NULL) - 8006cca: 68fb ldr r3, [r7, #12] - 8006ccc: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8006cd0: 2b00 cmp r3, #0 - 8006cd2: d003 beq.n 8006cdc - { - pdev->pClass = NULL; - 8006cd4: 68fb ldr r3, [r7, #12] - 8006cd6: 2200 movs r2, #0 - 8006cd8: f8c3 22b4 str.w r2, [r3, #692] @ 0x2b4 - } - - /* Assign USBD Descriptors */ - if (pdesc != NULL) - 8006cdc: 68bb ldr r3, [r7, #8] - 8006cde: 2b00 cmp r3, #0 - 8006ce0: d003 beq.n 8006cea - { - pdev->pDesc = pdesc; - 8006ce2: 68fb ldr r3, [r7, #12] - 8006ce4: 68ba ldr r2, [r7, #8] - 8006ce6: f8c3 22b0 str.w r2, [r3, #688] @ 0x2b0 - } - - /* Set Device initial State */ - pdev->dev_state = USBD_STATE_DEFAULT; - 8006cea: 68fb ldr r3, [r7, #12] - 8006cec: 2201 movs r2, #1 - 8006cee: f883 229c strb.w r2, [r3, #668] @ 0x29c - pdev->id = id; - 8006cf2: 68fb ldr r3, [r7, #12] - 8006cf4: 79fa ldrb r2, [r7, #7] - 8006cf6: 701a strb r2, [r3, #0] - /* Initialize low level driver */ - USBD_LL_Init(pdev); - 8006cf8: 68f8 ldr r0, [r7, #12] - 8006cfa: f001 fba3 bl 8008444 - - return USBD_OK; - 8006cfe: 2300 movs r3, #0 -} - 8006d00: 4618 mov r0, r3 - 8006d02: 3710 adds r7, #16 - 8006d04: 46bd mov sp, r7 - 8006d06: bd80 pop {r7, pc} - -08006d08 : - * @param pDevice : Device Handle - * @param pclass: Class handle - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass) -{ - 8006d08: b480 push {r7} - 8006d0a: b085 sub sp, #20 - 8006d0c: af00 add r7, sp, #0 - 8006d0e: 6078 str r0, [r7, #4] - 8006d10: 6039 str r1, [r7, #0] - USBD_StatusTypeDef status = USBD_OK; - 8006d12: 2300 movs r3, #0 - 8006d14: 73fb strb r3, [r7, #15] - if (pclass != NULL) - 8006d16: 683b ldr r3, [r7, #0] - 8006d18: 2b00 cmp r3, #0 - 8006d1a: d006 beq.n 8006d2a - { - /* link the class to the USB Device handle */ - pdev->pClass = pclass; - 8006d1c: 687b ldr r3, [r7, #4] - 8006d1e: 683a ldr r2, [r7, #0] - 8006d20: f8c3 22b4 str.w r2, [r3, #692] @ 0x2b4 - status = USBD_OK; - 8006d24: 2300 movs r3, #0 - 8006d26: 73fb strb r3, [r7, #15] - 8006d28: e001 b.n 8006d2e - else - { -#if (USBD_DEBUG_LEVEL > 1U) - USBD_ErrLog("Invalid Class handle"); -#endif - status = USBD_FAIL; - 8006d2a: 2302 movs r3, #2 - 8006d2c: 73fb strb r3, [r7, #15] - } - - return status; - 8006d2e: 7bfb ldrb r3, [r7, #15] -} - 8006d30: 4618 mov r0, r3 - 8006d32: 3714 adds r7, #20 - 8006d34: 46bd mov sp, r7 - 8006d36: bc80 pop {r7} - 8006d38: 4770 bx lr - -08006d3a : - * Start the USB Device Core. - * @param pdev: Device Handle - * @retval USBD Status - */ -USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev) -{ - 8006d3a: b580 push {r7, lr} - 8006d3c: b082 sub sp, #8 - 8006d3e: af00 add r7, sp, #0 - 8006d40: 6078 str r0, [r7, #4] - /* Start the low level driver */ - USBD_LL_Start(pdev); - 8006d42: 6878 ldr r0, [r7, #4] - 8006d44: f001 fbd8 bl 80084f8 - - return USBD_OK; - 8006d48: 2300 movs r3, #0 -} - 8006d4a: 4618 mov r0, r3 - 8006d4c: 3708 adds r7, #8 - 8006d4e: 46bd mov sp, r7 - 8006d50: bd80 pop {r7, pc} - -08006d52 : -* Launch test mode process -* @param pdev: device instance -* @retval status -*/ -USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev) -{ - 8006d52: b480 push {r7} - 8006d54: b083 sub sp, #12 - 8006d56: af00 add r7, sp, #0 - 8006d58: 6078 str r0, [r7, #4] - /* Prevent unused argument compilation warning */ - UNUSED(pdev); - - return USBD_OK; - 8006d5a: 2300 movs r3, #0 -} - 8006d5c: 4618 mov r0, r3 - 8006d5e: 370c adds r7, #12 - 8006d60: 46bd mov sp, r7 - 8006d62: bc80 pop {r7} - 8006d64: 4770 bx lr - -08006d66 : -* @param cfgidx: configuration index -* @retval status -*/ - -USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) -{ - 8006d66: b580 push {r7, lr} - 8006d68: b084 sub sp, #16 - 8006d6a: af00 add r7, sp, #0 - 8006d6c: 6078 str r0, [r7, #4] - 8006d6e: 460b mov r3, r1 - 8006d70: 70fb strb r3, [r7, #3] - USBD_StatusTypeDef ret = USBD_FAIL; - 8006d72: 2302 movs r3, #2 - 8006d74: 73fb strb r3, [r7, #15] - - if (pdev->pClass != NULL) - 8006d76: 687b ldr r3, [r7, #4] - 8006d78: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8006d7c: 2b00 cmp r3, #0 - 8006d7e: d00c beq.n 8006d9a - { - /* Set configuration and Start the Class*/ - if (pdev->pClass->Init(pdev, cfgidx) == 0U) - 8006d80: 687b ldr r3, [r7, #4] - 8006d82: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8006d86: 681b ldr r3, [r3, #0] - 8006d88: 78fa ldrb r2, [r7, #3] - 8006d8a: 4611 mov r1, r2 - 8006d8c: 6878 ldr r0, [r7, #4] - 8006d8e: 4798 blx r3 - 8006d90: 4603 mov r3, r0 - 8006d92: 2b00 cmp r3, #0 - 8006d94: d101 bne.n 8006d9a - { - ret = USBD_OK; - 8006d96: 2300 movs r3, #0 - 8006d98: 73fb strb r3, [r7, #15] - } - } - - return ret; - 8006d9a: 7bfb ldrb r3, [r7, #15] -} - 8006d9c: 4618 mov r0, r3 - 8006d9e: 3710 adds r7, #16 - 8006da0: 46bd mov sp, r7 - 8006da2: bd80 pop {r7, pc} - -08006da4 : -* @param pdev: device instance -* @param cfgidx: configuration index -* @retval status: USBD_StatusTypeDef -*/ -USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) -{ - 8006da4: b580 push {r7, lr} - 8006da6: b082 sub sp, #8 - 8006da8: af00 add r7, sp, #0 - 8006daa: 6078 str r0, [r7, #4] - 8006dac: 460b mov r3, r1 - 8006dae: 70fb strb r3, [r7, #3] - /* Clear configuration and De-initialize the Class process*/ - pdev->pClass->DeInit(pdev, cfgidx); - 8006db0: 687b ldr r3, [r7, #4] - 8006db2: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8006db6: 685b ldr r3, [r3, #4] - 8006db8: 78fa ldrb r2, [r7, #3] - 8006dba: 4611 mov r1, r2 - 8006dbc: 6878 ldr r0, [r7, #4] - 8006dbe: 4798 blx r3 - - return USBD_OK; - 8006dc0: 2300 movs r3, #0 -} - 8006dc2: 4618 mov r0, r3 - 8006dc4: 3708 adds r7, #8 - 8006dc6: 46bd mov sp, r7 - 8006dc8: bd80 pop {r7, pc} - -08006dca : -* Handle the setup stage -* @param pdev: device instance -* @retval status -*/ -USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup) -{ - 8006dca: b580 push {r7, lr} - 8006dcc: b082 sub sp, #8 - 8006dce: af00 add r7, sp, #0 - 8006dd0: 6078 str r0, [r7, #4] - 8006dd2: 6039 str r1, [r7, #0] - USBD_ParseSetupRequest(&pdev->request, psetup); - 8006dd4: 687b ldr r3, [r7, #4] - 8006dd6: f503 732a add.w r3, r3, #680 @ 0x2a8 - 8006dda: 6839 ldr r1, [r7, #0] - 8006ddc: 4618 mov r0, r3 - 8006dde: f000 fed8 bl 8007b92 - - pdev->ep0_state = USBD_EP0_SETUP; - 8006de2: 687b ldr r3, [r7, #4] - 8006de4: 2201 movs r2, #1 - 8006de6: f8c3 2294 str.w r2, [r3, #660] @ 0x294 - - pdev->ep0_data_len = pdev->request.wLength; - 8006dea: 687b ldr r3, [r7, #4] - 8006dec: f8b3 32ae ldrh.w r3, [r3, #686] @ 0x2ae - 8006df0: 461a mov r2, r3 - 8006df2: 687b ldr r3, [r7, #4] - 8006df4: f8c3 2298 str.w r2, [r3, #664] @ 0x298 - - switch (pdev->request.bmRequest & 0x1FU) - 8006df8: 687b ldr r3, [r7, #4] - 8006dfa: f893 32a8 ldrb.w r3, [r3, #680] @ 0x2a8 - 8006dfe: f003 031f and.w r3, r3, #31 - 8006e02: 2b02 cmp r3, #2 - 8006e04: d016 beq.n 8006e34 - 8006e06: 2b02 cmp r3, #2 - 8006e08: d81c bhi.n 8006e44 - 8006e0a: 2b00 cmp r3, #0 - 8006e0c: d002 beq.n 8006e14 - 8006e0e: 2b01 cmp r3, #1 - 8006e10: d008 beq.n 8006e24 - 8006e12: e017 b.n 8006e44 - { - case USB_REQ_RECIPIENT_DEVICE: - USBD_StdDevReq(pdev, &pdev->request); - 8006e14: 687b ldr r3, [r7, #4] - 8006e16: f503 732a add.w r3, r3, #680 @ 0x2a8 - 8006e1a: 4619 mov r1, r3 - 8006e1c: 6878 ldr r0, [r7, #4] - 8006e1e: f000 f9cb bl 80071b8 - break; - 8006e22: e01a b.n 8006e5a - - case USB_REQ_RECIPIENT_INTERFACE: - USBD_StdItfReq(pdev, &pdev->request); - 8006e24: 687b ldr r3, [r7, #4] - 8006e26: f503 732a add.w r3, r3, #680 @ 0x2a8 - 8006e2a: 4619 mov r1, r3 - 8006e2c: 6878 ldr r0, [r7, #4] - 8006e2e: f000 fa2d bl 800728c - break; - 8006e32: e012 b.n 8006e5a - - case USB_REQ_RECIPIENT_ENDPOINT: - USBD_StdEPReq(pdev, &pdev->request); - 8006e34: 687b ldr r3, [r7, #4] - 8006e36: f503 732a add.w r3, r3, #680 @ 0x2a8 - 8006e3a: 4619 mov r1, r3 - 8006e3c: 6878 ldr r0, [r7, #4] - 8006e3e: f000 fa6d bl 800731c - break; - 8006e42: e00a b.n 8006e5a - - default: - USBD_LL_StallEP(pdev, (pdev->request.bmRequest & 0x80U)); - 8006e44: 687b ldr r3, [r7, #4] - 8006e46: f893 32a8 ldrb.w r3, [r3, #680] @ 0x2a8 - 8006e4a: f023 037f bic.w r3, r3, #127 @ 0x7f - 8006e4e: b2db uxtb r3, r3 - 8006e50: 4619 mov r1, r3 - 8006e52: 6878 ldr r0, [r7, #4] - 8006e54: f001 fbb0 bl 80085b8 - break; - 8006e58: bf00 nop - } - - return USBD_OK; - 8006e5a: 2300 movs r3, #0 -} - 8006e5c: 4618 mov r0, r3 - 8006e5e: 3708 adds r7, #8 - 8006e60: 46bd mov sp, r7 - 8006e62: bd80 pop {r7, pc} - -08006e64 : -* @param epnum: endpoint index -* @retval status -*/ -USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, - uint8_t epnum, uint8_t *pdata) -{ - 8006e64: b580 push {r7, lr} - 8006e66: b086 sub sp, #24 - 8006e68: af00 add r7, sp, #0 - 8006e6a: 60f8 str r0, [r7, #12] - 8006e6c: 460b mov r3, r1 - 8006e6e: 607a str r2, [r7, #4] - 8006e70: 72fb strb r3, [r7, #11] - USBD_EndpointTypeDef *pep; - - if (epnum == 0U) - 8006e72: 7afb ldrb r3, [r7, #11] - 8006e74: 2b00 cmp r3, #0 - 8006e76: d14b bne.n 8006f10 - { - pep = &pdev->ep_out[0]; - 8006e78: 68fb ldr r3, [r7, #12] - 8006e7a: f503 73aa add.w r3, r3, #340 @ 0x154 - 8006e7e: 617b str r3, [r7, #20] - - if (pdev->ep0_state == USBD_EP0_DATA_OUT) - 8006e80: 68fb ldr r3, [r7, #12] - 8006e82: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 - 8006e86: 2b03 cmp r3, #3 - 8006e88: d134 bne.n 8006ef4 - { - if (pep->rem_length > pep->maxpacket) - 8006e8a: 697b ldr r3, [r7, #20] - 8006e8c: 68da ldr r2, [r3, #12] - 8006e8e: 697b ldr r3, [r7, #20] - 8006e90: 691b ldr r3, [r3, #16] - 8006e92: 429a cmp r2, r3 - 8006e94: d919 bls.n 8006eca - { - pep->rem_length -= pep->maxpacket; - 8006e96: 697b ldr r3, [r7, #20] - 8006e98: 68da ldr r2, [r3, #12] - 8006e9a: 697b ldr r3, [r7, #20] - 8006e9c: 691b ldr r3, [r3, #16] - 8006e9e: 1ad2 subs r2, r2, r3 - 8006ea0: 697b ldr r3, [r7, #20] - 8006ea2: 60da str r2, [r3, #12] - - USBD_CtlContinueRx(pdev, pdata, - (uint16_t)MIN(pep->rem_length, pep->maxpacket)); - 8006ea4: 697b ldr r3, [r7, #20] - 8006ea6: 68da ldr r2, [r3, #12] - 8006ea8: 697b ldr r3, [r7, #20] - 8006eaa: 691b ldr r3, [r3, #16] - USBD_CtlContinueRx(pdev, pdata, - 8006eac: 429a cmp r2, r3 - 8006eae: d203 bcs.n 8006eb8 - (uint16_t)MIN(pep->rem_length, pep->maxpacket)); - 8006eb0: 697b ldr r3, [r7, #20] - 8006eb2: 68db ldr r3, [r3, #12] - USBD_CtlContinueRx(pdev, pdata, - 8006eb4: b29b uxth r3, r3 - 8006eb6: e002 b.n 8006ebe - (uint16_t)MIN(pep->rem_length, pep->maxpacket)); - 8006eb8: 697b ldr r3, [r7, #20] - 8006eba: 691b ldr r3, [r3, #16] - USBD_CtlContinueRx(pdev, pdata, - 8006ebc: b29b uxth r3, r3 - 8006ebe: 461a mov r2, r3 - 8006ec0: 6879 ldr r1, [r7, #4] - 8006ec2: 68f8 ldr r0, [r7, #12] - 8006ec4: f000 ff54 bl 8007d70 - 8006ec8: e038 b.n 8006f3c - } - else - { - if ((pdev->pClass->EP0_RxReady != NULL) && - 8006eca: 68fb ldr r3, [r7, #12] - 8006ecc: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8006ed0: 691b ldr r3, [r3, #16] - 8006ed2: 2b00 cmp r3, #0 - 8006ed4: d00a beq.n 8006eec - (pdev->dev_state == USBD_STATE_CONFIGURED)) - 8006ed6: 68fb ldr r3, [r7, #12] - 8006ed8: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - if ((pdev->pClass->EP0_RxReady != NULL) && - 8006edc: 2b03 cmp r3, #3 - 8006ede: d105 bne.n 8006eec - { - pdev->pClass->EP0_RxReady(pdev); - 8006ee0: 68fb ldr r3, [r7, #12] - 8006ee2: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8006ee6: 691b ldr r3, [r3, #16] - 8006ee8: 68f8 ldr r0, [r7, #12] - 8006eea: 4798 blx r3 - } - USBD_CtlSendStatus(pdev); - 8006eec: 68f8 ldr r0, [r7, #12] - 8006eee: f000 ff51 bl 8007d94 - 8006ef2: e023 b.n 8006f3c - } - } - else - { - if (pdev->ep0_state == USBD_EP0_STATUS_OUT) - 8006ef4: 68fb ldr r3, [r7, #12] - 8006ef6: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 - 8006efa: 2b05 cmp r3, #5 - 8006efc: d11e bne.n 8006f3c - { - /* - * STATUS PHASE completed, update ep0_state to idle - */ - pdev->ep0_state = USBD_EP0_IDLE; - 8006efe: 68fb ldr r3, [r7, #12] - 8006f00: 2200 movs r2, #0 - 8006f02: f8c3 2294 str.w r2, [r3, #660] @ 0x294 - USBD_LL_StallEP(pdev, 0U); - 8006f06: 2100 movs r1, #0 - 8006f08: 68f8 ldr r0, [r7, #12] - 8006f0a: f001 fb55 bl 80085b8 - 8006f0e: e015 b.n 8006f3c - } - } - } - else if ((pdev->pClass->DataOut != NULL) && - 8006f10: 68fb ldr r3, [r7, #12] - 8006f12: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8006f16: 699b ldr r3, [r3, #24] - 8006f18: 2b00 cmp r3, #0 - 8006f1a: d00d beq.n 8006f38 - (pdev->dev_state == USBD_STATE_CONFIGURED)) - 8006f1c: 68fb ldr r3, [r7, #12] - 8006f1e: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - else if ((pdev->pClass->DataOut != NULL) && - 8006f22: 2b03 cmp r3, #3 - 8006f24: d108 bne.n 8006f38 - { - pdev->pClass->DataOut(pdev, epnum); - 8006f26: 68fb ldr r3, [r7, #12] - 8006f28: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8006f2c: 699b ldr r3, [r3, #24] - 8006f2e: 7afa ldrb r2, [r7, #11] - 8006f30: 4611 mov r1, r2 - 8006f32: 68f8 ldr r0, [r7, #12] - 8006f34: 4798 blx r3 - 8006f36: e001 b.n 8006f3c - } - else - { - /* should never be in this condition */ - return USBD_FAIL; - 8006f38: 2302 movs r3, #2 - 8006f3a: e000 b.n 8006f3e - } - - return USBD_OK; - 8006f3c: 2300 movs r3, #0 -} - 8006f3e: 4618 mov r0, r3 - 8006f40: 3718 adds r7, #24 - 8006f42: 46bd mov sp, r7 - 8006f44: bd80 pop {r7, pc} - -08006f46 : -* @param epnum: endpoint index -* @retval status -*/ -USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, - uint8_t epnum, uint8_t *pdata) -{ - 8006f46: b580 push {r7, lr} - 8006f48: b086 sub sp, #24 - 8006f4a: af00 add r7, sp, #0 - 8006f4c: 60f8 str r0, [r7, #12] - 8006f4e: 460b mov r3, r1 - 8006f50: 607a str r2, [r7, #4] - 8006f52: 72fb strb r3, [r7, #11] - USBD_EndpointTypeDef *pep; - - if (epnum == 0U) - 8006f54: 7afb ldrb r3, [r7, #11] - 8006f56: 2b00 cmp r3, #0 - 8006f58: d17f bne.n 800705a - { - pep = &pdev->ep_in[0]; - 8006f5a: 68fb ldr r3, [r7, #12] - 8006f5c: 3314 adds r3, #20 - 8006f5e: 617b str r3, [r7, #20] - - if (pdev->ep0_state == USBD_EP0_DATA_IN) - 8006f60: 68fb ldr r3, [r7, #12] - 8006f62: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 - 8006f66: 2b02 cmp r3, #2 - 8006f68: d15c bne.n 8007024 - { - if (pep->rem_length > pep->maxpacket) - 8006f6a: 697b ldr r3, [r7, #20] - 8006f6c: 68da ldr r2, [r3, #12] - 8006f6e: 697b ldr r3, [r7, #20] - 8006f70: 691b ldr r3, [r3, #16] - 8006f72: 429a cmp r2, r3 - 8006f74: d915 bls.n 8006fa2 - { - pep->rem_length -= pep->maxpacket; - 8006f76: 697b ldr r3, [r7, #20] - 8006f78: 68da ldr r2, [r3, #12] - 8006f7a: 697b ldr r3, [r7, #20] - 8006f7c: 691b ldr r3, [r3, #16] - 8006f7e: 1ad2 subs r2, r2, r3 - 8006f80: 697b ldr r3, [r7, #20] - 8006f82: 60da str r2, [r3, #12] - - USBD_CtlContinueSendData(pdev, pdata, (uint16_t)pep->rem_length); - 8006f84: 697b ldr r3, [r7, #20] - 8006f86: 68db ldr r3, [r3, #12] - 8006f88: b29b uxth r3, r3 - 8006f8a: 461a mov r2, r3 - 8006f8c: 6879 ldr r1, [r7, #4] - 8006f8e: 68f8 ldr r0, [r7, #12] - 8006f90: f000 febe bl 8007d10 - - /* Prepare endpoint for premature end of transfer */ - USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); - 8006f94: 2300 movs r3, #0 - 8006f96: 2200 movs r2, #0 - 8006f98: 2100 movs r1, #0 - 8006f9a: 68f8 ldr r0, [r7, #12] - 8006f9c: f001 fbb7 bl 800870e - 8006fa0: e04e b.n 8007040 - } - else - { - /* last packet is MPS multiple, so send ZLP packet */ - if ((pep->total_length % pep->maxpacket == 0U) && - 8006fa2: 697b ldr r3, [r7, #20] - 8006fa4: 689b ldr r3, [r3, #8] - 8006fa6: 697a ldr r2, [r7, #20] - 8006fa8: 6912 ldr r2, [r2, #16] - 8006faa: fbb3 f1f2 udiv r1, r3, r2 - 8006fae: fb01 f202 mul.w r2, r1, r2 - 8006fb2: 1a9b subs r3, r3, r2 - 8006fb4: 2b00 cmp r3, #0 - 8006fb6: d11c bne.n 8006ff2 - (pep->total_length >= pep->maxpacket) && - 8006fb8: 697b ldr r3, [r7, #20] - 8006fba: 689a ldr r2, [r3, #8] - 8006fbc: 697b ldr r3, [r7, #20] - 8006fbe: 691b ldr r3, [r3, #16] - if ((pep->total_length % pep->maxpacket == 0U) && - 8006fc0: 429a cmp r2, r3 - 8006fc2: d316 bcc.n 8006ff2 - (pep->total_length < pdev->ep0_data_len)) - 8006fc4: 697b ldr r3, [r7, #20] - 8006fc6: 689a ldr r2, [r3, #8] - 8006fc8: 68fb ldr r3, [r7, #12] - 8006fca: f8d3 3298 ldr.w r3, [r3, #664] @ 0x298 - (pep->total_length >= pep->maxpacket) && - 8006fce: 429a cmp r2, r3 - 8006fd0: d20f bcs.n 8006ff2 - { - USBD_CtlContinueSendData(pdev, NULL, 0U); - 8006fd2: 2200 movs r2, #0 - 8006fd4: 2100 movs r1, #0 - 8006fd6: 68f8 ldr r0, [r7, #12] - 8006fd8: f000 fe9a bl 8007d10 - pdev->ep0_data_len = 0U; - 8006fdc: 68fb ldr r3, [r7, #12] - 8006fde: 2200 movs r2, #0 - 8006fe0: f8c3 2298 str.w r2, [r3, #664] @ 0x298 - - /* Prepare endpoint for premature end of transfer */ - USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); - 8006fe4: 2300 movs r3, #0 - 8006fe6: 2200 movs r2, #0 - 8006fe8: 2100 movs r1, #0 - 8006fea: 68f8 ldr r0, [r7, #12] - 8006fec: f001 fb8f bl 800870e - 8006ff0: e026 b.n 8007040 - } - else - { - if ((pdev->pClass->EP0_TxSent != NULL) && - 8006ff2: 68fb ldr r3, [r7, #12] - 8006ff4: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8006ff8: 68db ldr r3, [r3, #12] - 8006ffa: 2b00 cmp r3, #0 - 8006ffc: d00a beq.n 8007014 - (pdev->dev_state == USBD_STATE_CONFIGURED)) - 8006ffe: 68fb ldr r3, [r7, #12] - 8007000: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - if ((pdev->pClass->EP0_TxSent != NULL) && - 8007004: 2b03 cmp r3, #3 - 8007006: d105 bne.n 8007014 - { - pdev->pClass->EP0_TxSent(pdev); - 8007008: 68fb ldr r3, [r7, #12] - 800700a: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 800700e: 68db ldr r3, [r3, #12] - 8007010: 68f8 ldr r0, [r7, #12] - 8007012: 4798 blx r3 - } - USBD_LL_StallEP(pdev, 0x80U); - 8007014: 2180 movs r1, #128 @ 0x80 - 8007016: 68f8 ldr r0, [r7, #12] - 8007018: f001 face bl 80085b8 - USBD_CtlReceiveStatus(pdev); - 800701c: 68f8 ldr r0, [r7, #12] - 800701e: f000 fecc bl 8007dba - 8007022: e00d b.n 8007040 - } - } - } - else - { - if ((pdev->ep0_state == USBD_EP0_STATUS_IN) || - 8007024: 68fb ldr r3, [r7, #12] - 8007026: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 - 800702a: 2b04 cmp r3, #4 - 800702c: d004 beq.n 8007038 - (pdev->ep0_state == USBD_EP0_IDLE)) - 800702e: 68fb ldr r3, [r7, #12] - 8007030: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 - if ((pdev->ep0_state == USBD_EP0_STATUS_IN) || - 8007034: 2b00 cmp r3, #0 - 8007036: d103 bne.n 8007040 - { - USBD_LL_StallEP(pdev, 0x80U); - 8007038: 2180 movs r1, #128 @ 0x80 - 800703a: 68f8 ldr r0, [r7, #12] - 800703c: f001 fabc bl 80085b8 - } - } - - if (pdev->dev_test_mode == 1U) - 8007040: 68fb ldr r3, [r7, #12] - 8007042: f893 32a0 ldrb.w r3, [r3, #672] @ 0x2a0 - 8007046: 2b01 cmp r3, #1 - 8007048: d11d bne.n 8007086 - { - USBD_RunTestMode(pdev); - 800704a: 68f8 ldr r0, [r7, #12] - 800704c: f7ff fe81 bl 8006d52 - pdev->dev_test_mode = 0U; - 8007050: 68fb ldr r3, [r7, #12] - 8007052: 2200 movs r2, #0 - 8007054: f883 22a0 strb.w r2, [r3, #672] @ 0x2a0 - 8007058: e015 b.n 8007086 - } - } - else if ((pdev->pClass->DataIn != NULL) && - 800705a: 68fb ldr r3, [r7, #12] - 800705c: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007060: 695b ldr r3, [r3, #20] - 8007062: 2b00 cmp r3, #0 - 8007064: d00d beq.n 8007082 - (pdev->dev_state == USBD_STATE_CONFIGURED)) - 8007066: 68fb ldr r3, [r7, #12] - 8007068: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - else if ((pdev->pClass->DataIn != NULL) && - 800706c: 2b03 cmp r3, #3 - 800706e: d108 bne.n 8007082 - { - pdev->pClass->DataIn(pdev, epnum); - 8007070: 68fb ldr r3, [r7, #12] - 8007072: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007076: 695b ldr r3, [r3, #20] - 8007078: 7afa ldrb r2, [r7, #11] - 800707a: 4611 mov r1, r2 - 800707c: 68f8 ldr r0, [r7, #12] - 800707e: 4798 blx r3 - 8007080: e001 b.n 8007086 - } - else - { - /* should never be in this condition */ - return USBD_FAIL; - 8007082: 2302 movs r3, #2 - 8007084: e000 b.n 8007088 - } - - return USBD_OK; - 8007086: 2300 movs r3, #0 -} - 8007088: 4618 mov r0, r3 - 800708a: 3718 adds r7, #24 - 800708c: 46bd mov sp, r7 - 800708e: bd80 pop {r7, pc} - -08007090 : -* @param pdev: device instance -* @retval status -*/ - -USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev) -{ - 8007090: b580 push {r7, lr} - 8007092: b082 sub sp, #8 - 8007094: af00 add r7, sp, #0 - 8007096: 6078 str r0, [r7, #4] - /* Open EP0 OUT */ - USBD_LL_OpenEP(pdev, 0x00U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); - 8007098: 2340 movs r3, #64 @ 0x40 - 800709a: 2200 movs r2, #0 - 800709c: 2100 movs r1, #0 - 800709e: 6878 ldr r0, [r7, #4] - 80070a0: f001 fa45 bl 800852e - pdev->ep_out[0x00U & 0xFU].is_used = 1U; - 80070a4: 687b ldr r3, [r7, #4] - 80070a6: 2201 movs r2, #1 - 80070a8: f8c3 2158 str.w r2, [r3, #344] @ 0x158 - - pdev->ep_out[0].maxpacket = USB_MAX_EP0_SIZE; - 80070ac: 687b ldr r3, [r7, #4] - 80070ae: 2240 movs r2, #64 @ 0x40 - 80070b0: f8c3 2164 str.w r2, [r3, #356] @ 0x164 - - /* Open EP0 IN */ - USBD_LL_OpenEP(pdev, 0x80U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); - 80070b4: 2340 movs r3, #64 @ 0x40 - 80070b6: 2200 movs r2, #0 - 80070b8: 2180 movs r1, #128 @ 0x80 - 80070ba: 6878 ldr r0, [r7, #4] - 80070bc: f001 fa37 bl 800852e - pdev->ep_in[0x80U & 0xFU].is_used = 1U; - 80070c0: 687b ldr r3, [r7, #4] - 80070c2: 2201 movs r2, #1 - 80070c4: 619a str r2, [r3, #24] - - pdev->ep_in[0].maxpacket = USB_MAX_EP0_SIZE; - 80070c6: 687b ldr r3, [r7, #4] - 80070c8: 2240 movs r2, #64 @ 0x40 - 80070ca: 625a str r2, [r3, #36] @ 0x24 - - /* Upon Reset call user call back */ - pdev->dev_state = USBD_STATE_DEFAULT; - 80070cc: 687b ldr r3, [r7, #4] - 80070ce: 2201 movs r2, #1 - 80070d0: f883 229c strb.w r2, [r3, #668] @ 0x29c - pdev->ep0_state = USBD_EP0_IDLE; - 80070d4: 687b ldr r3, [r7, #4] - 80070d6: 2200 movs r2, #0 - 80070d8: f8c3 2294 str.w r2, [r3, #660] @ 0x294 - pdev->dev_config = 0U; - 80070dc: 687b ldr r3, [r7, #4] - 80070de: 2200 movs r2, #0 - 80070e0: 605a str r2, [r3, #4] - pdev->dev_remote_wakeup = 0U; - 80070e2: 687b ldr r3, [r7, #4] - 80070e4: 2200 movs r2, #0 - 80070e6: f8c3 22a4 str.w r2, [r3, #676] @ 0x2a4 - - if (pdev->pClassData) - 80070ea: 687b ldr r3, [r7, #4] - 80070ec: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 80070f0: 2b00 cmp r3, #0 - 80070f2: d009 beq.n 8007108 - { - pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config); - 80070f4: 687b ldr r3, [r7, #4] - 80070f6: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 80070fa: 685b ldr r3, [r3, #4] - 80070fc: 687a ldr r2, [r7, #4] - 80070fe: 6852 ldr r2, [r2, #4] - 8007100: b2d2 uxtb r2, r2 - 8007102: 4611 mov r1, r2 - 8007104: 6878 ldr r0, [r7, #4] - 8007106: 4798 blx r3 - } - - return USBD_OK; - 8007108: 2300 movs r3, #0 -} - 800710a: 4618 mov r0, r3 - 800710c: 3708 adds r7, #8 - 800710e: 46bd mov sp, r7 - 8007110: bd80 pop {r7, pc} - -08007112 : -* @param pdev: device instance -* @retval status -*/ -USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, - USBD_SpeedTypeDef speed) -{ - 8007112: b480 push {r7} - 8007114: b083 sub sp, #12 - 8007116: af00 add r7, sp, #0 - 8007118: 6078 str r0, [r7, #4] - 800711a: 460b mov r3, r1 - 800711c: 70fb strb r3, [r7, #3] - pdev->dev_speed = speed; - 800711e: 687b ldr r3, [r7, #4] - 8007120: 78fa ldrb r2, [r7, #3] - 8007122: 741a strb r2, [r3, #16] - - return USBD_OK; - 8007124: 2300 movs r3, #0 -} - 8007126: 4618 mov r0, r3 - 8007128: 370c adds r7, #12 - 800712a: 46bd mov sp, r7 - 800712c: bc80 pop {r7} - 800712e: 4770 bx lr - -08007130 : -* @param pdev: device instance -* @retval status -*/ - -USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev) -{ - 8007130: b480 push {r7} - 8007132: b083 sub sp, #12 - 8007134: af00 add r7, sp, #0 - 8007136: 6078 str r0, [r7, #4] - pdev->dev_old_state = pdev->dev_state; - 8007138: 687b ldr r3, [r7, #4] - 800713a: f893 229c ldrb.w r2, [r3, #668] @ 0x29c - 800713e: 687b ldr r3, [r7, #4] - 8007140: f883 229d strb.w r2, [r3, #669] @ 0x29d - pdev->dev_state = USBD_STATE_SUSPENDED; - 8007144: 687b ldr r3, [r7, #4] - 8007146: 2204 movs r2, #4 - 8007148: f883 229c strb.w r2, [r3, #668] @ 0x29c - - return USBD_OK; - 800714c: 2300 movs r3, #0 -} - 800714e: 4618 mov r0, r3 - 8007150: 370c adds r7, #12 - 8007152: 46bd mov sp, r7 - 8007154: bc80 pop {r7} - 8007156: 4770 bx lr - -08007158 : -* @param pdev: device instance -* @retval status -*/ - -USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev) -{ - 8007158: b480 push {r7} - 800715a: b083 sub sp, #12 - 800715c: af00 add r7, sp, #0 - 800715e: 6078 str r0, [r7, #4] - if (pdev->dev_state == USBD_STATE_SUSPENDED) - 8007160: 687b ldr r3, [r7, #4] - 8007162: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8007166: 2b04 cmp r3, #4 - 8007168: d105 bne.n 8007176 - { - pdev->dev_state = pdev->dev_old_state; - 800716a: 687b ldr r3, [r7, #4] - 800716c: f893 229d ldrb.w r2, [r3, #669] @ 0x29d - 8007170: 687b ldr r3, [r7, #4] - 8007172: f883 229c strb.w r2, [r3, #668] @ 0x29c - } - - return USBD_OK; - 8007176: 2300 movs r3, #0 -} - 8007178: 4618 mov r0, r3 - 800717a: 370c adds r7, #12 - 800717c: 46bd mov sp, r7 - 800717e: bc80 pop {r7} - 8007180: 4770 bx lr - -08007182 : -* @param pdev: device instance -* @retval status -*/ - -USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev) -{ - 8007182: b580 push {r7, lr} - 8007184: b082 sub sp, #8 - 8007186: af00 add r7, sp, #0 - 8007188: 6078 str r0, [r7, #4] - if (pdev->dev_state == USBD_STATE_CONFIGURED) - 800718a: 687b ldr r3, [r7, #4] - 800718c: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8007190: 2b03 cmp r3, #3 - 8007192: d10b bne.n 80071ac - { - if (pdev->pClass->SOF != NULL) - 8007194: 687b ldr r3, [r7, #4] - 8007196: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 800719a: 69db ldr r3, [r3, #28] - 800719c: 2b00 cmp r3, #0 - 800719e: d005 beq.n 80071ac - { - pdev->pClass->SOF(pdev); - 80071a0: 687b ldr r3, [r7, #4] - 80071a2: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 80071a6: 69db ldr r3, [r3, #28] - 80071a8: 6878 ldr r0, [r7, #4] - 80071aa: 4798 blx r3 - } - } - - return USBD_OK; - 80071ac: 2300 movs r3, #0 -} - 80071ae: 4618 mov r0, r3 - 80071b0: 3708 adds r7, #8 - 80071b2: 46bd mov sp, r7 - 80071b4: bd80 pop {r7, pc} - ... - -080071b8 : -* @param req: usb request -* @retval status -*/ -USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 80071b8: b580 push {r7, lr} - 80071ba: b084 sub sp, #16 - 80071bc: af00 add r7, sp, #0 - 80071be: 6078 str r0, [r7, #4] - 80071c0: 6039 str r1, [r7, #0] - USBD_StatusTypeDef ret = USBD_OK; - 80071c2: 2300 movs r3, #0 - 80071c4: 73fb strb r3, [r7, #15] - - switch (req->bmRequest & USB_REQ_TYPE_MASK) - 80071c6: 683b ldr r3, [r7, #0] - 80071c8: 781b ldrb r3, [r3, #0] - 80071ca: f003 0360 and.w r3, r3, #96 @ 0x60 - 80071ce: 2b40 cmp r3, #64 @ 0x40 - 80071d0: d005 beq.n 80071de - 80071d2: 2b40 cmp r3, #64 @ 0x40 - 80071d4: d84f bhi.n 8007276 - 80071d6: 2b00 cmp r3, #0 - 80071d8: d009 beq.n 80071ee - 80071da: 2b20 cmp r3, #32 - 80071dc: d14b bne.n 8007276 - { - case USB_REQ_TYPE_CLASS: - case USB_REQ_TYPE_VENDOR: - pdev->pClass->Setup(pdev, req); - 80071de: 687b ldr r3, [r7, #4] - 80071e0: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 80071e4: 689b ldr r3, [r3, #8] - 80071e6: 6839 ldr r1, [r7, #0] - 80071e8: 6878 ldr r0, [r7, #4] - 80071ea: 4798 blx r3 - break; - 80071ec: e048 b.n 8007280 - - case USB_REQ_TYPE_STANDARD: - switch (req->bRequest) - 80071ee: 683b ldr r3, [r7, #0] - 80071f0: 785b ldrb r3, [r3, #1] - 80071f2: 2b09 cmp r3, #9 - 80071f4: d839 bhi.n 800726a - 80071f6: a201 add r2, pc, #4 @ (adr r2, 80071fc ) - 80071f8: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80071fc: 0800724d .word 0x0800724d - 8007200: 08007261 .word 0x08007261 - 8007204: 0800726b .word 0x0800726b - 8007208: 08007257 .word 0x08007257 - 800720c: 0800726b .word 0x0800726b - 8007210: 0800722f .word 0x0800722f - 8007214: 08007225 .word 0x08007225 - 8007218: 0800726b .word 0x0800726b - 800721c: 08007243 .word 0x08007243 - 8007220: 08007239 .word 0x08007239 - { - case USB_REQ_GET_DESCRIPTOR: - USBD_GetDescriptor(pdev, req); - 8007224: 6839 ldr r1, [r7, #0] - 8007226: 6878 ldr r0, [r7, #4] - 8007228: f000 f9dc bl 80075e4 - break; - 800722c: e022 b.n 8007274 - - case USB_REQ_SET_ADDRESS: - USBD_SetAddress(pdev, req); - 800722e: 6839 ldr r1, [r7, #0] - 8007230: 6878 ldr r0, [r7, #4] - 8007232: f000 fb3f bl 80078b4 - break; - 8007236: e01d b.n 8007274 - - case USB_REQ_SET_CONFIGURATION: - USBD_SetConfig(pdev, req); - 8007238: 6839 ldr r1, [r7, #0] - 800723a: 6878 ldr r0, [r7, #4] - 800723c: f000 fb7e bl 800793c - break; - 8007240: e018 b.n 8007274 - - case USB_REQ_GET_CONFIGURATION: - USBD_GetConfig(pdev, req); - 8007242: 6839 ldr r1, [r7, #0] - 8007244: 6878 ldr r0, [r7, #4] - 8007246: f000 fc07 bl 8007a58 - break; - 800724a: e013 b.n 8007274 - - case USB_REQ_GET_STATUS: - USBD_GetStatus(pdev, req); - 800724c: 6839 ldr r1, [r7, #0] - 800724e: 6878 ldr r0, [r7, #4] - 8007250: f000 fc37 bl 8007ac2 - break; - 8007254: e00e b.n 8007274 - - case USB_REQ_SET_FEATURE: - USBD_SetFeature(pdev, req); - 8007256: 6839 ldr r1, [r7, #0] - 8007258: 6878 ldr r0, [r7, #4] - 800725a: f000 fc65 bl 8007b28 - break; - 800725e: e009 b.n 8007274 - - case USB_REQ_CLEAR_FEATURE: - USBD_ClrFeature(pdev, req); - 8007260: 6839 ldr r1, [r7, #0] - 8007262: 6878 ldr r0, [r7, #4] - 8007264: f000 fc74 bl 8007b50 - break; - 8007268: e004 b.n 8007274 - - default: - USBD_CtlError(pdev, req); - 800726a: 6839 ldr r1, [r7, #0] - 800726c: 6878 ldr r0, [r7, #4] - 800726e: f000 fcc9 bl 8007c04 - break; - 8007272: bf00 nop - } - break; - 8007274: e004 b.n 8007280 - - default: - USBD_CtlError(pdev, req); - 8007276: 6839 ldr r1, [r7, #0] - 8007278: 6878 ldr r0, [r7, #4] - 800727a: f000 fcc3 bl 8007c04 - break; - 800727e: bf00 nop - } - - return ret; - 8007280: 7bfb ldrb r3, [r7, #15] -} - 8007282: 4618 mov r0, r3 - 8007284: 3710 adds r7, #16 - 8007286: 46bd mov sp, r7 - 8007288: bd80 pop {r7, pc} - 800728a: bf00 nop - -0800728c : -* @param req: usb request -* @retval status -*/ -USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 800728c: b580 push {r7, lr} - 800728e: b084 sub sp, #16 - 8007290: af00 add r7, sp, #0 - 8007292: 6078 str r0, [r7, #4] - 8007294: 6039 str r1, [r7, #0] - USBD_StatusTypeDef ret = USBD_OK; - 8007296: 2300 movs r3, #0 - 8007298: 73fb strb r3, [r7, #15] - - switch (req->bmRequest & USB_REQ_TYPE_MASK) - 800729a: 683b ldr r3, [r7, #0] - 800729c: 781b ldrb r3, [r3, #0] - 800729e: f003 0360 and.w r3, r3, #96 @ 0x60 - 80072a2: 2b40 cmp r3, #64 @ 0x40 - 80072a4: d005 beq.n 80072b2 - 80072a6: 2b40 cmp r3, #64 @ 0x40 - 80072a8: d82e bhi.n 8007308 - 80072aa: 2b00 cmp r3, #0 - 80072ac: d001 beq.n 80072b2 - 80072ae: 2b20 cmp r3, #32 - 80072b0: d12a bne.n 8007308 - { - case USB_REQ_TYPE_CLASS: - case USB_REQ_TYPE_VENDOR: - case USB_REQ_TYPE_STANDARD: - switch (pdev->dev_state) - 80072b2: 687b ldr r3, [r7, #4] - 80072b4: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 80072b8: 3b01 subs r3, #1 - 80072ba: 2b02 cmp r3, #2 - 80072bc: d81d bhi.n 80072fa - { - case USBD_STATE_DEFAULT: - case USBD_STATE_ADDRESSED: - case USBD_STATE_CONFIGURED: - - if (LOBYTE(req->wIndex) <= USBD_MAX_NUM_INTERFACES) - 80072be: 683b ldr r3, [r7, #0] - 80072c0: 889b ldrh r3, [r3, #4] - 80072c2: b2db uxtb r3, r3 - 80072c4: 2b01 cmp r3, #1 - 80072c6: d813 bhi.n 80072f0 - { - ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req); - 80072c8: 687b ldr r3, [r7, #4] - 80072ca: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 80072ce: 689b ldr r3, [r3, #8] - 80072d0: 6839 ldr r1, [r7, #0] - 80072d2: 6878 ldr r0, [r7, #4] - 80072d4: 4798 blx r3 - 80072d6: 4603 mov r3, r0 - 80072d8: 73fb strb r3, [r7, #15] - - if ((req->wLength == 0U) && (ret == USBD_OK)) - 80072da: 683b ldr r3, [r7, #0] - 80072dc: 88db ldrh r3, [r3, #6] - 80072de: 2b00 cmp r3, #0 - 80072e0: d110 bne.n 8007304 - 80072e2: 7bfb ldrb r3, [r7, #15] - 80072e4: 2b00 cmp r3, #0 - 80072e6: d10d bne.n 8007304 - { - USBD_CtlSendStatus(pdev); - 80072e8: 6878 ldr r0, [r7, #4] - 80072ea: f000 fd53 bl 8007d94 - } - else - { - USBD_CtlError(pdev, req); - } - break; - 80072ee: e009 b.n 8007304 - USBD_CtlError(pdev, req); - 80072f0: 6839 ldr r1, [r7, #0] - 80072f2: 6878 ldr r0, [r7, #4] - 80072f4: f000 fc86 bl 8007c04 - break; - 80072f8: e004 b.n 8007304 - - default: - USBD_CtlError(pdev, req); - 80072fa: 6839 ldr r1, [r7, #0] - 80072fc: 6878 ldr r0, [r7, #4] - 80072fe: f000 fc81 bl 8007c04 - break; - 8007302: e000 b.n 8007306 - break; - 8007304: bf00 nop - } - break; - 8007306: e004 b.n 8007312 - - default: - USBD_CtlError(pdev, req); - 8007308: 6839 ldr r1, [r7, #0] - 800730a: 6878 ldr r0, [r7, #4] - 800730c: f000 fc7a bl 8007c04 - break; - 8007310: bf00 nop - } - - return USBD_OK; - 8007312: 2300 movs r3, #0 -} - 8007314: 4618 mov r0, r3 - 8007316: 3710 adds r7, #16 - 8007318: 46bd mov sp, r7 - 800731a: bd80 pop {r7, pc} - -0800731c : -* @param req: usb request -* @retval status -*/ -USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 800731c: b580 push {r7, lr} - 800731e: b084 sub sp, #16 - 8007320: af00 add r7, sp, #0 - 8007322: 6078 str r0, [r7, #4] - 8007324: 6039 str r1, [r7, #0] - USBD_EndpointTypeDef *pep; - uint8_t ep_addr; - USBD_StatusTypeDef ret = USBD_OK; - 8007326: 2300 movs r3, #0 - 8007328: 73fb strb r3, [r7, #15] - ep_addr = LOBYTE(req->wIndex); - 800732a: 683b ldr r3, [r7, #0] - 800732c: 889b ldrh r3, [r3, #4] - 800732e: 73bb strb r3, [r7, #14] - - switch (req->bmRequest & USB_REQ_TYPE_MASK) - 8007330: 683b ldr r3, [r7, #0] - 8007332: 781b ldrb r3, [r3, #0] - 8007334: f003 0360 and.w r3, r3, #96 @ 0x60 - 8007338: 2b40 cmp r3, #64 @ 0x40 - 800733a: d007 beq.n 800734c - 800733c: 2b40 cmp r3, #64 @ 0x40 - 800733e: f200 8146 bhi.w 80075ce - 8007342: 2b00 cmp r3, #0 - 8007344: d00a beq.n 800735c - 8007346: 2b20 cmp r3, #32 - 8007348: f040 8141 bne.w 80075ce - { - case USB_REQ_TYPE_CLASS: - case USB_REQ_TYPE_VENDOR: - pdev->pClass->Setup(pdev, req); - 800734c: 687b ldr r3, [r7, #4] - 800734e: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007352: 689b ldr r3, [r3, #8] - 8007354: 6839 ldr r1, [r7, #0] - 8007356: 6878 ldr r0, [r7, #4] - 8007358: 4798 blx r3 - break; - 800735a: e13d b.n 80075d8 - - case USB_REQ_TYPE_STANDARD: - /* Check if it is a class request */ - if ((req->bmRequest & 0x60U) == 0x20U) - 800735c: 683b ldr r3, [r7, #0] - 800735e: 781b ldrb r3, [r3, #0] - 8007360: f003 0360 and.w r3, r3, #96 @ 0x60 - 8007364: 2b20 cmp r3, #32 - 8007366: d10a bne.n 800737e - { - ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req); - 8007368: 687b ldr r3, [r7, #4] - 800736a: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 800736e: 689b ldr r3, [r3, #8] - 8007370: 6839 ldr r1, [r7, #0] - 8007372: 6878 ldr r0, [r7, #4] - 8007374: 4798 blx r3 - 8007376: 4603 mov r3, r0 - 8007378: 73fb strb r3, [r7, #15] - - return ret; - 800737a: 7bfb ldrb r3, [r7, #15] - 800737c: e12d b.n 80075da - } - - switch (req->bRequest) - 800737e: 683b ldr r3, [r7, #0] - 8007380: 785b ldrb r3, [r3, #1] - 8007382: 2b03 cmp r3, #3 - 8007384: d007 beq.n 8007396 - 8007386: 2b03 cmp r3, #3 - 8007388: f300 811b bgt.w 80075c2 - 800738c: 2b00 cmp r3, #0 - 800738e: d072 beq.n 8007476 - 8007390: 2b01 cmp r3, #1 - 8007392: d03a beq.n 800740a - 8007394: e115 b.n 80075c2 - { - case USB_REQ_SET_FEATURE: - switch (pdev->dev_state) - 8007396: 687b ldr r3, [r7, #4] - 8007398: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 800739c: 2b02 cmp r3, #2 - 800739e: d002 beq.n 80073a6 - 80073a0: 2b03 cmp r3, #3 - 80073a2: d015 beq.n 80073d0 - 80073a4: e02b b.n 80073fe - { - case USBD_STATE_ADDRESSED: - if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) - 80073a6: 7bbb ldrb r3, [r7, #14] - 80073a8: 2b00 cmp r3, #0 - 80073aa: d00c beq.n 80073c6 - 80073ac: 7bbb ldrb r3, [r7, #14] - 80073ae: 2b80 cmp r3, #128 @ 0x80 - 80073b0: d009 beq.n 80073c6 - { - USBD_LL_StallEP(pdev, ep_addr); - 80073b2: 7bbb ldrb r3, [r7, #14] - 80073b4: 4619 mov r1, r3 - 80073b6: 6878 ldr r0, [r7, #4] - 80073b8: f001 f8fe bl 80085b8 - USBD_LL_StallEP(pdev, 0x80U); - 80073bc: 2180 movs r1, #128 @ 0x80 - 80073be: 6878 ldr r0, [r7, #4] - 80073c0: f001 f8fa bl 80085b8 - } - else - { - USBD_CtlError(pdev, req); - } - break; - 80073c4: e020 b.n 8007408 - USBD_CtlError(pdev, req); - 80073c6: 6839 ldr r1, [r7, #0] - 80073c8: 6878 ldr r0, [r7, #4] - 80073ca: f000 fc1b bl 8007c04 - break; - 80073ce: e01b b.n 8007408 - - case USBD_STATE_CONFIGURED: - if (req->wValue == USB_FEATURE_EP_HALT) - 80073d0: 683b ldr r3, [r7, #0] - 80073d2: 885b ldrh r3, [r3, #2] - 80073d4: 2b00 cmp r3, #0 - 80073d6: d10e bne.n 80073f6 - { - if ((ep_addr != 0x00U) && - 80073d8: 7bbb ldrb r3, [r7, #14] - 80073da: 2b00 cmp r3, #0 - 80073dc: d00b beq.n 80073f6 - 80073de: 7bbb ldrb r3, [r7, #14] - 80073e0: 2b80 cmp r3, #128 @ 0x80 - 80073e2: d008 beq.n 80073f6 - (ep_addr != 0x80U) && (req->wLength == 0x00U)) - 80073e4: 683b ldr r3, [r7, #0] - 80073e6: 88db ldrh r3, [r3, #6] - 80073e8: 2b00 cmp r3, #0 - 80073ea: d104 bne.n 80073f6 - { - USBD_LL_StallEP(pdev, ep_addr); - 80073ec: 7bbb ldrb r3, [r7, #14] - 80073ee: 4619 mov r1, r3 - 80073f0: 6878 ldr r0, [r7, #4] - 80073f2: f001 f8e1 bl 80085b8 - } - } - USBD_CtlSendStatus(pdev); - 80073f6: 6878 ldr r0, [r7, #4] - 80073f8: f000 fccc bl 8007d94 - - break; - 80073fc: e004 b.n 8007408 - - default: - USBD_CtlError(pdev, req); - 80073fe: 6839 ldr r1, [r7, #0] - 8007400: 6878 ldr r0, [r7, #4] - 8007402: f000 fbff bl 8007c04 - break; - 8007406: bf00 nop - } - break; - 8007408: e0e0 b.n 80075cc - - case USB_REQ_CLEAR_FEATURE: - - switch (pdev->dev_state) - 800740a: 687b ldr r3, [r7, #4] - 800740c: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8007410: 2b02 cmp r3, #2 - 8007412: d002 beq.n 800741a - 8007414: 2b03 cmp r3, #3 - 8007416: d015 beq.n 8007444 - 8007418: e026 b.n 8007468 - { - case USBD_STATE_ADDRESSED: - if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) - 800741a: 7bbb ldrb r3, [r7, #14] - 800741c: 2b00 cmp r3, #0 - 800741e: d00c beq.n 800743a - 8007420: 7bbb ldrb r3, [r7, #14] - 8007422: 2b80 cmp r3, #128 @ 0x80 - 8007424: d009 beq.n 800743a - { - USBD_LL_StallEP(pdev, ep_addr); - 8007426: 7bbb ldrb r3, [r7, #14] - 8007428: 4619 mov r1, r3 - 800742a: 6878 ldr r0, [r7, #4] - 800742c: f001 f8c4 bl 80085b8 - USBD_LL_StallEP(pdev, 0x80U); - 8007430: 2180 movs r1, #128 @ 0x80 - 8007432: 6878 ldr r0, [r7, #4] - 8007434: f001 f8c0 bl 80085b8 - } - else - { - USBD_CtlError(pdev, req); - } - break; - 8007438: e01c b.n 8007474 - USBD_CtlError(pdev, req); - 800743a: 6839 ldr r1, [r7, #0] - 800743c: 6878 ldr r0, [r7, #4] - 800743e: f000 fbe1 bl 8007c04 - break; - 8007442: e017 b.n 8007474 - - case USBD_STATE_CONFIGURED: - if (req->wValue == USB_FEATURE_EP_HALT) - 8007444: 683b ldr r3, [r7, #0] - 8007446: 885b ldrh r3, [r3, #2] - 8007448: 2b00 cmp r3, #0 - 800744a: d112 bne.n 8007472 - { - if ((ep_addr & 0x7FU) != 0x00U) - 800744c: 7bbb ldrb r3, [r7, #14] - 800744e: f003 037f and.w r3, r3, #127 @ 0x7f - 8007452: 2b00 cmp r3, #0 - 8007454: d004 beq.n 8007460 - { - USBD_LL_ClearStallEP(pdev, ep_addr); - 8007456: 7bbb ldrb r3, [r7, #14] - 8007458: 4619 mov r1, r3 - 800745a: 6878 ldr r0, [r7, #4] - 800745c: f001 f8cb bl 80085f6 - } - USBD_CtlSendStatus(pdev); - 8007460: 6878 ldr r0, [r7, #4] - 8007462: f000 fc97 bl 8007d94 - } - break; - 8007466: e004 b.n 8007472 - - default: - USBD_CtlError(pdev, req); - 8007468: 6839 ldr r1, [r7, #0] - 800746a: 6878 ldr r0, [r7, #4] - 800746c: f000 fbca bl 8007c04 - break; - 8007470: e000 b.n 8007474 - break; - 8007472: bf00 nop - } - break; - 8007474: e0aa b.n 80075cc - - case USB_REQ_GET_STATUS: - switch (pdev->dev_state) - 8007476: 687b ldr r3, [r7, #4] - 8007478: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 800747c: 2b02 cmp r3, #2 - 800747e: d002 beq.n 8007486 - 8007480: 2b03 cmp r3, #3 - 8007482: d032 beq.n 80074ea - 8007484: e097 b.n 80075b6 - { - case USBD_STATE_ADDRESSED: - if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) - 8007486: 7bbb ldrb r3, [r7, #14] - 8007488: 2b00 cmp r3, #0 - 800748a: d007 beq.n 800749c - 800748c: 7bbb ldrb r3, [r7, #14] - 800748e: 2b80 cmp r3, #128 @ 0x80 - 8007490: d004 beq.n 800749c - { - USBD_CtlError(pdev, req); - 8007492: 6839 ldr r1, [r7, #0] - 8007494: 6878 ldr r0, [r7, #4] - 8007496: f000 fbb5 bl 8007c04 - break; - 800749a: e091 b.n 80075c0 - } - pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ - 800749c: f997 300e ldrsb.w r3, [r7, #14] - 80074a0: 2b00 cmp r3, #0 - 80074a2: da0b bge.n 80074bc - 80074a4: 7bbb ldrb r3, [r7, #14] - 80074a6: f003 027f and.w r2, r3, #127 @ 0x7f - 80074aa: 4613 mov r3, r2 - 80074ac: 009b lsls r3, r3, #2 - 80074ae: 4413 add r3, r2 - 80074b0: 009b lsls r3, r3, #2 - 80074b2: 3310 adds r3, #16 - 80074b4: 687a ldr r2, [r7, #4] - 80074b6: 4413 add r3, r2 - 80074b8: 3304 adds r3, #4 - 80074ba: e00b b.n 80074d4 - &pdev->ep_out[ep_addr & 0x7FU]; - 80074bc: 7bbb ldrb r3, [r7, #14] - 80074be: f003 027f and.w r2, r3, #127 @ 0x7f - pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ - 80074c2: 4613 mov r3, r2 - 80074c4: 009b lsls r3, r3, #2 - 80074c6: 4413 add r3, r2 - 80074c8: 009b lsls r3, r3, #2 - 80074ca: f503 73a8 add.w r3, r3, #336 @ 0x150 - 80074ce: 687a ldr r2, [r7, #4] - 80074d0: 4413 add r3, r2 - 80074d2: 3304 adds r3, #4 - 80074d4: 60bb str r3, [r7, #8] - - pep->status = 0x0000U; - 80074d6: 68bb ldr r3, [r7, #8] - 80074d8: 2200 movs r2, #0 - 80074da: 601a str r2, [r3, #0] - - USBD_CtlSendData(pdev, (uint8_t *)(void *)&pep->status, 2U); - 80074dc: 68bb ldr r3, [r7, #8] - 80074de: 2202 movs r2, #2 - 80074e0: 4619 mov r1, r3 - 80074e2: 6878 ldr r0, [r7, #4] - 80074e4: f000 fbf8 bl 8007cd8 - break; - 80074e8: e06a b.n 80075c0 - - case USBD_STATE_CONFIGURED: - if ((ep_addr & 0x80U) == 0x80U) - 80074ea: f997 300e ldrsb.w r3, [r7, #14] - 80074ee: 2b00 cmp r3, #0 - 80074f0: da11 bge.n 8007516 - { - if (pdev->ep_in[ep_addr & 0xFU].is_used == 0U) - 80074f2: 7bbb ldrb r3, [r7, #14] - 80074f4: f003 020f and.w r2, r3, #15 - 80074f8: 6879 ldr r1, [r7, #4] - 80074fa: 4613 mov r3, r2 - 80074fc: 009b lsls r3, r3, #2 - 80074fe: 4413 add r3, r2 - 8007500: 009b lsls r3, r3, #2 - 8007502: 440b add r3, r1 - 8007504: 3318 adds r3, #24 - 8007506: 681b ldr r3, [r3, #0] - 8007508: 2b00 cmp r3, #0 - 800750a: d117 bne.n 800753c - { - USBD_CtlError(pdev, req); - 800750c: 6839 ldr r1, [r7, #0] - 800750e: 6878 ldr r0, [r7, #4] - 8007510: f000 fb78 bl 8007c04 - break; - 8007514: e054 b.n 80075c0 - } - } - else - { - if (pdev->ep_out[ep_addr & 0xFU].is_used == 0U) - 8007516: 7bbb ldrb r3, [r7, #14] - 8007518: f003 020f and.w r2, r3, #15 - 800751c: 6879 ldr r1, [r7, #4] - 800751e: 4613 mov r3, r2 - 8007520: 009b lsls r3, r3, #2 - 8007522: 4413 add r3, r2 - 8007524: 009b lsls r3, r3, #2 - 8007526: 440b add r3, r1 - 8007528: f503 73ac add.w r3, r3, #344 @ 0x158 - 800752c: 681b ldr r3, [r3, #0] - 800752e: 2b00 cmp r3, #0 - 8007530: d104 bne.n 800753c - { - USBD_CtlError(pdev, req); - 8007532: 6839 ldr r1, [r7, #0] - 8007534: 6878 ldr r0, [r7, #4] - 8007536: f000 fb65 bl 8007c04 - break; - 800753a: e041 b.n 80075c0 - } - } - - pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ - 800753c: f997 300e ldrsb.w r3, [r7, #14] - 8007540: 2b00 cmp r3, #0 - 8007542: da0b bge.n 800755c - 8007544: 7bbb ldrb r3, [r7, #14] - 8007546: f003 027f and.w r2, r3, #127 @ 0x7f - 800754a: 4613 mov r3, r2 - 800754c: 009b lsls r3, r3, #2 - 800754e: 4413 add r3, r2 - 8007550: 009b lsls r3, r3, #2 - 8007552: 3310 adds r3, #16 - 8007554: 687a ldr r2, [r7, #4] - 8007556: 4413 add r3, r2 - 8007558: 3304 adds r3, #4 - 800755a: e00b b.n 8007574 - &pdev->ep_out[ep_addr & 0x7FU]; - 800755c: 7bbb ldrb r3, [r7, #14] - 800755e: f003 027f and.w r2, r3, #127 @ 0x7f - pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ - 8007562: 4613 mov r3, r2 - 8007564: 009b lsls r3, r3, #2 - 8007566: 4413 add r3, r2 - 8007568: 009b lsls r3, r3, #2 - 800756a: f503 73a8 add.w r3, r3, #336 @ 0x150 - 800756e: 687a ldr r2, [r7, #4] - 8007570: 4413 add r3, r2 - 8007572: 3304 adds r3, #4 - 8007574: 60bb str r3, [r7, #8] - - if ((ep_addr == 0x00U) || (ep_addr == 0x80U)) - 8007576: 7bbb ldrb r3, [r7, #14] - 8007578: 2b00 cmp r3, #0 - 800757a: d002 beq.n 8007582 - 800757c: 7bbb ldrb r3, [r7, #14] - 800757e: 2b80 cmp r3, #128 @ 0x80 - 8007580: d103 bne.n 800758a - { - pep->status = 0x0000U; - 8007582: 68bb ldr r3, [r7, #8] - 8007584: 2200 movs r2, #0 - 8007586: 601a str r2, [r3, #0] - 8007588: e00e b.n 80075a8 - } - else if (USBD_LL_IsStallEP(pdev, ep_addr)) - 800758a: 7bbb ldrb r3, [r7, #14] - 800758c: 4619 mov r1, r3 - 800758e: 6878 ldr r0, [r7, #4] - 8007590: f001 f850 bl 8008634 - 8007594: 4603 mov r3, r0 - 8007596: 2b00 cmp r3, #0 - 8007598: d003 beq.n 80075a2 - { - pep->status = 0x0001U; - 800759a: 68bb ldr r3, [r7, #8] - 800759c: 2201 movs r2, #1 - 800759e: 601a str r2, [r3, #0] - 80075a0: e002 b.n 80075a8 - } - else - { - pep->status = 0x0000U; - 80075a2: 68bb ldr r3, [r7, #8] - 80075a4: 2200 movs r2, #0 - 80075a6: 601a str r2, [r3, #0] - } - - USBD_CtlSendData(pdev, (uint8_t *)(void *)&pep->status, 2U); - 80075a8: 68bb ldr r3, [r7, #8] - 80075aa: 2202 movs r2, #2 - 80075ac: 4619 mov r1, r3 - 80075ae: 6878 ldr r0, [r7, #4] - 80075b0: f000 fb92 bl 8007cd8 - break; - 80075b4: e004 b.n 80075c0 - - default: - USBD_CtlError(pdev, req); - 80075b6: 6839 ldr r1, [r7, #0] - 80075b8: 6878 ldr r0, [r7, #4] - 80075ba: f000 fb23 bl 8007c04 - break; - 80075be: bf00 nop - } - break; - 80075c0: e004 b.n 80075cc - - default: - USBD_CtlError(pdev, req); - 80075c2: 6839 ldr r1, [r7, #0] - 80075c4: 6878 ldr r0, [r7, #4] - 80075c6: f000 fb1d bl 8007c04 - break; - 80075ca: bf00 nop - } - break; - 80075cc: e004 b.n 80075d8 - - default: - USBD_CtlError(pdev, req); - 80075ce: 6839 ldr r1, [r7, #0] - 80075d0: 6878 ldr r0, [r7, #4] - 80075d2: f000 fb17 bl 8007c04 - break; - 80075d6: bf00 nop - } - - return ret; - 80075d8: 7bfb ldrb r3, [r7, #15] -} - 80075da: 4618 mov r0, r3 - 80075dc: 3710 adds r7, #16 - 80075de: 46bd mov sp, r7 - 80075e0: bd80 pop {r7, pc} - ... - -080075e4 : -* @param req: usb request -* @retval status -*/ -static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 80075e4: b580 push {r7, lr} - 80075e6: b084 sub sp, #16 - 80075e8: af00 add r7, sp, #0 - 80075ea: 6078 str r0, [r7, #4] - 80075ec: 6039 str r1, [r7, #0] - uint16_t len = 0U; - 80075ee: 2300 movs r3, #0 - 80075f0: 813b strh r3, [r7, #8] - uint8_t *pbuf = NULL; - 80075f2: 2300 movs r3, #0 - 80075f4: 60fb str r3, [r7, #12] - uint8_t err = 0U; - 80075f6: 2300 movs r3, #0 - 80075f8: 72fb strb r3, [r7, #11] - - switch (req->wValue >> 8) - 80075fa: 683b ldr r3, [r7, #0] - 80075fc: 885b ldrh r3, [r3, #2] - 80075fe: 0a1b lsrs r3, r3, #8 - 8007600: b29b uxth r3, r3 - 8007602: 3b01 subs r3, #1 - 8007604: 2b06 cmp r3, #6 - 8007606: f200 8128 bhi.w 800785a - 800760a: a201 add r2, pc, #4 @ (adr r2, 8007610 ) - 800760c: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8007610: 0800762d .word 0x0800762d - 8007614: 08007645 .word 0x08007645 - 8007618: 08007685 .word 0x08007685 - 800761c: 0800785b .word 0x0800785b - 8007620: 0800785b .word 0x0800785b - 8007624: 080077fb .word 0x080077fb - 8007628: 08007827 .word 0x08007827 - err++; - } - break; -#endif - case USB_DESC_TYPE_DEVICE: - pbuf = pdev->pDesc->GetDeviceDescriptor(pdev->dev_speed, &len); - 800762c: 687b ldr r3, [r7, #4] - 800762e: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007632: 681b ldr r3, [r3, #0] - 8007634: 687a ldr r2, [r7, #4] - 8007636: 7c12 ldrb r2, [r2, #16] - 8007638: f107 0108 add.w r1, r7, #8 - 800763c: 4610 mov r0, r2 - 800763e: 4798 blx r3 - 8007640: 60f8 str r0, [r7, #12] - break; - 8007642: e112 b.n 800786a - - case USB_DESC_TYPE_CONFIGURATION: - if (pdev->dev_speed == USBD_SPEED_HIGH) - 8007644: 687b ldr r3, [r7, #4] - 8007646: 7c1b ldrb r3, [r3, #16] - 8007648: 2b00 cmp r3, #0 - 800764a: d10d bne.n 8007668 - { - pbuf = pdev->pClass->GetHSConfigDescriptor(&len); - 800764c: 687b ldr r3, [r7, #4] - 800764e: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007652: 6a9b ldr r3, [r3, #40] @ 0x28 - 8007654: f107 0208 add.w r2, r7, #8 - 8007658: 4610 mov r0, r2 - 800765a: 4798 blx r3 - 800765c: 60f8 str r0, [r7, #12] - pbuf[1] = USB_DESC_TYPE_CONFIGURATION; - 800765e: 68fb ldr r3, [r7, #12] - 8007660: 3301 adds r3, #1 - 8007662: 2202 movs r2, #2 - 8007664: 701a strb r2, [r3, #0] - else - { - pbuf = pdev->pClass->GetFSConfigDescriptor(&len); - pbuf[1] = USB_DESC_TYPE_CONFIGURATION; - } - break; - 8007666: e100 b.n 800786a - pbuf = pdev->pClass->GetFSConfigDescriptor(&len); - 8007668: 687b ldr r3, [r7, #4] - 800766a: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 800766e: 6adb ldr r3, [r3, #44] @ 0x2c - 8007670: f107 0208 add.w r2, r7, #8 - 8007674: 4610 mov r0, r2 - 8007676: 4798 blx r3 - 8007678: 60f8 str r0, [r7, #12] - pbuf[1] = USB_DESC_TYPE_CONFIGURATION; - 800767a: 68fb ldr r3, [r7, #12] - 800767c: 3301 adds r3, #1 - 800767e: 2202 movs r2, #2 - 8007680: 701a strb r2, [r3, #0] - break; - 8007682: e0f2 b.n 800786a - - case USB_DESC_TYPE_STRING: - switch ((uint8_t)(req->wValue)) - 8007684: 683b ldr r3, [r7, #0] - 8007686: 885b ldrh r3, [r3, #2] - 8007688: b2db uxtb r3, r3 - 800768a: 2b05 cmp r3, #5 - 800768c: f200 80ac bhi.w 80077e8 - 8007690: a201 add r2, pc, #4 @ (adr r2, 8007698 ) - 8007692: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8007696: bf00 nop - 8007698: 080076b1 .word 0x080076b1 - 800769c: 080076e5 .word 0x080076e5 - 80076a0: 08007719 .word 0x08007719 - 80076a4: 0800774d .word 0x0800774d - 80076a8: 08007781 .word 0x08007781 - 80076ac: 080077b5 .word 0x080077b5 - { - case USBD_IDX_LANGID_STR: - if (pdev->pDesc->GetLangIDStrDescriptor != NULL) - 80076b0: 687b ldr r3, [r7, #4] - 80076b2: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 80076b6: 685b ldr r3, [r3, #4] - 80076b8: 2b00 cmp r3, #0 - 80076ba: d00b beq.n 80076d4 - { - pbuf = pdev->pDesc->GetLangIDStrDescriptor(pdev->dev_speed, &len); - 80076bc: 687b ldr r3, [r7, #4] - 80076be: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 80076c2: 685b ldr r3, [r3, #4] - 80076c4: 687a ldr r2, [r7, #4] - 80076c6: 7c12 ldrb r2, [r2, #16] - 80076c8: f107 0108 add.w r1, r7, #8 - 80076cc: 4610 mov r0, r2 - 80076ce: 4798 blx r3 - 80076d0: 60f8 str r0, [r7, #12] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 80076d2: e091 b.n 80077f8 - USBD_CtlError(pdev, req); - 80076d4: 6839 ldr r1, [r7, #0] - 80076d6: 6878 ldr r0, [r7, #4] - 80076d8: f000 fa94 bl 8007c04 - err++; - 80076dc: 7afb ldrb r3, [r7, #11] - 80076de: 3301 adds r3, #1 - 80076e0: 72fb strb r3, [r7, #11] - break; - 80076e2: e089 b.n 80077f8 - - case USBD_IDX_MFC_STR: - if (pdev->pDesc->GetManufacturerStrDescriptor != NULL) - 80076e4: 687b ldr r3, [r7, #4] - 80076e6: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 80076ea: 689b ldr r3, [r3, #8] - 80076ec: 2b00 cmp r3, #0 - 80076ee: d00b beq.n 8007708 - { - pbuf = pdev->pDesc->GetManufacturerStrDescriptor(pdev->dev_speed, &len); - 80076f0: 687b ldr r3, [r7, #4] - 80076f2: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 80076f6: 689b ldr r3, [r3, #8] - 80076f8: 687a ldr r2, [r7, #4] - 80076fa: 7c12 ldrb r2, [r2, #16] - 80076fc: f107 0108 add.w r1, r7, #8 - 8007700: 4610 mov r0, r2 - 8007702: 4798 blx r3 - 8007704: 60f8 str r0, [r7, #12] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 8007706: e077 b.n 80077f8 - USBD_CtlError(pdev, req); - 8007708: 6839 ldr r1, [r7, #0] - 800770a: 6878 ldr r0, [r7, #4] - 800770c: f000 fa7a bl 8007c04 - err++; - 8007710: 7afb ldrb r3, [r7, #11] - 8007712: 3301 adds r3, #1 - 8007714: 72fb strb r3, [r7, #11] - break; - 8007716: e06f b.n 80077f8 - - case USBD_IDX_PRODUCT_STR: - if (pdev->pDesc->GetProductStrDescriptor != NULL) - 8007718: 687b ldr r3, [r7, #4] - 800771a: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 800771e: 68db ldr r3, [r3, #12] - 8007720: 2b00 cmp r3, #0 - 8007722: d00b beq.n 800773c - { - pbuf = pdev->pDesc->GetProductStrDescriptor(pdev->dev_speed, &len); - 8007724: 687b ldr r3, [r7, #4] - 8007726: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 800772a: 68db ldr r3, [r3, #12] - 800772c: 687a ldr r2, [r7, #4] - 800772e: 7c12 ldrb r2, [r2, #16] - 8007730: f107 0108 add.w r1, r7, #8 - 8007734: 4610 mov r0, r2 - 8007736: 4798 blx r3 - 8007738: 60f8 str r0, [r7, #12] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 800773a: e05d b.n 80077f8 - USBD_CtlError(pdev, req); - 800773c: 6839 ldr r1, [r7, #0] - 800773e: 6878 ldr r0, [r7, #4] - 8007740: f000 fa60 bl 8007c04 - err++; - 8007744: 7afb ldrb r3, [r7, #11] - 8007746: 3301 adds r3, #1 - 8007748: 72fb strb r3, [r7, #11] - break; - 800774a: e055 b.n 80077f8 - - case USBD_IDX_SERIAL_STR: - if (pdev->pDesc->GetSerialStrDescriptor != NULL) - 800774c: 687b ldr r3, [r7, #4] - 800774e: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007752: 691b ldr r3, [r3, #16] - 8007754: 2b00 cmp r3, #0 - 8007756: d00b beq.n 8007770 - { - pbuf = pdev->pDesc->GetSerialStrDescriptor(pdev->dev_speed, &len); - 8007758: 687b ldr r3, [r7, #4] - 800775a: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 800775e: 691b ldr r3, [r3, #16] - 8007760: 687a ldr r2, [r7, #4] - 8007762: 7c12 ldrb r2, [r2, #16] - 8007764: f107 0108 add.w r1, r7, #8 - 8007768: 4610 mov r0, r2 - 800776a: 4798 blx r3 - 800776c: 60f8 str r0, [r7, #12] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 800776e: e043 b.n 80077f8 - USBD_CtlError(pdev, req); - 8007770: 6839 ldr r1, [r7, #0] - 8007772: 6878 ldr r0, [r7, #4] - 8007774: f000 fa46 bl 8007c04 - err++; - 8007778: 7afb ldrb r3, [r7, #11] - 800777a: 3301 adds r3, #1 - 800777c: 72fb strb r3, [r7, #11] - break; - 800777e: e03b b.n 80077f8 - - case USBD_IDX_CONFIG_STR: - if (pdev->pDesc->GetConfigurationStrDescriptor != NULL) - 8007780: 687b ldr r3, [r7, #4] - 8007782: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007786: 695b ldr r3, [r3, #20] - 8007788: 2b00 cmp r3, #0 - 800778a: d00b beq.n 80077a4 - { - pbuf = pdev->pDesc->GetConfigurationStrDescriptor(pdev->dev_speed, &len); - 800778c: 687b ldr r3, [r7, #4] - 800778e: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 8007792: 695b ldr r3, [r3, #20] - 8007794: 687a ldr r2, [r7, #4] - 8007796: 7c12 ldrb r2, [r2, #16] - 8007798: f107 0108 add.w r1, r7, #8 - 800779c: 4610 mov r0, r2 - 800779e: 4798 blx r3 - 80077a0: 60f8 str r0, [r7, #12] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 80077a2: e029 b.n 80077f8 - USBD_CtlError(pdev, req); - 80077a4: 6839 ldr r1, [r7, #0] - 80077a6: 6878 ldr r0, [r7, #4] - 80077a8: f000 fa2c bl 8007c04 - err++; - 80077ac: 7afb ldrb r3, [r7, #11] - 80077ae: 3301 adds r3, #1 - 80077b0: 72fb strb r3, [r7, #11] - break; - 80077b2: e021 b.n 80077f8 - - case USBD_IDX_INTERFACE_STR: - if (pdev->pDesc->GetInterfaceStrDescriptor != NULL) - 80077b4: 687b ldr r3, [r7, #4] - 80077b6: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 80077ba: 699b ldr r3, [r3, #24] - 80077bc: 2b00 cmp r3, #0 - 80077be: d00b beq.n 80077d8 - { - pbuf = pdev->pDesc->GetInterfaceStrDescriptor(pdev->dev_speed, &len); - 80077c0: 687b ldr r3, [r7, #4] - 80077c2: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 - 80077c6: 699b ldr r3, [r3, #24] - 80077c8: 687a ldr r2, [r7, #4] - 80077ca: 7c12 ldrb r2, [r2, #16] - 80077cc: f107 0108 add.w r1, r7, #8 - 80077d0: 4610 mov r0, r2 - 80077d2: 4798 blx r3 - 80077d4: 60f8 str r0, [r7, #12] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 80077d6: e00f b.n 80077f8 - USBD_CtlError(pdev, req); - 80077d8: 6839 ldr r1, [r7, #0] - 80077da: 6878 ldr r0, [r7, #4] - 80077dc: f000 fa12 bl 8007c04 - err++; - 80077e0: 7afb ldrb r3, [r7, #11] - 80077e2: 3301 adds r3, #1 - 80077e4: 72fb strb r3, [r7, #11] - break; - 80077e6: e007 b.n 80077f8 - USBD_CtlError(pdev, req); - err++; - } - break; -#else - USBD_CtlError(pdev, req); - 80077e8: 6839 ldr r1, [r7, #0] - 80077ea: 6878 ldr r0, [r7, #4] - 80077ec: f000 fa0a bl 8007c04 - err++; - 80077f0: 7afb ldrb r3, [r7, #11] - 80077f2: 3301 adds r3, #1 - 80077f4: 72fb strb r3, [r7, #11] -#endif - } - break; - 80077f6: e038 b.n 800786a - 80077f8: e037 b.n 800786a - - case USB_DESC_TYPE_DEVICE_QUALIFIER: - if (pdev->dev_speed == USBD_SPEED_HIGH) - 80077fa: 687b ldr r3, [r7, #4] - 80077fc: 7c1b ldrb r3, [r3, #16] - 80077fe: 2b00 cmp r3, #0 - 8007800: d109 bne.n 8007816 - { - pbuf = pdev->pClass->GetDeviceQualifierDescriptor(&len); - 8007802: 687b ldr r3, [r7, #4] - 8007804: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007808: 6b5b ldr r3, [r3, #52] @ 0x34 - 800780a: f107 0208 add.w r2, r7, #8 - 800780e: 4610 mov r0, r2 - 8007810: 4798 blx r3 - 8007812: 60f8 str r0, [r7, #12] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 8007814: e029 b.n 800786a - USBD_CtlError(pdev, req); - 8007816: 6839 ldr r1, [r7, #0] - 8007818: 6878 ldr r0, [r7, #4] - 800781a: f000 f9f3 bl 8007c04 - err++; - 800781e: 7afb ldrb r3, [r7, #11] - 8007820: 3301 adds r3, #1 - 8007822: 72fb strb r3, [r7, #11] - break; - 8007824: e021 b.n 800786a - - case USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION: - if (pdev->dev_speed == USBD_SPEED_HIGH) - 8007826: 687b ldr r3, [r7, #4] - 8007828: 7c1b ldrb r3, [r3, #16] - 800782a: 2b00 cmp r3, #0 - 800782c: d10d bne.n 800784a - { - pbuf = pdev->pClass->GetOtherSpeedConfigDescriptor(&len); - 800782e: 687b ldr r3, [r7, #4] - 8007830: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 - 8007834: 6b1b ldr r3, [r3, #48] @ 0x30 - 8007836: f107 0208 add.w r2, r7, #8 - 800783a: 4610 mov r0, r2 - 800783c: 4798 blx r3 - 800783e: 60f8 str r0, [r7, #12] - pbuf[1] = USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION; - 8007840: 68fb ldr r3, [r7, #12] - 8007842: 3301 adds r3, #1 - 8007844: 2207 movs r2, #7 - 8007846: 701a strb r2, [r3, #0] - else - { - USBD_CtlError(pdev, req); - err++; - } - break; - 8007848: e00f b.n 800786a - USBD_CtlError(pdev, req); - 800784a: 6839 ldr r1, [r7, #0] - 800784c: 6878 ldr r0, [r7, #4] - 800784e: f000 f9d9 bl 8007c04 - err++; - 8007852: 7afb ldrb r3, [r7, #11] - 8007854: 3301 adds r3, #1 - 8007856: 72fb strb r3, [r7, #11] - break; - 8007858: e007 b.n 800786a - - default: - USBD_CtlError(pdev, req); - 800785a: 6839 ldr r1, [r7, #0] - 800785c: 6878 ldr r0, [r7, #4] - 800785e: f000 f9d1 bl 8007c04 - err++; - 8007862: 7afb ldrb r3, [r7, #11] - 8007864: 3301 adds r3, #1 - 8007866: 72fb strb r3, [r7, #11] - break; - 8007868: bf00 nop - } - - if (err != 0U) - 800786a: 7afb ldrb r3, [r7, #11] - 800786c: 2b00 cmp r3, #0 - 800786e: d11c bne.n 80078aa - { - return; - } - else - { - if ((len != 0U) && (req->wLength != 0U)) - 8007870: 893b ldrh r3, [r7, #8] - 8007872: 2b00 cmp r3, #0 - 8007874: d011 beq.n 800789a - 8007876: 683b ldr r3, [r7, #0] - 8007878: 88db ldrh r3, [r3, #6] - 800787a: 2b00 cmp r3, #0 - 800787c: d00d beq.n 800789a - { - len = MIN(len, req->wLength); - 800787e: 683b ldr r3, [r7, #0] - 8007880: 88da ldrh r2, [r3, #6] - 8007882: 893b ldrh r3, [r7, #8] - 8007884: 4293 cmp r3, r2 - 8007886: bf28 it cs - 8007888: 4613 movcs r3, r2 - 800788a: b29b uxth r3, r3 - 800788c: 813b strh r3, [r7, #8] - (void)USBD_CtlSendData(pdev, pbuf, len); - 800788e: 893b ldrh r3, [r7, #8] - 8007890: 461a mov r2, r3 - 8007892: 68f9 ldr r1, [r7, #12] - 8007894: 6878 ldr r0, [r7, #4] - 8007896: f000 fa1f bl 8007cd8 - } - - if (req->wLength == 0U) - 800789a: 683b ldr r3, [r7, #0] - 800789c: 88db ldrh r3, [r3, #6] - 800789e: 2b00 cmp r3, #0 - 80078a0: d104 bne.n 80078ac - { - (void)USBD_CtlSendStatus(pdev); - 80078a2: 6878 ldr r0, [r7, #4] - 80078a4: f000 fa76 bl 8007d94 - 80078a8: e000 b.n 80078ac - return; - 80078aa: bf00 nop - } - } -} - 80078ac: 3710 adds r7, #16 - 80078ae: 46bd mov sp, r7 - 80078b0: bd80 pop {r7, pc} - 80078b2: bf00 nop - -080078b4 : -* @param req: usb request -* @retval status -*/ -static void USBD_SetAddress(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 80078b4: b580 push {r7, lr} - 80078b6: b084 sub sp, #16 - 80078b8: af00 add r7, sp, #0 - 80078ba: 6078 str r0, [r7, #4] - 80078bc: 6039 str r1, [r7, #0] - uint8_t dev_addr; - - if ((req->wIndex == 0U) && (req->wLength == 0U) && (req->wValue < 128U)) - 80078be: 683b ldr r3, [r7, #0] - 80078c0: 889b ldrh r3, [r3, #4] - 80078c2: 2b00 cmp r3, #0 - 80078c4: d130 bne.n 8007928 - 80078c6: 683b ldr r3, [r7, #0] - 80078c8: 88db ldrh r3, [r3, #6] - 80078ca: 2b00 cmp r3, #0 - 80078cc: d12c bne.n 8007928 - 80078ce: 683b ldr r3, [r7, #0] - 80078d0: 885b ldrh r3, [r3, #2] - 80078d2: 2b7f cmp r3, #127 @ 0x7f - 80078d4: d828 bhi.n 8007928 - { - dev_addr = (uint8_t)(req->wValue) & 0x7FU; - 80078d6: 683b ldr r3, [r7, #0] - 80078d8: 885b ldrh r3, [r3, #2] - 80078da: b2db uxtb r3, r3 - 80078dc: f003 037f and.w r3, r3, #127 @ 0x7f - 80078e0: 73fb strb r3, [r7, #15] - - if (pdev->dev_state == USBD_STATE_CONFIGURED) - 80078e2: 687b ldr r3, [r7, #4] - 80078e4: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 80078e8: 2b03 cmp r3, #3 - 80078ea: d104 bne.n 80078f6 - { - USBD_CtlError(pdev, req); - 80078ec: 6839 ldr r1, [r7, #0] - 80078ee: 6878 ldr r0, [r7, #4] - 80078f0: f000 f988 bl 8007c04 - if (pdev->dev_state == USBD_STATE_CONFIGURED) - 80078f4: e01d b.n 8007932 - } - else - { - pdev->dev_address = dev_addr; - 80078f6: 687b ldr r3, [r7, #4] - 80078f8: 7bfa ldrb r2, [r7, #15] - 80078fa: f883 229e strb.w r2, [r3, #670] @ 0x29e - USBD_LL_SetUSBAddress(pdev, dev_addr); - 80078fe: 7bfb ldrb r3, [r7, #15] - 8007900: 4619 mov r1, r3 - 8007902: 6878 ldr r0, [r7, #4] - 8007904: f000 fec1 bl 800868a - USBD_CtlSendStatus(pdev); - 8007908: 6878 ldr r0, [r7, #4] - 800790a: f000 fa43 bl 8007d94 - - if (dev_addr != 0U) - 800790e: 7bfb ldrb r3, [r7, #15] - 8007910: 2b00 cmp r3, #0 - 8007912: d004 beq.n 800791e - { - pdev->dev_state = USBD_STATE_ADDRESSED; - 8007914: 687b ldr r3, [r7, #4] - 8007916: 2202 movs r2, #2 - 8007918: f883 229c strb.w r2, [r3, #668] @ 0x29c - if (pdev->dev_state == USBD_STATE_CONFIGURED) - 800791c: e009 b.n 8007932 - } - else - { - pdev->dev_state = USBD_STATE_DEFAULT; - 800791e: 687b ldr r3, [r7, #4] - 8007920: 2201 movs r2, #1 - 8007922: f883 229c strb.w r2, [r3, #668] @ 0x29c - if (pdev->dev_state == USBD_STATE_CONFIGURED) - 8007926: e004 b.n 8007932 - } - } - } - else - { - USBD_CtlError(pdev, req); - 8007928: 6839 ldr r1, [r7, #0] - 800792a: 6878 ldr r0, [r7, #4] - 800792c: f000 f96a bl 8007c04 - } -} - 8007930: bf00 nop - 8007932: bf00 nop - 8007934: 3710 adds r7, #16 - 8007936: 46bd mov sp, r7 - 8007938: bd80 pop {r7, pc} - ... - -0800793c : -* @param pdev: device instance -* @param req: usb request -* @retval status -*/ -static void USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) -{ - 800793c: b580 push {r7, lr} - 800793e: b082 sub sp, #8 - 8007940: af00 add r7, sp, #0 - 8007942: 6078 str r0, [r7, #4] - 8007944: 6039 str r1, [r7, #0] - static uint8_t cfgidx; - - cfgidx = (uint8_t)(req->wValue); - 8007946: 683b ldr r3, [r7, #0] - 8007948: 885b ldrh r3, [r3, #2] - 800794a: b2da uxtb r2, r3 - 800794c: 4b41 ldr r3, [pc, #260] @ (8007a54 ) - 800794e: 701a strb r2, [r3, #0] - - if (cfgidx > USBD_MAX_NUM_CONFIGURATION) - 8007950: 4b40 ldr r3, [pc, #256] @ (8007a54 ) - 8007952: 781b ldrb r3, [r3, #0] - 8007954: 2b01 cmp r3, #1 - 8007956: d904 bls.n 8007962 - { - USBD_CtlError(pdev, req); - 8007958: 6839 ldr r1, [r7, #0] - 800795a: 6878 ldr r0, [r7, #4] - 800795c: f000 f952 bl 8007c04 - 8007960: e075 b.n 8007a4e - } - else - { - switch (pdev->dev_state) - 8007962: 687b ldr r3, [r7, #4] - 8007964: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8007968: 2b02 cmp r3, #2 - 800796a: d002 beq.n 8007972 - 800796c: 2b03 cmp r3, #3 - 800796e: d023 beq.n 80079b8 - 8007970: e062 b.n 8007a38 - { - case USBD_STATE_ADDRESSED: - if (cfgidx) - 8007972: 4b38 ldr r3, [pc, #224] @ (8007a54 ) - 8007974: 781b ldrb r3, [r3, #0] - 8007976: 2b00 cmp r3, #0 - 8007978: d01a beq.n 80079b0 - { - pdev->dev_config = cfgidx; - 800797a: 4b36 ldr r3, [pc, #216] @ (8007a54 ) - 800797c: 781b ldrb r3, [r3, #0] - 800797e: 461a mov r2, r3 - 8007980: 687b ldr r3, [r7, #4] - 8007982: 605a str r2, [r3, #4] - pdev->dev_state = USBD_STATE_CONFIGURED; - 8007984: 687b ldr r3, [r7, #4] - 8007986: 2203 movs r2, #3 - 8007988: f883 229c strb.w r2, [r3, #668] @ 0x29c - if (USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL) - 800798c: 4b31 ldr r3, [pc, #196] @ (8007a54 ) - 800798e: 781b ldrb r3, [r3, #0] - 8007990: 4619 mov r1, r3 - 8007992: 6878 ldr r0, [r7, #4] - 8007994: f7ff f9e7 bl 8006d66 - 8007998: 4603 mov r3, r0 - 800799a: 2b02 cmp r3, #2 - 800799c: d104 bne.n 80079a8 - { - USBD_CtlError(pdev, req); - 800799e: 6839 ldr r1, [r7, #0] - 80079a0: 6878 ldr r0, [r7, #4] - 80079a2: f000 f92f bl 8007c04 - return; - 80079a6: e052 b.n 8007a4e - } - USBD_CtlSendStatus(pdev); - 80079a8: 6878 ldr r0, [r7, #4] - 80079aa: f000 f9f3 bl 8007d94 - } - else - { - USBD_CtlSendStatus(pdev); - } - break; - 80079ae: e04e b.n 8007a4e - USBD_CtlSendStatus(pdev); - 80079b0: 6878 ldr r0, [r7, #4] - 80079b2: f000 f9ef bl 8007d94 - break; - 80079b6: e04a b.n 8007a4e - - case USBD_STATE_CONFIGURED: - if (cfgidx == 0U) - 80079b8: 4b26 ldr r3, [pc, #152] @ (8007a54 ) - 80079ba: 781b ldrb r3, [r3, #0] - 80079bc: 2b00 cmp r3, #0 - 80079be: d112 bne.n 80079e6 - { - pdev->dev_state = USBD_STATE_ADDRESSED; - 80079c0: 687b ldr r3, [r7, #4] - 80079c2: 2202 movs r2, #2 - 80079c4: f883 229c strb.w r2, [r3, #668] @ 0x29c - pdev->dev_config = cfgidx; - 80079c8: 4b22 ldr r3, [pc, #136] @ (8007a54 ) - 80079ca: 781b ldrb r3, [r3, #0] - 80079cc: 461a mov r2, r3 - 80079ce: 687b ldr r3, [r7, #4] - 80079d0: 605a str r2, [r3, #4] - USBD_ClrClassConfig(pdev, cfgidx); - 80079d2: 4b20 ldr r3, [pc, #128] @ (8007a54 ) - 80079d4: 781b ldrb r3, [r3, #0] - 80079d6: 4619 mov r1, r3 - 80079d8: 6878 ldr r0, [r7, #4] - 80079da: f7ff f9e3 bl 8006da4 - USBD_CtlSendStatus(pdev); - 80079de: 6878 ldr r0, [r7, #4] - 80079e0: f000 f9d8 bl 8007d94 - } - else - { - USBD_CtlSendStatus(pdev); - } - break; - 80079e4: e033 b.n 8007a4e - else if (cfgidx != pdev->dev_config) - 80079e6: 4b1b ldr r3, [pc, #108] @ (8007a54 ) - 80079e8: 781b ldrb r3, [r3, #0] - 80079ea: 461a mov r2, r3 - 80079ec: 687b ldr r3, [r7, #4] - 80079ee: 685b ldr r3, [r3, #4] - 80079f0: 429a cmp r2, r3 - 80079f2: d01d beq.n 8007a30 - USBD_ClrClassConfig(pdev, (uint8_t)pdev->dev_config); - 80079f4: 687b ldr r3, [r7, #4] - 80079f6: 685b ldr r3, [r3, #4] - 80079f8: b2db uxtb r3, r3 - 80079fa: 4619 mov r1, r3 - 80079fc: 6878 ldr r0, [r7, #4] - 80079fe: f7ff f9d1 bl 8006da4 - pdev->dev_config = cfgidx; - 8007a02: 4b14 ldr r3, [pc, #80] @ (8007a54 ) - 8007a04: 781b ldrb r3, [r3, #0] - 8007a06: 461a mov r2, r3 - 8007a08: 687b ldr r3, [r7, #4] - 8007a0a: 605a str r2, [r3, #4] - if (USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL) - 8007a0c: 4b11 ldr r3, [pc, #68] @ (8007a54 ) - 8007a0e: 781b ldrb r3, [r3, #0] - 8007a10: 4619 mov r1, r3 - 8007a12: 6878 ldr r0, [r7, #4] - 8007a14: f7ff f9a7 bl 8006d66 - 8007a18: 4603 mov r3, r0 - 8007a1a: 2b02 cmp r3, #2 - 8007a1c: d104 bne.n 8007a28 - USBD_CtlError(pdev, req); - 8007a1e: 6839 ldr r1, [r7, #0] - 8007a20: 6878 ldr r0, [r7, #4] - 8007a22: f000 f8ef bl 8007c04 - return; - 8007a26: e012 b.n 8007a4e - USBD_CtlSendStatus(pdev); - 8007a28: 6878 ldr r0, [r7, #4] - 8007a2a: f000 f9b3 bl 8007d94 - break; - 8007a2e: e00e b.n 8007a4e - USBD_CtlSendStatus(pdev); - 8007a30: 6878 ldr r0, [r7, #4] - 8007a32: f000 f9af bl 8007d94 - break; - 8007a36: e00a b.n 8007a4e - - default: - USBD_CtlError(pdev, req); - 8007a38: 6839 ldr r1, [r7, #0] - 8007a3a: 6878 ldr r0, [r7, #4] - 8007a3c: f000 f8e2 bl 8007c04 - USBD_ClrClassConfig(pdev, cfgidx); - 8007a40: 4b04 ldr r3, [pc, #16] @ (8007a54 ) - 8007a42: 781b ldrb r3, [r3, #0] - 8007a44: 4619 mov r1, r3 - 8007a46: 6878 ldr r0, [r7, #4] - 8007a48: f7ff f9ac bl 8006da4 - break; - 8007a4c: bf00 nop - } - } -} - 8007a4e: 3708 adds r7, #8 - 8007a50: 46bd mov sp, r7 - 8007a52: bd80 pop {r7, pc} - 8007a54: 200002c8 .word 0x200002c8 - -08007a58 : -* @param pdev: device instance -* @param req: usb request -* @retval status -*/ -static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) -{ - 8007a58: b580 push {r7, lr} - 8007a5a: b082 sub sp, #8 - 8007a5c: af00 add r7, sp, #0 - 8007a5e: 6078 str r0, [r7, #4] - 8007a60: 6039 str r1, [r7, #0] - if (req->wLength != 1U) - 8007a62: 683b ldr r3, [r7, #0] - 8007a64: 88db ldrh r3, [r3, #6] - 8007a66: 2b01 cmp r3, #1 - 8007a68: d004 beq.n 8007a74 - { - USBD_CtlError(pdev, req); - 8007a6a: 6839 ldr r1, [r7, #0] - 8007a6c: 6878 ldr r0, [r7, #4] - 8007a6e: f000 f8c9 bl 8007c04 - default: - USBD_CtlError(pdev, req); - break; - } - } -} - 8007a72: e022 b.n 8007aba - switch (pdev->dev_state) - 8007a74: 687b ldr r3, [r7, #4] - 8007a76: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8007a7a: 2b02 cmp r3, #2 - 8007a7c: dc02 bgt.n 8007a84 - 8007a7e: 2b00 cmp r3, #0 - 8007a80: dc03 bgt.n 8007a8a - 8007a82: e015 b.n 8007ab0 - 8007a84: 2b03 cmp r3, #3 - 8007a86: d00b beq.n 8007aa0 - 8007a88: e012 b.n 8007ab0 - pdev->dev_default_config = 0U; - 8007a8a: 687b ldr r3, [r7, #4] - 8007a8c: 2200 movs r2, #0 - 8007a8e: 609a str r2, [r3, #8] - USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_default_config, 1U); - 8007a90: 687b ldr r3, [r7, #4] - 8007a92: 3308 adds r3, #8 - 8007a94: 2201 movs r2, #1 - 8007a96: 4619 mov r1, r3 - 8007a98: 6878 ldr r0, [r7, #4] - 8007a9a: f000 f91d bl 8007cd8 - break; - 8007a9e: e00c b.n 8007aba - USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_config, 1U); - 8007aa0: 687b ldr r3, [r7, #4] - 8007aa2: 3304 adds r3, #4 - 8007aa4: 2201 movs r2, #1 - 8007aa6: 4619 mov r1, r3 - 8007aa8: 6878 ldr r0, [r7, #4] - 8007aaa: f000 f915 bl 8007cd8 - break; - 8007aae: e004 b.n 8007aba - USBD_CtlError(pdev, req); - 8007ab0: 6839 ldr r1, [r7, #0] - 8007ab2: 6878 ldr r0, [r7, #4] - 8007ab4: f000 f8a6 bl 8007c04 - break; - 8007ab8: bf00 nop -} - 8007aba: bf00 nop - 8007abc: 3708 adds r7, #8 - 8007abe: 46bd mov sp, r7 - 8007ac0: bd80 pop {r7, pc} - -08007ac2 : -* @param pdev: device instance -* @param req: usb request -* @retval status -*/ -static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) -{ - 8007ac2: b580 push {r7, lr} - 8007ac4: b082 sub sp, #8 - 8007ac6: af00 add r7, sp, #0 - 8007ac8: 6078 str r0, [r7, #4] - 8007aca: 6039 str r1, [r7, #0] - switch (pdev->dev_state) - 8007acc: 687b ldr r3, [r7, #4] - 8007ace: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8007ad2: 3b01 subs r3, #1 - 8007ad4: 2b02 cmp r3, #2 - 8007ad6: d81e bhi.n 8007b16 - { - case USBD_STATE_DEFAULT: - case USBD_STATE_ADDRESSED: - case USBD_STATE_CONFIGURED: - if (req->wLength != 0x2U) - 8007ad8: 683b ldr r3, [r7, #0] - 8007ada: 88db ldrh r3, [r3, #6] - 8007adc: 2b02 cmp r3, #2 - 8007ade: d004 beq.n 8007aea - { - USBD_CtlError(pdev, req); - 8007ae0: 6839 ldr r1, [r7, #0] - 8007ae2: 6878 ldr r0, [r7, #4] - 8007ae4: f000 f88e bl 8007c04 - break; - 8007ae8: e01a b.n 8007b20 - } - -#if (USBD_SELF_POWERED == 1U) - pdev->dev_config_status = USB_CONFIG_SELF_POWERED; - 8007aea: 687b ldr r3, [r7, #4] - 8007aec: 2201 movs r2, #1 - 8007aee: 60da str r2, [r3, #12] -#else - pdev->dev_config_status = 0U; -#endif - - if (pdev->dev_remote_wakeup) - 8007af0: 687b ldr r3, [r7, #4] - 8007af2: f8d3 32a4 ldr.w r3, [r3, #676] @ 0x2a4 - 8007af6: 2b00 cmp r3, #0 - 8007af8: d005 beq.n 8007b06 - { - pdev->dev_config_status |= USB_CONFIG_REMOTE_WAKEUP; - 8007afa: 687b ldr r3, [r7, #4] - 8007afc: 68db ldr r3, [r3, #12] - 8007afe: f043 0202 orr.w r2, r3, #2 - 8007b02: 687b ldr r3, [r7, #4] - 8007b04: 60da str r2, [r3, #12] - } - - USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_config_status, 2U); - 8007b06: 687b ldr r3, [r7, #4] - 8007b08: 330c adds r3, #12 - 8007b0a: 2202 movs r2, #2 - 8007b0c: 4619 mov r1, r3 - 8007b0e: 6878 ldr r0, [r7, #4] - 8007b10: f000 f8e2 bl 8007cd8 - break; - 8007b14: e004 b.n 8007b20 - - default: - USBD_CtlError(pdev, req); - 8007b16: 6839 ldr r1, [r7, #0] - 8007b18: 6878 ldr r0, [r7, #4] - 8007b1a: f000 f873 bl 8007c04 - break; - 8007b1e: bf00 nop - } -} - 8007b20: bf00 nop - 8007b22: 3708 adds r7, #8 - 8007b24: 46bd mov sp, r7 - 8007b26: bd80 pop {r7, pc} - -08007b28 : -* @param req: usb request -* @retval status -*/ -static void USBD_SetFeature(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 8007b28: b580 push {r7, lr} - 8007b2a: b082 sub sp, #8 - 8007b2c: af00 add r7, sp, #0 - 8007b2e: 6078 str r0, [r7, #4] - 8007b30: 6039 str r1, [r7, #0] - if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) - 8007b32: 683b ldr r3, [r7, #0] - 8007b34: 885b ldrh r3, [r3, #2] - 8007b36: 2b01 cmp r3, #1 - 8007b38: d106 bne.n 8007b48 - { - pdev->dev_remote_wakeup = 1U; - 8007b3a: 687b ldr r3, [r7, #4] - 8007b3c: 2201 movs r2, #1 - 8007b3e: f8c3 22a4 str.w r2, [r3, #676] @ 0x2a4 - USBD_CtlSendStatus(pdev); - 8007b42: 6878 ldr r0, [r7, #4] - 8007b44: f000 f926 bl 8007d94 - } -} - 8007b48: bf00 nop - 8007b4a: 3708 adds r7, #8 - 8007b4c: 46bd mov sp, r7 - 8007b4e: bd80 pop {r7, pc} - -08007b50 : -* @param req: usb request -* @retval status -*/ -static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 8007b50: b580 push {r7, lr} - 8007b52: b082 sub sp, #8 - 8007b54: af00 add r7, sp, #0 - 8007b56: 6078 str r0, [r7, #4] - 8007b58: 6039 str r1, [r7, #0] - switch (pdev->dev_state) - 8007b5a: 687b ldr r3, [r7, #4] - 8007b5c: f893 329c ldrb.w r3, [r3, #668] @ 0x29c - 8007b60: 3b01 subs r3, #1 - 8007b62: 2b02 cmp r3, #2 - 8007b64: d80b bhi.n 8007b7e - { - case USBD_STATE_DEFAULT: - case USBD_STATE_ADDRESSED: - case USBD_STATE_CONFIGURED: - if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) - 8007b66: 683b ldr r3, [r7, #0] - 8007b68: 885b ldrh r3, [r3, #2] - 8007b6a: 2b01 cmp r3, #1 - 8007b6c: d10c bne.n 8007b88 - { - pdev->dev_remote_wakeup = 0U; - 8007b6e: 687b ldr r3, [r7, #4] - 8007b70: 2200 movs r2, #0 - 8007b72: f8c3 22a4 str.w r2, [r3, #676] @ 0x2a4 - USBD_CtlSendStatus(pdev); - 8007b76: 6878 ldr r0, [r7, #4] - 8007b78: f000 f90c bl 8007d94 - } - break; - 8007b7c: e004 b.n 8007b88 - - default: - USBD_CtlError(pdev, req); - 8007b7e: 6839 ldr r1, [r7, #0] - 8007b80: 6878 ldr r0, [r7, #4] - 8007b82: f000 f83f bl 8007c04 - break; - 8007b86: e000 b.n 8007b8a - break; - 8007b88: bf00 nop - } -} - 8007b8a: bf00 nop - 8007b8c: 3708 adds r7, #8 - 8007b8e: 46bd mov sp, r7 - 8007b90: bd80 pop {r7, pc} - -08007b92 : -* @param req: usb request -* @retval None -*/ - -void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata) -{ - 8007b92: b480 push {r7} - 8007b94: b083 sub sp, #12 - 8007b96: af00 add r7, sp, #0 - 8007b98: 6078 str r0, [r7, #4] - 8007b9a: 6039 str r1, [r7, #0] - req->bmRequest = *(uint8_t *)(pdata); - 8007b9c: 683b ldr r3, [r7, #0] - 8007b9e: 781a ldrb r2, [r3, #0] - 8007ba0: 687b ldr r3, [r7, #4] - 8007ba2: 701a strb r2, [r3, #0] - req->bRequest = *(uint8_t *)(pdata + 1U); - 8007ba4: 683b ldr r3, [r7, #0] - 8007ba6: 785a ldrb r2, [r3, #1] - 8007ba8: 687b ldr r3, [r7, #4] - 8007baa: 705a strb r2, [r3, #1] - req->wValue = SWAPBYTE(pdata + 2U); - 8007bac: 683b ldr r3, [r7, #0] - 8007bae: 3302 adds r3, #2 - 8007bb0: 781b ldrb r3, [r3, #0] - 8007bb2: 461a mov r2, r3 - 8007bb4: 683b ldr r3, [r7, #0] - 8007bb6: 3303 adds r3, #3 - 8007bb8: 781b ldrb r3, [r3, #0] - 8007bba: 021b lsls r3, r3, #8 - 8007bbc: b29b uxth r3, r3 - 8007bbe: 4413 add r3, r2 - 8007bc0: b29a uxth r2, r3 - 8007bc2: 687b ldr r3, [r7, #4] - 8007bc4: 805a strh r2, [r3, #2] - req->wIndex = SWAPBYTE(pdata + 4U); - 8007bc6: 683b ldr r3, [r7, #0] - 8007bc8: 3304 adds r3, #4 - 8007bca: 781b ldrb r3, [r3, #0] - 8007bcc: 461a mov r2, r3 - 8007bce: 683b ldr r3, [r7, #0] - 8007bd0: 3305 adds r3, #5 - 8007bd2: 781b ldrb r3, [r3, #0] - 8007bd4: 021b lsls r3, r3, #8 - 8007bd6: b29b uxth r3, r3 - 8007bd8: 4413 add r3, r2 - 8007bda: b29a uxth r2, r3 - 8007bdc: 687b ldr r3, [r7, #4] - 8007bde: 809a strh r2, [r3, #4] - req->wLength = SWAPBYTE(pdata + 6U); - 8007be0: 683b ldr r3, [r7, #0] - 8007be2: 3306 adds r3, #6 - 8007be4: 781b ldrb r3, [r3, #0] - 8007be6: 461a mov r2, r3 - 8007be8: 683b ldr r3, [r7, #0] - 8007bea: 3307 adds r3, #7 - 8007bec: 781b ldrb r3, [r3, #0] - 8007bee: 021b lsls r3, r3, #8 - 8007bf0: b29b uxth r3, r3 - 8007bf2: 4413 add r3, r2 - 8007bf4: b29a uxth r2, r3 - 8007bf6: 687b ldr r3, [r7, #4] - 8007bf8: 80da strh r2, [r3, #6] - -} - 8007bfa: bf00 nop - 8007bfc: 370c adds r7, #12 - 8007bfe: 46bd mov sp, r7 - 8007c00: bc80 pop {r7} - 8007c02: 4770 bx lr - -08007c04 : -* @retval None -*/ - -void USBD_CtlError(USBD_HandleTypeDef *pdev, - USBD_SetupReqTypedef *req) -{ - 8007c04: b580 push {r7, lr} - 8007c06: b082 sub sp, #8 - 8007c08: af00 add r7, sp, #0 - 8007c0a: 6078 str r0, [r7, #4] - 8007c0c: 6039 str r1, [r7, #0] - USBD_LL_StallEP(pdev, 0x80U); - 8007c0e: 2180 movs r1, #128 @ 0x80 - 8007c10: 6878 ldr r0, [r7, #4] - 8007c12: f000 fcd1 bl 80085b8 - USBD_LL_StallEP(pdev, 0U); - 8007c16: 2100 movs r1, #0 - 8007c18: 6878 ldr r0, [r7, #4] - 8007c1a: f000 fccd bl 80085b8 -} - 8007c1e: bf00 nop - 8007c20: 3708 adds r7, #8 - 8007c22: 46bd mov sp, r7 - 8007c24: bd80 pop {r7, pc} - -08007c26 : - * @param unicode : Formatted string buffer (unicode) - * @param len : descriptor length - * @retval None - */ -void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len) -{ - 8007c26: b580 push {r7, lr} - 8007c28: b086 sub sp, #24 - 8007c2a: af00 add r7, sp, #0 - 8007c2c: 60f8 str r0, [r7, #12] - 8007c2e: 60b9 str r1, [r7, #8] - 8007c30: 607a str r2, [r7, #4] - uint8_t idx = 0U; - 8007c32: 2300 movs r3, #0 - 8007c34: 75fb strb r3, [r7, #23] - - if (desc != NULL) - 8007c36: 68fb ldr r3, [r7, #12] - 8007c38: 2b00 cmp r3, #0 - 8007c3a: d032 beq.n 8007ca2 - { - *len = (uint16_t)USBD_GetLen(desc) * 2U + 2U; - 8007c3c: 68f8 ldr r0, [r7, #12] - 8007c3e: f000 f834 bl 8007caa - 8007c42: 4603 mov r3, r0 - 8007c44: 3301 adds r3, #1 - 8007c46: b29b uxth r3, r3 - 8007c48: 005b lsls r3, r3, #1 - 8007c4a: b29a uxth r2, r3 - 8007c4c: 687b ldr r3, [r7, #4] - 8007c4e: 801a strh r2, [r3, #0] - unicode[idx++] = *(uint8_t *)(void *)len; - 8007c50: 7dfb ldrb r3, [r7, #23] - 8007c52: 1c5a adds r2, r3, #1 - 8007c54: 75fa strb r2, [r7, #23] - 8007c56: 461a mov r2, r3 - 8007c58: 68bb ldr r3, [r7, #8] - 8007c5a: 4413 add r3, r2 - 8007c5c: 687a ldr r2, [r7, #4] - 8007c5e: 7812 ldrb r2, [r2, #0] - 8007c60: 701a strb r2, [r3, #0] - unicode[idx++] = USB_DESC_TYPE_STRING; - 8007c62: 7dfb ldrb r3, [r7, #23] - 8007c64: 1c5a adds r2, r3, #1 - 8007c66: 75fa strb r2, [r7, #23] - 8007c68: 461a mov r2, r3 - 8007c6a: 68bb ldr r3, [r7, #8] - 8007c6c: 4413 add r3, r2 - 8007c6e: 2203 movs r2, #3 - 8007c70: 701a strb r2, [r3, #0] - - while (*desc != '\0') - 8007c72: e012 b.n 8007c9a - { - unicode[idx++] = *desc++; - 8007c74: 68fb ldr r3, [r7, #12] - 8007c76: 1c5a adds r2, r3, #1 - 8007c78: 60fa str r2, [r7, #12] - 8007c7a: 7dfa ldrb r2, [r7, #23] - 8007c7c: 1c51 adds r1, r2, #1 - 8007c7e: 75f9 strb r1, [r7, #23] - 8007c80: 4611 mov r1, r2 - 8007c82: 68ba ldr r2, [r7, #8] - 8007c84: 440a add r2, r1 - 8007c86: 781b ldrb r3, [r3, #0] - 8007c88: 7013 strb r3, [r2, #0] - unicode[idx++] = 0U; - 8007c8a: 7dfb ldrb r3, [r7, #23] - 8007c8c: 1c5a adds r2, r3, #1 - 8007c8e: 75fa strb r2, [r7, #23] - 8007c90: 461a mov r2, r3 - 8007c92: 68bb ldr r3, [r7, #8] - 8007c94: 4413 add r3, r2 - 8007c96: 2200 movs r2, #0 - 8007c98: 701a strb r2, [r3, #0] - while (*desc != '\0') - 8007c9a: 68fb ldr r3, [r7, #12] - 8007c9c: 781b ldrb r3, [r3, #0] - 8007c9e: 2b00 cmp r3, #0 - 8007ca0: d1e8 bne.n 8007c74 - } - } -} - 8007ca2: bf00 nop - 8007ca4: 3718 adds r7, #24 - 8007ca6: 46bd mov sp, r7 - 8007ca8: bd80 pop {r7, pc} - -08007caa : - * return the string length - * @param buf : pointer to the ascii string buffer - * @retval string length - */ -static uint8_t USBD_GetLen(uint8_t *buf) -{ - 8007caa: b480 push {r7} - 8007cac: b085 sub sp, #20 - 8007cae: af00 add r7, sp, #0 - 8007cb0: 6078 str r0, [r7, #4] - uint8_t len = 0U; - 8007cb2: 2300 movs r3, #0 - 8007cb4: 73fb strb r3, [r7, #15] - - while (*buf != '\0') - 8007cb6: e005 b.n 8007cc4 - { - len++; - 8007cb8: 7bfb ldrb r3, [r7, #15] - 8007cba: 3301 adds r3, #1 - 8007cbc: 73fb strb r3, [r7, #15] - buf++; - 8007cbe: 687b ldr r3, [r7, #4] - 8007cc0: 3301 adds r3, #1 - 8007cc2: 607b str r3, [r7, #4] - while (*buf != '\0') - 8007cc4: 687b ldr r3, [r7, #4] - 8007cc6: 781b ldrb r3, [r3, #0] - 8007cc8: 2b00 cmp r3, #0 - 8007cca: d1f5 bne.n 8007cb8 - } - - return len; - 8007ccc: 7bfb ldrb r3, [r7, #15] -} - 8007cce: 4618 mov r0, r3 - 8007cd0: 3714 adds r7, #20 - 8007cd2: 46bd mov sp, r7 - 8007cd4: bc80 pop {r7} - 8007cd6: 4770 bx lr - -08007cd8 : -* @param len: length of data to be sent -* @retval status -*/ -USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev, - uint8_t *pbuf, uint16_t len) -{ - 8007cd8: b580 push {r7, lr} - 8007cda: b084 sub sp, #16 - 8007cdc: af00 add r7, sp, #0 - 8007cde: 60f8 str r0, [r7, #12] - 8007ce0: 60b9 str r1, [r7, #8] - 8007ce2: 4613 mov r3, r2 - 8007ce4: 80fb strh r3, [r7, #6] - /* Set EP0 State */ - pdev->ep0_state = USBD_EP0_DATA_IN; - 8007ce6: 68fb ldr r3, [r7, #12] - 8007ce8: 2202 movs r2, #2 - 8007cea: f8c3 2294 str.w r2, [r3, #660] @ 0x294 - pdev->ep_in[0].total_length = len; - 8007cee: 88fa ldrh r2, [r7, #6] - 8007cf0: 68fb ldr r3, [r7, #12] - 8007cf2: 61da str r2, [r3, #28] - pdev->ep_in[0].rem_length = len; - 8007cf4: 88fa ldrh r2, [r7, #6] - 8007cf6: 68fb ldr r3, [r7, #12] - 8007cf8: 621a str r2, [r3, #32] - - /* Start the transfer */ - USBD_LL_Transmit(pdev, 0x00U, pbuf, len); - 8007cfa: 88fb ldrh r3, [r7, #6] - 8007cfc: 68ba ldr r2, [r7, #8] - 8007cfe: 2100 movs r1, #0 - 8007d00: 68f8 ldr r0, [r7, #12] - 8007d02: f000 fce1 bl 80086c8 - - return USBD_OK; - 8007d06: 2300 movs r3, #0 -} - 8007d08: 4618 mov r0, r3 - 8007d0a: 3710 adds r7, #16 - 8007d0c: 46bd mov sp, r7 - 8007d0e: bd80 pop {r7, pc} - -08007d10 : -* @param len: length of data to be sent -* @retval status -*/ -USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev, - uint8_t *pbuf, uint16_t len) -{ - 8007d10: b580 push {r7, lr} - 8007d12: b084 sub sp, #16 - 8007d14: af00 add r7, sp, #0 - 8007d16: 60f8 str r0, [r7, #12] - 8007d18: 60b9 str r1, [r7, #8] - 8007d1a: 4613 mov r3, r2 - 8007d1c: 80fb strh r3, [r7, #6] - /* Start the next transfer */ - USBD_LL_Transmit(pdev, 0x00U, pbuf, len); - 8007d1e: 88fb ldrh r3, [r7, #6] - 8007d20: 68ba ldr r2, [r7, #8] - 8007d22: 2100 movs r1, #0 - 8007d24: 68f8 ldr r0, [r7, #12] - 8007d26: f000 fccf bl 80086c8 - - return USBD_OK; - 8007d2a: 2300 movs r3, #0 -} - 8007d2c: 4618 mov r0, r3 - 8007d2e: 3710 adds r7, #16 - 8007d30: 46bd mov sp, r7 - 8007d32: bd80 pop {r7, pc} - -08007d34 : -* @param len: length of data to be received -* @retval status -*/ -USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev, - uint8_t *pbuf, uint16_t len) -{ - 8007d34: b580 push {r7, lr} - 8007d36: b084 sub sp, #16 - 8007d38: af00 add r7, sp, #0 - 8007d3a: 60f8 str r0, [r7, #12] - 8007d3c: 60b9 str r1, [r7, #8] - 8007d3e: 4613 mov r3, r2 - 8007d40: 80fb strh r3, [r7, #6] - /* Set EP0 State */ - pdev->ep0_state = USBD_EP0_DATA_OUT; - 8007d42: 68fb ldr r3, [r7, #12] - 8007d44: 2203 movs r2, #3 - 8007d46: f8c3 2294 str.w r2, [r3, #660] @ 0x294 - pdev->ep_out[0].total_length = len; - 8007d4a: 88fa ldrh r2, [r7, #6] - 8007d4c: 68fb ldr r3, [r7, #12] - 8007d4e: f8c3 215c str.w r2, [r3, #348] @ 0x15c - pdev->ep_out[0].rem_length = len; - 8007d52: 88fa ldrh r2, [r7, #6] - 8007d54: 68fb ldr r3, [r7, #12] - 8007d56: f8c3 2160 str.w r2, [r3, #352] @ 0x160 - - /* Start the transfer */ - USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); - 8007d5a: 88fb ldrh r3, [r7, #6] - 8007d5c: 68ba ldr r2, [r7, #8] - 8007d5e: 2100 movs r1, #0 - 8007d60: 68f8 ldr r0, [r7, #12] - 8007d62: f000 fcd4 bl 800870e - - return USBD_OK; - 8007d66: 2300 movs r3, #0 -} - 8007d68: 4618 mov r0, r3 - 8007d6a: 3710 adds r7, #16 - 8007d6c: 46bd mov sp, r7 - 8007d6e: bd80 pop {r7, pc} - -08007d70 : -* @param len: length of data to be received -* @retval status -*/ -USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev, - uint8_t *pbuf, uint16_t len) -{ - 8007d70: b580 push {r7, lr} - 8007d72: b084 sub sp, #16 - 8007d74: af00 add r7, sp, #0 - 8007d76: 60f8 str r0, [r7, #12] - 8007d78: 60b9 str r1, [r7, #8] - 8007d7a: 4613 mov r3, r2 - 8007d7c: 80fb strh r3, [r7, #6] - USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); - 8007d7e: 88fb ldrh r3, [r7, #6] - 8007d80: 68ba ldr r2, [r7, #8] - 8007d82: 2100 movs r1, #0 - 8007d84: 68f8 ldr r0, [r7, #12] - 8007d86: f000 fcc2 bl 800870e - - return USBD_OK; - 8007d8a: 2300 movs r3, #0 -} - 8007d8c: 4618 mov r0, r3 - 8007d8e: 3710 adds r7, #16 - 8007d90: 46bd mov sp, r7 - 8007d92: bd80 pop {r7, pc} - -08007d94 : -* send zero lzngth packet on the ctl pipe -* @param pdev: device instance -* @retval status -*/ -USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev) -{ - 8007d94: b580 push {r7, lr} - 8007d96: b082 sub sp, #8 - 8007d98: af00 add r7, sp, #0 - 8007d9a: 6078 str r0, [r7, #4] - /* Set EP0 State */ - pdev->ep0_state = USBD_EP0_STATUS_IN; - 8007d9c: 687b ldr r3, [r7, #4] - 8007d9e: 2204 movs r2, #4 - 8007da0: f8c3 2294 str.w r2, [r3, #660] @ 0x294 - - /* Start the transfer */ - USBD_LL_Transmit(pdev, 0x00U, NULL, 0U); - 8007da4: 2300 movs r3, #0 - 8007da6: 2200 movs r2, #0 - 8007da8: 2100 movs r1, #0 - 8007daa: 6878 ldr r0, [r7, #4] - 8007dac: f000 fc8c bl 80086c8 - - return USBD_OK; - 8007db0: 2300 movs r3, #0 -} - 8007db2: 4618 mov r0, r3 - 8007db4: 3708 adds r7, #8 - 8007db6: 46bd mov sp, r7 - 8007db8: bd80 pop {r7, pc} - -08007dba : -* receive zero lzngth packet on the ctl pipe -* @param pdev: device instance -* @retval status -*/ -USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev) -{ - 8007dba: b580 push {r7, lr} - 8007dbc: b082 sub sp, #8 - 8007dbe: af00 add r7, sp, #0 - 8007dc0: 6078 str r0, [r7, #4] - /* Set EP0 State */ - pdev->ep0_state = USBD_EP0_STATUS_OUT; - 8007dc2: 687b ldr r3, [r7, #4] - 8007dc4: 2205 movs r2, #5 - 8007dc6: f8c3 2294 str.w r2, [r3, #660] @ 0x294 - - /* Start the transfer */ - USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); - 8007dca: 2300 movs r3, #0 - 8007dcc: 2200 movs r2, #0 - 8007dce: 2100 movs r1, #0 - 8007dd0: 6878 ldr r0, [r7, #4] - 8007dd2: f000 fc9c bl 800870e - - return USBD_OK; - 8007dd6: 2300 movs r3, #0 -} - 8007dd8: 4618 mov r0, r3 - 8007dda: 3708 adds r7, #8 - 8007ddc: 46bd mov sp, r7 - 8007dde: bd80 pop {r7, pc} - -08007de0 : -/** - * Init USB device Library, add supported class and start the library - * @retval None - */ -void MX_USB_DEVICE_Init(void) -{ - 8007de0: b580 push {r7, lr} - 8007de2: af00 add r7, sp, #0 - /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ - - /* USER CODE END USB_DEVICE_Init_PreTreatment */ - - /* Init Device Library, add supported class and start the library. */ - if (USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK) - 8007de4: 2200 movs r2, #0 - 8007de6: 4912 ldr r1, [pc, #72] @ (8007e30 ) - 8007de8: 4812 ldr r0, [pc, #72] @ (8007e34 ) - 8007dea: f7fe ff62 bl 8006cb2 - 8007dee: 4603 mov r3, r0 - 8007df0: 2b00 cmp r3, #0 - 8007df2: d001 beq.n 8007df8 - { - Error_Handler(); - 8007df4: f7f8 fc8c bl 8000710 - } - if (USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC) != USBD_OK) - 8007df8: 490f ldr r1, [pc, #60] @ (8007e38 ) - 8007dfa: 480e ldr r0, [pc, #56] @ (8007e34 ) - 8007dfc: f7fe ff84 bl 8006d08 - 8007e00: 4603 mov r3, r0 - 8007e02: 2b00 cmp r3, #0 - 8007e04: d001 beq.n 8007e0a - { - Error_Handler(); - 8007e06: f7f8 fc83 bl 8000710 - } - if (USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS) != USBD_OK) - 8007e0a: 490c ldr r1, [pc, #48] @ (8007e3c ) - 8007e0c: 4809 ldr r0, [pc, #36] @ (8007e34 ) - 8007e0e: f7fe feb5 bl 8006b7c - 8007e12: 4603 mov r3, r0 - 8007e14: 2b00 cmp r3, #0 - 8007e16: d001 beq.n 8007e1c - { - Error_Handler(); - 8007e18: f7f8 fc7a bl 8000710 - } - if (USBD_Start(&hUsbDeviceFS) != USBD_OK) - 8007e1c: 4805 ldr r0, [pc, #20] @ (8007e34 ) - 8007e1e: f7fe ff8c bl 8006d3a - 8007e22: 4603 mov r3, r0 - 8007e24: 2b00 cmp r3, #0 - 8007e26: d001 beq.n 8007e2c - { - Error_Handler(); - 8007e28: f7f8 fc72 bl 8000710 - } - - /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */ - - /* USER CODE END USB_DEVICE_Init_PostTreatment */ -} - 8007e2c: bf00 nop - 8007e2e: bd80 pop {r7, pc} - 8007e30: 2000012c .word 0x2000012c - 8007e34: 200002cc .word 0x200002cc - 8007e38: 20000018 .word 0x20000018 - 8007e3c: 2000011c .word 0x2000011c - -08007e40 : -/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ -#define RX_FIFO_SZ 256 -static uint8_t rx_fifo[RX_FIFO_SZ]; -static volatile uint16_t rx_head = 0, rx_tail = 0; - -static void fifo_push(const uint8_t* data, uint32_t len) { - 8007e40: b480 push {r7} - 8007e42: b085 sub sp, #20 - 8007e44: af00 add r7, sp, #0 - 8007e46: 6078 str r0, [r7, #4] - 8007e48: 6039 str r1, [r7, #0] - while (len--) { - 8007e4a: e01e b.n 8007e8a - uint16_t next = (rx_head + 1u) & (RX_FIFO_SZ - 1u); - 8007e4c: 4b14 ldr r3, [pc, #80] @ (8007ea0 ) - 8007e4e: 881b ldrh r3, [r3, #0] - 8007e50: b29b uxth r3, r3 - 8007e52: 3301 adds r3, #1 - 8007e54: b29b uxth r3, r3 - 8007e56: b2db uxtb r3, r3 - 8007e58: 81fb strh r3, [r7, #14] - if (next == (rx_tail & (RX_FIFO_SZ - 1u))) { - 8007e5a: 89fa ldrh r2, [r7, #14] - 8007e5c: 4b11 ldr r3, [pc, #68] @ (8007ea4 ) - 8007e5e: 881b ldrh r3, [r3, #0] - 8007e60: b29b uxth r3, r3 - 8007e62: b2db uxtb r3, r3 - 8007e64: 429a cmp r2, r3 - 8007e66: d103 bne.n 8007e70 - /* overflow — drop byte (or set a flag) */ - data++; - 8007e68: 687b ldr r3, [r7, #4] - 8007e6a: 3301 adds r3, #1 - 8007e6c: 607b str r3, [r7, #4] - continue; - 8007e6e: e00c b.n 8007e8a - } - rx_fifo[rx_head & (RX_FIFO_SZ - 1u)] = *data++; - 8007e70: 687b ldr r3, [r7, #4] - 8007e72: 1c5a adds r2, r3, #1 - 8007e74: 607a str r2, [r7, #4] - 8007e76: 4a0a ldr r2, [pc, #40] @ (8007ea0 ) - 8007e78: 8812 ldrh r2, [r2, #0] - 8007e7a: b292 uxth r2, r2 - 8007e7c: b2d2 uxtb r2, r2 - 8007e7e: 7819 ldrb r1, [r3, #0] - 8007e80: 4b09 ldr r3, [pc, #36] @ (8007ea8 ) - 8007e82: 5499 strb r1, [r3, r2] - rx_head = next; - 8007e84: 4a06 ldr r2, [pc, #24] @ (8007ea0 ) - 8007e86: 89fb ldrh r3, [r7, #14] - 8007e88: 8013 strh r3, [r2, #0] - while (len--) { - 8007e8a: 683b ldr r3, [r7, #0] - 8007e8c: 1e5a subs r2, r3, #1 - 8007e8e: 603a str r2, [r7, #0] - 8007e90: 2b00 cmp r3, #0 - 8007e92: d1db bne.n 8007e4c - } -} - 8007e94: bf00 nop - 8007e96: bf00 nop - 8007e98: 3714 adds r7, #20 - 8007e9a: 46bd mov sp, r7 - 8007e9c: bc80 pop {r7} - 8007e9e: 4770 bx lr - 8007ea0: 20000e90 .word 0x20000e90 - 8007ea4: 20000e92 .word 0x20000e92 - 8007ea8: 20000d90 .word 0x20000d90 - -08007eac : - -uint32_t CDC_Available(void) { - 8007eac: b480 push {r7} - 8007eae: af00 add r7, sp, #0 - return (uint16_t)((rx_head - rx_tail) & (RX_FIFO_SZ - 1u)); - 8007eb0: 4b06 ldr r3, [pc, #24] @ (8007ecc ) - 8007eb2: 881b ldrh r3, [r3, #0] - 8007eb4: b29a uxth r2, r3 - 8007eb6: 4b06 ldr r3, [pc, #24] @ (8007ed0 ) - 8007eb8: 881b ldrh r3, [r3, #0] - 8007eba: b29b uxth r3, r3 - 8007ebc: 1ad3 subs r3, r2, r3 - 8007ebe: b29b uxth r3, r3 - 8007ec0: b2db uxtb r3, r3 -} - 8007ec2: 4618 mov r0, r3 - 8007ec4: 46bd mov sp, r7 - 8007ec6: bc80 pop {r7} - 8007ec8: 4770 bx lr - 8007eca: bf00 nop - 8007ecc: 20000e90 .word 0x20000e90 - 8007ed0: 20000e92 .word 0x20000e92 - -08007ed4 : - -int CDC_ReadByte(void) { - 8007ed4: b480 push {r7} - 8007ed6: b083 sub sp, #12 - 8007ed8: af00 add r7, sp, #0 - if (rx_tail == rx_head) return -1; - 8007eda: 4b10 ldr r3, [pc, #64] @ (8007f1c ) - 8007edc: 881b ldrh r3, [r3, #0] - 8007ede: b29a uxth r2, r3 - 8007ee0: 4b0f ldr r3, [pc, #60] @ (8007f20 ) - 8007ee2: 881b ldrh r3, [r3, #0] - 8007ee4: b29b uxth r3, r3 - 8007ee6: 429a cmp r2, r3 - 8007ee8: d102 bne.n 8007ef0 - 8007eea: f04f 33ff mov.w r3, #4294967295 - 8007eee: e010 b.n 8007f12 - int b = rx_fifo[rx_tail & (RX_FIFO_SZ - 1u)]; - 8007ef0: 4b0a ldr r3, [pc, #40] @ (8007f1c ) - 8007ef2: 881b ldrh r3, [r3, #0] - 8007ef4: b29b uxth r3, r3 - 8007ef6: b2db uxtb r3, r3 - 8007ef8: 4a0a ldr r2, [pc, #40] @ (8007f24 ) - 8007efa: 5cd3 ldrb r3, [r2, r3] - 8007efc: 607b str r3, [r7, #4] - rx_tail = (rx_tail + 1u) & (RX_FIFO_SZ - 1u); - 8007efe: 4b07 ldr r3, [pc, #28] @ (8007f1c ) - 8007f00: 881b ldrh r3, [r3, #0] - 8007f02: b29b uxth r3, r3 - 8007f04: 3301 adds r3, #1 - 8007f06: b29b uxth r3, r3 - 8007f08: b2db uxtb r3, r3 - 8007f0a: b29a uxth r2, r3 - 8007f0c: 4b03 ldr r3, [pc, #12] @ (8007f1c ) - 8007f0e: 801a strh r2, [r3, #0] - return b; - 8007f10: 687b ldr r3, [r7, #4] -} - 8007f12: 4618 mov r0, r3 - 8007f14: 370c adds r7, #12 - 8007f16: 46bd mov sp, r7 - 8007f18: bc80 pop {r7} - 8007f1a: 4770 bx lr - 8007f1c: 20000e92 .word 0x20000e92 - 8007f20: 20000e90 .word 0x20000e90 - 8007f24: 20000d90 .word 0x20000d90 - -08007f28 : -/** - * @brief Initializes the CDC media low layer over the FS USB IP - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Init_FS(void) -{ - 8007f28: b580 push {r7, lr} - 8007f2a: af00 add r7, sp, #0 - /* USER CODE BEGIN 3 */ - /* Set Application Buffers */ - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); - 8007f2c: 2200 movs r2, #0 - 8007f2e: 4905 ldr r1, [pc, #20] @ (8007f44 ) - 8007f30: 4805 ldr r0, [pc, #20] @ (8007f48 ) - 8007f32: f7fe fe39 bl 8006ba8 - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); - 8007f36: 4905 ldr r1, [pc, #20] @ (8007f4c ) - 8007f38: 4803 ldr r0, [pc, #12] @ (8007f48 ) - 8007f3a: f7fe fe4e bl 8006bda - return (USBD_OK); - 8007f3e: 2300 movs r3, #0 - /* USER CODE END 3 */ -} - 8007f40: 4618 mov r0, r3 - 8007f42: bd80 pop {r7, pc} - 8007f44: 20000990 .word 0x20000990 - 8007f48: 200002cc .word 0x200002cc - 8007f4c: 20000590 .word 0x20000590 - -08007f50 : -/** - * @brief DeInitializes the CDC media low layer - * @retval USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_DeInit_FS(void) -{ - 8007f50: b480 push {r7} - 8007f52: af00 add r7, sp, #0 - /* USER CODE BEGIN 4 */ - return (USBD_OK); - 8007f54: 2300 movs r3, #0 - /* USER CODE END 4 */ -} - 8007f56: 4618 mov r0, r3 - 8007f58: 46bd mov sp, r7 - 8007f5a: bc80 pop {r7} - 8007f5c: 4770 bx lr - ... - -08007f60 : - * @param pbuf: Buffer containing command data (request parameters) - * @param length: Number of data to be sent (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) -{ - 8007f60: b480 push {r7} - 8007f62: b083 sub sp, #12 - 8007f64: af00 add r7, sp, #0 - 8007f66: 4603 mov r3, r0 - 8007f68: 6039 str r1, [r7, #0] - 8007f6a: 71fb strb r3, [r7, #7] - 8007f6c: 4613 mov r3, r2 - 8007f6e: 80bb strh r3, [r7, #4] - /* USER CODE BEGIN 5 */ - switch(cmd) - 8007f70: 79fb ldrb r3, [r7, #7] - 8007f72: 2b23 cmp r3, #35 @ 0x23 - 8007f74: d84a bhi.n 800800c - 8007f76: a201 add r2, pc, #4 @ (adr r2, 8007f7c ) - 8007f78: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8007f7c: 0800800d .word 0x0800800d - 8007f80: 0800800d .word 0x0800800d - 8007f84: 0800800d .word 0x0800800d - 8007f88: 0800800d .word 0x0800800d - 8007f8c: 0800800d .word 0x0800800d - 8007f90: 0800800d .word 0x0800800d - 8007f94: 0800800d .word 0x0800800d - 8007f98: 0800800d .word 0x0800800d - 8007f9c: 0800800d .word 0x0800800d - 8007fa0: 0800800d .word 0x0800800d - 8007fa4: 0800800d .word 0x0800800d - 8007fa8: 0800800d .word 0x0800800d - 8007fac: 0800800d .word 0x0800800d - 8007fb0: 0800800d .word 0x0800800d - 8007fb4: 0800800d .word 0x0800800d - 8007fb8: 0800800d .word 0x0800800d - 8007fbc: 0800800d .word 0x0800800d - 8007fc0: 0800800d .word 0x0800800d - 8007fc4: 0800800d .word 0x0800800d - 8007fc8: 0800800d .word 0x0800800d - 8007fcc: 0800800d .word 0x0800800d - 8007fd0: 0800800d .word 0x0800800d - 8007fd4: 0800800d .word 0x0800800d - 8007fd8: 0800800d .word 0x0800800d - 8007fdc: 0800800d .word 0x0800800d - 8007fe0: 0800800d .word 0x0800800d - 8007fe4: 0800800d .word 0x0800800d - 8007fe8: 0800800d .word 0x0800800d - 8007fec: 0800800d .word 0x0800800d - 8007ff0: 0800800d .word 0x0800800d - 8007ff4: 0800800d .word 0x0800800d - 8007ff8: 0800800d .word 0x0800800d - 8007ffc: 0800800d .word 0x0800800d - 8008000: 0800800d .word 0x0800800d - 8008004: 0800800d .word 0x0800800d - 8008008: 0800800d .word 0x0800800d - case CDC_SEND_BREAK: - - break; - - default: - break; - 800800c: bf00 nop - } - - return (USBD_OK); - 800800e: 2300 movs r3, #0 - /* USER CODE END 5 */ -} - 8008010: 4618 mov r0, r3 - 8008012: 370c adds r7, #12 - 8008014: 46bd mov sp, r7 - 8008016: bc80 pop {r7} - 8008018: 4770 bx lr - 800801a: bf00 nop - -0800801c : - * @param Buf: Buffer of data to be received - * @param Len: Number of data received (in bytes) - * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL - */ -static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) -{ - 800801c: b580 push {r7, lr} - 800801e: b082 sub sp, #8 - 8008020: af00 add r7, sp, #0 - 8008022: 6078 str r0, [r7, #4] - 8008024: 6039 str r1, [r7, #0] - /* USER CODE BEGIN 6 */ - if (*Len) fifo_push(Buf, *Len); - 8008026: 683b ldr r3, [r7, #0] - 8008028: 681b ldr r3, [r3, #0] - 800802a: 2b00 cmp r3, #0 - 800802c: d005 beq.n 800803a - 800802e: 683b ldr r3, [r7, #0] - 8008030: 681b ldr r3, [r3, #0] - 8008032: 4619 mov r1, r3 - 8008034: 6878 ldr r0, [r7, #4] - 8008036: f7ff ff03 bl 8007e40 - USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); - 800803a: 6879 ldr r1, [r7, #4] - 800803c: 4805 ldr r0, [pc, #20] @ (8008054 ) - 800803e: f7fe fdcc bl 8006bda - USBD_CDC_ReceivePacket(&hUsbDeviceFS); - 8008042: 4804 ldr r0, [pc, #16] @ (8008054 ) - 8008044: f7fe fe0b bl 8006c5e - return (USBD_OK); - 8008048: 2300 movs r3, #0 - /* USER CODE END 6 */ -} - 800804a: 4618 mov r0, r3 - 800804c: 3708 adds r7, #8 - 800804e: 46bd mov sp, r7 - 8008050: bd80 pop {r7, pc} - 8008052: bf00 nop - 8008054: 200002cc .word 0x200002cc - -08008058 : - * @param Buf: Buffer of data to be sent - * @param Len: Number of data to be sent (in bytes) - * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY - */ -uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) -{ - 8008058: b580 push {r7, lr} - 800805a: b084 sub sp, #16 - 800805c: af00 add r7, sp, #0 - 800805e: 6078 str r0, [r7, #4] - 8008060: 460b mov r3, r1 - 8008062: 807b strh r3, [r7, #2] - uint8_t result = USBD_OK; - 8008064: 2300 movs r3, #0 - 8008066: 73fb strb r3, [r7, #15] - /* USER CODE BEGIN 7 */ - USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; - 8008068: 4b0d ldr r3, [pc, #52] @ (80080a0 ) - 800806a: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 - 800806e: 60bb str r3, [r7, #8] - if (hcdc->TxState != 0){ - 8008070: 68bb ldr r3, [r7, #8] - 8008072: f8d3 3214 ldr.w r3, [r3, #532] @ 0x214 - 8008076: 2b00 cmp r3, #0 - 8008078: d001 beq.n 800807e - return USBD_BUSY; - 800807a: 2301 movs r3, #1 - 800807c: e00b b.n 8008096 - } - USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); - 800807e: 887b ldrh r3, [r7, #2] - 8008080: 461a mov r2, r3 - 8008082: 6879 ldr r1, [r7, #4] - 8008084: 4806 ldr r0, [pc, #24] @ (80080a0 ) - 8008086: f7fe fd8f bl 8006ba8 - result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); - 800808a: 4805 ldr r0, [pc, #20] @ (80080a0 ) - 800808c: f7fe fdb8 bl 8006c00 - 8008090: 4603 mov r3, r0 - 8008092: 73fb strb r3, [r7, #15] - /* USER CODE END 7 */ - return result; - 8008094: 7bfb ldrb r3, [r7, #15] -} - 8008096: 4618 mov r0, r3 - 8008098: 3710 adds r7, #16 - 800809a: 46bd mov sp, r7 - 800809c: bd80 pop {r7, pc} - 800809e: bf00 nop - 80080a0: 200002cc .word 0x200002cc - -080080a4 : - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - 80080a4: b480 push {r7} - 80080a6: b083 sub sp, #12 - 80080a8: af00 add r7, sp, #0 - 80080aa: 4603 mov r3, r0 - 80080ac: 6039 str r1, [r7, #0] - 80080ae: 71fb strb r3, [r7, #7] - UNUSED(speed); - *length = sizeof(USBD_FS_DeviceDesc); - 80080b0: 683b ldr r3, [r7, #0] - 80080b2: 2212 movs r2, #18 - 80080b4: 801a strh r2, [r3, #0] - return USBD_FS_DeviceDesc; - 80080b6: 4b03 ldr r3, [pc, #12] @ (80080c4 ) -} - 80080b8: 4618 mov r0, r3 - 80080ba: 370c adds r7, #12 - 80080bc: 46bd mov sp, r7 - 80080be: bc80 pop {r7} - 80080c0: 4770 bx lr - 80080c2: bf00 nop - 80080c4: 20000148 .word 0x20000148 - -080080c8 : - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - 80080c8: b480 push {r7} - 80080ca: b083 sub sp, #12 - 80080cc: af00 add r7, sp, #0 - 80080ce: 4603 mov r3, r0 - 80080d0: 6039 str r1, [r7, #0] - 80080d2: 71fb strb r3, [r7, #7] - UNUSED(speed); - *length = sizeof(USBD_LangIDDesc); - 80080d4: 683b ldr r3, [r7, #0] - 80080d6: 2204 movs r2, #4 - 80080d8: 801a strh r2, [r3, #0] - return USBD_LangIDDesc; - 80080da: 4b03 ldr r3, [pc, #12] @ (80080e8 ) -} - 80080dc: 4618 mov r0, r3 - 80080de: 370c adds r7, #12 - 80080e0: 46bd mov sp, r7 - 80080e2: bc80 pop {r7} - 80080e4: 4770 bx lr - 80080e6: bf00 nop - 80080e8: 2000015c .word 0x2000015c - -080080ec : - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - 80080ec: b580 push {r7, lr} - 80080ee: b082 sub sp, #8 - 80080f0: af00 add r7, sp, #0 - 80080f2: 4603 mov r3, r0 - 80080f4: 6039 str r1, [r7, #0] - 80080f6: 71fb strb r3, [r7, #7] - if(speed == 0) - 80080f8: 79fb ldrb r3, [r7, #7] - 80080fa: 2b00 cmp r3, #0 - 80080fc: d105 bne.n 800810a - { - USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); - 80080fe: 683a ldr r2, [r7, #0] - 8008100: 4907 ldr r1, [pc, #28] @ (8008120 ) - 8008102: 4808 ldr r0, [pc, #32] @ (8008124 ) - 8008104: f7ff fd8f bl 8007c26 - 8008108: e004 b.n 8008114 - } - else - { - USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); - 800810a: 683a ldr r2, [r7, #0] - 800810c: 4904 ldr r1, [pc, #16] @ (8008120 ) - 800810e: 4805 ldr r0, [pc, #20] @ (8008124 ) - 8008110: f7ff fd89 bl 8007c26 - } - return USBD_StrDesc; - 8008114: 4b02 ldr r3, [pc, #8] @ (8008120 ) -} - 8008116: 4618 mov r0, r3 - 8008118: 3708 adds r7, #8 - 800811a: 46bd mov sp, r7 - 800811c: bd80 pop {r7, pc} - 800811e: bf00 nop - 8008120: 20000e94 .word 0x20000e94 - 8008124: 0800919c .word 0x0800919c - -08008128 : - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - 8008128: b580 push {r7, lr} - 800812a: b082 sub sp, #8 - 800812c: af00 add r7, sp, #0 - 800812e: 4603 mov r3, r0 - 8008130: 6039 str r1, [r7, #0] - 8008132: 71fb strb r3, [r7, #7] - UNUSED(speed); - USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length); - 8008134: 683a ldr r2, [r7, #0] - 8008136: 4904 ldr r1, [pc, #16] @ (8008148 ) - 8008138: 4804 ldr r0, [pc, #16] @ (800814c ) - 800813a: f7ff fd74 bl 8007c26 - return USBD_StrDesc; - 800813e: 4b02 ldr r3, [pc, #8] @ (8008148 ) -} - 8008140: 4618 mov r0, r3 - 8008142: 3708 adds r7, #8 - 8008144: 46bd mov sp, r7 - 8008146: bd80 pop {r7, pc} - 8008148: 20000e94 .word 0x20000e94 - 800814c: 080091b4 .word 0x080091b4 - -08008150 : - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - 8008150: b580 push {r7, lr} - 8008152: b082 sub sp, #8 - 8008154: af00 add r7, sp, #0 - 8008156: 4603 mov r3, r0 - 8008158: 6039 str r1, [r7, #0] - 800815a: 71fb strb r3, [r7, #7] - UNUSED(speed); - *length = USB_SIZ_STRING_SERIAL; - 800815c: 683b ldr r3, [r7, #0] - 800815e: 221a movs r2, #26 - 8008160: 801a strh r2, [r3, #0] - - /* Update the serial number string descriptor with the data from the unique - * ID */ - Get_SerialNum(); - 8008162: f000 f843 bl 80081ec - /* USER CODE BEGIN USBD_FS_SerialStrDescriptor */ - - /* USER CODE END USBD_FS_SerialStrDescriptor */ - return (uint8_t *) USBD_StringSerial; - 8008166: 4b02 ldr r3, [pc, #8] @ (8008170 ) -} - 8008168: 4618 mov r0, r3 - 800816a: 3708 adds r7, #8 - 800816c: 46bd mov sp, r7 - 800816e: bd80 pop {r7, pc} - 8008170: 20000160 .word 0x20000160 - -08008174 : - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - 8008174: b580 push {r7, lr} - 8008176: b082 sub sp, #8 - 8008178: af00 add r7, sp, #0 - 800817a: 4603 mov r3, r0 - 800817c: 6039 str r1, [r7, #0] - 800817e: 71fb strb r3, [r7, #7] - if(speed == USBD_SPEED_HIGH) - 8008180: 79fb ldrb r3, [r7, #7] - 8008182: 2b00 cmp r3, #0 - 8008184: d105 bne.n 8008192 - { - USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); - 8008186: 683a ldr r2, [r7, #0] - 8008188: 4907 ldr r1, [pc, #28] @ (80081a8 ) - 800818a: 4808 ldr r0, [pc, #32] @ (80081ac ) - 800818c: f7ff fd4b bl 8007c26 - 8008190: e004 b.n 800819c - } - else - { - USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); - 8008192: 683a ldr r2, [r7, #0] - 8008194: 4904 ldr r1, [pc, #16] @ (80081a8 ) - 8008196: 4805 ldr r0, [pc, #20] @ (80081ac ) - 8008198: f7ff fd45 bl 8007c26 - } - return USBD_StrDesc; - 800819c: 4b02 ldr r3, [pc, #8] @ (80081a8 ) -} - 800819e: 4618 mov r0, r3 - 80081a0: 3708 adds r7, #8 - 80081a2: 46bd mov sp, r7 - 80081a4: bd80 pop {r7, pc} - 80081a6: bf00 nop - 80081a8: 20000e94 .word 0x20000e94 - 80081ac: 080091c8 .word 0x080091c8 - -080081b0 : - * @param speed : Current device speed - * @param length : Pointer to data length variable - * @retval Pointer to descriptor buffer - */ -uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) -{ - 80081b0: b580 push {r7, lr} - 80081b2: b082 sub sp, #8 - 80081b4: af00 add r7, sp, #0 - 80081b6: 4603 mov r3, r0 - 80081b8: 6039 str r1, [r7, #0] - 80081ba: 71fb strb r3, [r7, #7] - if(speed == 0) - 80081bc: 79fb ldrb r3, [r7, #7] - 80081be: 2b00 cmp r3, #0 - 80081c0: d105 bne.n 80081ce - { - USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); - 80081c2: 683a ldr r2, [r7, #0] - 80081c4: 4907 ldr r1, [pc, #28] @ (80081e4 ) - 80081c6: 4808 ldr r0, [pc, #32] @ (80081e8 ) - 80081c8: f7ff fd2d bl 8007c26 - 80081cc: e004 b.n 80081d8 - } - else - { - USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); - 80081ce: 683a ldr r2, [r7, #0] - 80081d0: 4904 ldr r1, [pc, #16] @ (80081e4 ) - 80081d2: 4805 ldr r0, [pc, #20] @ (80081e8 ) - 80081d4: f7ff fd27 bl 8007c26 - } - return USBD_StrDesc; - 80081d8: 4b02 ldr r3, [pc, #8] @ (80081e4 ) -} - 80081da: 4618 mov r0, r3 - 80081dc: 3708 adds r7, #8 - 80081de: 46bd mov sp, r7 - 80081e0: bd80 pop {r7, pc} - 80081e2: bf00 nop - 80081e4: 20000e94 .word 0x20000e94 - 80081e8: 080091d4 .word 0x080091d4 - -080081ec : - * @brief Create the serial number string descriptor - * @param None - * @retval None - */ -static void Get_SerialNum(void) -{ - 80081ec: b580 push {r7, lr} - 80081ee: b084 sub sp, #16 - 80081f0: af00 add r7, sp, #0 - uint32_t deviceserial0; - uint32_t deviceserial1; - uint32_t deviceserial2; - - deviceserial0 = *(uint32_t *) DEVICE_ID1; - 80081f2: 4b0f ldr r3, [pc, #60] @ (8008230 ) - 80081f4: 681b ldr r3, [r3, #0] - 80081f6: 60fb str r3, [r7, #12] - deviceserial1 = *(uint32_t *) DEVICE_ID2; - 80081f8: 4b0e ldr r3, [pc, #56] @ (8008234 ) - 80081fa: 681b ldr r3, [r3, #0] - 80081fc: 60bb str r3, [r7, #8] - deviceserial2 = *(uint32_t *) DEVICE_ID3; - 80081fe: 4b0e ldr r3, [pc, #56] @ (8008238 ) - 8008200: 681b ldr r3, [r3, #0] - 8008202: 607b str r3, [r7, #4] - - deviceserial0 += deviceserial2; - 8008204: 68fa ldr r2, [r7, #12] - 8008206: 687b ldr r3, [r7, #4] - 8008208: 4413 add r3, r2 - 800820a: 60fb str r3, [r7, #12] - - if (deviceserial0 != 0) - 800820c: 68fb ldr r3, [r7, #12] - 800820e: 2b00 cmp r3, #0 - 8008210: d009 beq.n 8008226 - { - IntToUnicode(deviceserial0, &USBD_StringSerial[2], 8); - 8008212: 2208 movs r2, #8 - 8008214: 4909 ldr r1, [pc, #36] @ (800823c ) - 8008216: 68f8 ldr r0, [r7, #12] - 8008218: f000 f814 bl 8008244 - IntToUnicode(deviceserial1, &USBD_StringSerial[18], 4); - 800821c: 2204 movs r2, #4 - 800821e: 4908 ldr r1, [pc, #32] @ (8008240 ) - 8008220: 68b8 ldr r0, [r7, #8] - 8008222: f000 f80f bl 8008244 - } -} - 8008226: bf00 nop - 8008228: 3710 adds r7, #16 - 800822a: 46bd mov sp, r7 - 800822c: bd80 pop {r7, pc} - 800822e: bf00 nop - 8008230: 1ffff7e8 .word 0x1ffff7e8 - 8008234: 1ffff7ec .word 0x1ffff7ec - 8008238: 1ffff7f0 .word 0x1ffff7f0 - 800823c: 20000162 .word 0x20000162 - 8008240: 20000172 .word 0x20000172 - -08008244 : - * @param pbuf: pointer to the buffer - * @param len: buffer length - * @retval None - */ -static void IntToUnicode(uint32_t value, uint8_t * pbuf, uint8_t len) -{ - 8008244: b480 push {r7} - 8008246: b087 sub sp, #28 - 8008248: af00 add r7, sp, #0 - 800824a: 60f8 str r0, [r7, #12] - 800824c: 60b9 str r1, [r7, #8] - 800824e: 4613 mov r3, r2 - 8008250: 71fb strb r3, [r7, #7] - uint8_t idx = 0; - 8008252: 2300 movs r3, #0 - 8008254: 75fb strb r3, [r7, #23] - - for (idx = 0; idx < len; idx++) - 8008256: 2300 movs r3, #0 - 8008258: 75fb strb r3, [r7, #23] - 800825a: e027 b.n 80082ac - { - if (((value >> 28)) < 0xA) - 800825c: 68fb ldr r3, [r7, #12] - 800825e: 0f1b lsrs r3, r3, #28 - 8008260: 2b09 cmp r3, #9 - 8008262: d80b bhi.n 800827c - { - pbuf[2 * idx] = (value >> 28) + '0'; - 8008264: 68fb ldr r3, [r7, #12] - 8008266: 0f1b lsrs r3, r3, #28 - 8008268: b2da uxtb r2, r3 - 800826a: 7dfb ldrb r3, [r7, #23] - 800826c: 005b lsls r3, r3, #1 - 800826e: 4619 mov r1, r3 - 8008270: 68bb ldr r3, [r7, #8] - 8008272: 440b add r3, r1 - 8008274: 3230 adds r2, #48 @ 0x30 - 8008276: b2d2 uxtb r2, r2 - 8008278: 701a strb r2, [r3, #0] - 800827a: e00a b.n 8008292 - } - else - { - pbuf[2 * idx] = (value >> 28) + 'A' - 10; - 800827c: 68fb ldr r3, [r7, #12] - 800827e: 0f1b lsrs r3, r3, #28 - 8008280: b2da uxtb r2, r3 - 8008282: 7dfb ldrb r3, [r7, #23] - 8008284: 005b lsls r3, r3, #1 - 8008286: 4619 mov r1, r3 - 8008288: 68bb ldr r3, [r7, #8] - 800828a: 440b add r3, r1 - 800828c: 3237 adds r2, #55 @ 0x37 - 800828e: b2d2 uxtb r2, r2 - 8008290: 701a strb r2, [r3, #0] - } - - value = value << 4; - 8008292: 68fb ldr r3, [r7, #12] - 8008294: 011b lsls r3, r3, #4 - 8008296: 60fb str r3, [r7, #12] - - pbuf[2 * idx + 1] = 0; - 8008298: 7dfb ldrb r3, [r7, #23] - 800829a: 005b lsls r3, r3, #1 - 800829c: 3301 adds r3, #1 - 800829e: 68ba ldr r2, [r7, #8] - 80082a0: 4413 add r3, r2 - 80082a2: 2200 movs r2, #0 - 80082a4: 701a strb r2, [r3, #0] - for (idx = 0; idx < len; idx++) - 80082a6: 7dfb ldrb r3, [r7, #23] - 80082a8: 3301 adds r3, #1 - 80082aa: 75fb strb r3, [r7, #23] - 80082ac: 7dfa ldrb r2, [r7, #23] - 80082ae: 79fb ldrb r3, [r7, #7] - 80082b0: 429a cmp r2, r3 - 80082b2: d3d3 bcc.n 800825c - } -} - 80082b4: bf00 nop - 80082b6: bf00 nop - 80082b8: 371c adds r7, #28 - 80082ba: 46bd mov sp, r7 - 80082bc: bc80 pop {r7} - 80082be: 4770 bx lr - -080082c0 : - LL Driver Callbacks (PCD -> USB Device Library) -*******************************************************************************/ -/* MSP Init */ - -void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle) -{ - 80082c0: b580 push {r7, lr} - 80082c2: b084 sub sp, #16 - 80082c4: af00 add r7, sp, #0 - 80082c6: 6078 str r0, [r7, #4] - if(pcdHandle->Instance==USB) - 80082c8: 687b ldr r3, [r7, #4] - 80082ca: 681b ldr r3, [r3, #0] - 80082cc: 4a0d ldr r2, [pc, #52] @ (8008304 ) - 80082ce: 4293 cmp r3, r2 - 80082d0: d113 bne.n 80082fa - { - /* USER CODE BEGIN USB_MspInit 0 */ - - /* USER CODE END USB_MspInit 0 */ - /* Peripheral clock enable */ - __HAL_RCC_USB_CLK_ENABLE(); - 80082d2: 4b0d ldr r3, [pc, #52] @ (8008308 ) - 80082d4: 69db ldr r3, [r3, #28] - 80082d6: 4a0c ldr r2, [pc, #48] @ (8008308 ) - 80082d8: f443 0300 orr.w r3, r3, #8388608 @ 0x800000 - 80082dc: 61d3 str r3, [r2, #28] - 80082de: 4b0a ldr r3, [pc, #40] @ (8008308 ) - 80082e0: 69db ldr r3, [r3, #28] - 80082e2: f403 0300 and.w r3, r3, #8388608 @ 0x800000 - 80082e6: 60fb str r3, [r7, #12] - 80082e8: 68fb ldr r3, [r7, #12] - - /* Peripheral interrupt init */ - HAL_NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 0, 0); - 80082ea: 2200 movs r2, #0 - 80082ec: 2100 movs r1, #0 - 80082ee: 2014 movs r0, #20 - 80082f0: f7f8 fce3 bl 8000cba - HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn); - 80082f4: 2014 movs r0, #20 - 80082f6: f7f8 fcfc bl 8000cf2 - /* USER CODE BEGIN USB_MspInit 1 */ - - /* USER CODE END USB_MspInit 1 */ - } -} - 80082fa: bf00 nop - 80082fc: 3710 adds r7, #16 - 80082fe: 46bd mov sp, r7 - 8008300: bd80 pop {r7, pc} - 8008302: bf00 nop - 8008304: 40005c00 .word 0x40005c00 - 8008308: 40021000 .word 0x40021000 - -0800830c : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 800830c: b580 push {r7, lr} - 800830e: b082 sub sp, #8 - 8008310: af00 add r7, sp, #0 - 8008312: 6078 str r0, [r7, #4] - USBD_LL_SetupStage((USBD_HandleTypeDef*)hpcd->pData, (uint8_t *)hpcd->Setup); - 8008314: 687b ldr r3, [r7, #4] - 8008316: f8d3 22d4 ldr.w r2, [r3, #724] @ 0x2d4 - 800831a: 687b ldr r3, [r7, #4] - 800831c: f503 7326 add.w r3, r3, #664 @ 0x298 - 8008320: 4619 mov r1, r3 - 8008322: 4610 mov r0, r2 - 8008324: f7fe fd51 bl 8006dca -} - 8008328: bf00 nop - 800832a: 3708 adds r7, #8 - 800832c: 46bd mov sp, r7 - 800832e: bd80 pop {r7, pc} - -08008330 : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#else -void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 8008330: b580 push {r7, lr} - 8008332: b082 sub sp, #8 - 8008334: af00 add r7, sp, #0 - 8008336: 6078 str r0, [r7, #4] - 8008338: 460b mov r3, r1 - 800833a: 70fb strb r3, [r7, #3] - USBD_LL_DataOutStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->OUT_ep[epnum].xfer_buff); - 800833c: 687b ldr r3, [r7, #4] - 800833e: f8d3 02d4 ldr.w r0, [r3, #724] @ 0x2d4 - 8008342: 78fa ldrb r2, [r7, #3] - 8008344: 6879 ldr r1, [r7, #4] - 8008346: 4613 mov r3, r2 - 8008348: 009b lsls r3, r3, #2 - 800834a: 4413 add r3, r2 - 800834c: 00db lsls r3, r3, #3 - 800834e: 440b add r3, r1 - 8008350: f503 73b2 add.w r3, r3, #356 @ 0x164 - 8008354: 681a ldr r2, [r3, #0] - 8008356: 78fb ldrb r3, [r7, #3] - 8008358: 4619 mov r1, r3 - 800835a: f7fe fd83 bl 8006e64 -} - 800835e: bf00 nop - 8008360: 3708 adds r7, #8 - 8008362: 46bd mov sp, r7 - 8008364: bd80 pop {r7, pc} - -08008366 : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#else -void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 8008366: b580 push {r7, lr} - 8008368: b082 sub sp, #8 - 800836a: af00 add r7, sp, #0 - 800836c: 6078 str r0, [r7, #4] - 800836e: 460b mov r3, r1 - 8008370: 70fb strb r3, [r7, #3] - USBD_LL_DataInStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->IN_ep[epnum].xfer_buff); - 8008372: 687b ldr r3, [r7, #4] - 8008374: f8d3 02d4 ldr.w r0, [r3, #724] @ 0x2d4 - 8008378: 78fa ldrb r2, [r7, #3] - 800837a: 6879 ldr r1, [r7, #4] - 800837c: 4613 mov r3, r2 - 800837e: 009b lsls r3, r3, #2 - 8008380: 4413 add r3, r2 - 8008382: 00db lsls r3, r3, #3 - 8008384: 440b add r3, r1 - 8008386: 3324 adds r3, #36 @ 0x24 - 8008388: 681a ldr r2, [r3, #0] - 800838a: 78fb ldrb r3, [r7, #3] - 800838c: 4619 mov r1, r3 - 800838e: f7fe fdda bl 8006f46 -} - 8008392: bf00 nop - 8008394: 3708 adds r7, #8 - 8008396: 46bd mov sp, r7 - 8008398: bd80 pop {r7, pc} - -0800839a : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_SOFCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 800839a: b580 push {r7, lr} - 800839c: b082 sub sp, #8 - 800839e: af00 add r7, sp, #0 - 80083a0: 6078 str r0, [r7, #4] - USBD_LL_SOF((USBD_HandleTypeDef*)hpcd->pData); - 80083a2: 687b ldr r3, [r7, #4] - 80083a4: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 - 80083a8: 4618 mov r0, r3 - 80083aa: f7fe feea bl 8007182 -} - 80083ae: bf00 nop - 80083b0: 3708 adds r7, #8 - 80083b2: 46bd mov sp, r7 - 80083b4: bd80 pop {r7, pc} - -080083b6 : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_ResetCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 80083b6: b580 push {r7, lr} - 80083b8: b084 sub sp, #16 - 80083ba: af00 add r7, sp, #0 - 80083bc: 6078 str r0, [r7, #4] - USBD_SpeedTypeDef speed = USBD_SPEED_FULL; - 80083be: 2301 movs r3, #1 - 80083c0: 73fb strb r3, [r7, #15] - - if ( hpcd->Init.speed != PCD_SPEED_FULL) - 80083c2: 687b ldr r3, [r7, #4] - 80083c4: 799b ldrb r3, [r3, #6] - 80083c6: 2b02 cmp r3, #2 - 80083c8: d001 beq.n 80083ce - { - Error_Handler(); - 80083ca: f7f8 f9a1 bl 8000710 - } - /* Set Speed. */ - USBD_LL_SetSpeed((USBD_HandleTypeDef*)hpcd->pData, speed); - 80083ce: 687b ldr r3, [r7, #4] - 80083d0: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 - 80083d4: 7bfa ldrb r2, [r7, #15] - 80083d6: 4611 mov r1, r2 - 80083d8: 4618 mov r0, r3 - 80083da: f7fe fe9a bl 8007112 - - /* Reset Device. */ - USBD_LL_Reset((USBD_HandleTypeDef*)hpcd->pData); - 80083de: 687b ldr r3, [r7, #4] - 80083e0: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 - 80083e4: 4618 mov r0, r3 - 80083e6: f7fe fe53 bl 8007090 -} - 80083ea: bf00 nop - 80083ec: 3710 adds r7, #16 - 80083ee: 46bd mov sp, r7 - 80083f0: bd80 pop {r7, pc} - ... - -080083f4 : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 80083f4: b580 push {r7, lr} - 80083f6: b082 sub sp, #8 - 80083f8: af00 add r7, sp, #0 - 80083fa: 6078 str r0, [r7, #4] - /* Inform USB library that core enters in suspend Mode. */ - USBD_LL_Suspend((USBD_HandleTypeDef*)hpcd->pData); - 80083fc: 687b ldr r3, [r7, #4] - 80083fe: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 - 8008402: 4618 mov r0, r3 - 8008404: f7fe fe94 bl 8007130 - /* Enter in STOP mode. */ - /* USER CODE BEGIN 2 */ - if (hpcd->Init.low_power_enable) - 8008408: 687b ldr r3, [r7, #4] - 800840a: 7a9b ldrb r3, [r3, #10] - 800840c: 2b00 cmp r3, #0 - 800840e: d005 beq.n 800841c - { - /* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register. */ - SCB->SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk)); - 8008410: 4b04 ldr r3, [pc, #16] @ (8008424 ) - 8008412: 691b ldr r3, [r3, #16] - 8008414: 4a03 ldr r2, [pc, #12] @ (8008424 ) - 8008416: f043 0306 orr.w r3, r3, #6 - 800841a: 6113 str r3, [r2, #16] - } - /* USER CODE END 2 */ -} - 800841c: bf00 nop - 800841e: 3708 adds r7, #8 - 8008420: 46bd mov sp, r7 - 8008422: bd80 pop {r7, pc} - 8008424: e000ed00 .word 0xe000ed00 - -08008428 : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) -#else -void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 8008428: b580 push {r7, lr} - 800842a: b082 sub sp, #8 - 800842c: af00 add r7, sp, #0 - 800842e: 6078 str r0, [r7, #4] - /* USER CODE BEGIN 3 */ - - /* USER CODE END 3 */ - USBD_LL_Resume((USBD_HandleTypeDef*)hpcd->pData); - 8008430: 687b ldr r3, [r7, #4] - 8008432: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 - 8008436: 4618 mov r0, r3 - 8008438: f7fe fe8e bl 8007158 -} - 800843c: bf00 nop - 800843e: 3708 adds r7, #8 - 8008440: 46bd mov sp, r7 - 8008442: bd80 pop {r7, pc} - -08008444 : - * @brief Initializes the low level portion of the device driver. - * @param pdev: Device handle - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev) -{ - 8008444: b580 push {r7, lr} - 8008446: b082 sub sp, #8 - 8008448: af00 add r7, sp, #0 - 800844a: 6078 str r0, [r7, #4] - /* Init USB Ip. */ - /* Link the driver to the stack. */ - hpcd_USB_FS.pData = pdev; - 800844c: 4a28 ldr r2, [pc, #160] @ (80084f0 ) - 800844e: 687b ldr r3, [r7, #4] - 8008450: f8c2 32d4 str.w r3, [r2, #724] @ 0x2d4 - pdev->pData = &hpcd_USB_FS; - 8008454: 687b ldr r3, [r7, #4] - 8008456: 4a26 ldr r2, [pc, #152] @ (80084f0 ) - 8008458: f8c3 22c0 str.w r2, [r3, #704] @ 0x2c0 - - hpcd_USB_FS.Instance = USB; - 800845c: 4b24 ldr r3, [pc, #144] @ (80084f0 ) - 800845e: 4a25 ldr r2, [pc, #148] @ (80084f4 ) - 8008460: 601a str r2, [r3, #0] - hpcd_USB_FS.Init.dev_endpoints = 8; - 8008462: 4b23 ldr r3, [pc, #140] @ (80084f0 ) - 8008464: 2208 movs r2, #8 - 8008466: 711a strb r2, [r3, #4] - hpcd_USB_FS.Init.speed = PCD_SPEED_FULL; - 8008468: 4b21 ldr r3, [pc, #132] @ (80084f0 ) - 800846a: 2202 movs r2, #2 - 800846c: 719a strb r2, [r3, #6] - hpcd_USB_FS.Init.low_power_enable = DISABLE; - 800846e: 4b20 ldr r3, [pc, #128] @ (80084f0 ) - 8008470: 2200 movs r2, #0 - 8008472: 729a strb r2, [r3, #10] - hpcd_USB_FS.Init.lpm_enable = DISABLE; - 8008474: 4b1e ldr r3, [pc, #120] @ (80084f0 ) - 8008476: 2200 movs r2, #0 - 8008478: 72da strb r2, [r3, #11] - hpcd_USB_FS.Init.battery_charging_enable = DISABLE; - 800847a: 4b1d ldr r3, [pc, #116] @ (80084f0 ) - 800847c: 2200 movs r2, #0 - 800847e: 731a strb r2, [r3, #12] - if (HAL_PCD_Init(&hpcd_USB_FS) != HAL_OK) - 8008480: 481b ldr r0, [pc, #108] @ (80084f0 ) - 8008482: f7f8 fdd5 bl 8001030 - 8008486: 4603 mov r3, r0 - 8008488: 2b00 cmp r3, #0 - 800848a: d001 beq.n 8008490 - { - Error_Handler( ); - 800848c: f7f8 f940 bl 8000710 - HAL_PCD_RegisterDataInStageCallback(&hpcd_USB_FS, PCD_DataInStageCallback); - HAL_PCD_RegisterIsoOutIncpltCallback(&hpcd_USB_FS, PCD_ISOOUTIncompleteCallback); - HAL_PCD_RegisterIsoInIncpltCallback(&hpcd_USB_FS, PCD_ISOINIncompleteCallback); -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ - /* USER CODE BEGIN EndPoint_Configuration */ - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x00 , PCD_SNG_BUF, 0x18); - 8008490: 687b ldr r3, [r7, #4] - 8008492: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 8008496: 2318 movs r3, #24 - 8008498: 2200 movs r2, #0 - 800849a: 2100 movs r1, #0 - 800849c: f7fa fae6 bl 8002a6c - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x80 , PCD_SNG_BUF, 0x58); - 80084a0: 687b ldr r3, [r7, #4] - 80084a2: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 80084a6: 2358 movs r3, #88 @ 0x58 - 80084a8: 2200 movs r2, #0 - 80084aa: 2180 movs r1, #128 @ 0x80 - 80084ac: f7fa fade bl 8002a6c - /* USER CODE END EndPoint_Configuration */ - /* USER CODE BEGIN EndPoint_Configuration_CDC */ - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x81 , PCD_SNG_BUF, 0xC0); - 80084b0: 687b ldr r3, [r7, #4] - 80084b2: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 80084b6: 23c0 movs r3, #192 @ 0xc0 - 80084b8: 2200 movs r2, #0 - 80084ba: 2181 movs r1, #129 @ 0x81 - 80084bc: f7fa fad6 bl 8002a6c - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x01 , PCD_SNG_BUF, 0x110); - 80084c0: 687b ldr r3, [r7, #4] - 80084c2: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 80084c6: f44f 7388 mov.w r3, #272 @ 0x110 - 80084ca: 2200 movs r2, #0 - 80084cc: 2101 movs r1, #1 - 80084ce: f7fa facd bl 8002a6c - HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x82 , PCD_SNG_BUF, 0x100); - 80084d2: 687b ldr r3, [r7, #4] - 80084d4: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 80084d8: f44f 7380 mov.w r3, #256 @ 0x100 - 80084dc: 2200 movs r2, #0 - 80084de: 2182 movs r1, #130 @ 0x82 - 80084e0: f7fa fac4 bl 8002a6c - /* USER CODE END EndPoint_Configuration_CDC */ - return USBD_OK; - 80084e4: 2300 movs r3, #0 -} - 80084e6: 4618 mov r0, r3 - 80084e8: 3708 adds r7, #8 - 80084ea: 46bd mov sp, r7 - 80084ec: bd80 pop {r7, pc} - 80084ee: bf00 nop - 80084f0: 20001094 .word 0x20001094 - 80084f4: 40005c00 .word 0x40005c00 - -080084f8 : - * @brief Starts the low level portion of the device driver. - * @param pdev: Device handle - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev) -{ - 80084f8: b580 push {r7, lr} - 80084fa: b084 sub sp, #16 - 80084fc: af00 add r7, sp, #0 - 80084fe: 6078 str r0, [r7, #4] - HAL_StatusTypeDef hal_status = HAL_OK; - 8008500: 2300 movs r3, #0 - 8008502: 73fb strb r3, [r7, #15] - USBD_StatusTypeDef usb_status = USBD_OK; - 8008504: 2300 movs r3, #0 - 8008506: 73bb strb r3, [r7, #14] - - hal_status = HAL_PCD_Start(pdev->pData); - 8008508: 687b ldr r3, [r7, #4] - 800850a: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 800850e: 4618 mov r0, r3 - 8008510: f7f8 fe84 bl 800121c - 8008514: 4603 mov r3, r0 - 8008516: 73fb strb r3, [r7, #15] - - usb_status = USBD_Get_USB_Status(hal_status); - 8008518: 7bfb ldrb r3, [r7, #15] - 800851a: 4618 mov r0, r3 - 800851c: f000 f94e bl 80087bc - 8008520: 4603 mov r3, r0 - 8008522: 73bb strb r3, [r7, #14] - - return usb_status; - 8008524: 7bbb ldrb r3, [r7, #14] -} - 8008526: 4618 mov r0, r3 - 8008528: 3710 adds r7, #16 - 800852a: 46bd mov sp, r7 - 800852c: bd80 pop {r7, pc} - -0800852e : - * @param ep_type: Endpoint type - * @param ep_mps: Endpoint max packet size - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps) -{ - 800852e: b580 push {r7, lr} - 8008530: b084 sub sp, #16 - 8008532: af00 add r7, sp, #0 - 8008534: 6078 str r0, [r7, #4] - 8008536: 4608 mov r0, r1 - 8008538: 4611 mov r1, r2 - 800853a: 461a mov r2, r3 - 800853c: 4603 mov r3, r0 - 800853e: 70fb strb r3, [r7, #3] - 8008540: 460b mov r3, r1 - 8008542: 70bb strb r3, [r7, #2] - 8008544: 4613 mov r3, r2 - 8008546: 803b strh r3, [r7, #0] - HAL_StatusTypeDef hal_status = HAL_OK; - 8008548: 2300 movs r3, #0 - 800854a: 73fb strb r3, [r7, #15] - USBD_StatusTypeDef usb_status = USBD_OK; - 800854c: 2300 movs r3, #0 - 800854e: 73bb strb r3, [r7, #14] - - hal_status = HAL_PCD_EP_Open(pdev->pData, ep_addr, ep_mps, ep_type); - 8008550: 687b ldr r3, [r7, #4] - 8008552: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 8008556: 78bb ldrb r3, [r7, #2] - 8008558: 883a ldrh r2, [r7, #0] - 800855a: 78f9 ldrb r1, [r7, #3] - 800855c: f7f8 ffd8 bl 8001510 - 8008560: 4603 mov r3, r0 - 8008562: 73fb strb r3, [r7, #15] - - usb_status = USBD_Get_USB_Status(hal_status); - 8008564: 7bfb ldrb r3, [r7, #15] - 8008566: 4618 mov r0, r3 - 8008568: f000 f928 bl 80087bc - 800856c: 4603 mov r3, r0 - 800856e: 73bb strb r3, [r7, #14] - - return usb_status; - 8008570: 7bbb ldrb r3, [r7, #14] -} - 8008572: 4618 mov r0, r3 - 8008574: 3710 adds r7, #16 - 8008576: 46bd mov sp, r7 - 8008578: bd80 pop {r7, pc} - -0800857a : - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - 800857a: b580 push {r7, lr} - 800857c: b084 sub sp, #16 - 800857e: af00 add r7, sp, #0 - 8008580: 6078 str r0, [r7, #4] - 8008582: 460b mov r3, r1 - 8008584: 70fb strb r3, [r7, #3] - HAL_StatusTypeDef hal_status = HAL_OK; - 8008586: 2300 movs r3, #0 - 8008588: 73fb strb r3, [r7, #15] - USBD_StatusTypeDef usb_status = USBD_OK; - 800858a: 2300 movs r3, #0 - 800858c: 73bb strb r3, [r7, #14] - - hal_status = HAL_PCD_EP_Close(pdev->pData, ep_addr); - 800858e: 687b ldr r3, [r7, #4] - 8008590: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 8008594: 78fa ldrb r2, [r7, #3] - 8008596: 4611 mov r1, r2 - 8008598: 4618 mov r0, r3 - 800859a: f7f9 f816 bl 80015ca - 800859e: 4603 mov r3, r0 - 80085a0: 73fb strb r3, [r7, #15] - - usb_status = USBD_Get_USB_Status(hal_status); - 80085a2: 7bfb ldrb r3, [r7, #15] - 80085a4: 4618 mov r0, r3 - 80085a6: f000 f909 bl 80087bc - 80085aa: 4603 mov r3, r0 - 80085ac: 73bb strb r3, [r7, #14] - - return usb_status; - 80085ae: 7bbb ldrb r3, [r7, #14] -} - 80085b0: 4618 mov r0, r3 - 80085b2: 3710 adds r7, #16 - 80085b4: 46bd mov sp, r7 - 80085b6: bd80 pop {r7, pc} - -080085b8 : - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - 80085b8: b580 push {r7, lr} - 80085ba: b084 sub sp, #16 - 80085bc: af00 add r7, sp, #0 - 80085be: 6078 str r0, [r7, #4] - 80085c0: 460b mov r3, r1 - 80085c2: 70fb strb r3, [r7, #3] - HAL_StatusTypeDef hal_status = HAL_OK; - 80085c4: 2300 movs r3, #0 - 80085c6: 73fb strb r3, [r7, #15] - USBD_StatusTypeDef usb_status = USBD_OK; - 80085c8: 2300 movs r3, #0 - 80085ca: 73bb strb r3, [r7, #14] - - hal_status = HAL_PCD_EP_SetStall(pdev->pData, ep_addr); - 80085cc: 687b ldr r3, [r7, #4] - 80085ce: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 80085d2: 78fa ldrb r2, [r7, #3] - 80085d4: 4611 mov r1, r2 - 80085d6: 4618 mov r0, r3 - 80085d8: f7f9 f8be bl 8001758 - 80085dc: 4603 mov r3, r0 - 80085de: 73fb strb r3, [r7, #15] - - usb_status = USBD_Get_USB_Status(hal_status); - 80085e0: 7bfb ldrb r3, [r7, #15] - 80085e2: 4618 mov r0, r3 - 80085e4: f000 f8ea bl 80087bc - 80085e8: 4603 mov r3, r0 - 80085ea: 73bb strb r3, [r7, #14] - - return usb_status; - 80085ec: 7bbb ldrb r3, [r7, #14] -} - 80085ee: 4618 mov r0, r3 - 80085f0: 3710 adds r7, #16 - 80085f2: 46bd mov sp, r7 - 80085f4: bd80 pop {r7, pc} - -080085f6 : - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - 80085f6: b580 push {r7, lr} - 80085f8: b084 sub sp, #16 - 80085fa: af00 add r7, sp, #0 - 80085fc: 6078 str r0, [r7, #4] - 80085fe: 460b mov r3, r1 - 8008600: 70fb strb r3, [r7, #3] - HAL_StatusTypeDef hal_status = HAL_OK; - 8008602: 2300 movs r3, #0 - 8008604: 73fb strb r3, [r7, #15] - USBD_StatusTypeDef usb_status = USBD_OK; - 8008606: 2300 movs r3, #0 - 8008608: 73bb strb r3, [r7, #14] - - hal_status = HAL_PCD_EP_ClrStall(pdev->pData, ep_addr); - 800860a: 687b ldr r3, [r7, #4] - 800860c: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 8008610: 78fa ldrb r2, [r7, #3] - 8008612: 4611 mov r1, r2 - 8008614: 4618 mov r0, r3 - 8008616: f7f9 f8ff bl 8001818 - 800861a: 4603 mov r3, r0 - 800861c: 73fb strb r3, [r7, #15] - - usb_status = USBD_Get_USB_Status(hal_status); - 800861e: 7bfb ldrb r3, [r7, #15] - 8008620: 4618 mov r0, r3 - 8008622: f000 f8cb bl 80087bc - 8008626: 4603 mov r3, r0 - 8008628: 73bb strb r3, [r7, #14] - - return usb_status; - 800862a: 7bbb ldrb r3, [r7, #14] -} - 800862c: 4618 mov r0, r3 - 800862e: 3710 adds r7, #16 - 8008630: 46bd mov sp, r7 - 8008632: bd80 pop {r7, pc} - -08008634 : - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval Stall (1: Yes, 0: No) - */ -uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - 8008634: b480 push {r7} - 8008636: b085 sub sp, #20 - 8008638: af00 add r7, sp, #0 - 800863a: 6078 str r0, [r7, #4] - 800863c: 460b mov r3, r1 - 800863e: 70fb strb r3, [r7, #3] - PCD_HandleTypeDef *hpcd = (PCD_HandleTypeDef*) pdev->pData; - 8008640: 687b ldr r3, [r7, #4] - 8008642: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 8008646: 60fb str r3, [r7, #12] - - if((ep_addr & 0x80) == 0x80) - 8008648: f997 3003 ldrsb.w r3, [r7, #3] - 800864c: 2b00 cmp r3, #0 - 800864e: da0b bge.n 8008668 - { - return hpcd->IN_ep[ep_addr & 0x7F].is_stall; - 8008650: 78fb ldrb r3, [r7, #3] - 8008652: f003 027f and.w r2, r3, #127 @ 0x7f - 8008656: 68f9 ldr r1, [r7, #12] - 8008658: 4613 mov r3, r2 - 800865a: 009b lsls r3, r3, #2 - 800865c: 4413 add r3, r2 - 800865e: 00db lsls r3, r3, #3 - 8008660: 440b add r3, r1 - 8008662: 3312 adds r3, #18 - 8008664: 781b ldrb r3, [r3, #0] - 8008666: e00b b.n 8008680 - } - else - { - return hpcd->OUT_ep[ep_addr & 0x7F].is_stall; - 8008668: 78fb ldrb r3, [r7, #3] - 800866a: f003 027f and.w r2, r3, #127 @ 0x7f - 800866e: 68f9 ldr r1, [r7, #12] - 8008670: 4613 mov r3, r2 - 8008672: 009b lsls r3, r3, #2 - 8008674: 4413 add r3, r2 - 8008676: 00db lsls r3, r3, #3 - 8008678: 440b add r3, r1 - 800867a: f503 73a9 add.w r3, r3, #338 @ 0x152 - 800867e: 781b ldrb r3, [r3, #0] - } -} - 8008680: 4618 mov r0, r3 - 8008682: 3714 adds r7, #20 - 8008684: 46bd mov sp, r7 - 8008686: bc80 pop {r7} - 8008688: 4770 bx lr - -0800868a : - * @param pdev: Device handle - * @param dev_addr: Device address - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr) -{ - 800868a: b580 push {r7, lr} - 800868c: b084 sub sp, #16 - 800868e: af00 add r7, sp, #0 - 8008690: 6078 str r0, [r7, #4] - 8008692: 460b mov r3, r1 - 8008694: 70fb strb r3, [r7, #3] - HAL_StatusTypeDef hal_status = HAL_OK; - 8008696: 2300 movs r3, #0 - 8008698: 73fb strb r3, [r7, #15] - USBD_StatusTypeDef usb_status = USBD_OK; - 800869a: 2300 movs r3, #0 - 800869c: 73bb strb r3, [r7, #14] - - hal_status = HAL_PCD_SetAddress(pdev->pData, dev_addr); - 800869e: 687b ldr r3, [r7, #4] - 80086a0: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 80086a4: 78fa ldrb r2, [r7, #3] - 80086a6: 4611 mov r1, r2 - 80086a8: 4618 mov r0, r3 - 80086aa: f7f8 ff0d bl 80014c8 - 80086ae: 4603 mov r3, r0 - 80086b0: 73fb strb r3, [r7, #15] - - usb_status = USBD_Get_USB_Status(hal_status); - 80086b2: 7bfb ldrb r3, [r7, #15] - 80086b4: 4618 mov r0, r3 - 80086b6: f000 f881 bl 80087bc - 80086ba: 4603 mov r3, r0 - 80086bc: 73bb strb r3, [r7, #14] - - return usb_status; - 80086be: 7bbb ldrb r3, [r7, #14] -} - 80086c0: 4618 mov r0, r3 - 80086c2: 3710 adds r7, #16 - 80086c4: 46bd mov sp, r7 - 80086c6: bd80 pop {r7, pc} - -080086c8 : - * @param pbuf: Pointer to data to be sent - * @param size: Data size - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) -{ - 80086c8: b580 push {r7, lr} - 80086ca: b086 sub sp, #24 - 80086cc: af00 add r7, sp, #0 - 80086ce: 60f8 str r0, [r7, #12] - 80086d0: 607a str r2, [r7, #4] - 80086d2: 461a mov r2, r3 - 80086d4: 460b mov r3, r1 - 80086d6: 72fb strb r3, [r7, #11] - 80086d8: 4613 mov r3, r2 - 80086da: 813b strh r3, [r7, #8] - HAL_StatusTypeDef hal_status = HAL_OK; - 80086dc: 2300 movs r3, #0 - 80086de: 75fb strb r3, [r7, #23] - USBD_StatusTypeDef usb_status = USBD_OK; - 80086e0: 2300 movs r3, #0 - 80086e2: 75bb strb r3, [r7, #22] - - hal_status = HAL_PCD_EP_Transmit(pdev->pData, ep_addr, pbuf, size); - 80086e4: 68fb ldr r3, [r7, #12] - 80086e6: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 80086ea: 893b ldrh r3, [r7, #8] - 80086ec: 7af9 ldrb r1, [r7, #11] - 80086ee: 687a ldr r2, [r7, #4] - 80086f0: f7f8 fffb bl 80016ea - 80086f4: 4603 mov r3, r0 - 80086f6: 75fb strb r3, [r7, #23] - - usb_status = USBD_Get_USB_Status(hal_status); - 80086f8: 7dfb ldrb r3, [r7, #23] - 80086fa: 4618 mov r0, r3 - 80086fc: f000 f85e bl 80087bc - 8008700: 4603 mov r3, r0 - 8008702: 75bb strb r3, [r7, #22] - - return usb_status; - 8008704: 7dbb ldrb r3, [r7, #22] -} - 8008706: 4618 mov r0, r3 - 8008708: 3718 adds r7, #24 - 800870a: 46bd mov sp, r7 - 800870c: bd80 pop {r7, pc} - -0800870e : - * @param pbuf: Pointer to data to be received - * @param size: Data size - * @retval USBD status - */ -USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) -{ - 800870e: b580 push {r7, lr} - 8008710: b086 sub sp, #24 - 8008712: af00 add r7, sp, #0 - 8008714: 60f8 str r0, [r7, #12] - 8008716: 607a str r2, [r7, #4] - 8008718: 461a mov r2, r3 - 800871a: 460b mov r3, r1 - 800871c: 72fb strb r3, [r7, #11] - 800871e: 4613 mov r3, r2 - 8008720: 813b strh r3, [r7, #8] - HAL_StatusTypeDef hal_status = HAL_OK; - 8008722: 2300 movs r3, #0 - 8008724: 75fb strb r3, [r7, #23] - USBD_StatusTypeDef usb_status = USBD_OK; - 8008726: 2300 movs r3, #0 - 8008728: 75bb strb r3, [r7, #22] - - hal_status = HAL_PCD_EP_Receive(pdev->pData, ep_addr, pbuf, size); - 800872a: 68fb ldr r3, [r7, #12] - 800872c: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 - 8008730: 893b ldrh r3, [r7, #8] - 8008732: 7af9 ldrb r1, [r7, #11] - 8008734: 687a ldr r2, [r7, #4] - 8008736: f7f8 ff90 bl 800165a - 800873a: 4603 mov r3, r0 - 800873c: 75fb strb r3, [r7, #23] - - usb_status = USBD_Get_USB_Status(hal_status); - 800873e: 7dfb ldrb r3, [r7, #23] - 8008740: 4618 mov r0, r3 - 8008742: f000 f83b bl 80087bc - 8008746: 4603 mov r3, r0 - 8008748: 75bb strb r3, [r7, #22] - - return usb_status; - 800874a: 7dbb ldrb r3, [r7, #22] -} - 800874c: 4618 mov r0, r3 - 800874e: 3718 adds r7, #24 - 8008750: 46bd mov sp, r7 - 8008752: bd80 pop {r7, pc} - -08008754 : - * @param pdev: Device handle - * @param ep_addr: Endpoint number - * @retval Received Data Size - */ -uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr) -{ - 8008754: b580 push {r7, lr} - 8008756: b082 sub sp, #8 - 8008758: af00 add r7, sp, #0 - 800875a: 6078 str r0, [r7, #4] - 800875c: 460b mov r3, r1 - 800875e: 70fb strb r3, [r7, #3] - return HAL_PCD_EP_GetRxCount((PCD_HandleTypeDef*) pdev->pData, ep_addr); - 8008760: 687b ldr r3, [r7, #4] - 8008762: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 - 8008766: 78fa ldrb r2, [r7, #3] - 8008768: 4611 mov r1, r2 - 800876a: 4618 mov r0, r3 - 800876c: f7f8 ffa6 bl 80016bc - 8008770: 4603 mov r3, r0 -} - 8008772: 4618 mov r0, r3 - 8008774: 3708 adds r7, #8 - 8008776: 46bd mov sp, r7 - 8008778: bd80 pop {r7, pc} - ... - -0800877c : - * @brief Static single allocation. - * @param size: Size of allocated memory - * @retval None - */ -void *USBD_static_malloc(uint32_t size) -{ - 800877c: b480 push {r7} - 800877e: b083 sub sp, #12 - 8008780: af00 add r7, sp, #0 - 8008782: 6078 str r0, [r7, #4] - static uint32_t mem[(sizeof(USBD_CDC_HandleTypeDef)/4)+1];/* On 32-bit boundary */ - return mem; - 8008784: 4b02 ldr r3, [pc, #8] @ (8008790 ) -} - 8008786: 4618 mov r0, r3 - 8008788: 370c adds r7, #12 - 800878a: 46bd mov sp, r7 - 800878c: bc80 pop {r7} - 800878e: 4770 bx lr - 8008790: 2000136c .word 0x2000136c - -08008794 : - * @brief Dummy memory free - * @param p: Pointer to allocated memory address - * @retval None - */ -void USBD_static_free(void *p) -{ - 8008794: b480 push {r7} - 8008796: b083 sub sp, #12 - 8008798: af00 add r7, sp, #0 - 800879a: 6078 str r0, [r7, #4] - -} - 800879c: bf00 nop - 800879e: 370c adds r7, #12 - 80087a0: 46bd mov sp, r7 - 80087a2: bc80 pop {r7} - 80087a4: 4770 bx lr - -080087a6 : -#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) -static void PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) -#else -void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) -#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ -{ - 80087a6: b480 push {r7} - 80087a8: b083 sub sp, #12 - 80087aa: af00 add r7, sp, #0 - 80087ac: 6078 str r0, [r7, #4] - 80087ae: 460b mov r3, r1 - 80087b0: 70fb strb r3, [r7, #3] - { - /* Configure High connection state. */ - - } - /* USER CODE END 6 */ -} - 80087b2: bf00 nop - 80087b4: 370c adds r7, #12 - 80087b6: 46bd mov sp, r7 - 80087b8: bc80 pop {r7} - 80087ba: 4770 bx lr - -080087bc : - * @brief Returns the USB status depending on the HAL status: - * @param hal_status: HAL status - * @retval USB status - */ -USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status) -{ - 80087bc: b480 push {r7} - 80087be: b085 sub sp, #20 - 80087c0: af00 add r7, sp, #0 - 80087c2: 4603 mov r3, r0 - 80087c4: 71fb strb r3, [r7, #7] - USBD_StatusTypeDef usb_status = USBD_OK; - 80087c6: 2300 movs r3, #0 - 80087c8: 73fb strb r3, [r7, #15] - - switch (hal_status) - 80087ca: 79fb ldrb r3, [r7, #7] - 80087cc: 2b03 cmp r3, #3 - 80087ce: d817 bhi.n 8008800 - 80087d0: a201 add r2, pc, #4 @ (adr r2, 80087d8 ) - 80087d2: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80087d6: bf00 nop - 80087d8: 080087e9 .word 0x080087e9 - 80087dc: 080087ef .word 0x080087ef - 80087e0: 080087f5 .word 0x080087f5 - 80087e4: 080087fb .word 0x080087fb - { - case HAL_OK : - usb_status = USBD_OK; - 80087e8: 2300 movs r3, #0 - 80087ea: 73fb strb r3, [r7, #15] - break; - 80087ec: e00b b.n 8008806 - case HAL_ERROR : - usb_status = USBD_FAIL; - 80087ee: 2302 movs r3, #2 - 80087f0: 73fb strb r3, [r7, #15] - break; - 80087f2: e008 b.n 8008806 - case HAL_BUSY : - usb_status = USBD_BUSY; - 80087f4: 2301 movs r3, #1 - 80087f6: 73fb strb r3, [r7, #15] - break; - 80087f8: e005 b.n 8008806 - case HAL_TIMEOUT : - usb_status = USBD_FAIL; - 80087fa: 2302 movs r3, #2 - 80087fc: 73fb strb r3, [r7, #15] - break; - 80087fe: e002 b.n 8008806 - default : - usb_status = USBD_FAIL; - 8008800: 2302 movs r3, #2 - 8008802: 73fb strb r3, [r7, #15] - break; - 8008804: bf00 nop - } - return usb_status; - 8008806: 7bfb ldrb r3, [r7, #15] -} - 8008808: 4618 mov r0, r3 - 800880a: 3714 adds r7, #20 - 800880c: 46bd mov sp, r7 - 800880e: bc80 pop {r7} - 8008810: 4770 bx lr - 8008812: bf00 nop - -08008814 : - 8008814: b40e push {r1, r2, r3} - 8008816: f06f 4100 mvn.w r1, #2147483648 @ 0x80000000 - 800881a: b510 push {r4, lr} - 800881c: 2400 movs r4, #0 - 800881e: b09d sub sp, #116 @ 0x74 - 8008820: ab1f add r3, sp, #124 @ 0x7c - 8008822: 9002 str r0, [sp, #8] - 8008824: 9006 str r0, [sp, #24] - 8008826: 9107 str r1, [sp, #28] - 8008828: 9104 str r1, [sp, #16] - 800882a: 4809 ldr r0, [pc, #36] @ (8008850 ) - 800882c: 4909 ldr r1, [pc, #36] @ (8008854 ) - 800882e: f853 2b04 ldr.w r2, [r3], #4 - 8008832: 9105 str r1, [sp, #20] - 8008834: 6800 ldr r0, [r0, #0] - 8008836: a902 add r1, sp, #8 - 8008838: 9301 str r3, [sp, #4] - 800883a: 941b str r4, [sp, #108] @ 0x6c - 800883c: f000 f992 bl 8008b64 <_svfiprintf_r> - 8008840: 9b02 ldr r3, [sp, #8] - 8008842: 701c strb r4, [r3, #0] - 8008844: b01d add sp, #116 @ 0x74 - 8008846: e8bd 4010 ldmia.w sp!, {r4, lr} - 800884a: b003 add sp, #12 - 800884c: 4770 bx lr - 800884e: bf00 nop - 8008850: 2000017c .word 0x2000017c - 8008854: ffff0208 .word 0xffff0208 - -08008858 : - 8008858: 4603 mov r3, r0 - 800885a: 4402 add r2, r0 - 800885c: 4293 cmp r3, r2 - 800885e: d100 bne.n 8008862 - 8008860: 4770 bx lr - 8008862: f803 1b01 strb.w r1, [r3], #1 - 8008866: e7f9 b.n 800885c - -08008868 <__errno>: - 8008868: 4b01 ldr r3, [pc, #4] @ (8008870 <__errno+0x8>) - 800886a: 6818 ldr r0, [r3, #0] - 800886c: 4770 bx lr - 800886e: bf00 nop - 8008870: 2000017c .word 0x2000017c - -08008874 <__libc_init_array>: - 8008874: b570 push {r4, r5, r6, lr} - 8008876: 2600 movs r6, #0 - 8008878: 4d0c ldr r5, [pc, #48] @ (80088ac <__libc_init_array+0x38>) - 800887a: 4c0d ldr r4, [pc, #52] @ (80088b0 <__libc_init_array+0x3c>) - 800887c: 1b64 subs r4, r4, r5 - 800887e: 10a4 asrs r4, r4, #2 - 8008880: 42a6 cmp r6, r4 - 8008882: d109 bne.n 8008898 <__libc_init_array+0x24> - 8008884: f000 fc76 bl 8009174 <_init> - 8008888: 2600 movs r6, #0 - 800888a: 4d0a ldr r5, [pc, #40] @ (80088b4 <__libc_init_array+0x40>) - 800888c: 4c0a ldr r4, [pc, #40] @ (80088b8 <__libc_init_array+0x44>) - 800888e: 1b64 subs r4, r4, r5 - 8008890: 10a4 asrs r4, r4, #2 - 8008892: 42a6 cmp r6, r4 - 8008894: d105 bne.n 80088a2 <__libc_init_array+0x2e> - 8008896: bd70 pop {r4, r5, r6, pc} - 8008898: f855 3b04 ldr.w r3, [r5], #4 - 800889c: 4798 blx r3 - 800889e: 3601 adds r6, #1 - 80088a0: e7ee b.n 8008880 <__libc_init_array+0xc> - 80088a2: f855 3b04 ldr.w r3, [r5], #4 - 80088a6: 4798 blx r3 - 80088a8: 3601 adds r6, #1 - 80088aa: e7f2 b.n 8008892 <__libc_init_array+0x1e> - 80088ac: 0800923c .word 0x0800923c - 80088b0: 0800923c .word 0x0800923c - 80088b4: 0800923c .word 0x0800923c - 80088b8: 08009240 .word 0x08009240 - -080088bc <__retarget_lock_acquire_recursive>: - 80088bc: 4770 bx lr - -080088be <__retarget_lock_release_recursive>: - 80088be: 4770 bx lr - -080088c0 <_free_r>: - 80088c0: b538 push {r3, r4, r5, lr} - 80088c2: 4605 mov r5, r0 - 80088c4: 2900 cmp r1, #0 - 80088c6: d040 beq.n 800894a <_free_r+0x8a> - 80088c8: f851 3c04 ldr.w r3, [r1, #-4] - 80088cc: 1f0c subs r4, r1, #4 - 80088ce: 2b00 cmp r3, #0 - 80088d0: bfb8 it lt - 80088d2: 18e4 addlt r4, r4, r3 - 80088d4: f000 f8de bl 8008a94 <__malloc_lock> - 80088d8: 4a1c ldr r2, [pc, #112] @ (800894c <_free_r+0x8c>) - 80088da: 6813 ldr r3, [r2, #0] - 80088dc: b933 cbnz r3, 80088ec <_free_r+0x2c> - 80088de: 6063 str r3, [r4, #4] - 80088e0: 6014 str r4, [r2, #0] - 80088e2: 4628 mov r0, r5 - 80088e4: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 80088e8: f000 b8da b.w 8008aa0 <__malloc_unlock> - 80088ec: 42a3 cmp r3, r4 - 80088ee: d908 bls.n 8008902 <_free_r+0x42> - 80088f0: 6820 ldr r0, [r4, #0] - 80088f2: 1821 adds r1, r4, r0 - 80088f4: 428b cmp r3, r1 - 80088f6: bf01 itttt eq - 80088f8: 6819 ldreq r1, [r3, #0] - 80088fa: 685b ldreq r3, [r3, #4] - 80088fc: 1809 addeq r1, r1, r0 - 80088fe: 6021 streq r1, [r4, #0] - 8008900: e7ed b.n 80088de <_free_r+0x1e> - 8008902: 461a mov r2, r3 - 8008904: 685b ldr r3, [r3, #4] - 8008906: b10b cbz r3, 800890c <_free_r+0x4c> - 8008908: 42a3 cmp r3, r4 - 800890a: d9fa bls.n 8008902 <_free_r+0x42> - 800890c: 6811 ldr r1, [r2, #0] - 800890e: 1850 adds r0, r2, r1 - 8008910: 42a0 cmp r0, r4 - 8008912: d10b bne.n 800892c <_free_r+0x6c> - 8008914: 6820 ldr r0, [r4, #0] - 8008916: 4401 add r1, r0 - 8008918: 1850 adds r0, r2, r1 - 800891a: 4283 cmp r3, r0 - 800891c: 6011 str r1, [r2, #0] - 800891e: d1e0 bne.n 80088e2 <_free_r+0x22> - 8008920: 6818 ldr r0, [r3, #0] - 8008922: 685b ldr r3, [r3, #4] - 8008924: 4408 add r0, r1 - 8008926: 6010 str r0, [r2, #0] - 8008928: 6053 str r3, [r2, #4] - 800892a: e7da b.n 80088e2 <_free_r+0x22> - 800892c: d902 bls.n 8008934 <_free_r+0x74> - 800892e: 230c movs r3, #12 - 8008930: 602b str r3, [r5, #0] - 8008932: e7d6 b.n 80088e2 <_free_r+0x22> - 8008934: 6820 ldr r0, [r4, #0] - 8008936: 1821 adds r1, r4, r0 - 8008938: 428b cmp r3, r1 - 800893a: bf01 itttt eq - 800893c: 6819 ldreq r1, [r3, #0] - 800893e: 685b ldreq r3, [r3, #4] - 8008940: 1809 addeq r1, r1, r0 - 8008942: 6021 streq r1, [r4, #0] - 8008944: 6063 str r3, [r4, #4] - 8008946: 6054 str r4, [r2, #4] - 8008948: e7cb b.n 80088e2 <_free_r+0x22> - 800894a: bd38 pop {r3, r4, r5, pc} - 800894c: 200016d0 .word 0x200016d0 - -08008950 : - 8008950: b570 push {r4, r5, r6, lr} - 8008952: 4e0f ldr r6, [pc, #60] @ (8008990 ) - 8008954: 460c mov r4, r1 - 8008956: 6831 ldr r1, [r6, #0] - 8008958: 4605 mov r5, r0 - 800895a: b911 cbnz r1, 8008962 - 800895c: f000 fba8 bl 80090b0 <_sbrk_r> - 8008960: 6030 str r0, [r6, #0] - 8008962: 4621 mov r1, r4 - 8008964: 4628 mov r0, r5 - 8008966: f000 fba3 bl 80090b0 <_sbrk_r> - 800896a: 1c43 adds r3, r0, #1 - 800896c: d103 bne.n 8008976 - 800896e: f04f 34ff mov.w r4, #4294967295 - 8008972: 4620 mov r0, r4 - 8008974: bd70 pop {r4, r5, r6, pc} - 8008976: 1cc4 adds r4, r0, #3 - 8008978: f024 0403 bic.w r4, r4, #3 - 800897c: 42a0 cmp r0, r4 - 800897e: d0f8 beq.n 8008972 - 8008980: 1a21 subs r1, r4, r0 - 8008982: 4628 mov r0, r5 - 8008984: f000 fb94 bl 80090b0 <_sbrk_r> - 8008988: 3001 adds r0, #1 - 800898a: d1f2 bne.n 8008972 - 800898c: e7ef b.n 800896e - 800898e: bf00 nop - 8008990: 200016cc .word 0x200016cc - -08008994 <_malloc_r>: - 8008994: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 8008998: 1ccd adds r5, r1, #3 - 800899a: f025 0503 bic.w r5, r5, #3 - 800899e: 3508 adds r5, #8 - 80089a0: 2d0c cmp r5, #12 - 80089a2: bf38 it cc - 80089a4: 250c movcc r5, #12 - 80089a6: 2d00 cmp r5, #0 - 80089a8: 4606 mov r6, r0 - 80089aa: db01 blt.n 80089b0 <_malloc_r+0x1c> - 80089ac: 42a9 cmp r1, r5 - 80089ae: d904 bls.n 80089ba <_malloc_r+0x26> - 80089b0: 230c movs r3, #12 - 80089b2: 6033 str r3, [r6, #0] - 80089b4: 2000 movs r0, #0 - 80089b6: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 80089ba: f8df 80d4 ldr.w r8, [pc, #212] @ 8008a90 <_malloc_r+0xfc> - 80089be: f000 f869 bl 8008a94 <__malloc_lock> - 80089c2: f8d8 3000 ldr.w r3, [r8] - 80089c6: 461c mov r4, r3 - 80089c8: bb44 cbnz r4, 8008a1c <_malloc_r+0x88> - 80089ca: 4629 mov r1, r5 - 80089cc: 4630 mov r0, r6 - 80089ce: f7ff ffbf bl 8008950 - 80089d2: 1c43 adds r3, r0, #1 - 80089d4: 4604 mov r4, r0 - 80089d6: d158 bne.n 8008a8a <_malloc_r+0xf6> - 80089d8: f8d8 4000 ldr.w r4, [r8] - 80089dc: 4627 mov r7, r4 - 80089de: 2f00 cmp r7, #0 - 80089e0: d143 bne.n 8008a6a <_malloc_r+0xd6> - 80089e2: 2c00 cmp r4, #0 - 80089e4: d04b beq.n 8008a7e <_malloc_r+0xea> - 80089e6: 6823 ldr r3, [r4, #0] - 80089e8: 4639 mov r1, r7 - 80089ea: 4630 mov r0, r6 - 80089ec: eb04 0903 add.w r9, r4, r3 - 80089f0: f000 fb5e bl 80090b0 <_sbrk_r> - 80089f4: 4581 cmp r9, r0 - 80089f6: d142 bne.n 8008a7e <_malloc_r+0xea> - 80089f8: 6821 ldr r1, [r4, #0] - 80089fa: 4630 mov r0, r6 - 80089fc: 1a6d subs r5, r5, r1 - 80089fe: 4629 mov r1, r5 - 8008a00: f7ff ffa6 bl 8008950 - 8008a04: 3001 adds r0, #1 - 8008a06: d03a beq.n 8008a7e <_malloc_r+0xea> - 8008a08: 6823 ldr r3, [r4, #0] - 8008a0a: 442b add r3, r5 - 8008a0c: 6023 str r3, [r4, #0] - 8008a0e: f8d8 3000 ldr.w r3, [r8] - 8008a12: 685a ldr r2, [r3, #4] - 8008a14: bb62 cbnz r2, 8008a70 <_malloc_r+0xdc> - 8008a16: f8c8 7000 str.w r7, [r8] - 8008a1a: e00f b.n 8008a3c <_malloc_r+0xa8> - 8008a1c: 6822 ldr r2, [r4, #0] - 8008a1e: 1b52 subs r2, r2, r5 - 8008a20: d420 bmi.n 8008a64 <_malloc_r+0xd0> - 8008a22: 2a0b cmp r2, #11 - 8008a24: d917 bls.n 8008a56 <_malloc_r+0xc2> - 8008a26: 1961 adds r1, r4, r5 - 8008a28: 42a3 cmp r3, r4 - 8008a2a: 6025 str r5, [r4, #0] - 8008a2c: bf18 it ne - 8008a2e: 6059 strne r1, [r3, #4] - 8008a30: 6863 ldr r3, [r4, #4] - 8008a32: bf08 it eq - 8008a34: f8c8 1000 streq.w r1, [r8] - 8008a38: 5162 str r2, [r4, r5] - 8008a3a: 604b str r3, [r1, #4] - 8008a3c: 4630 mov r0, r6 - 8008a3e: f000 f82f bl 8008aa0 <__malloc_unlock> - 8008a42: f104 000b add.w r0, r4, #11 - 8008a46: 1d23 adds r3, r4, #4 - 8008a48: f020 0007 bic.w r0, r0, #7 - 8008a4c: 1ac2 subs r2, r0, r3 - 8008a4e: bf1c itt ne - 8008a50: 1a1b subne r3, r3, r0 - 8008a52: 50a3 strne r3, [r4, r2] - 8008a54: e7af b.n 80089b6 <_malloc_r+0x22> - 8008a56: 6862 ldr r2, [r4, #4] - 8008a58: 42a3 cmp r3, r4 - 8008a5a: bf0c ite eq - 8008a5c: f8c8 2000 streq.w r2, [r8] - 8008a60: 605a strne r2, [r3, #4] - 8008a62: e7eb b.n 8008a3c <_malloc_r+0xa8> - 8008a64: 4623 mov r3, r4 - 8008a66: 6864 ldr r4, [r4, #4] - 8008a68: e7ae b.n 80089c8 <_malloc_r+0x34> - 8008a6a: 463c mov r4, r7 - 8008a6c: 687f ldr r7, [r7, #4] - 8008a6e: e7b6 b.n 80089de <_malloc_r+0x4a> - 8008a70: 461a mov r2, r3 - 8008a72: 685b ldr r3, [r3, #4] - 8008a74: 42a3 cmp r3, r4 - 8008a76: d1fb bne.n 8008a70 <_malloc_r+0xdc> - 8008a78: 2300 movs r3, #0 - 8008a7a: 6053 str r3, [r2, #4] - 8008a7c: e7de b.n 8008a3c <_malloc_r+0xa8> - 8008a7e: 230c movs r3, #12 - 8008a80: 4630 mov r0, r6 - 8008a82: 6033 str r3, [r6, #0] - 8008a84: f000 f80c bl 8008aa0 <__malloc_unlock> - 8008a88: e794 b.n 80089b4 <_malloc_r+0x20> - 8008a8a: 6005 str r5, [r0, #0] - 8008a8c: e7d6 b.n 8008a3c <_malloc_r+0xa8> - 8008a8e: bf00 nop - 8008a90: 200016d0 .word 0x200016d0 - -08008a94 <__malloc_lock>: - 8008a94: 4801 ldr r0, [pc, #4] @ (8008a9c <__malloc_lock+0x8>) - 8008a96: f7ff bf11 b.w 80088bc <__retarget_lock_acquire_recursive> - 8008a9a: bf00 nop - 8008a9c: 200016c8 .word 0x200016c8 - -08008aa0 <__malloc_unlock>: - 8008aa0: 4801 ldr r0, [pc, #4] @ (8008aa8 <__malloc_unlock+0x8>) - 8008aa2: f7ff bf0c b.w 80088be <__retarget_lock_release_recursive> - 8008aa6: bf00 nop - 8008aa8: 200016c8 .word 0x200016c8 - -08008aac <__ssputs_r>: - 8008aac: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 8008ab0: 461f mov r7, r3 - 8008ab2: 688e ldr r6, [r1, #8] - 8008ab4: 4682 mov sl, r0 - 8008ab6: 42be cmp r6, r7 - 8008ab8: 460c mov r4, r1 - 8008aba: 4690 mov r8, r2 - 8008abc: 680b ldr r3, [r1, #0] - 8008abe: d82d bhi.n 8008b1c <__ssputs_r+0x70> - 8008ac0: f9b1 200c ldrsh.w r2, [r1, #12] - 8008ac4: f412 6f90 tst.w r2, #1152 @ 0x480 - 8008ac8: d026 beq.n 8008b18 <__ssputs_r+0x6c> - 8008aca: 6965 ldr r5, [r4, #20] - 8008acc: 6909 ldr r1, [r1, #16] - 8008ace: eb05 0545 add.w r5, r5, r5, lsl #1 - 8008ad2: eba3 0901 sub.w r9, r3, r1 - 8008ad6: eb05 75d5 add.w r5, r5, r5, lsr #31 - 8008ada: 1c7b adds r3, r7, #1 - 8008adc: 444b add r3, r9 - 8008ade: 106d asrs r5, r5, #1 - 8008ae0: 429d cmp r5, r3 - 8008ae2: bf38 it cc - 8008ae4: 461d movcc r5, r3 - 8008ae6: 0553 lsls r3, r2, #21 - 8008ae8: d527 bpl.n 8008b3a <__ssputs_r+0x8e> - 8008aea: 4629 mov r1, r5 - 8008aec: f7ff ff52 bl 8008994 <_malloc_r> - 8008af0: 4606 mov r6, r0 - 8008af2: b360 cbz r0, 8008b4e <__ssputs_r+0xa2> - 8008af4: 464a mov r2, r9 - 8008af6: 6921 ldr r1, [r4, #16] - 8008af8: f000 faf8 bl 80090ec - 8008afc: 89a3 ldrh r3, [r4, #12] - 8008afe: f423 6390 bic.w r3, r3, #1152 @ 0x480 - 8008b02: f043 0380 orr.w r3, r3, #128 @ 0x80 - 8008b06: 81a3 strh r3, [r4, #12] - 8008b08: 6126 str r6, [r4, #16] - 8008b0a: 444e add r6, r9 - 8008b0c: 6026 str r6, [r4, #0] - 8008b0e: 463e mov r6, r7 - 8008b10: 6165 str r5, [r4, #20] - 8008b12: eba5 0509 sub.w r5, r5, r9 - 8008b16: 60a5 str r5, [r4, #8] - 8008b18: 42be cmp r6, r7 - 8008b1a: d900 bls.n 8008b1e <__ssputs_r+0x72> - 8008b1c: 463e mov r6, r7 - 8008b1e: 4632 mov r2, r6 - 8008b20: 4641 mov r1, r8 - 8008b22: 6820 ldr r0, [r4, #0] - 8008b24: f000 faaa bl 800907c - 8008b28: 2000 movs r0, #0 - 8008b2a: 68a3 ldr r3, [r4, #8] - 8008b2c: 1b9b subs r3, r3, r6 - 8008b2e: 60a3 str r3, [r4, #8] - 8008b30: 6823 ldr r3, [r4, #0] - 8008b32: 4433 add r3, r6 - 8008b34: 6023 str r3, [r4, #0] - 8008b36: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 8008b3a: 462a mov r2, r5 - 8008b3c: f000 fae4 bl 8009108 <_realloc_r> - 8008b40: 4606 mov r6, r0 - 8008b42: 2800 cmp r0, #0 - 8008b44: d1e0 bne.n 8008b08 <__ssputs_r+0x5c> - 8008b46: 4650 mov r0, sl - 8008b48: 6921 ldr r1, [r4, #16] - 8008b4a: f7ff feb9 bl 80088c0 <_free_r> - 8008b4e: 230c movs r3, #12 - 8008b50: f8ca 3000 str.w r3, [sl] - 8008b54: 89a3 ldrh r3, [r4, #12] - 8008b56: f04f 30ff mov.w r0, #4294967295 - 8008b5a: f043 0340 orr.w r3, r3, #64 @ 0x40 - 8008b5e: 81a3 strh r3, [r4, #12] - 8008b60: e7e9 b.n 8008b36 <__ssputs_r+0x8a> - ... - -08008b64 <_svfiprintf_r>: - 8008b64: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8008b68: 4698 mov r8, r3 - 8008b6a: 898b ldrh r3, [r1, #12] - 8008b6c: 4607 mov r7, r0 - 8008b6e: 061b lsls r3, r3, #24 - 8008b70: 460d mov r5, r1 - 8008b72: 4614 mov r4, r2 - 8008b74: b09d sub sp, #116 @ 0x74 - 8008b76: d510 bpl.n 8008b9a <_svfiprintf_r+0x36> - 8008b78: 690b ldr r3, [r1, #16] - 8008b7a: b973 cbnz r3, 8008b9a <_svfiprintf_r+0x36> - 8008b7c: 2140 movs r1, #64 @ 0x40 - 8008b7e: f7ff ff09 bl 8008994 <_malloc_r> - 8008b82: 6028 str r0, [r5, #0] - 8008b84: 6128 str r0, [r5, #16] - 8008b86: b930 cbnz r0, 8008b96 <_svfiprintf_r+0x32> - 8008b88: 230c movs r3, #12 - 8008b8a: 603b str r3, [r7, #0] - 8008b8c: f04f 30ff mov.w r0, #4294967295 - 8008b90: b01d add sp, #116 @ 0x74 - 8008b92: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 8008b96: 2340 movs r3, #64 @ 0x40 - 8008b98: 616b str r3, [r5, #20] - 8008b9a: 2300 movs r3, #0 - 8008b9c: 9309 str r3, [sp, #36] @ 0x24 - 8008b9e: 2320 movs r3, #32 - 8008ba0: f88d 3029 strb.w r3, [sp, #41] @ 0x29 - 8008ba4: 2330 movs r3, #48 @ 0x30 - 8008ba6: f04f 0901 mov.w r9, #1 - 8008baa: f8cd 800c str.w r8, [sp, #12] - 8008bae: f8df 8198 ldr.w r8, [pc, #408] @ 8008d48 <_svfiprintf_r+0x1e4> - 8008bb2: f88d 302a strb.w r3, [sp, #42] @ 0x2a - 8008bb6: 4623 mov r3, r4 - 8008bb8: 469a mov sl, r3 - 8008bba: f813 2b01 ldrb.w r2, [r3], #1 - 8008bbe: b10a cbz r2, 8008bc4 <_svfiprintf_r+0x60> - 8008bc0: 2a25 cmp r2, #37 @ 0x25 - 8008bc2: d1f9 bne.n 8008bb8 <_svfiprintf_r+0x54> - 8008bc4: ebba 0b04 subs.w fp, sl, r4 - 8008bc8: d00b beq.n 8008be2 <_svfiprintf_r+0x7e> - 8008bca: 465b mov r3, fp - 8008bcc: 4622 mov r2, r4 - 8008bce: 4629 mov r1, r5 - 8008bd0: 4638 mov r0, r7 - 8008bd2: f7ff ff6b bl 8008aac <__ssputs_r> - 8008bd6: 3001 adds r0, #1 - 8008bd8: f000 80a7 beq.w 8008d2a <_svfiprintf_r+0x1c6> - 8008bdc: 9a09 ldr r2, [sp, #36] @ 0x24 - 8008bde: 445a add r2, fp - 8008be0: 9209 str r2, [sp, #36] @ 0x24 - 8008be2: f89a 3000 ldrb.w r3, [sl] - 8008be6: 2b00 cmp r3, #0 - 8008be8: f000 809f beq.w 8008d2a <_svfiprintf_r+0x1c6> - 8008bec: 2300 movs r3, #0 - 8008bee: f04f 32ff mov.w r2, #4294967295 - 8008bf2: e9cd 2305 strd r2, r3, [sp, #20] - 8008bf6: f10a 0a01 add.w sl, sl, #1 - 8008bfa: 9304 str r3, [sp, #16] - 8008bfc: 9307 str r3, [sp, #28] - 8008bfe: f88d 3053 strb.w r3, [sp, #83] @ 0x53 - 8008c02: 931a str r3, [sp, #104] @ 0x68 - 8008c04: 4654 mov r4, sl - 8008c06: 2205 movs r2, #5 - 8008c08: f814 1b01 ldrb.w r1, [r4], #1 - 8008c0c: 484e ldr r0, [pc, #312] @ (8008d48 <_svfiprintf_r+0x1e4>) - 8008c0e: f000 fa5f bl 80090d0 - 8008c12: 9a04 ldr r2, [sp, #16] - 8008c14: b9d8 cbnz r0, 8008c4e <_svfiprintf_r+0xea> - 8008c16: 06d0 lsls r0, r2, #27 - 8008c18: bf44 itt mi - 8008c1a: 2320 movmi r3, #32 - 8008c1c: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 - 8008c20: 0711 lsls r1, r2, #28 - 8008c22: bf44 itt mi - 8008c24: 232b movmi r3, #43 @ 0x2b - 8008c26: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 - 8008c2a: f89a 3000 ldrb.w r3, [sl] - 8008c2e: 2b2a cmp r3, #42 @ 0x2a - 8008c30: d015 beq.n 8008c5e <_svfiprintf_r+0xfa> - 8008c32: 4654 mov r4, sl - 8008c34: 2000 movs r0, #0 - 8008c36: f04f 0c0a mov.w ip, #10 - 8008c3a: 9a07 ldr r2, [sp, #28] - 8008c3c: 4621 mov r1, r4 - 8008c3e: f811 3b01 ldrb.w r3, [r1], #1 - 8008c42: 3b30 subs r3, #48 @ 0x30 - 8008c44: 2b09 cmp r3, #9 - 8008c46: d94b bls.n 8008ce0 <_svfiprintf_r+0x17c> - 8008c48: b1b0 cbz r0, 8008c78 <_svfiprintf_r+0x114> - 8008c4a: 9207 str r2, [sp, #28] - 8008c4c: e014 b.n 8008c78 <_svfiprintf_r+0x114> - 8008c4e: eba0 0308 sub.w r3, r0, r8 - 8008c52: fa09 f303 lsl.w r3, r9, r3 - 8008c56: 4313 orrs r3, r2 - 8008c58: 46a2 mov sl, r4 - 8008c5a: 9304 str r3, [sp, #16] - 8008c5c: e7d2 b.n 8008c04 <_svfiprintf_r+0xa0> - 8008c5e: 9b03 ldr r3, [sp, #12] - 8008c60: 1d19 adds r1, r3, #4 - 8008c62: 681b ldr r3, [r3, #0] - 8008c64: 9103 str r1, [sp, #12] - 8008c66: 2b00 cmp r3, #0 - 8008c68: bfbb ittet lt - 8008c6a: 425b neglt r3, r3 - 8008c6c: f042 0202 orrlt.w r2, r2, #2 - 8008c70: 9307 strge r3, [sp, #28] - 8008c72: 9307 strlt r3, [sp, #28] - 8008c74: bfb8 it lt - 8008c76: 9204 strlt r2, [sp, #16] - 8008c78: 7823 ldrb r3, [r4, #0] - 8008c7a: 2b2e cmp r3, #46 @ 0x2e - 8008c7c: d10a bne.n 8008c94 <_svfiprintf_r+0x130> - 8008c7e: 7863 ldrb r3, [r4, #1] - 8008c80: 2b2a cmp r3, #42 @ 0x2a - 8008c82: d132 bne.n 8008cea <_svfiprintf_r+0x186> - 8008c84: 9b03 ldr r3, [sp, #12] - 8008c86: 3402 adds r4, #2 - 8008c88: 1d1a adds r2, r3, #4 - 8008c8a: 681b ldr r3, [r3, #0] - 8008c8c: 9203 str r2, [sp, #12] - 8008c8e: ea43 73e3 orr.w r3, r3, r3, asr #31 - 8008c92: 9305 str r3, [sp, #20] - 8008c94: f8df a0b4 ldr.w sl, [pc, #180] @ 8008d4c <_svfiprintf_r+0x1e8> - 8008c98: 2203 movs r2, #3 - 8008c9a: 4650 mov r0, sl - 8008c9c: 7821 ldrb r1, [r4, #0] - 8008c9e: f000 fa17 bl 80090d0 - 8008ca2: b138 cbz r0, 8008cb4 <_svfiprintf_r+0x150> - 8008ca4: 2240 movs r2, #64 @ 0x40 - 8008ca6: 9b04 ldr r3, [sp, #16] - 8008ca8: eba0 000a sub.w r0, r0, sl - 8008cac: 4082 lsls r2, r0 - 8008cae: 4313 orrs r3, r2 - 8008cb0: 3401 adds r4, #1 - 8008cb2: 9304 str r3, [sp, #16] - 8008cb4: f814 1b01 ldrb.w r1, [r4], #1 - 8008cb8: 2206 movs r2, #6 - 8008cba: 4825 ldr r0, [pc, #148] @ (8008d50 <_svfiprintf_r+0x1ec>) - 8008cbc: f88d 1028 strb.w r1, [sp, #40] @ 0x28 - 8008cc0: f000 fa06 bl 80090d0 - 8008cc4: 2800 cmp r0, #0 - 8008cc6: d036 beq.n 8008d36 <_svfiprintf_r+0x1d2> - 8008cc8: 4b22 ldr r3, [pc, #136] @ (8008d54 <_svfiprintf_r+0x1f0>) - 8008cca: bb1b cbnz r3, 8008d14 <_svfiprintf_r+0x1b0> - 8008ccc: 9b03 ldr r3, [sp, #12] - 8008cce: 3307 adds r3, #7 - 8008cd0: f023 0307 bic.w r3, r3, #7 - 8008cd4: 3308 adds r3, #8 - 8008cd6: 9303 str r3, [sp, #12] - 8008cd8: 9b09 ldr r3, [sp, #36] @ 0x24 - 8008cda: 4433 add r3, r6 - 8008cdc: 9309 str r3, [sp, #36] @ 0x24 - 8008cde: e76a b.n 8008bb6 <_svfiprintf_r+0x52> - 8008ce0: 460c mov r4, r1 - 8008ce2: 2001 movs r0, #1 - 8008ce4: fb0c 3202 mla r2, ip, r2, r3 - 8008ce8: e7a8 b.n 8008c3c <_svfiprintf_r+0xd8> - 8008cea: 2300 movs r3, #0 - 8008cec: f04f 0c0a mov.w ip, #10 - 8008cf0: 4619 mov r1, r3 - 8008cf2: 3401 adds r4, #1 - 8008cf4: 9305 str r3, [sp, #20] - 8008cf6: 4620 mov r0, r4 - 8008cf8: f810 2b01 ldrb.w r2, [r0], #1 - 8008cfc: 3a30 subs r2, #48 @ 0x30 - 8008cfe: 2a09 cmp r2, #9 - 8008d00: d903 bls.n 8008d0a <_svfiprintf_r+0x1a6> - 8008d02: 2b00 cmp r3, #0 - 8008d04: d0c6 beq.n 8008c94 <_svfiprintf_r+0x130> - 8008d06: 9105 str r1, [sp, #20] - 8008d08: e7c4 b.n 8008c94 <_svfiprintf_r+0x130> - 8008d0a: 4604 mov r4, r0 - 8008d0c: 2301 movs r3, #1 - 8008d0e: fb0c 2101 mla r1, ip, r1, r2 - 8008d12: e7f0 b.n 8008cf6 <_svfiprintf_r+0x192> - 8008d14: ab03 add r3, sp, #12 - 8008d16: 9300 str r3, [sp, #0] - 8008d18: 462a mov r2, r5 - 8008d1a: 4638 mov r0, r7 - 8008d1c: 4b0e ldr r3, [pc, #56] @ (8008d58 <_svfiprintf_r+0x1f4>) - 8008d1e: a904 add r1, sp, #16 - 8008d20: f3af 8000 nop.w - 8008d24: 1c42 adds r2, r0, #1 - 8008d26: 4606 mov r6, r0 - 8008d28: d1d6 bne.n 8008cd8 <_svfiprintf_r+0x174> - 8008d2a: 89ab ldrh r3, [r5, #12] - 8008d2c: 065b lsls r3, r3, #25 - 8008d2e: f53f af2d bmi.w 8008b8c <_svfiprintf_r+0x28> - 8008d32: 9809 ldr r0, [sp, #36] @ 0x24 - 8008d34: e72c b.n 8008b90 <_svfiprintf_r+0x2c> - 8008d36: ab03 add r3, sp, #12 - 8008d38: 9300 str r3, [sp, #0] - 8008d3a: 462a mov r2, r5 - 8008d3c: 4638 mov r0, r7 - 8008d3e: 4b06 ldr r3, [pc, #24] @ (8008d58 <_svfiprintf_r+0x1f4>) - 8008d40: a904 add r1, sp, #16 - 8008d42: f000 f87d bl 8008e40 <_printf_i> - 8008d46: e7ed b.n 8008d24 <_svfiprintf_r+0x1c0> - 8008d48: 08009206 .word 0x08009206 - 8008d4c: 0800920c .word 0x0800920c - 8008d50: 08009210 .word 0x08009210 - 8008d54: 00000000 .word 0x00000000 - 8008d58: 08008aad .word 0x08008aad - -08008d5c <_printf_common>: - 8008d5c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 8008d60: 4616 mov r6, r2 - 8008d62: 4698 mov r8, r3 - 8008d64: 688a ldr r2, [r1, #8] - 8008d66: 690b ldr r3, [r1, #16] - 8008d68: 4607 mov r7, r0 - 8008d6a: 4293 cmp r3, r2 - 8008d6c: bfb8 it lt - 8008d6e: 4613 movlt r3, r2 - 8008d70: 6033 str r3, [r6, #0] - 8008d72: f891 2043 ldrb.w r2, [r1, #67] @ 0x43 - 8008d76: 460c mov r4, r1 - 8008d78: f8dd 9020 ldr.w r9, [sp, #32] - 8008d7c: b10a cbz r2, 8008d82 <_printf_common+0x26> - 8008d7e: 3301 adds r3, #1 - 8008d80: 6033 str r3, [r6, #0] - 8008d82: 6823 ldr r3, [r4, #0] - 8008d84: 0699 lsls r1, r3, #26 - 8008d86: bf42 ittt mi - 8008d88: 6833 ldrmi r3, [r6, #0] - 8008d8a: 3302 addmi r3, #2 - 8008d8c: 6033 strmi r3, [r6, #0] - 8008d8e: 6825 ldr r5, [r4, #0] - 8008d90: f015 0506 ands.w r5, r5, #6 - 8008d94: d106 bne.n 8008da4 <_printf_common+0x48> - 8008d96: f104 0a19 add.w sl, r4, #25 - 8008d9a: 68e3 ldr r3, [r4, #12] - 8008d9c: 6832 ldr r2, [r6, #0] - 8008d9e: 1a9b subs r3, r3, r2 - 8008da0: 42ab cmp r3, r5 - 8008da2: dc2b bgt.n 8008dfc <_printf_common+0xa0> - 8008da4: f894 3043 ldrb.w r3, [r4, #67] @ 0x43 - 8008da8: 6822 ldr r2, [r4, #0] - 8008daa: 3b00 subs r3, #0 - 8008dac: bf18 it ne - 8008dae: 2301 movne r3, #1 - 8008db0: 0692 lsls r2, r2, #26 - 8008db2: d430 bmi.n 8008e16 <_printf_common+0xba> - 8008db4: 4641 mov r1, r8 - 8008db6: 4638 mov r0, r7 - 8008db8: f104 0243 add.w r2, r4, #67 @ 0x43 - 8008dbc: 47c8 blx r9 - 8008dbe: 3001 adds r0, #1 - 8008dc0: d023 beq.n 8008e0a <_printf_common+0xae> - 8008dc2: 6823 ldr r3, [r4, #0] - 8008dc4: 6922 ldr r2, [r4, #16] - 8008dc6: f003 0306 and.w r3, r3, #6 - 8008dca: 2b04 cmp r3, #4 - 8008dcc: bf14 ite ne - 8008dce: 2500 movne r5, #0 - 8008dd0: 6833 ldreq r3, [r6, #0] - 8008dd2: f04f 0600 mov.w r6, #0 - 8008dd6: bf08 it eq - 8008dd8: 68e5 ldreq r5, [r4, #12] - 8008dda: f104 041a add.w r4, r4, #26 - 8008dde: bf08 it eq - 8008de0: 1aed subeq r5, r5, r3 - 8008de2: f854 3c12 ldr.w r3, [r4, #-18] - 8008de6: bf08 it eq - 8008de8: ea25 75e5 biceq.w r5, r5, r5, asr #31 - 8008dec: 4293 cmp r3, r2 - 8008dee: bfc4 itt gt - 8008df0: 1a9b subgt r3, r3, r2 - 8008df2: 18ed addgt r5, r5, r3 - 8008df4: 42b5 cmp r5, r6 - 8008df6: d11a bne.n 8008e2e <_printf_common+0xd2> - 8008df8: 2000 movs r0, #0 - 8008dfa: e008 b.n 8008e0e <_printf_common+0xb2> - 8008dfc: 2301 movs r3, #1 - 8008dfe: 4652 mov r2, sl - 8008e00: 4641 mov r1, r8 - 8008e02: 4638 mov r0, r7 - 8008e04: 47c8 blx r9 - 8008e06: 3001 adds r0, #1 - 8008e08: d103 bne.n 8008e12 <_printf_common+0xb6> - 8008e0a: f04f 30ff mov.w r0, #4294967295 - 8008e0e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 8008e12: 3501 adds r5, #1 - 8008e14: e7c1 b.n 8008d9a <_printf_common+0x3e> - 8008e16: 2030 movs r0, #48 @ 0x30 - 8008e18: 18e1 adds r1, r4, r3 - 8008e1a: f881 0043 strb.w r0, [r1, #67] @ 0x43 - 8008e1e: 1c5a adds r2, r3, #1 - 8008e20: f894 1045 ldrb.w r1, [r4, #69] @ 0x45 - 8008e24: 4422 add r2, r4 - 8008e26: 3302 adds r3, #2 - 8008e28: f882 1043 strb.w r1, [r2, #67] @ 0x43 - 8008e2c: e7c2 b.n 8008db4 <_printf_common+0x58> - 8008e2e: 2301 movs r3, #1 - 8008e30: 4622 mov r2, r4 - 8008e32: 4641 mov r1, r8 - 8008e34: 4638 mov r0, r7 - 8008e36: 47c8 blx r9 - 8008e38: 3001 adds r0, #1 - 8008e3a: d0e6 beq.n 8008e0a <_printf_common+0xae> - 8008e3c: 3601 adds r6, #1 - 8008e3e: e7d9 b.n 8008df4 <_printf_common+0x98> - -08008e40 <_printf_i>: - 8008e40: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} - 8008e44: 7e0f ldrb r7, [r1, #24] - 8008e46: 4691 mov r9, r2 - 8008e48: 2f78 cmp r7, #120 @ 0x78 - 8008e4a: 4680 mov r8, r0 - 8008e4c: 460c mov r4, r1 - 8008e4e: 469a mov sl, r3 - 8008e50: 9e0c ldr r6, [sp, #48] @ 0x30 - 8008e52: f101 0243 add.w r2, r1, #67 @ 0x43 - 8008e56: d807 bhi.n 8008e68 <_printf_i+0x28> - 8008e58: 2f62 cmp r7, #98 @ 0x62 - 8008e5a: d80a bhi.n 8008e72 <_printf_i+0x32> - 8008e5c: 2f00 cmp r7, #0 - 8008e5e: f000 80d1 beq.w 8009004 <_printf_i+0x1c4> - 8008e62: 2f58 cmp r7, #88 @ 0x58 - 8008e64: f000 80b8 beq.w 8008fd8 <_printf_i+0x198> - 8008e68: f104 0642 add.w r6, r4, #66 @ 0x42 - 8008e6c: f884 7042 strb.w r7, [r4, #66] @ 0x42 - 8008e70: e03a b.n 8008ee8 <_printf_i+0xa8> - 8008e72: f1a7 0363 sub.w r3, r7, #99 @ 0x63 - 8008e76: 2b15 cmp r3, #21 - 8008e78: d8f6 bhi.n 8008e68 <_printf_i+0x28> - 8008e7a: a101 add r1, pc, #4 @ (adr r1, 8008e80 <_printf_i+0x40>) - 8008e7c: f851 f023 ldr.w pc, [r1, r3, lsl #2] - 8008e80: 08008ed9 .word 0x08008ed9 - 8008e84: 08008eed .word 0x08008eed - 8008e88: 08008e69 .word 0x08008e69 - 8008e8c: 08008e69 .word 0x08008e69 - 8008e90: 08008e69 .word 0x08008e69 - 8008e94: 08008e69 .word 0x08008e69 - 8008e98: 08008eed .word 0x08008eed - 8008e9c: 08008e69 .word 0x08008e69 - 8008ea0: 08008e69 .word 0x08008e69 - 8008ea4: 08008e69 .word 0x08008e69 - 8008ea8: 08008e69 .word 0x08008e69 - 8008eac: 08008feb .word 0x08008feb - 8008eb0: 08008f17 .word 0x08008f17 - 8008eb4: 08008fa5 .word 0x08008fa5 - 8008eb8: 08008e69 .word 0x08008e69 - 8008ebc: 08008e69 .word 0x08008e69 - 8008ec0: 0800900d .word 0x0800900d - 8008ec4: 08008e69 .word 0x08008e69 - 8008ec8: 08008f17 .word 0x08008f17 - 8008ecc: 08008e69 .word 0x08008e69 - 8008ed0: 08008e69 .word 0x08008e69 - 8008ed4: 08008fad .word 0x08008fad - 8008ed8: 6833 ldr r3, [r6, #0] - 8008eda: 1d1a adds r2, r3, #4 - 8008edc: 681b ldr r3, [r3, #0] - 8008ede: 6032 str r2, [r6, #0] - 8008ee0: f104 0642 add.w r6, r4, #66 @ 0x42 - 8008ee4: f884 3042 strb.w r3, [r4, #66] @ 0x42 - 8008ee8: 2301 movs r3, #1 - 8008eea: e09c b.n 8009026 <_printf_i+0x1e6> - 8008eec: 6833 ldr r3, [r6, #0] - 8008eee: 6820 ldr r0, [r4, #0] - 8008ef0: 1d19 adds r1, r3, #4 - 8008ef2: 6031 str r1, [r6, #0] - 8008ef4: 0606 lsls r6, r0, #24 - 8008ef6: d501 bpl.n 8008efc <_printf_i+0xbc> - 8008ef8: 681d ldr r5, [r3, #0] - 8008efa: e003 b.n 8008f04 <_printf_i+0xc4> - 8008efc: 0645 lsls r5, r0, #25 - 8008efe: d5fb bpl.n 8008ef8 <_printf_i+0xb8> - 8008f00: f9b3 5000 ldrsh.w r5, [r3] - 8008f04: 2d00 cmp r5, #0 - 8008f06: da03 bge.n 8008f10 <_printf_i+0xd0> - 8008f08: 232d movs r3, #45 @ 0x2d - 8008f0a: 426d negs r5, r5 - 8008f0c: f884 3043 strb.w r3, [r4, #67] @ 0x43 - 8008f10: 230a movs r3, #10 - 8008f12: 4858 ldr r0, [pc, #352] @ (8009074 <_printf_i+0x234>) - 8008f14: e011 b.n 8008f3a <_printf_i+0xfa> - 8008f16: 6821 ldr r1, [r4, #0] - 8008f18: 6833 ldr r3, [r6, #0] - 8008f1a: 0608 lsls r0, r1, #24 - 8008f1c: f853 5b04 ldr.w r5, [r3], #4 - 8008f20: d402 bmi.n 8008f28 <_printf_i+0xe8> - 8008f22: 0649 lsls r1, r1, #25 - 8008f24: bf48 it mi - 8008f26: b2ad uxthmi r5, r5 - 8008f28: 2f6f cmp r7, #111 @ 0x6f - 8008f2a: 6033 str r3, [r6, #0] - 8008f2c: bf14 ite ne - 8008f2e: 230a movne r3, #10 - 8008f30: 2308 moveq r3, #8 - 8008f32: 4850 ldr r0, [pc, #320] @ (8009074 <_printf_i+0x234>) - 8008f34: 2100 movs r1, #0 - 8008f36: f884 1043 strb.w r1, [r4, #67] @ 0x43 - 8008f3a: 6866 ldr r6, [r4, #4] - 8008f3c: 2e00 cmp r6, #0 - 8008f3e: 60a6 str r6, [r4, #8] - 8008f40: db05 blt.n 8008f4e <_printf_i+0x10e> - 8008f42: 6821 ldr r1, [r4, #0] - 8008f44: 432e orrs r6, r5 - 8008f46: f021 0104 bic.w r1, r1, #4 - 8008f4a: 6021 str r1, [r4, #0] - 8008f4c: d04b beq.n 8008fe6 <_printf_i+0x1a6> - 8008f4e: 4616 mov r6, r2 - 8008f50: fbb5 f1f3 udiv r1, r5, r3 - 8008f54: fb03 5711 mls r7, r3, r1, r5 - 8008f58: 5dc7 ldrb r7, [r0, r7] - 8008f5a: f806 7d01 strb.w r7, [r6, #-1]! - 8008f5e: 462f mov r7, r5 - 8008f60: 42bb cmp r3, r7 - 8008f62: 460d mov r5, r1 - 8008f64: d9f4 bls.n 8008f50 <_printf_i+0x110> - 8008f66: 2b08 cmp r3, #8 - 8008f68: d10b bne.n 8008f82 <_printf_i+0x142> - 8008f6a: 6823 ldr r3, [r4, #0] - 8008f6c: 07df lsls r7, r3, #31 - 8008f6e: d508 bpl.n 8008f82 <_printf_i+0x142> - 8008f70: 6923 ldr r3, [r4, #16] - 8008f72: 6861 ldr r1, [r4, #4] - 8008f74: 4299 cmp r1, r3 - 8008f76: bfde ittt le - 8008f78: 2330 movle r3, #48 @ 0x30 - 8008f7a: f806 3c01 strble.w r3, [r6, #-1] - 8008f7e: f106 36ff addle.w r6, r6, #4294967295 - 8008f82: 1b92 subs r2, r2, r6 - 8008f84: 6122 str r2, [r4, #16] - 8008f86: 464b mov r3, r9 - 8008f88: 4621 mov r1, r4 - 8008f8a: 4640 mov r0, r8 - 8008f8c: f8cd a000 str.w sl, [sp] - 8008f90: aa03 add r2, sp, #12 - 8008f92: f7ff fee3 bl 8008d5c <_printf_common> - 8008f96: 3001 adds r0, #1 - 8008f98: d14a bne.n 8009030 <_printf_i+0x1f0> - 8008f9a: f04f 30ff mov.w r0, #4294967295 - 8008f9e: b004 add sp, #16 - 8008fa0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 8008fa4: 6823 ldr r3, [r4, #0] - 8008fa6: f043 0320 orr.w r3, r3, #32 - 8008faa: 6023 str r3, [r4, #0] - 8008fac: 2778 movs r7, #120 @ 0x78 - 8008fae: 4832 ldr r0, [pc, #200] @ (8009078 <_printf_i+0x238>) - 8008fb0: f884 7045 strb.w r7, [r4, #69] @ 0x45 - 8008fb4: 6823 ldr r3, [r4, #0] - 8008fb6: 6831 ldr r1, [r6, #0] - 8008fb8: 061f lsls r7, r3, #24 - 8008fba: f851 5b04 ldr.w r5, [r1], #4 - 8008fbe: d402 bmi.n 8008fc6 <_printf_i+0x186> - 8008fc0: 065f lsls r7, r3, #25 - 8008fc2: bf48 it mi - 8008fc4: b2ad uxthmi r5, r5 - 8008fc6: 6031 str r1, [r6, #0] - 8008fc8: 07d9 lsls r1, r3, #31 - 8008fca: bf44 itt mi - 8008fcc: f043 0320 orrmi.w r3, r3, #32 - 8008fd0: 6023 strmi r3, [r4, #0] - 8008fd2: b11d cbz r5, 8008fdc <_printf_i+0x19c> - 8008fd4: 2310 movs r3, #16 - 8008fd6: e7ad b.n 8008f34 <_printf_i+0xf4> - 8008fd8: 4826 ldr r0, [pc, #152] @ (8009074 <_printf_i+0x234>) - 8008fda: e7e9 b.n 8008fb0 <_printf_i+0x170> - 8008fdc: 6823 ldr r3, [r4, #0] - 8008fde: f023 0320 bic.w r3, r3, #32 - 8008fe2: 6023 str r3, [r4, #0] - 8008fe4: e7f6 b.n 8008fd4 <_printf_i+0x194> - 8008fe6: 4616 mov r6, r2 - 8008fe8: e7bd b.n 8008f66 <_printf_i+0x126> - 8008fea: 6833 ldr r3, [r6, #0] - 8008fec: 6825 ldr r5, [r4, #0] - 8008fee: 1d18 adds r0, r3, #4 - 8008ff0: 6961 ldr r1, [r4, #20] - 8008ff2: 6030 str r0, [r6, #0] - 8008ff4: 062e lsls r6, r5, #24 - 8008ff6: 681b ldr r3, [r3, #0] - 8008ff8: d501 bpl.n 8008ffe <_printf_i+0x1be> - 8008ffa: 6019 str r1, [r3, #0] - 8008ffc: e002 b.n 8009004 <_printf_i+0x1c4> - 8008ffe: 0668 lsls r0, r5, #25 - 8009000: d5fb bpl.n 8008ffa <_printf_i+0x1ba> - 8009002: 8019 strh r1, [r3, #0] - 8009004: 2300 movs r3, #0 - 8009006: 4616 mov r6, r2 - 8009008: 6123 str r3, [r4, #16] - 800900a: e7bc b.n 8008f86 <_printf_i+0x146> - 800900c: 6833 ldr r3, [r6, #0] - 800900e: 2100 movs r1, #0 - 8009010: 1d1a adds r2, r3, #4 - 8009012: 6032 str r2, [r6, #0] - 8009014: 681e ldr r6, [r3, #0] - 8009016: 6862 ldr r2, [r4, #4] - 8009018: 4630 mov r0, r6 - 800901a: f000 f859 bl 80090d0 - 800901e: b108 cbz r0, 8009024 <_printf_i+0x1e4> - 8009020: 1b80 subs r0, r0, r6 - 8009022: 6060 str r0, [r4, #4] - 8009024: 6863 ldr r3, [r4, #4] - 8009026: 6123 str r3, [r4, #16] - 8009028: 2300 movs r3, #0 - 800902a: f884 3043 strb.w r3, [r4, #67] @ 0x43 - 800902e: e7aa b.n 8008f86 <_printf_i+0x146> - 8009030: 4632 mov r2, r6 - 8009032: 4649 mov r1, r9 - 8009034: 4640 mov r0, r8 - 8009036: 6923 ldr r3, [r4, #16] - 8009038: 47d0 blx sl - 800903a: 3001 adds r0, #1 - 800903c: d0ad beq.n 8008f9a <_printf_i+0x15a> - 800903e: 6823 ldr r3, [r4, #0] - 8009040: 079b lsls r3, r3, #30 - 8009042: d413 bmi.n 800906c <_printf_i+0x22c> - 8009044: 68e0 ldr r0, [r4, #12] - 8009046: 9b03 ldr r3, [sp, #12] - 8009048: 4298 cmp r0, r3 - 800904a: bfb8 it lt - 800904c: 4618 movlt r0, r3 - 800904e: e7a6 b.n 8008f9e <_printf_i+0x15e> - 8009050: 2301 movs r3, #1 - 8009052: 4632 mov r2, r6 - 8009054: 4649 mov r1, r9 - 8009056: 4640 mov r0, r8 - 8009058: 47d0 blx sl - 800905a: 3001 adds r0, #1 - 800905c: d09d beq.n 8008f9a <_printf_i+0x15a> - 800905e: 3501 adds r5, #1 - 8009060: 68e3 ldr r3, [r4, #12] - 8009062: 9903 ldr r1, [sp, #12] - 8009064: 1a5b subs r3, r3, r1 - 8009066: 42ab cmp r3, r5 - 8009068: dcf2 bgt.n 8009050 <_printf_i+0x210> - 800906a: e7eb b.n 8009044 <_printf_i+0x204> - 800906c: 2500 movs r5, #0 - 800906e: f104 0619 add.w r6, r4, #25 - 8009072: e7f5 b.n 8009060 <_printf_i+0x220> - 8009074: 08009217 .word 0x08009217 - 8009078: 08009228 .word 0x08009228 - -0800907c : - 800907c: 4288 cmp r0, r1 - 800907e: b510 push {r4, lr} - 8009080: eb01 0402 add.w r4, r1, r2 - 8009084: d902 bls.n 800908c - 8009086: 4284 cmp r4, r0 - 8009088: 4623 mov r3, r4 - 800908a: d807 bhi.n 800909c - 800908c: 1e43 subs r3, r0, #1 - 800908e: 42a1 cmp r1, r4 - 8009090: d008 beq.n 80090a4 - 8009092: f811 2b01 ldrb.w r2, [r1], #1 - 8009096: f803 2f01 strb.w r2, [r3, #1]! - 800909a: e7f8 b.n 800908e - 800909c: 4601 mov r1, r0 - 800909e: 4402 add r2, r0 - 80090a0: 428a cmp r2, r1 - 80090a2: d100 bne.n 80090a6 - 80090a4: bd10 pop {r4, pc} - 80090a6: f813 4d01 ldrb.w r4, [r3, #-1]! - 80090aa: f802 4d01 strb.w r4, [r2, #-1]! - 80090ae: e7f7 b.n 80090a0 - -080090b0 <_sbrk_r>: - 80090b0: b538 push {r3, r4, r5, lr} - 80090b2: 2300 movs r3, #0 - 80090b4: 4d05 ldr r5, [pc, #20] @ (80090cc <_sbrk_r+0x1c>) - 80090b6: 4604 mov r4, r0 - 80090b8: 4608 mov r0, r1 - 80090ba: 602b str r3, [r5, #0] - 80090bc: f7f7 fc62 bl 8000984 <_sbrk> - 80090c0: 1c43 adds r3, r0, #1 - 80090c2: d102 bne.n 80090ca <_sbrk_r+0x1a> - 80090c4: 682b ldr r3, [r5, #0] - 80090c6: b103 cbz r3, 80090ca <_sbrk_r+0x1a> - 80090c8: 6023 str r3, [r4, #0] - 80090ca: bd38 pop {r3, r4, r5, pc} - 80090cc: 200016c4 .word 0x200016c4 - -080090d0 : - 80090d0: 4603 mov r3, r0 - 80090d2: b510 push {r4, lr} - 80090d4: b2c9 uxtb r1, r1 - 80090d6: 4402 add r2, r0 - 80090d8: 4293 cmp r3, r2 - 80090da: 4618 mov r0, r3 - 80090dc: d101 bne.n 80090e2 - 80090de: 2000 movs r0, #0 - 80090e0: e003 b.n 80090ea - 80090e2: 7804 ldrb r4, [r0, #0] - 80090e4: 3301 adds r3, #1 - 80090e6: 428c cmp r4, r1 - 80090e8: d1f6 bne.n 80090d8 - 80090ea: bd10 pop {r4, pc} - -080090ec : - 80090ec: 440a add r2, r1 - 80090ee: 4291 cmp r1, r2 - 80090f0: f100 33ff add.w r3, r0, #4294967295 - 80090f4: d100 bne.n 80090f8 - 80090f6: 4770 bx lr - 80090f8: b510 push {r4, lr} - 80090fa: f811 4b01 ldrb.w r4, [r1], #1 - 80090fe: 4291 cmp r1, r2 - 8009100: f803 4f01 strb.w r4, [r3, #1]! - 8009104: d1f9 bne.n 80090fa - 8009106: bd10 pop {r4, pc} - -08009108 <_realloc_r>: - 8009108: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 800910c: 4607 mov r7, r0 - 800910e: 4614 mov r4, r2 - 8009110: 460d mov r5, r1 - 8009112: b921 cbnz r1, 800911e <_realloc_r+0x16> - 8009114: 4611 mov r1, r2 - 8009116: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 800911a: f7ff bc3b b.w 8008994 <_malloc_r> - 800911e: b92a cbnz r2, 800912c <_realloc_r+0x24> - 8009120: f7ff fbce bl 80088c0 <_free_r> - 8009124: 4625 mov r5, r4 - 8009126: 4628 mov r0, r5 - 8009128: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 800912c: f000 f81a bl 8009164 <_malloc_usable_size_r> - 8009130: 4284 cmp r4, r0 - 8009132: 4606 mov r6, r0 - 8009134: d802 bhi.n 800913c <_realloc_r+0x34> - 8009136: ebb4 0f50 cmp.w r4, r0, lsr #1 - 800913a: d8f4 bhi.n 8009126 <_realloc_r+0x1e> - 800913c: 4621 mov r1, r4 - 800913e: 4638 mov r0, r7 - 8009140: f7ff fc28 bl 8008994 <_malloc_r> - 8009144: 4680 mov r8, r0 - 8009146: b908 cbnz r0, 800914c <_realloc_r+0x44> - 8009148: 4645 mov r5, r8 - 800914a: e7ec b.n 8009126 <_realloc_r+0x1e> - 800914c: 42b4 cmp r4, r6 - 800914e: 4622 mov r2, r4 - 8009150: 4629 mov r1, r5 - 8009152: bf28 it cs - 8009154: 4632 movcs r2, r6 - 8009156: f7ff ffc9 bl 80090ec - 800915a: 4629 mov r1, r5 - 800915c: 4638 mov r0, r7 - 800915e: f7ff fbaf bl 80088c0 <_free_r> - 8009162: e7f1 b.n 8009148 <_realloc_r+0x40> - -08009164 <_malloc_usable_size_r>: - 8009164: f851 3c04 ldr.w r3, [r1, #-4] - 8009168: 1f18 subs r0, r3, #4 - 800916a: 2b00 cmp r3, #0 - 800916c: bfbc itt lt - 800916e: 580b ldrlt r3, [r1, r0] - 8009170: 18c0 addlt r0, r0, r3 - 8009172: 4770 bx lr - -08009174 <_init>: - 8009174: b5f8 push {r3, r4, r5, r6, r7, lr} - 8009176: bf00 nop - 8009178: bcf8 pop {r3, r4, r5, r6, r7} - 800917a: bc08 pop {r3} - 800917c: 469e mov lr, r3 - 800917e: 4770 bx lr - -08009180 <_fini>: - 8009180: b5f8 push {r3, r4, r5, r6, r7, lr} - 8009182: bf00 nop - 8009184: bcf8 pop {r3, r4, r5, r6, r7} - 8009186: bc08 pop {r3} - 8009188: 469e mov lr, r3 - 800918a: 4770 bx lr + +AUTOM7.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 0000010c 08000000 08000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 00009080 0800010c 0800010c 0000110c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 000000b0 0800918c 0800918c 0000a18c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .ARM.extab 00000000 0800923c 0800923c 0000b1cc 2**0 + CONTENTS, READONLY + 4 .ARM 00000000 0800923c 0800923c 0000b1cc 2**0 + CONTENTS, READONLY + 5 .preinit_array 00000000 0800923c 0800923c 0000b1cc 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 0800923c 0800923c 0000a23c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .fini_array 00000004 08009240 08009240 0000a240 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 8 .data 000001cc 20000000 08009244 0000b000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .bss 00001508 200001cc 08009410 0000b1cc 2**2 + ALLOC + 10 ._user_heap_stack 00000604 200016d4 08009410 0000b6d4 2**0 + ALLOC + 11 .ARM.attributes 00000029 00000000 00000000 0000b1cc 2**0 + CONTENTS, READONLY + 12 .debug_info 00010d1f 00000000 00000000 0000b1f5 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 13 .debug_abbrev 00003119 00000000 00000000 0001bf14 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .debug_aranges 00001010 00000000 00000000 0001f030 2**3 + CONTENTS, READONLY, DEBUGGING, OCTETS + 15 .debug_rnglists 00000c27 00000000 00000000 00020040 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .debug_macro 0001a248 00000000 00000000 00020c67 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_line 00013e43 00000000 00000000 0003aeaf 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .debug_str 0008d17e 00000000 00000000 0004ecf2 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 19 .comment 00000043 00000000 00000000 000dbe70 2**0 + CONTENTS, READONLY + 20 .debug_frame 000046b4 00000000 00000000 000dbeb4 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + 21 .debug_line_str 00000052 00000000 00000000 000e0568 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +0800010c <__do_global_dtors_aux>: + 800010c: b510 push {r4, lr} + 800010e: 4c05 ldr r4, [pc, #20] @ (8000124 <__do_global_dtors_aux+0x18>) + 8000110: 7823 ldrb r3, [r4, #0] + 8000112: b933 cbnz r3, 8000122 <__do_global_dtors_aux+0x16> + 8000114: 4b04 ldr r3, [pc, #16] @ (8000128 <__do_global_dtors_aux+0x1c>) + 8000116: b113 cbz r3, 800011e <__do_global_dtors_aux+0x12> + 8000118: 4804 ldr r0, [pc, #16] @ (800012c <__do_global_dtors_aux+0x20>) + 800011a: f3af 8000 nop.w + 800011e: 2301 movs r3, #1 + 8000120: 7023 strb r3, [r4, #0] + 8000122: bd10 pop {r4, pc} + 8000124: 200001cc .word 0x200001cc + 8000128: 00000000 .word 0x00000000 + 800012c: 08009174 .word 0x08009174 + +08000130 : + 8000130: b508 push {r3, lr} + 8000132: 4b03 ldr r3, [pc, #12] @ (8000140 ) + 8000134: b11b cbz r3, 800013e + 8000136: 4903 ldr r1, [pc, #12] @ (8000144 ) + 8000138: 4803 ldr r0, [pc, #12] @ (8000148 ) + 800013a: f3af 8000 nop.w + 800013e: bd08 pop {r3, pc} + 8000140: 00000000 .word 0x00000000 + 8000144: 200001d0 .word 0x200001d0 + 8000148: 08009174 .word 0x08009174 + +0800014c
: +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + 800014c: b580 push {r7, lr} + 800014e: b09a sub sp, #104 @ 0x68 + 8000150: af00 add r7, sp, #0 + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + 8000152: f000 fc79 bl 8000a48 + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + 8000156: f000 f861 bl 800021c + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + 800015a: f000 fa99 bl 8000690 + MX_TIM2_Init(); + 800015e: f000 f8b7 bl 80002d0 + MX_TIM4_Init(); + 8000162: f000 f9f3 bl 800054c + MX_TIM3_Init(); + 8000166: f000 f94f bl 8000408 + MX_USB_DEVICE_Init(); + 800016a: f007 fe39 bl 8007de0 + /* USER CODE BEGIN 2 */ + //Force_TIM_GPIO_AFPP(); + HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); + 800016e: 2100 movs r1, #0 + 8000170: 4825 ldr r0, [pc, #148] @ (8000208 ) + 8000172: f003 f9f9 bl 8003568 + HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); + 8000176: 2104 movs r1, #4 + 8000178: 4823 ldr r0, [pc, #140] @ (8000208 ) + 800017a: f003 f9f5 bl 8003568 + HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); + 800017e: 2108 movs r1, #8 + 8000180: 4821 ldr r0, [pc, #132] @ (8000208 ) + 8000182: f003 f9f1 bl 8003568 + HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); + 8000186: 210c movs r1, #12 + 8000188: 481f ldr r0, [pc, #124] @ (8000208 ) + 800018a: f003 f9ed bl 8003568 + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); + 800018e: 2100 movs r1, #0 + 8000190: 481e ldr r0, [pc, #120] @ (800020c ) + 8000192: f003 f9e9 bl 8003568 + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2); + 8000196: 2104 movs r1, #4 + 8000198: 481c ldr r0, [pc, #112] @ (800020c ) + 800019a: f003 f9e5 bl 8003568 + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3); + 800019e: 2108 movs r1, #8 + 80001a0: 481a ldr r0, [pc, #104] @ (800020c ) + 80001a2: f003 f9e1 bl 8003568 + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_4); + 80001a6: 210c movs r1, #12 + 80001a8: 4818 ldr r0, [pc, #96] @ (800020c ) + 80001aa: f003 f9dd bl 8003568 + HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1); + 80001ae: 2100 movs r1, #0 + 80001b0: 4817 ldr r0, [pc, #92] @ (8000210 ) + 80001b2: f003 f9d9 bl 8003568 + HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2); + 80001b6: 2104 movs r1, #4 + 80001b8: 4815 ldr r0, [pc, #84] @ (8000210 ) + 80001ba: f003 f9d5 bl 8003568 + HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3); + 80001be: 2108 movs r1, #8 + 80001c0: 4813 ldr r0, [pc, #76] @ (8000210 ) + 80001c2: f003 f9d1 bl 8003568 + HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4); + 80001c6: 210c movs r1, #12 + 80001c8: 4811 ldr r0, [pc, #68] @ (8000210 ) + 80001ca: f003 f9cd bl 8003568 + CDC_Transmit_FS((uint8_t*)"Start\r\n", 7); + 80001ce: 2107 movs r1, #7 + 80001d0: 4810 ldr r0, [pc, #64] @ (8000214 ) + 80001d2: f007 ff41 bl 8008058 + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + while (CDC_Available()) { + 80001d6: e011 b.n 80001fc + int c = CDC_ReadByte(); + 80001d8: f007 fe7c bl 8007ed4 + 80001dc: 6678 str r0, [r7, #100] @ 0x64 + +// uint8_t out = (uint8_t)c; +// if (out >= 'a' && out <= 'z') out -= 32; // to upper + + unsigned char s[100]; + sprintf((char*)s,"\nc=%03d",c); + 80001de: 463b mov r3, r7 + 80001e0: 6e7a ldr r2, [r7, #100] @ 0x64 + 80001e2: 490d ldr r1, [pc, #52] @ (8000218 ) + 80001e4: 4618 mov r0, r3 + 80001e6: f008 fb15 bl 8008814 + while (CDC_Transmit_FS(s, 6) == USBD_BUSY) { + 80001ea: bf00 nop + 80001ec: 463b mov r3, r7 + 80001ee: 2106 movs r1, #6 + 80001f0: 4618 mov r0, r3 + 80001f2: f007 ff31 bl 8008058 + 80001f6: 4603 mov r3, r0 + 80001f8: 2b01 cmp r3, #1 + 80001fa: d0f7 beq.n 80001ec + while (CDC_Available()) { + 80001fc: f007 fe56 bl 8007eac + 8000200: 4603 mov r3, r0 + 8000202: 2b00 cmp r3, #0 + 8000204: d1e8 bne.n 80001d8 + 8000206: e7f9 b.n 80001fc + 8000208: 200001e8 .word 0x200001e8 + 800020c: 20000230 .word 0x20000230 + 8000210: 20000278 .word 0x20000278 + 8000214: 0800918c .word 0x0800918c + 8000218: 08009194 .word 0x08009194 + +0800021c : +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + 800021c: b580 push {r7, lr} + 800021e: b094 sub sp, #80 @ 0x50 + 8000220: af00 add r7, sp, #0 + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 8000222: f107 0328 add.w r3, r7, #40 @ 0x28 + 8000226: 2228 movs r2, #40 @ 0x28 + 8000228: 2100 movs r1, #0 + 800022a: 4618 mov r0, r3 + 800022c: f008 fb14 bl 8008858 + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 8000230: f107 0314 add.w r3, r7, #20 + 8000234: 2200 movs r2, #0 + 8000236: 601a str r2, [r3, #0] + 8000238: 605a str r2, [r3, #4] + 800023a: 609a str r2, [r3, #8] + 800023c: 60da str r2, [r3, #12] + 800023e: 611a str r2, [r3, #16] + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + 8000240: 1d3b adds r3, r7, #4 + 8000242: 2200 movs r2, #0 + 8000244: 601a str r2, [r3, #0] + 8000246: 605a str r2, [r3, #4] + 8000248: 609a str r2, [r3, #8] + 800024a: 60da str r2, [r3, #12] + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + 800024c: 2301 movs r3, #1 + 800024e: 62bb str r3, [r7, #40] @ 0x28 + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + 8000250: f44f 3380 mov.w r3, #65536 @ 0x10000 + 8000254: 62fb str r3, [r7, #44] @ 0x2c + RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; + 8000256: 2300 movs r3, #0 + 8000258: 633b str r3, [r7, #48] @ 0x30 + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 800025a: 2301 movs r3, #1 + 800025c: 63bb str r3, [r7, #56] @ 0x38 + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + 800025e: 2302 movs r3, #2 + 8000260: 647b str r3, [r7, #68] @ 0x44 + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + 8000262: f44f 3380 mov.w r3, #65536 @ 0x10000 + 8000266: 64bb str r3, [r7, #72] @ 0x48 + RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; + 8000268: f44f 13e0 mov.w r3, #1835008 @ 0x1c0000 + 800026c: 64fb str r3, [r7, #76] @ 0x4c + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 800026e: f107 0328 add.w r3, r7, #40 @ 0x28 + 8000272: 4618 mov r0, r3 + 8000274: f002 fc3c bl 8002af0 + 8000278: 4603 mov r3, r0 + 800027a: 2b00 cmp r3, #0 + 800027c: d001 beq.n 8000282 + { + Error_Handler(); + 800027e: f000 fa47 bl 8000710 + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + 8000282: 230f movs r3, #15 + 8000284: 617b str r3, [r7, #20] + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + 8000286: 2302 movs r3, #2 + 8000288: 61bb str r3, [r7, #24] + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 800028a: 2300 movs r3, #0 + 800028c: 61fb str r3, [r7, #28] + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + 800028e: f44f 6380 mov.w r3, #1024 @ 0x400 + 8000292: 623b str r3, [r7, #32] + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 8000294: 2300 movs r3, #0 + 8000296: 627b str r3, [r7, #36] @ 0x24 + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + 8000298: f107 0314 add.w r3, r7, #20 + 800029c: 2102 movs r1, #2 + 800029e: 4618 mov r0, r3 + 80002a0: f002 fea8 bl 8002ff4 + 80002a4: 4603 mov r3, r0 + 80002a6: 2b00 cmp r3, #0 + 80002a8: d001 beq.n 80002ae + { + Error_Handler(); + 80002aa: f000 fa31 bl 8000710 + } + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; + 80002ae: 2310 movs r3, #16 + 80002b0: 607b str r3, [r7, #4] + PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; + 80002b2: 2300 movs r3, #0 + 80002b4: 613b str r3, [r7, #16] + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + 80002b6: 1d3b adds r3, r7, #4 + 80002b8: 4618 mov r0, r3 + 80002ba: f002 fff7 bl 80032ac + 80002be: 4603 mov r3, r0 + 80002c0: 2b00 cmp r3, #0 + 80002c2: d001 beq.n 80002c8 + { + Error_Handler(); + 80002c4: f000 fa24 bl 8000710 + } +} + 80002c8: bf00 nop + 80002ca: 3750 adds r7, #80 @ 0x50 + 80002cc: 46bd mov sp, r7 + 80002ce: bd80 pop {r7, pc} + +080002d0 : + * @brief TIM2 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM2_Init(void) +{ + 80002d0: b580 push {r7, lr} + 80002d2: b08e sub sp, #56 @ 0x38 + 80002d4: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM2_Init 0 */ + + /* USER CODE END TIM2_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 80002d6: f107 0328 add.w r3, r7, #40 @ 0x28 + 80002da: 2200 movs r2, #0 + 80002dc: 601a str r2, [r3, #0] + 80002de: 605a str r2, [r3, #4] + 80002e0: 609a str r2, [r3, #8] + 80002e2: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 80002e4: f107 0320 add.w r3, r7, #32 + 80002e8: 2200 movs r2, #0 + 80002ea: 601a str r2, [r3, #0] + 80002ec: 605a str r2, [r3, #4] + TIM_OC_InitTypeDef sConfigOC = {0}; + 80002ee: 1d3b adds r3, r7, #4 + 80002f0: 2200 movs r2, #0 + 80002f2: 601a str r2, [r3, #0] + 80002f4: 605a str r2, [r3, #4] + 80002f6: 609a str r2, [r3, #8] + 80002f8: 60da str r2, [r3, #12] + 80002fa: 611a str r2, [r3, #16] + 80002fc: 615a str r2, [r3, #20] + 80002fe: 619a str r2, [r3, #24] + + /* USER CODE BEGIN TIM2_Init 1 */ + + /* USER CODE END TIM2_Init 1 */ + htim2.Instance = TIM2; + 8000300: 4b40 ldr r3, [pc, #256] @ (8000404 ) + 8000302: f04f 4280 mov.w r2, #1073741824 @ 0x40000000 + 8000306: 601a str r2, [r3, #0] + htim2.Init.Prescaler = 71; + 8000308: 4b3e ldr r3, [pc, #248] @ (8000404 ) + 800030a: 2247 movs r2, #71 @ 0x47 + 800030c: 605a str r2, [r3, #4] + htim2.Init.CounterMode = TIM_COUNTERMODE_UP; + 800030e: 4b3d ldr r3, [pc, #244] @ (8000404 ) + 8000310: 2200 movs r2, #0 + 8000312: 609a str r2, [r3, #8] + htim2.Init.Period = 249; + 8000314: 4b3b ldr r3, [pc, #236] @ (8000404 ) + 8000316: 22f9 movs r2, #249 @ 0xf9 + 8000318: 60da str r2, [r3, #12] + htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 800031a: 4b3a ldr r3, [pc, #232] @ (8000404 ) + 800031c: 2200 movs r2, #0 + 800031e: 611a str r2, [r3, #16] + htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + 8000320: 4b38 ldr r3, [pc, #224] @ (8000404 ) + 8000322: 2200 movs r2, #0 + 8000324: 619a str r2, [r3, #24] + if (HAL_TIM_Base_Init(&htim2) != HAL_OK) + 8000326: 4837 ldr r0, [pc, #220] @ (8000404 ) + 8000328: f003 f876 bl 8003418 + 800032c: 4603 mov r3, r0 + 800032e: 2b00 cmp r3, #0 + 8000330: d001 beq.n 8000336 + { + Error_Handler(); + 8000332: f000 f9ed bl 8000710 + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 8000336: f44f 5380 mov.w r3, #4096 @ 0x1000 + 800033a: 62bb str r3, [r7, #40] @ 0x28 + if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) + 800033c: f107 0328 add.w r3, r7, #40 @ 0x28 + 8000340: 4619 mov r1, r3 + 8000342: 4830 ldr r0, [pc, #192] @ (8000404 ) + 8000344: f003 fa74 bl 8003830 + 8000348: 4603 mov r3, r0 + 800034a: 2b00 cmp r3, #0 + 800034c: d001 beq.n 8000352 + { + Error_Handler(); + 800034e: f000 f9df bl 8000710 + } + if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) + 8000352: 482c ldr r0, [pc, #176] @ (8000404 ) + 8000354: f003 f8af bl 80034b6 + 8000358: 4603 mov r3, r0 + 800035a: 2b00 cmp r3, #0 + 800035c: d001 beq.n 8000362 + { + Error_Handler(); + 800035e: f000 f9d7 bl 8000710 + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 8000362: 2300 movs r3, #0 + 8000364: 623b str r3, [r7, #32] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 8000366: 2300 movs r3, #0 + 8000368: 627b str r3, [r7, #36] @ 0x24 + if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) + 800036a: f107 0320 add.w r3, r7, #32 + 800036e: 4619 mov r1, r3 + 8000370: 4824 ldr r0, [pc, #144] @ (8000404 ) + 8000372: f003 fdd5 bl 8003f20 + 8000376: 4603 mov r3, r0 + 8000378: 2b00 cmp r3, #0 + 800037a: d001 beq.n 8000380 + { + Error_Handler(); + 800037c: f000 f9c8 bl 8000710 + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + 8000380: 2360 movs r3, #96 @ 0x60 + 8000382: 607b str r3, [r7, #4] + sConfigOC.Pulse = 180; + 8000384: 23b4 movs r3, #180 @ 0xb4 + 8000386: 60bb str r3, [r7, #8] + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + 8000388: 2300 movs r3, #0 + 800038a: 60fb str r3, [r7, #12] + sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; + 800038c: 2304 movs r3, #4 + 800038e: 617b str r3, [r7, #20] + if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + 8000390: 1d3b adds r3, r7, #4 + 8000392: 2200 movs r2, #0 + 8000394: 4619 mov r1, r3 + 8000396: 481b ldr r0, [pc, #108] @ (8000404 ) + 8000398: f003 f988 bl 80036ac + 800039c: 4603 mov r3, r0 + 800039e: 2b00 cmp r3, #0 + 80003a0: d001 beq.n 80003a6 + { + Error_Handler(); + 80003a2: f000 f9b5 bl 8000710 + } + sConfigOC.Pulse = 200; + 80003a6: 23c8 movs r3, #200 @ 0xc8 + 80003a8: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + 80003aa: 1d3b adds r3, r7, #4 + 80003ac: 2204 movs r2, #4 + 80003ae: 4619 mov r1, r3 + 80003b0: 4814 ldr r0, [pc, #80] @ (8000404 ) + 80003b2: f003 f97b bl 80036ac + 80003b6: 4603 mov r3, r0 + 80003b8: 2b00 cmp r3, #0 + 80003ba: d001 beq.n 80003c0 + { + Error_Handler(); + 80003bc: f000 f9a8 bl 8000710 + } + sConfigOC.Pulse = 25; + 80003c0: 2319 movs r3, #25 + 80003c2: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) + 80003c4: 1d3b adds r3, r7, #4 + 80003c6: 2208 movs r2, #8 + 80003c8: 4619 mov r1, r3 + 80003ca: 480e ldr r0, [pc, #56] @ (8000404 ) + 80003cc: f003 f96e bl 80036ac + 80003d0: 4603 mov r3, r0 + 80003d2: 2b00 cmp r3, #0 + 80003d4: d001 beq.n 80003da + { + Error_Handler(); + 80003d6: f000 f99b bl 8000710 + } + sConfigOC.Pulse = 50; + 80003da: 2332 movs r3, #50 @ 0x32 + 80003dc: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) + 80003de: 1d3b adds r3, r7, #4 + 80003e0: 220c movs r2, #12 + 80003e2: 4619 mov r1, r3 + 80003e4: 4807 ldr r0, [pc, #28] @ (8000404 ) + 80003e6: f003 f961 bl 80036ac + 80003ea: 4603 mov r3, r0 + 80003ec: 2b00 cmp r3, #0 + 80003ee: d001 beq.n 80003f4 + { + Error_Handler(); + 80003f0: f000 f98e bl 8000710 + } + /* USER CODE BEGIN TIM2_Init 2 */ + + /* USER CODE END TIM2_Init 2 */ + HAL_TIM_MspPostInit(&htim2); + 80003f4: 4803 ldr r0, [pc, #12] @ (8000404 ) + 80003f6: f000 fa07 bl 8000808 + +} + 80003fa: bf00 nop + 80003fc: 3738 adds r7, #56 @ 0x38 + 80003fe: 46bd mov sp, r7 + 8000400: bd80 pop {r7, pc} + 8000402: bf00 nop + 8000404: 200001e8 .word 0x200001e8 + +08000408 : + * @brief TIM3 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM3_Init(void) +{ + 8000408: b580 push {r7, lr} + 800040a: b08e sub sp, #56 @ 0x38 + 800040c: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM3_Init 0 */ + + /* USER CODE END TIM3_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 800040e: f107 0328 add.w r3, r7, #40 @ 0x28 + 8000412: 2200 movs r2, #0 + 8000414: 601a str r2, [r3, #0] + 8000416: 605a str r2, [r3, #4] + 8000418: 609a str r2, [r3, #8] + 800041a: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 800041c: f107 0320 add.w r3, r7, #32 + 8000420: 2200 movs r2, #0 + 8000422: 601a str r2, [r3, #0] + 8000424: 605a str r2, [r3, #4] + TIM_OC_InitTypeDef sConfigOC = {0}; + 8000426: 1d3b adds r3, r7, #4 + 8000428: 2200 movs r2, #0 + 800042a: 601a str r2, [r3, #0] + 800042c: 605a str r2, [r3, #4] + 800042e: 609a str r2, [r3, #8] + 8000430: 60da str r2, [r3, #12] + 8000432: 611a str r2, [r3, #16] + 8000434: 615a str r2, [r3, #20] + 8000436: 619a str r2, [r3, #24] + + /* USER CODE BEGIN TIM3_Init 1 */ + + /* USER CODE END TIM3_Init 1 */ + htim3.Instance = TIM3; + 8000438: 4b42 ldr r3, [pc, #264] @ (8000544 ) + 800043a: 4a43 ldr r2, [pc, #268] @ (8000548 ) + 800043c: 601a str r2, [r3, #0] + htim3.Init.Prescaler = 0; + 800043e: 4b41 ldr r3, [pc, #260] @ (8000544 ) + 8000440: 2200 movs r2, #0 + 8000442: 605a str r2, [r3, #4] + htim3.Init.CounterMode = TIM_COUNTERMODE_UP; + 8000444: 4b3f ldr r3, [pc, #252] @ (8000544 ) + 8000446: 2200 movs r2, #0 + 8000448: 609a str r2, [r3, #8] + htim3.Init.Period = 17999; + 800044a: 4b3e ldr r3, [pc, #248] @ (8000544 ) + 800044c: f244 624f movw r2, #17999 @ 0x464f + 8000450: 60da str r2, [r3, #12] + htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 8000452: 4b3c ldr r3, [pc, #240] @ (8000544 ) + 8000454: 2200 movs r2, #0 + 8000456: 611a str r2, [r3, #16] + htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + 8000458: 4b3a ldr r3, [pc, #232] @ (8000544 ) + 800045a: 2200 movs r2, #0 + 800045c: 619a str r2, [r3, #24] + if (HAL_TIM_Base_Init(&htim3) != HAL_OK) + 800045e: 4839 ldr r0, [pc, #228] @ (8000544 ) + 8000460: f002 ffda bl 8003418 + 8000464: 4603 mov r3, r0 + 8000466: 2b00 cmp r3, #0 + 8000468: d001 beq.n 800046e + { + Error_Handler(); + 800046a: f000 f951 bl 8000710 + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 800046e: f44f 5380 mov.w r3, #4096 @ 0x1000 + 8000472: 62bb str r3, [r7, #40] @ 0x28 + if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) + 8000474: f107 0328 add.w r3, r7, #40 @ 0x28 + 8000478: 4619 mov r1, r3 + 800047a: 4832 ldr r0, [pc, #200] @ (8000544 ) + 800047c: f003 f9d8 bl 8003830 + 8000480: 4603 mov r3, r0 + 8000482: 2b00 cmp r3, #0 + 8000484: d001 beq.n 800048a + { + Error_Handler(); + 8000486: f000 f943 bl 8000710 + } + if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) + 800048a: 482e ldr r0, [pc, #184] @ (8000544 ) + 800048c: f003 f813 bl 80034b6 + 8000490: 4603 mov r3, r0 + 8000492: 2b00 cmp r3, #0 + 8000494: d001 beq.n 800049a + { + Error_Handler(); + 8000496: f000 f93b bl 8000710 + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 800049a: 2300 movs r3, #0 + 800049c: 623b str r3, [r7, #32] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 800049e: 2300 movs r3, #0 + 80004a0: 627b str r3, [r7, #36] @ 0x24 + if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) + 80004a2: f107 0320 add.w r3, r7, #32 + 80004a6: 4619 mov r1, r3 + 80004a8: 4826 ldr r0, [pc, #152] @ (8000544 ) + 80004aa: f003 fd39 bl 8003f20 + 80004ae: 4603 mov r3, r0 + 80004b0: 2b00 cmp r3, #0 + 80004b2: d001 beq.n 80004b8 + { + Error_Handler(); + 80004b4: f000 f92c bl 8000710 + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + 80004b8: 2360 movs r3, #96 @ 0x60 + 80004ba: 607b str r3, [r7, #4] + sConfigOC.Pulse = 2000; + 80004bc: f44f 63fa mov.w r3, #2000 @ 0x7d0 + 80004c0: 60bb str r3, [r7, #8] + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + 80004c2: 2300 movs r3, #0 + 80004c4: 60fb str r3, [r7, #12] + sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; + 80004c6: 2304 movs r3, #4 + 80004c8: 617b str r3, [r7, #20] + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + 80004ca: 1d3b adds r3, r7, #4 + 80004cc: 2200 movs r2, #0 + 80004ce: 4619 mov r1, r3 + 80004d0: 481c ldr r0, [pc, #112] @ (8000544 ) + 80004d2: f003 f8eb bl 80036ac + 80004d6: 4603 mov r3, r0 + 80004d8: 2b00 cmp r3, #0 + 80004da: d001 beq.n 80004e0 + { + Error_Handler(); + 80004dc: f000 f918 bl 8000710 + } + sConfigOC.Pulse = 3000; + 80004e0: f640 33b8 movw r3, #3000 @ 0xbb8 + 80004e4: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + 80004e6: 1d3b adds r3, r7, #4 + 80004e8: 2204 movs r2, #4 + 80004ea: 4619 mov r1, r3 + 80004ec: 4815 ldr r0, [pc, #84] @ (8000544 ) + 80004ee: f003 f8dd bl 80036ac + 80004f2: 4603 mov r3, r0 + 80004f4: 2b00 cmp r3, #0 + 80004f6: d001 beq.n 80004fc + { + Error_Handler(); + 80004f8: f000 f90a bl 8000710 + } + sConfigOC.Pulse = 5000; + 80004fc: f241 3388 movw r3, #5000 @ 0x1388 + 8000500: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) + 8000502: 1d3b adds r3, r7, #4 + 8000504: 2208 movs r2, #8 + 8000506: 4619 mov r1, r3 + 8000508: 480e ldr r0, [pc, #56] @ (8000544 ) + 800050a: f003 f8cf bl 80036ac + 800050e: 4603 mov r3, r0 + 8000510: 2b00 cmp r3, #0 + 8000512: d001 beq.n 8000518 + { + Error_Handler(); + 8000514: f000 f8fc bl 8000710 + } + sConfigOC.Pulse = 7000; + 8000518: f641 3358 movw r3, #7000 @ 0x1b58 + 800051c: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) + 800051e: 1d3b adds r3, r7, #4 + 8000520: 220c movs r2, #12 + 8000522: 4619 mov r1, r3 + 8000524: 4807 ldr r0, [pc, #28] @ (8000544 ) + 8000526: f003 f8c1 bl 80036ac + 800052a: 4603 mov r3, r0 + 800052c: 2b00 cmp r3, #0 + 800052e: d001 beq.n 8000534 + { + Error_Handler(); + 8000530: f000 f8ee bl 8000710 + } + /* USER CODE BEGIN TIM3_Init 2 */ + + /* USER CODE END TIM3_Init 2 */ + HAL_TIM_MspPostInit(&htim3); + 8000534: 4803 ldr r0, [pc, #12] @ (8000544 ) + 8000536: f000 f967 bl 8000808 + +} + 800053a: bf00 nop + 800053c: 3738 adds r7, #56 @ 0x38 + 800053e: 46bd mov sp, r7 + 8000540: bd80 pop {r7, pc} + 8000542: bf00 nop + 8000544: 20000230 .word 0x20000230 + 8000548: 40000400 .word 0x40000400 + +0800054c : + * @brief TIM4 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM4_Init(void) +{ + 800054c: b580 push {r7, lr} + 800054e: b08e sub sp, #56 @ 0x38 + 8000550: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM4_Init 0 */ + + /* USER CODE END TIM4_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 8000552: f107 0328 add.w r3, r7, #40 @ 0x28 + 8000556: 2200 movs r2, #0 + 8000558: 601a str r2, [r3, #0] + 800055a: 605a str r2, [r3, #4] + 800055c: 609a str r2, [r3, #8] + 800055e: 60da str r2, [r3, #12] + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 8000560: f107 0320 add.w r3, r7, #32 + 8000564: 2200 movs r2, #0 + 8000566: 601a str r2, [r3, #0] + 8000568: 605a str r2, [r3, #4] + TIM_OC_InitTypeDef sConfigOC = {0}; + 800056a: 1d3b adds r3, r7, #4 + 800056c: 2200 movs r2, #0 + 800056e: 601a str r2, [r3, #0] + 8000570: 605a str r2, [r3, #4] + 8000572: 609a str r2, [r3, #8] + 8000574: 60da str r2, [r3, #12] + 8000576: 611a str r2, [r3, #16] + 8000578: 615a str r2, [r3, #20] + 800057a: 619a str r2, [r3, #24] + + /* USER CODE BEGIN TIM4_Init 1 */ + + /* USER CODE END TIM4_Init 1 */ + htim4.Instance = TIM4; + 800057c: 4b42 ldr r3, [pc, #264] @ (8000688 ) + 800057e: 4a43 ldr r2, [pc, #268] @ (800068c ) + 8000580: 601a str r2, [r3, #0] + htim4.Init.Prescaler = 0; + 8000582: 4b41 ldr r3, [pc, #260] @ (8000688 ) + 8000584: 2200 movs r2, #0 + 8000586: 605a str r2, [r3, #4] + htim4.Init.CounterMode = TIM_COUNTERMODE_UP; + 8000588: 4b3f ldr r3, [pc, #252] @ (8000688 ) + 800058a: 2200 movs r2, #0 + 800058c: 609a str r2, [r3, #8] + htim4.Init.Period = 17999; + 800058e: 4b3e ldr r3, [pc, #248] @ (8000688 ) + 8000590: f244 624f movw r2, #17999 @ 0x464f + 8000594: 60da str r2, [r3, #12] + htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 8000596: 4b3c ldr r3, [pc, #240] @ (8000688 ) + 8000598: 2200 movs r2, #0 + 800059a: 611a str r2, [r3, #16] + htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + 800059c: 4b3a ldr r3, [pc, #232] @ (8000688 ) + 800059e: 2200 movs r2, #0 + 80005a0: 619a str r2, [r3, #24] + if (HAL_TIM_Base_Init(&htim4) != HAL_OK) + 80005a2: 4839 ldr r0, [pc, #228] @ (8000688 ) + 80005a4: f002 ff38 bl 8003418 + 80005a8: 4603 mov r3, r0 + 80005aa: 2b00 cmp r3, #0 + 80005ac: d001 beq.n 80005b2 + { + Error_Handler(); + 80005ae: f000 f8af bl 8000710 + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 80005b2: f44f 5380 mov.w r3, #4096 @ 0x1000 + 80005b6: 62bb str r3, [r7, #40] @ 0x28 + if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) + 80005b8: f107 0328 add.w r3, r7, #40 @ 0x28 + 80005bc: 4619 mov r1, r3 + 80005be: 4832 ldr r0, [pc, #200] @ (8000688 ) + 80005c0: f003 f936 bl 8003830 + 80005c4: 4603 mov r3, r0 + 80005c6: 2b00 cmp r3, #0 + 80005c8: d001 beq.n 80005ce + { + Error_Handler(); + 80005ca: f000 f8a1 bl 8000710 + } + if (HAL_TIM_PWM_Init(&htim4) != HAL_OK) + 80005ce: 482e ldr r0, [pc, #184] @ (8000688 ) + 80005d0: f002 ff71 bl 80034b6 + 80005d4: 4603 mov r3, r0 + 80005d6: 2b00 cmp r3, #0 + 80005d8: d001 beq.n 80005de + { + Error_Handler(); + 80005da: f000 f899 bl 8000710 + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 80005de: 2300 movs r3, #0 + 80005e0: 623b str r3, [r7, #32] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 80005e2: 2300 movs r3, #0 + 80005e4: 627b str r3, [r7, #36] @ 0x24 + if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK) + 80005e6: f107 0320 add.w r3, r7, #32 + 80005ea: 4619 mov r1, r3 + 80005ec: 4826 ldr r0, [pc, #152] @ (8000688 ) + 80005ee: f003 fc97 bl 8003f20 + 80005f2: 4603 mov r3, r0 + 80005f4: 2b00 cmp r3, #0 + 80005f6: d001 beq.n 80005fc + { + Error_Handler(); + 80005f8: f000 f88a bl 8000710 + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + 80005fc: 2360 movs r3, #96 @ 0x60 + 80005fe: 607b str r3, [r7, #4] + sConfigOC.Pulse = 7000; + 8000600: f641 3358 movw r3, #7000 @ 0x1b58 + 8000604: 60bb str r3, [r7, #8] + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + 8000606: 2300 movs r3, #0 + 8000608: 60fb str r3, [r7, #12] + sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; + 800060a: 2304 movs r3, #4 + 800060c: 617b str r3, [r7, #20] + if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + 800060e: 1d3b adds r3, r7, #4 + 8000610: 2200 movs r2, #0 + 8000612: 4619 mov r1, r3 + 8000614: 481c ldr r0, [pc, #112] @ (8000688 ) + 8000616: f003 f849 bl 80036ac + 800061a: 4603 mov r3, r0 + 800061c: 2b00 cmp r3, #0 + 800061e: d001 beq.n 8000624 + { + Error_Handler(); + 8000620: f000 f876 bl 8000710 + } + sConfigOC.Pulse = 10000; + 8000624: f242 7310 movw r3, #10000 @ 0x2710 + 8000628: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + 800062a: 1d3b adds r3, r7, #4 + 800062c: 2204 movs r2, #4 + 800062e: 4619 mov r1, r3 + 8000630: 4815 ldr r0, [pc, #84] @ (8000688 ) + 8000632: f003 f83b bl 80036ac + 8000636: 4603 mov r3, r0 + 8000638: 2b00 cmp r3, #0 + 800063a: d001 beq.n 8000640 + { + Error_Handler(); + 800063c: f000 f868 bl 8000710 + } + sConfigOC.Pulse = 3000; + 8000640: f640 33b8 movw r3, #3000 @ 0xbb8 + 8000644: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) + 8000646: 1d3b adds r3, r7, #4 + 8000648: 2208 movs r2, #8 + 800064a: 4619 mov r1, r3 + 800064c: 480e ldr r0, [pc, #56] @ (8000688 ) + 800064e: f003 f82d bl 80036ac + 8000652: 4603 mov r3, r0 + 8000654: 2b00 cmp r3, #0 + 8000656: d001 beq.n 800065c + { + Error_Handler(); + 8000658: f000 f85a bl 8000710 + } + sConfigOC.Pulse = 12000; + 800065c: f642 63e0 movw r3, #12000 @ 0x2ee0 + 8000660: 60bb str r3, [r7, #8] + if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) + 8000662: 1d3b adds r3, r7, #4 + 8000664: 220c movs r2, #12 + 8000666: 4619 mov r1, r3 + 8000668: 4807 ldr r0, [pc, #28] @ (8000688 ) + 800066a: f003 f81f bl 80036ac + 800066e: 4603 mov r3, r0 + 8000670: 2b00 cmp r3, #0 + 8000672: d001 beq.n 8000678 + { + Error_Handler(); + 8000674: f000 f84c bl 8000710 + } + /* USER CODE BEGIN TIM4_Init 2 */ + + /* USER CODE END TIM4_Init 2 */ + HAL_TIM_MspPostInit(&htim4); + 8000678: 4803 ldr r0, [pc, #12] @ (8000688 ) + 800067a: f000 f8c5 bl 8000808 + +} + 800067e: bf00 nop + 8000680: 3738 adds r7, #56 @ 0x38 + 8000682: 46bd mov sp, r7 + 8000684: bd80 pop {r7, pc} + 8000686: bf00 nop + 8000688: 20000278 .word 0x20000278 + 800068c: 40000800 .word 0x40000800 + +08000690 : + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + 8000690: b580 push {r7, lr} + 8000692: b088 sub sp, #32 + 8000694: af00 add r7, sp, #0 + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000696: f107 0310 add.w r3, r7, #16 + 800069a: 2200 movs r2, #0 + 800069c: 601a str r2, [r3, #0] + 800069e: 605a str r2, [r3, #4] + 80006a0: 609a str r2, [r3, #8] + 80006a2: 60da str r2, [r3, #12] + /* USER CODE BEGIN MX_GPIO_Init_1 */ + + /* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOD_CLK_ENABLE(); + 80006a4: 4b18 ldr r3, [pc, #96] @ (8000708 ) + 80006a6: 699b ldr r3, [r3, #24] + 80006a8: 4a17 ldr r2, [pc, #92] @ (8000708 ) + 80006aa: f043 0320 orr.w r3, r3, #32 + 80006ae: 6193 str r3, [r2, #24] + 80006b0: 4b15 ldr r3, [pc, #84] @ (8000708 ) + 80006b2: 699b ldr r3, [r3, #24] + 80006b4: f003 0320 and.w r3, r3, #32 + 80006b8: 60fb str r3, [r7, #12] + 80006ba: 68fb ldr r3, [r7, #12] + __HAL_RCC_GPIOA_CLK_ENABLE(); + 80006bc: 4b12 ldr r3, [pc, #72] @ (8000708 ) + 80006be: 699b ldr r3, [r3, #24] + 80006c0: 4a11 ldr r2, [pc, #68] @ (8000708 ) + 80006c2: f043 0304 orr.w r3, r3, #4 + 80006c6: 6193 str r3, [r2, #24] + 80006c8: 4b0f ldr r3, [pc, #60] @ (8000708 ) + 80006ca: 699b ldr r3, [r3, #24] + 80006cc: f003 0304 and.w r3, r3, #4 + 80006d0: 60bb str r3, [r7, #8] + 80006d2: 68bb ldr r3, [r7, #8] + __HAL_RCC_GPIOB_CLK_ENABLE(); + 80006d4: 4b0c ldr r3, [pc, #48] @ (8000708 ) + 80006d6: 699b ldr r3, [r3, #24] + 80006d8: 4a0b ldr r2, [pc, #44] @ (8000708 ) + 80006da: f043 0308 orr.w r3, r3, #8 + 80006de: 6193 str r3, [r2, #24] + 80006e0: 4b09 ldr r3, [pc, #36] @ (8000708 ) + 80006e2: 699b ldr r3, [r3, #24] + 80006e4: f003 0308 and.w r3, r3, #8 + 80006e8: 607b str r3, [r7, #4] + 80006ea: 687b ldr r3, [r7, #4] + + /*Configure GPIO pins : PA4 PA5 PA6 PA7 */ + GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + 80006ec: 23f0 movs r3, #240 @ 0xf0 + 80006ee: 613b str r3, [r7, #16] + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + 80006f0: 2303 movs r3, #3 + 80006f2: 617b str r3, [r7, #20] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 80006f4: f107 0310 add.w r3, r7, #16 + 80006f8: 4619 mov r1, r3 + 80006fa: 4804 ldr r0, [pc, #16] @ (800070c ) + 80006fc: f000 fb14 bl 8000d28 + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + 8000700: bf00 nop + 8000702: 3720 adds r7, #32 + 8000704: 46bd mov sp, r7 + 8000706: bd80 pop {r7, pc} + 8000708: 40021000 .word 0x40021000 + 800070c: 40010800 .word 0x40010800 + +08000710 : +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + 8000710: b480 push {r7} + 8000712: af00 add r7, sp, #0 + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_irq(void) +{ + __ASM volatile ("cpsid i" : : : "memory"); + 8000714: b672 cpsid i +} + 8000716: 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) + 8000718: bf00 nop + 800071a: e7fd b.n 8000718 + +0800071c : +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + 800071c: b480 push {r7} + 800071e: b085 sub sp, #20 + 8000720: af00 add r7, sp, #0 + + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_AFIO_CLK_ENABLE(); + 8000722: 4b15 ldr r3, [pc, #84] @ (8000778 ) + 8000724: 699b ldr r3, [r3, #24] + 8000726: 4a14 ldr r2, [pc, #80] @ (8000778 ) + 8000728: f043 0301 orr.w r3, r3, #1 + 800072c: 6193 str r3, [r2, #24] + 800072e: 4b12 ldr r3, [pc, #72] @ (8000778 ) + 8000730: 699b ldr r3, [r3, #24] + 8000732: f003 0301 and.w r3, r3, #1 + 8000736: 60bb str r3, [r7, #8] + 8000738: 68bb ldr r3, [r7, #8] + __HAL_RCC_PWR_CLK_ENABLE(); + 800073a: 4b0f ldr r3, [pc, #60] @ (8000778 ) + 800073c: 69db ldr r3, [r3, #28] + 800073e: 4a0e ldr r2, [pc, #56] @ (8000778 ) + 8000740: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8000744: 61d3 str r3, [r2, #28] + 8000746: 4b0c ldr r3, [pc, #48] @ (8000778 ) + 8000748: 69db ldr r3, [r3, #28] + 800074a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 800074e: 607b str r3, [r7, #4] + 8000750: 687b ldr r3, [r7, #4] + + /* System interrupt init*/ + + /** DISABLE: JTAG-DP Disabled and SW-DP Disabled + */ + __HAL_AFIO_REMAP_SWJ_DISABLE(); + 8000752: 4b0a ldr r3, [pc, #40] @ (800077c ) + 8000754: 685b ldr r3, [r3, #4] + 8000756: 60fb str r3, [r7, #12] + 8000758: 68fb ldr r3, [r7, #12] + 800075a: f023 63e0 bic.w r3, r3, #117440512 @ 0x7000000 + 800075e: 60fb str r3, [r7, #12] + 8000760: 68fb ldr r3, [r7, #12] + 8000762: f043 6380 orr.w r3, r3, #67108864 @ 0x4000000 + 8000766: 60fb str r3, [r7, #12] + 8000768: 4a04 ldr r2, [pc, #16] @ (800077c ) + 800076a: 68fb ldr r3, [r7, #12] + 800076c: 6053 str r3, [r2, #4] + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + 800076e: bf00 nop + 8000770: 3714 adds r7, #20 + 8000772: 46bd mov sp, r7 + 8000774: bc80 pop {r7} + 8000776: 4770 bx lr + 8000778: 40021000 .word 0x40021000 + 800077c: 40010000 .word 0x40010000 + +08000780 : + * 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) +{ + 8000780: b480 push {r7} + 8000782: b087 sub sp, #28 + 8000784: af00 add r7, sp, #0 + 8000786: 6078 str r0, [r7, #4] + if(htim_base->Instance==TIM2) + 8000788: 687b ldr r3, [r7, #4] + 800078a: 681b ldr r3, [r3, #0] + 800078c: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8000790: d10c bne.n 80007ac + { + /* USER CODE BEGIN TIM2_MspInit 0 */ + + /* USER CODE END TIM2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM2_CLK_ENABLE(); + 8000792: 4b1a ldr r3, [pc, #104] @ (80007fc ) + 8000794: 69db ldr r3, [r3, #28] + 8000796: 4a19 ldr r2, [pc, #100] @ (80007fc ) + 8000798: f043 0301 orr.w r3, r3, #1 + 800079c: 61d3 str r3, [r2, #28] + 800079e: 4b17 ldr r3, [pc, #92] @ (80007fc ) + 80007a0: 69db ldr r3, [r3, #28] + 80007a2: f003 0301 and.w r3, r3, #1 + 80007a6: 617b str r3, [r7, #20] + 80007a8: 697b ldr r3, [r7, #20] + /* USER CODE BEGIN TIM4_MspInit 1 */ + + /* USER CODE END TIM4_MspInit 1 */ + } + +} + 80007aa: e022 b.n 80007f2 + else if(htim_base->Instance==TIM3) + 80007ac: 687b ldr r3, [r7, #4] + 80007ae: 681b ldr r3, [r3, #0] + 80007b0: 4a13 ldr r2, [pc, #76] @ (8000800 ) + 80007b2: 4293 cmp r3, r2 + 80007b4: d10c bne.n 80007d0 + __HAL_RCC_TIM3_CLK_ENABLE(); + 80007b6: 4b11 ldr r3, [pc, #68] @ (80007fc ) + 80007b8: 69db ldr r3, [r3, #28] + 80007ba: 4a10 ldr r2, [pc, #64] @ (80007fc ) + 80007bc: f043 0302 orr.w r3, r3, #2 + 80007c0: 61d3 str r3, [r2, #28] + 80007c2: 4b0e ldr r3, [pc, #56] @ (80007fc ) + 80007c4: 69db ldr r3, [r3, #28] + 80007c6: f003 0302 and.w r3, r3, #2 + 80007ca: 613b str r3, [r7, #16] + 80007cc: 693b ldr r3, [r7, #16] +} + 80007ce: e010 b.n 80007f2 + else if(htim_base->Instance==TIM4) + 80007d0: 687b ldr r3, [r7, #4] + 80007d2: 681b ldr r3, [r3, #0] + 80007d4: 4a0b ldr r2, [pc, #44] @ (8000804 ) + 80007d6: 4293 cmp r3, r2 + 80007d8: d10b bne.n 80007f2 + __HAL_RCC_TIM4_CLK_ENABLE(); + 80007da: 4b08 ldr r3, [pc, #32] @ (80007fc ) + 80007dc: 69db ldr r3, [r3, #28] + 80007de: 4a07 ldr r2, [pc, #28] @ (80007fc ) + 80007e0: f043 0304 orr.w r3, r3, #4 + 80007e4: 61d3 str r3, [r2, #28] + 80007e6: 4b05 ldr r3, [pc, #20] @ (80007fc ) + 80007e8: 69db ldr r3, [r3, #28] + 80007ea: f003 0304 and.w r3, r3, #4 + 80007ee: 60fb str r3, [r7, #12] + 80007f0: 68fb ldr r3, [r7, #12] +} + 80007f2: bf00 nop + 80007f4: 371c adds r7, #28 + 80007f6: 46bd mov sp, r7 + 80007f8: bc80 pop {r7} + 80007fa: 4770 bx lr + 80007fc: 40021000 .word 0x40021000 + 8000800: 40000400 .word 0x40000400 + 8000804: 40000800 .word 0x40000800 + +08000808 : + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) +{ + 8000808: b580 push {r7, lr} + 800080a: b08a sub sp, #40 @ 0x28 + 800080c: af00 add r7, sp, #0 + 800080e: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000810: f107 0314 add.w r3, r7, #20 + 8000814: 2200 movs r2, #0 + 8000816: 601a str r2, [r3, #0] + 8000818: 605a str r2, [r3, #4] + 800081a: 609a str r2, [r3, #8] + 800081c: 60da str r2, [r3, #12] + if(htim->Instance==TIM2) + 800081e: 687b ldr r3, [r7, #4] + 8000820: 681b ldr r3, [r3, #0] + 8000822: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8000826: d118 bne.n 800085a + { + /* USER CODE BEGIN TIM2_MspPostInit 0 */ + + /* USER CODE END TIM2_MspPostInit 0 */ + __HAL_RCC_GPIOA_CLK_ENABLE(); + 8000828: 4b35 ldr r3, [pc, #212] @ (8000900 ) + 800082a: 699b ldr r3, [r3, #24] + 800082c: 4a34 ldr r2, [pc, #208] @ (8000900 ) + 800082e: f043 0304 orr.w r3, r3, #4 + 8000832: 6193 str r3, [r2, #24] + 8000834: 4b32 ldr r3, [pc, #200] @ (8000900 ) + 8000836: 699b ldr r3, [r3, #24] + 8000838: f003 0304 and.w r3, r3, #4 + 800083c: 613b str r3, [r7, #16] + 800083e: 693b ldr r3, [r7, #16] + PA0-WKUP ------> TIM2_CH1 + PA1 ------> TIM2_CH2 + PA2 ------> TIM2_CH3 + PA3 ------> TIM2_CH4 + */ + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3; + 8000840: 230f movs r3, #15 + 8000842: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000844: 2302 movs r3, #2 + 8000846: 61bb str r3, [r7, #24] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + 8000848: 2303 movs r3, #3 + 800084a: 623b str r3, [r7, #32] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 800084c: f107 0314 add.w r3, r7, #20 + 8000850: 4619 mov r1, r3 + 8000852: 482c ldr r0, [pc, #176] @ (8000904 ) + 8000854: f000 fa68 bl 8000d28 + /* USER CODE BEGIN TIM4_MspPostInit 1 */ + + /* USER CODE END TIM4_MspPostInit 1 */ + } + +} + 8000858: e04d b.n 80008f6 + else if(htim->Instance==TIM3) + 800085a: 687b ldr r3, [r7, #4] + 800085c: 681b ldr r3, [r3, #0] + 800085e: 4a2a ldr r2, [pc, #168] @ (8000908 ) + 8000860: 4293 cmp r3, r2 + 8000862: d12a bne.n 80008ba + __HAL_RCC_GPIOB_CLK_ENABLE(); + 8000864: 4b26 ldr r3, [pc, #152] @ (8000900 ) + 8000866: 699b ldr r3, [r3, #24] + 8000868: 4a25 ldr r2, [pc, #148] @ (8000900 ) + 800086a: f043 0308 orr.w r3, r3, #8 + 800086e: 6193 str r3, [r2, #24] + 8000870: 4b23 ldr r3, [pc, #140] @ (8000900 ) + 8000872: 699b ldr r3, [r3, #24] + 8000874: f003 0308 and.w r3, r3, #8 + 8000878: 60fb str r3, [r7, #12] + 800087a: 68fb ldr r3, [r7, #12] + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5; + 800087c: 2333 movs r3, #51 @ 0x33 + 800087e: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000880: 2302 movs r3, #2 + 8000882: 61bb str r3, [r7, #24] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000884: 2302 movs r3, #2 + 8000886: 623b str r3, [r7, #32] + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 8000888: f107 0314 add.w r3, r7, #20 + 800088c: 4619 mov r1, r3 + 800088e: 481f ldr r0, [pc, #124] @ (800090c ) + 8000890: f000 fa4a bl 8000d28 + __HAL_AFIO_REMAP_TIM3_PARTIAL(); + 8000894: 4b1e ldr r3, [pc, #120] @ (8000910 ) + 8000896: 685b ldr r3, [r3, #4] + 8000898: 627b str r3, [r7, #36] @ 0x24 + 800089a: 6a7b ldr r3, [r7, #36] @ 0x24 + 800089c: f423 6340 bic.w r3, r3, #3072 @ 0xc00 + 80008a0: 627b str r3, [r7, #36] @ 0x24 + 80008a2: 6a7b ldr r3, [r7, #36] @ 0x24 + 80008a4: f043 63e0 orr.w r3, r3, #117440512 @ 0x7000000 + 80008a8: 627b str r3, [r7, #36] @ 0x24 + 80008aa: 6a7b ldr r3, [r7, #36] @ 0x24 + 80008ac: f443 6300 orr.w r3, r3, #2048 @ 0x800 + 80008b0: 627b str r3, [r7, #36] @ 0x24 + 80008b2: 4a17 ldr r2, [pc, #92] @ (8000910 ) + 80008b4: 6a7b ldr r3, [r7, #36] @ 0x24 + 80008b6: 6053 str r3, [r2, #4] +} + 80008b8: e01d b.n 80008f6 + else if(htim->Instance==TIM4) + 80008ba: 687b ldr r3, [r7, #4] + 80008bc: 681b ldr r3, [r3, #0] + 80008be: 4a15 ldr r2, [pc, #84] @ (8000914 ) + 80008c0: 4293 cmp r3, r2 + 80008c2: d118 bne.n 80008f6 + __HAL_RCC_GPIOB_CLK_ENABLE(); + 80008c4: 4b0e ldr r3, [pc, #56] @ (8000900 ) + 80008c6: 699b ldr r3, [r3, #24] + 80008c8: 4a0d ldr r2, [pc, #52] @ (8000900 ) + 80008ca: f043 0308 orr.w r3, r3, #8 + 80008ce: 6193 str r3, [r2, #24] + 80008d0: 4b0b ldr r3, [pc, #44] @ (8000900 ) + 80008d2: 699b ldr r3, [r3, #24] + 80008d4: f003 0308 and.w r3, r3, #8 + 80008d8: 60bb str r3, [r7, #8] + 80008da: 68bb ldr r3, [r7, #8] + GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9; + 80008dc: f44f 7370 mov.w r3, #960 @ 0x3c0 + 80008e0: 617b str r3, [r7, #20] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 80008e2: 2302 movs r3, #2 + 80008e4: 61bb str r3, [r7, #24] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + 80008e6: 2303 movs r3, #3 + 80008e8: 623b str r3, [r7, #32] + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 80008ea: f107 0314 add.w r3, r7, #20 + 80008ee: 4619 mov r1, r3 + 80008f0: 4806 ldr r0, [pc, #24] @ (800090c ) + 80008f2: f000 fa19 bl 8000d28 +} + 80008f6: bf00 nop + 80008f8: 3728 adds r7, #40 @ 0x28 + 80008fa: 46bd mov sp, r7 + 80008fc: bd80 pop {r7, pc} + 80008fe: bf00 nop + 8000900: 40021000 .word 0x40021000 + 8000904: 40010800 .word 0x40010800 + 8000908: 40000400 .word 0x40000400 + 800090c: 40010c00 .word 0x40010c00 + 8000910: 40010000 .word 0x40010000 + 8000914: 40000800 .word 0x40000800 + +08000918 : +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + 8000918: b480 push {r7} + 800091a: 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) + 800091c: bf00 nop + 800091e: e7fd b.n 800091c + +08000920 : + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + 8000920: b480 push {r7} + 8000922: af00 add r7, sp, #0 + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + 8000924: bf00 nop + 8000926: e7fd b.n 8000924 + +08000928 : + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + 8000928: b480 push {r7} + 800092a: af00 add r7, sp, #0 + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + 800092c: bf00 nop + 800092e: e7fd b.n 800092c + +08000930 : + +/** + * @brief This function handles Prefetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + 8000930: b480 push {r7} + 8000932: af00 add r7, sp, #0 + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + 8000934: bf00 nop + 8000936: e7fd b.n 8000934 + +08000938 : + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + 8000938: b480 push {r7} + 800093a: af00 add r7, sp, #0 + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + 800093c: bf00 nop + 800093e: e7fd b.n 800093c + +08000940 : + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + 8000940: b480 push {r7} + 8000942: af00 add r7, sp, #0 + + /* USER CODE END SVCall_IRQn 0 */ + /* USER CODE BEGIN SVCall_IRQn 1 */ + + /* USER CODE END SVCall_IRQn 1 */ +} + 8000944: bf00 nop + 8000946: 46bd mov sp, r7 + 8000948: bc80 pop {r7} + 800094a: 4770 bx lr + +0800094c : + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + 800094c: b480 push {r7} + 800094e: af00 add r7, sp, #0 + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + 8000950: bf00 nop + 8000952: 46bd mov sp, r7 + 8000954: bc80 pop {r7} + 8000956: 4770 bx lr + +08000958 : + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + 8000958: b480 push {r7} + 800095a: af00 add r7, sp, #0 + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + 800095c: bf00 nop + 800095e: 46bd mov sp, r7 + 8000960: bc80 pop {r7} + 8000962: 4770 bx lr + +08000964 : + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + 8000964: b580 push {r7, lr} + 8000966: af00 add r7, sp, #0 + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + 8000968: f000 f8b4 bl 8000ad4 + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + 800096c: bf00 nop + 800096e: bd80 pop {r7, pc} + +08000970 : + +/** + * @brief This function handles USB low priority or CAN RX0 interrupts. + */ +void USB_LP_CAN1_RX0_IRQHandler(void) +{ + 8000970: b580 push {r7, lr} + 8000972: af00 add r7, sp, #0 + /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ + + /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ + HAL_PCD_IRQHandler(&hpcd_USB_FS); + 8000974: 4802 ldr r0, [pc, #8] @ (8000980 ) + 8000976: f000 fc77 bl 8001268 + /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ + + /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */ +} + 800097a: bf00 nop + 800097c: bd80 pop {r7, pc} + 800097e: bf00 nop + 8000980: 20001094 .word 0x20001094 + +08000984 <_sbrk>: + * + * @param incr Memory size + * @return Pointer to allocated memory + */ +void *_sbrk(ptrdiff_t incr) +{ + 8000984: b580 push {r7, lr} + 8000986: b086 sub sp, #24 + 8000988: af00 add r7, sp, #0 + 800098a: 6078 str r0, [r7, #4] + extern uint8_t _end; /* Symbol defined in the linker script */ + extern uint8_t _estack; /* Symbol defined in the linker script */ + extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ + const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; + 800098c: 4a14 ldr r2, [pc, #80] @ (80009e0 <_sbrk+0x5c>) + 800098e: 4b15 ldr r3, [pc, #84] @ (80009e4 <_sbrk+0x60>) + 8000990: 1ad3 subs r3, r2, r3 + 8000992: 617b str r3, [r7, #20] + const uint8_t *max_heap = (uint8_t *)stack_limit; + 8000994: 697b ldr r3, [r7, #20] + 8000996: 613b str r3, [r7, #16] + uint8_t *prev_heap_end; + + /* Initialize heap end at first call */ + if (NULL == __sbrk_heap_end) + 8000998: 4b13 ldr r3, [pc, #76] @ (80009e8 <_sbrk+0x64>) + 800099a: 681b ldr r3, [r3, #0] + 800099c: 2b00 cmp r3, #0 + 800099e: d102 bne.n 80009a6 <_sbrk+0x22> + { + __sbrk_heap_end = &_end; + 80009a0: 4b11 ldr r3, [pc, #68] @ (80009e8 <_sbrk+0x64>) + 80009a2: 4a12 ldr r2, [pc, #72] @ (80009ec <_sbrk+0x68>) + 80009a4: 601a str r2, [r3, #0] + } + + /* Protect heap from growing into the reserved MSP stack */ + if (__sbrk_heap_end + incr > max_heap) + 80009a6: 4b10 ldr r3, [pc, #64] @ (80009e8 <_sbrk+0x64>) + 80009a8: 681a ldr r2, [r3, #0] + 80009aa: 687b ldr r3, [r7, #4] + 80009ac: 4413 add r3, r2 + 80009ae: 693a ldr r2, [r7, #16] + 80009b0: 429a cmp r2, r3 + 80009b2: d207 bcs.n 80009c4 <_sbrk+0x40> + { + errno = ENOMEM; + 80009b4: f007 ff58 bl 8008868 <__errno> + 80009b8: 4603 mov r3, r0 + 80009ba: 220c movs r2, #12 + 80009bc: 601a str r2, [r3, #0] + return (void *)-1; + 80009be: f04f 33ff mov.w r3, #4294967295 + 80009c2: e009 b.n 80009d8 <_sbrk+0x54> + } + + prev_heap_end = __sbrk_heap_end; + 80009c4: 4b08 ldr r3, [pc, #32] @ (80009e8 <_sbrk+0x64>) + 80009c6: 681b ldr r3, [r3, #0] + 80009c8: 60fb str r3, [r7, #12] + __sbrk_heap_end += incr; + 80009ca: 4b07 ldr r3, [pc, #28] @ (80009e8 <_sbrk+0x64>) + 80009cc: 681a ldr r2, [r3, #0] + 80009ce: 687b ldr r3, [r7, #4] + 80009d0: 4413 add r3, r2 + 80009d2: 4a05 ldr r2, [pc, #20] @ (80009e8 <_sbrk+0x64>) + 80009d4: 6013 str r3, [r2, #0] + + return (void *)prev_heap_end; + 80009d6: 68fb ldr r3, [r7, #12] +} + 80009d8: 4618 mov r0, r3 + 80009da: 3718 adds r7, #24 + 80009dc: 46bd mov sp, r7 + 80009de: bd80 pop {r7, pc} + 80009e0: 20005000 .word 0x20005000 + 80009e4: 00000400 .word 0x00000400 + 80009e8: 200002c0 .word 0x200002c0 + 80009ec: 200016d8 .word 0x200016d8 + +080009f0 : + * @note This function should be used only after reset. + * @param None + * @retval None + */ +void SystemInit (void) +{ + 80009f0: b480 push {r7} + 80009f2: af00 add r7, sp, #0 + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + 80009f4: bf00 nop + 80009f6: 46bd mov sp, r7 + 80009f8: bc80 pop {r7} + 80009fa: 4770 bx lr + +080009fc : + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + +/* Call the clock system initialization function.*/ + bl SystemInit + 80009fc: f7ff fff8 bl 80009f0 + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 8000a00: 480b ldr r0, [pc, #44] @ (8000a30 ) + ldr r1, =_edata + 8000a02: 490c ldr r1, [pc, #48] @ (8000a34 ) + ldr r2, =_sidata + 8000a04: 4a0c ldr r2, [pc, #48] @ (8000a38 ) + movs r3, #0 + 8000a06: 2300 movs r3, #0 + b LoopCopyDataInit + 8000a08: e002 b.n 8000a10 + +08000a0a : + +CopyDataInit: + ldr r4, [r2, r3] + 8000a0a: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 8000a0c: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 8000a0e: 3304 adds r3, #4 + +08000a10 : + +LoopCopyDataInit: + adds r4, r0, r3 + 8000a10: 18c4 adds r4, r0, r3 + cmp r4, r1 + 8000a12: 428c cmp r4, r1 + bcc CopyDataInit + 8000a14: d3f9 bcc.n 8000a0a + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 8000a16: 4a09 ldr r2, [pc, #36] @ (8000a3c ) + ldr r4, =_ebss + 8000a18: 4c09 ldr r4, [pc, #36] @ (8000a40 ) + movs r3, #0 + 8000a1a: 2300 movs r3, #0 + b LoopFillZerobss + 8000a1c: e001 b.n 8000a22 + +08000a1e : + +FillZerobss: + str r3, [r2] + 8000a1e: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 8000a20: 3204 adds r2, #4 + +08000a22 : + +LoopFillZerobss: + cmp r2, r4 + 8000a22: 42a2 cmp r2, r4 + bcc FillZerobss + 8000a24: d3fb bcc.n 8000a1e + +/* Call static constructors */ + bl __libc_init_array + 8000a26: f007 ff25 bl 8008874 <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 8000a2a: f7ff fb8f bl 800014c
+ bx lr + 8000a2e: 4770 bx lr + ldr r0, =_sdata + 8000a30: 20000000 .word 0x20000000 + ldr r1, =_edata + 8000a34: 200001cc .word 0x200001cc + ldr r2, =_sidata + 8000a38: 08009244 .word 0x08009244 + ldr r2, =_sbss + 8000a3c: 200001cc .word 0x200001cc + ldr r4, =_ebss + 8000a40: 200016d4 .word 0x200016d4 + +08000a44 : + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 8000a44: e7fe b.n 8000a44 + ... + +08000a48 : + * 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) +{ + 8000a48: b580 push {r7, lr} + 8000a4a: af00 add r7, sp, #0 + defined(STM32F102x6) || defined(STM32F102xB) || \ + defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || \ + defined(STM32F105xC) || defined(STM32F107xC) + + /* Prefetch buffer is not available on value line devices */ + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); + 8000a4c: 4b08 ldr r3, [pc, #32] @ (8000a70 ) + 8000a4e: 681b ldr r3, [r3, #0] + 8000a50: 4a07 ldr r2, [pc, #28] @ (8000a70 ) + 8000a52: f043 0310 orr.w r3, r3, #16 + 8000a56: 6013 str r3, [r2, #0] +#endif +#endif /* PREFETCH_ENABLE */ + + /* Set Interrupt Group Priority */ + HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + 8000a58: 2003 movs r0, #3 + 8000a5a: f000 f923 bl 8000ca4 + + /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */ + HAL_InitTick(TICK_INT_PRIORITY); + 8000a5e: 200f movs r0, #15 + 8000a60: f000 f808 bl 8000a74 + + /* Init the low level hardware */ + HAL_MspInit(); + 8000a64: f7ff fe5a bl 800071c + + /* Return function status */ + return HAL_OK; + 8000a68: 2300 movs r3, #0 +} + 8000a6a: 4618 mov r0, r3 + 8000a6c: bd80 pop {r7, pc} + 8000a6e: bf00 nop + 8000a70: 40022000 .word 0x40022000 + +08000a74 : + * implementation in user file. + * @param TickPriority Tick interrupt priority. + * @retval HAL status + */ +__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + 8000a74: b580 push {r7, lr} + 8000a76: b082 sub sp, #8 + 8000a78: af00 add r7, sp, #0 + 8000a7a: 6078 str r0, [r7, #4] + /* Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U) + 8000a7c: 4b12 ldr r3, [pc, #72] @ (8000ac8 ) + 8000a7e: 681a ldr r2, [r3, #0] + 8000a80: 4b12 ldr r3, [pc, #72] @ (8000acc ) + 8000a82: 781b ldrb r3, [r3, #0] + 8000a84: 4619 mov r1, r3 + 8000a86: f44f 737a mov.w r3, #1000 @ 0x3e8 + 8000a8a: fbb3 f3f1 udiv r3, r3, r1 + 8000a8e: fbb2 f3f3 udiv r3, r2, r3 + 8000a92: 4618 mov r0, r3 + 8000a94: f000 f93b bl 8000d0e + 8000a98: 4603 mov r3, r0 + 8000a9a: 2b00 cmp r3, #0 + 8000a9c: d001 beq.n 8000aa2 + { + return HAL_ERROR; + 8000a9e: 2301 movs r3, #1 + 8000aa0: e00e b.n 8000ac0 + } + + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + 8000aa2: 687b ldr r3, [r7, #4] + 8000aa4: 2b0f cmp r3, #15 + 8000aa6: d80a bhi.n 8000abe + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + 8000aa8: 2200 movs r2, #0 + 8000aaa: 6879 ldr r1, [r7, #4] + 8000aac: f04f 30ff mov.w r0, #4294967295 + 8000ab0: f000 f903 bl 8000cba + uwTickPrio = TickPriority; + 8000ab4: 4a06 ldr r2, [pc, #24] @ (8000ad0 ) + 8000ab6: 687b ldr r3, [r7, #4] + 8000ab8: 6013 str r3, [r2, #0] + { + return HAL_ERROR; + } + + /* Return function status */ + return HAL_OK; + 8000aba: 2300 movs r3, #0 + 8000abc: e000 b.n 8000ac0 + return HAL_ERROR; + 8000abe: 2301 movs r3, #1 +} + 8000ac0: 4618 mov r0, r3 + 8000ac2: 3708 adds r7, #8 + 8000ac4: 46bd mov sp, r7 + 8000ac6: bd80 pop {r7, pc} + 8000ac8: 20000000 .word 0x20000000 + 8000acc: 20000008 .word 0x20000008 + 8000ad0: 20000004 .word 0x20000004 + +08000ad4 : + * @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) +{ + 8000ad4: b480 push {r7} + 8000ad6: af00 add r7, sp, #0 + uwTick += uwTickFreq; + 8000ad8: 4b05 ldr r3, [pc, #20] @ (8000af0 ) + 8000ada: 781b ldrb r3, [r3, #0] + 8000adc: 461a mov r2, r3 + 8000ade: 4b05 ldr r3, [pc, #20] @ (8000af4 ) + 8000ae0: 681b ldr r3, [r3, #0] + 8000ae2: 4413 add r3, r2 + 8000ae4: 4a03 ldr r2, [pc, #12] @ (8000af4 ) + 8000ae6: 6013 str r3, [r2, #0] +} + 8000ae8: bf00 nop + 8000aea: 46bd mov sp, r7 + 8000aec: bc80 pop {r7} + 8000aee: 4770 bx lr + 8000af0: 20000008 .word 0x20000008 + 8000af4: 200002c4 .word 0x200002c4 + +08000af8 : + * @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) +{ + 8000af8: b480 push {r7} + 8000afa: af00 add r7, sp, #0 + return uwTick; + 8000afc: 4b02 ldr r3, [pc, #8] @ (8000b08 ) + 8000afe: 681b ldr r3, [r3, #0] +} + 8000b00: 4618 mov r0, r3 + 8000b02: 46bd mov sp, r7 + 8000b04: bc80 pop {r7} + 8000b06: 4770 bx lr + 8000b08: 200002c4 .word 0x200002c4 + +08000b0c <__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) +{ + 8000b0c: b480 push {r7} + 8000b0e: b085 sub sp, #20 + 8000b10: af00 add r7, sp, #0 + 8000b12: 6078 str r0, [r7, #4] + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000b14: 687b ldr r3, [r7, #4] + 8000b16: f003 0307 and.w r3, r3, #7 + 8000b1a: 60fb str r3, [r7, #12] + + reg_value = SCB->AIRCR; /* read old register configuration */ + 8000b1c: 4b0c ldr r3, [pc, #48] @ (8000b50 <__NVIC_SetPriorityGrouping+0x44>) + 8000b1e: 68db ldr r3, [r3, #12] + 8000b20: 60bb str r3, [r7, #8] + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + 8000b22: 68ba ldr r2, [r7, #8] + 8000b24: f64f 03ff movw r3, #63743 @ 0xf8ff + 8000b28: 4013 ands r3, r2 + 8000b2a: 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 */ + 8000b2c: 68fb ldr r3, [r7, #12] + 8000b2e: 021a lsls r2, r3, #8 + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 8000b30: 68bb ldr r3, [r7, #8] + 8000b32: 4313 orrs r3, r2 + reg_value = (reg_value | + 8000b34: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 + 8000b38: f443 3300 orr.w r3, r3, #131072 @ 0x20000 + 8000b3c: 60bb str r3, [r7, #8] + SCB->AIRCR = reg_value; + 8000b3e: 4a04 ldr r2, [pc, #16] @ (8000b50 <__NVIC_SetPriorityGrouping+0x44>) + 8000b40: 68bb ldr r3, [r7, #8] + 8000b42: 60d3 str r3, [r2, #12] +} + 8000b44: bf00 nop + 8000b46: 3714 adds r7, #20 + 8000b48: 46bd mov sp, r7 + 8000b4a: bc80 pop {r7} + 8000b4c: 4770 bx lr + 8000b4e: bf00 nop + 8000b50: e000ed00 .word 0xe000ed00 + +08000b54 <__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) +{ + 8000b54: b480 push {r7} + 8000b56: af00 add r7, sp, #0 + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); + 8000b58: 4b04 ldr r3, [pc, #16] @ (8000b6c <__NVIC_GetPriorityGrouping+0x18>) + 8000b5a: 68db ldr r3, [r3, #12] + 8000b5c: 0a1b lsrs r3, r3, #8 + 8000b5e: f003 0307 and.w r3, r3, #7 +} + 8000b62: 4618 mov r0, r3 + 8000b64: 46bd mov sp, r7 + 8000b66: bc80 pop {r7} + 8000b68: 4770 bx lr + 8000b6a: bf00 nop + 8000b6c: e000ed00 .word 0xe000ed00 + +08000b70 <__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) +{ + 8000b70: b480 push {r7} + 8000b72: b083 sub sp, #12 + 8000b74: af00 add r7, sp, #0 + 8000b76: 4603 mov r3, r0 + 8000b78: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000b7a: f997 3007 ldrsb.w r3, [r7, #7] + 8000b7e: 2b00 cmp r3, #0 + 8000b80: db0b blt.n 8000b9a <__NVIC_EnableIRQ+0x2a> + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + 8000b82: 79fb ldrb r3, [r7, #7] + 8000b84: f003 021f and.w r2, r3, #31 + 8000b88: 4906 ldr r1, [pc, #24] @ (8000ba4 <__NVIC_EnableIRQ+0x34>) + 8000b8a: f997 3007 ldrsb.w r3, [r7, #7] + 8000b8e: 095b lsrs r3, r3, #5 + 8000b90: 2001 movs r0, #1 + 8000b92: fa00 f202 lsl.w r2, r0, r2 + 8000b96: f841 2023 str.w r2, [r1, r3, lsl #2] + } +} + 8000b9a: bf00 nop + 8000b9c: 370c adds r7, #12 + 8000b9e: 46bd mov sp, r7 + 8000ba0: bc80 pop {r7} + 8000ba2: 4770 bx lr + 8000ba4: e000e100 .word 0xe000e100 + +08000ba8 <__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) +{ + 8000ba8: b480 push {r7} + 8000baa: b083 sub sp, #12 + 8000bac: af00 add r7, sp, #0 + 8000bae: 4603 mov r3, r0 + 8000bb0: 6039 str r1, [r7, #0] + 8000bb2: 71fb strb r3, [r7, #7] + if ((int32_t)(IRQn) >= 0) + 8000bb4: f997 3007 ldrsb.w r3, [r7, #7] + 8000bb8: 2b00 cmp r3, #0 + 8000bba: db0a blt.n 8000bd2 <__NVIC_SetPriority+0x2a> + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000bbc: 683b ldr r3, [r7, #0] + 8000bbe: b2da uxtb r2, r3 + 8000bc0: 490c ldr r1, [pc, #48] @ (8000bf4 <__NVIC_SetPriority+0x4c>) + 8000bc2: f997 3007 ldrsb.w r3, [r7, #7] + 8000bc6: 0112 lsls r2, r2, #4 + 8000bc8: b2d2 uxtb r2, r2 + 8000bca: 440b add r3, r1 + 8000bcc: 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); + } +} + 8000bd0: e00a b.n 8000be8 <__NVIC_SetPriority+0x40> + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + 8000bd2: 683b ldr r3, [r7, #0] + 8000bd4: b2da uxtb r2, r3 + 8000bd6: 4908 ldr r1, [pc, #32] @ (8000bf8 <__NVIC_SetPriority+0x50>) + 8000bd8: 79fb ldrb r3, [r7, #7] + 8000bda: f003 030f and.w r3, r3, #15 + 8000bde: 3b04 subs r3, #4 + 8000be0: 0112 lsls r2, r2, #4 + 8000be2: b2d2 uxtb r2, r2 + 8000be4: 440b add r3, r1 + 8000be6: 761a strb r2, [r3, #24] +} + 8000be8: bf00 nop + 8000bea: 370c adds r7, #12 + 8000bec: 46bd mov sp, r7 + 8000bee: bc80 pop {r7} + 8000bf0: 4770 bx lr + 8000bf2: bf00 nop + 8000bf4: e000e100 .word 0xe000e100 + 8000bf8: e000ed00 .word 0xe000ed00 + +08000bfc : + \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) +{ + 8000bfc: b480 push {r7} + 8000bfe: b089 sub sp, #36 @ 0x24 + 8000c00: af00 add r7, sp, #0 + 8000c02: 60f8 str r0, [r7, #12] + 8000c04: 60b9 str r1, [r7, #8] + 8000c06: 607a str r2, [r7, #4] + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 8000c08: 68fb ldr r3, [r7, #12] + 8000c0a: f003 0307 and.w r3, r3, #7 + 8000c0e: 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); + 8000c10: 69fb ldr r3, [r7, #28] + 8000c12: f1c3 0307 rsb r3, r3, #7 + 8000c16: 2b04 cmp r3, #4 + 8000c18: bf28 it cs + 8000c1a: 2304 movcs r3, #4 + 8000c1c: 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)); + 8000c1e: 69fb ldr r3, [r7, #28] + 8000c20: 3304 adds r3, #4 + 8000c22: 2b06 cmp r3, #6 + 8000c24: d902 bls.n 8000c2c + 8000c26: 69fb ldr r3, [r7, #28] + 8000c28: 3b03 subs r3, #3 + 8000c2a: e000 b.n 8000c2e + 8000c2c: 2300 movs r3, #0 + 8000c2e: 617b str r3, [r7, #20] + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000c30: f04f 32ff mov.w r2, #4294967295 + 8000c34: 69bb ldr r3, [r7, #24] + 8000c36: fa02 f303 lsl.w r3, r2, r3 + 8000c3a: 43da mvns r2, r3 + 8000c3c: 68bb ldr r3, [r7, #8] + 8000c3e: 401a ands r2, r3 + 8000c40: 697b ldr r3, [r7, #20] + 8000c42: 409a lsls r2, r3 + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + 8000c44: f04f 31ff mov.w r1, #4294967295 + 8000c48: 697b ldr r3, [r7, #20] + 8000c4a: fa01 f303 lsl.w r3, r1, r3 + 8000c4e: 43d9 mvns r1, r3 + 8000c50: 687b ldr r3, [r7, #4] + 8000c52: 400b ands r3, r1 + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + 8000c54: 4313 orrs r3, r2 + ); +} + 8000c56: 4618 mov r0, r3 + 8000c58: 3724 adds r7, #36 @ 0x24 + 8000c5a: 46bd mov sp, r7 + 8000c5c: bc80 pop {r7} + 8000c5e: 4770 bx lr + +08000c60 : + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + 8000c60: b580 push {r7, lr} + 8000c62: b082 sub sp, #8 + 8000c64: af00 add r7, sp, #0 + 8000c66: 6078 str r0, [r7, #4] + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + 8000c68: 687b ldr r3, [r7, #4] + 8000c6a: 3b01 subs r3, #1 + 8000c6c: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 8000c70: d301 bcc.n 8000c76 + { + return (1UL); /* Reload value impossible */ + 8000c72: 2301 movs r3, #1 + 8000c74: e00f b.n 8000c96 + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + 8000c76: 4a0a ldr r2, [pc, #40] @ (8000ca0 ) + 8000c78: 687b ldr r3, [r7, #4] + 8000c7a: 3b01 subs r3, #1 + 8000c7c: 6053 str r3, [r2, #4] + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + 8000c7e: 210f movs r1, #15 + 8000c80: f04f 30ff mov.w r0, #4294967295 + 8000c84: f7ff ff90 bl 8000ba8 <__NVIC_SetPriority> + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + 8000c88: 4b05 ldr r3, [pc, #20] @ (8000ca0 ) + 8000c8a: 2200 movs r2, #0 + 8000c8c: 609a str r2, [r3, #8] + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + 8000c8e: 4b04 ldr r3, [pc, #16] @ (8000ca0 ) + 8000c90: 2207 movs r2, #7 + 8000c92: 601a str r2, [r3, #0] + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ + 8000c94: 2300 movs r3, #0 +} + 8000c96: 4618 mov r0, r3 + 8000c98: 3708 adds r7, #8 + 8000c9a: 46bd mov sp, r7 + 8000c9c: bd80 pop {r7, pc} + 8000c9e: bf00 nop + 8000ca0: e000e010 .word 0xe000e010 + +08000ca4 : + * @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) +{ + 8000ca4: b580 push {r7, lr} + 8000ca6: b082 sub sp, #8 + 8000ca8: af00 add r7, sp, #0 + 8000caa: 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); + 8000cac: 6878 ldr r0, [r7, #4] + 8000cae: f7ff ff2d bl 8000b0c <__NVIC_SetPriorityGrouping> +} + 8000cb2: bf00 nop + 8000cb4: 3708 adds r7, #8 + 8000cb6: 46bd mov sp, r7 + 8000cb8: bd80 pop {r7, pc} + +08000cba : + * 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) +{ + 8000cba: b580 push {r7, lr} + 8000cbc: b086 sub sp, #24 + 8000cbe: af00 add r7, sp, #0 + 8000cc0: 4603 mov r3, r0 + 8000cc2: 60b9 str r1, [r7, #8] + 8000cc4: 607a str r2, [r7, #4] + 8000cc6: 73fb strb r3, [r7, #15] + uint32_t prioritygroup = 0x00U; + 8000cc8: 2300 movs r3, #0 + 8000cca: 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(); + 8000ccc: f7ff ff42 bl 8000b54 <__NVIC_GetPriorityGrouping> + 8000cd0: 6178 str r0, [r7, #20] + + NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); + 8000cd2: 687a ldr r2, [r7, #4] + 8000cd4: 68b9 ldr r1, [r7, #8] + 8000cd6: 6978 ldr r0, [r7, #20] + 8000cd8: f7ff ff90 bl 8000bfc + 8000cdc: 4602 mov r2, r0 + 8000cde: f997 300f ldrsb.w r3, [r7, #15] + 8000ce2: 4611 mov r1, r2 + 8000ce4: 4618 mov r0, r3 + 8000ce6: f7ff ff5f bl 8000ba8 <__NVIC_SetPriority> +} + 8000cea: bf00 nop + 8000cec: 3718 adds r7, #24 + 8000cee: 46bd mov sp, r7 + 8000cf0: bd80 pop {r7, pc} + +08000cf2 : + * This parameter can be an enumerator of IRQn_Type enumeration + * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h)) + * @retval None + */ +void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) +{ + 8000cf2: b580 push {r7, lr} + 8000cf4: b082 sub sp, #8 + 8000cf6: af00 add r7, sp, #0 + 8000cf8: 4603 mov r3, r0 + 8000cfa: 71fb strb r3, [r7, #7] + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Enable interrupt */ + NVIC_EnableIRQ(IRQn); + 8000cfc: f997 3007 ldrsb.w r3, [r7, #7] + 8000d00: 4618 mov r0, r3 + 8000d02: f7ff ff35 bl 8000b70 <__NVIC_EnableIRQ> +} + 8000d06: bf00 nop + 8000d08: 3708 adds r7, #8 + 8000d0a: 46bd mov sp, r7 + 8000d0c: bd80 pop {r7, pc} + +08000d0e : + * @param TicksNumb: Specifies the ticks Number of ticks between two interrupts. + * @retval status: - 0 Function succeeded. + * - 1 Function failed. + */ +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) +{ + 8000d0e: b580 push {r7, lr} + 8000d10: b082 sub sp, #8 + 8000d12: af00 add r7, sp, #0 + 8000d14: 6078 str r0, [r7, #4] + return SysTick_Config(TicksNumb); + 8000d16: 6878 ldr r0, [r7, #4] + 8000d18: f7ff ffa2 bl 8000c60 + 8000d1c: 4603 mov r3, r0 +} + 8000d1e: 4618 mov r0, r3 + 8000d20: 3708 adds r7, #8 + 8000d22: 46bd mov sp, r7 + 8000d24: bd80 pop {r7, pc} + ... + +08000d28 : + * @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) +{ + 8000d28: b480 push {r7} + 8000d2a: b08b sub sp, #44 @ 0x2c + 8000d2c: af00 add r7, sp, #0 + 8000d2e: 6078 str r0, [r7, #4] + 8000d30: 6039 str r1, [r7, #0] + uint32_t position = 0x00u; + 8000d32: 2300 movs r3, #0 + 8000d34: 627b str r3, [r7, #36] @ 0x24 + uint32_t ioposition; + uint32_t iocurrent; + uint32_t temp; + uint32_t config = 0x00u; + 8000d36: 2300 movs r3, #0 + 8000d38: 623b str r3, [r7, #32] + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0x00u) + 8000d3a: e169 b.n 8001010 + { + /* Get the IO position */ + ioposition = (0x01uL << position); + 8000d3c: 2201 movs r2, #1 + 8000d3e: 6a7b ldr r3, [r7, #36] @ 0x24 + 8000d40: fa02 f303 lsl.w r3, r2, r3 + 8000d44: 61fb str r3, [r7, #28] + + /* Get the current IO position */ + iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition; + 8000d46: 683b ldr r3, [r7, #0] + 8000d48: 681b ldr r3, [r3, #0] + 8000d4a: 69fa ldr r2, [r7, #28] + 8000d4c: 4013 ands r3, r2 + 8000d4e: 61bb str r3, [r7, #24] + + if (iocurrent == ioposition) + 8000d50: 69ba ldr r2, [r7, #24] + 8000d52: 69fb ldr r3, [r7, #28] + 8000d54: 429a cmp r2, r3 + 8000d56: f040 8158 bne.w 800100a + { + /* Check the Alternate function parameters */ + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + + /* Based on the required mode, filling config variable with MODEy[1:0] and CNFy[3:2] corresponding bits */ + switch (GPIO_Init->Mode) + 8000d5a: 683b ldr r3, [r7, #0] + 8000d5c: 685b ldr r3, [r3, #4] + 8000d5e: 4a9a ldr r2, [pc, #616] @ (8000fc8 ) + 8000d60: 4293 cmp r3, r2 + 8000d62: d05e beq.n 8000e22 + 8000d64: 4a98 ldr r2, [pc, #608] @ (8000fc8 ) + 8000d66: 4293 cmp r3, r2 + 8000d68: d875 bhi.n 8000e56 + 8000d6a: 4a98 ldr r2, [pc, #608] @ (8000fcc ) + 8000d6c: 4293 cmp r3, r2 + 8000d6e: d058 beq.n 8000e22 + 8000d70: 4a96 ldr r2, [pc, #600] @ (8000fcc ) + 8000d72: 4293 cmp r3, r2 + 8000d74: d86f bhi.n 8000e56 + 8000d76: 4a96 ldr r2, [pc, #600] @ (8000fd0 ) + 8000d78: 4293 cmp r3, r2 + 8000d7a: d052 beq.n 8000e22 + 8000d7c: 4a94 ldr r2, [pc, #592] @ (8000fd0 ) + 8000d7e: 4293 cmp r3, r2 + 8000d80: d869 bhi.n 8000e56 + 8000d82: 4a94 ldr r2, [pc, #592] @ (8000fd4 ) + 8000d84: 4293 cmp r3, r2 + 8000d86: d04c beq.n 8000e22 + 8000d88: 4a92 ldr r2, [pc, #584] @ (8000fd4 ) + 8000d8a: 4293 cmp r3, r2 + 8000d8c: d863 bhi.n 8000e56 + 8000d8e: 4a92 ldr r2, [pc, #584] @ (8000fd8 ) + 8000d90: 4293 cmp r3, r2 + 8000d92: d046 beq.n 8000e22 + 8000d94: 4a90 ldr r2, [pc, #576] @ (8000fd8 ) + 8000d96: 4293 cmp r3, r2 + 8000d98: d85d bhi.n 8000e56 + 8000d9a: 2b12 cmp r3, #18 + 8000d9c: d82a bhi.n 8000df4 + 8000d9e: 2b12 cmp r3, #18 + 8000da0: d859 bhi.n 8000e56 + 8000da2: a201 add r2, pc, #4 @ (adr r2, 8000da8 ) + 8000da4: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8000da8: 08000e23 .word 0x08000e23 + 8000dac: 08000dfd .word 0x08000dfd + 8000db0: 08000e0f .word 0x08000e0f + 8000db4: 08000e51 .word 0x08000e51 + 8000db8: 08000e57 .word 0x08000e57 + 8000dbc: 08000e57 .word 0x08000e57 + 8000dc0: 08000e57 .word 0x08000e57 + 8000dc4: 08000e57 .word 0x08000e57 + 8000dc8: 08000e57 .word 0x08000e57 + 8000dcc: 08000e57 .word 0x08000e57 + 8000dd0: 08000e57 .word 0x08000e57 + 8000dd4: 08000e57 .word 0x08000e57 + 8000dd8: 08000e57 .word 0x08000e57 + 8000ddc: 08000e57 .word 0x08000e57 + 8000de0: 08000e57 .word 0x08000e57 + 8000de4: 08000e57 .word 0x08000e57 + 8000de8: 08000e57 .word 0x08000e57 + 8000dec: 08000e05 .word 0x08000e05 + 8000df0: 08000e19 .word 0x08000e19 + 8000df4: 4a79 ldr r2, [pc, #484] @ (8000fdc ) + 8000df6: 4293 cmp r3, r2 + 8000df8: d013 beq.n 8000e22 + config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG; + break; + + /* Parameters are checked with assert_param */ + default: + break; + 8000dfa: e02c b.n 8000e56 + config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_PP; + 8000dfc: 683b ldr r3, [r7, #0] + 8000dfe: 68db ldr r3, [r3, #12] + 8000e00: 623b str r3, [r7, #32] + break; + 8000e02: e029 b.n 8000e58 + config = GPIO_Init->Speed + GPIO_CR_CNF_GP_OUTPUT_OD; + 8000e04: 683b ldr r3, [r7, #0] + 8000e06: 68db ldr r3, [r3, #12] + 8000e08: 3304 adds r3, #4 + 8000e0a: 623b str r3, [r7, #32] + break; + 8000e0c: e024 b.n 8000e58 + config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_PP; + 8000e0e: 683b ldr r3, [r7, #0] + 8000e10: 68db ldr r3, [r3, #12] + 8000e12: 3308 adds r3, #8 + 8000e14: 623b str r3, [r7, #32] + break; + 8000e16: e01f b.n 8000e58 + config = GPIO_Init->Speed + GPIO_CR_CNF_AF_OUTPUT_OD; + 8000e18: 683b ldr r3, [r7, #0] + 8000e1a: 68db ldr r3, [r3, #12] + 8000e1c: 330c adds r3, #12 + 8000e1e: 623b str r3, [r7, #32] + break; + 8000e20: e01a b.n 8000e58 + if (GPIO_Init->Pull == GPIO_NOPULL) + 8000e22: 683b ldr r3, [r7, #0] + 8000e24: 689b ldr r3, [r3, #8] + 8000e26: 2b00 cmp r3, #0 + 8000e28: d102 bne.n 8000e30 + config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_FLOATING; + 8000e2a: 2304 movs r3, #4 + 8000e2c: 623b str r3, [r7, #32] + break; + 8000e2e: e013 b.n 8000e58 + else if (GPIO_Init->Pull == GPIO_PULLUP) + 8000e30: 683b ldr r3, [r7, #0] + 8000e32: 689b ldr r3, [r3, #8] + 8000e34: 2b01 cmp r3, #1 + 8000e36: d105 bne.n 8000e44 + config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD; + 8000e38: 2308 movs r3, #8 + 8000e3a: 623b str r3, [r7, #32] + GPIOx->BSRR = ioposition; + 8000e3c: 687b ldr r3, [r7, #4] + 8000e3e: 69fa ldr r2, [r7, #28] + 8000e40: 611a str r2, [r3, #16] + break; + 8000e42: e009 b.n 8000e58 + config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_INPUT_PU_PD; + 8000e44: 2308 movs r3, #8 + 8000e46: 623b str r3, [r7, #32] + GPIOx->BRR = ioposition; + 8000e48: 687b ldr r3, [r7, #4] + 8000e4a: 69fa ldr r2, [r7, #28] + 8000e4c: 615a str r2, [r3, #20] + break; + 8000e4e: e003 b.n 8000e58 + config = GPIO_CR_MODE_INPUT + GPIO_CR_CNF_ANALOG; + 8000e50: 2300 movs r3, #0 + 8000e52: 623b str r3, [r7, #32] + break; + 8000e54: e000 b.n 8000e58 + break; + 8000e56: bf00 nop + } + + /* Check if the current bit belongs to first half or last half of the pin count number + in order to address CRH or CRL register*/ + configregister = (iocurrent < GPIO_PIN_8) ? &GPIOx->CRL : &GPIOx->CRH; + 8000e58: 69bb ldr r3, [r7, #24] + 8000e5a: 2bff cmp r3, #255 @ 0xff + 8000e5c: d801 bhi.n 8000e62 + 8000e5e: 687b ldr r3, [r7, #4] + 8000e60: e001 b.n 8000e66 + 8000e62: 687b ldr r3, [r7, #4] + 8000e64: 3304 adds r3, #4 + 8000e66: 617b str r3, [r7, #20] + registeroffset = (iocurrent < GPIO_PIN_8) ? (position << 2u) : ((position - 8u) << 2u); + 8000e68: 69bb ldr r3, [r7, #24] + 8000e6a: 2bff cmp r3, #255 @ 0xff + 8000e6c: d802 bhi.n 8000e74 + 8000e6e: 6a7b ldr r3, [r7, #36] @ 0x24 + 8000e70: 009b lsls r3, r3, #2 + 8000e72: e002 b.n 8000e7a + 8000e74: 6a7b ldr r3, [r7, #36] @ 0x24 + 8000e76: 3b08 subs r3, #8 + 8000e78: 009b lsls r3, r3, #2 + 8000e7a: 613b str r3, [r7, #16] + + /* Apply the new configuration of the pin to the register */ + MODIFY_REG((*configregister), ((GPIO_CRL_MODE0 | GPIO_CRL_CNF0) << registeroffset), (config << registeroffset)); + 8000e7c: 697b ldr r3, [r7, #20] + 8000e7e: 681a ldr r2, [r3, #0] + 8000e80: 210f movs r1, #15 + 8000e82: 693b ldr r3, [r7, #16] + 8000e84: fa01 f303 lsl.w r3, r1, r3 + 8000e88: 43db mvns r3, r3 + 8000e8a: 401a ands r2, r3 + 8000e8c: 6a39 ldr r1, [r7, #32] + 8000e8e: 693b ldr r3, [r7, #16] + 8000e90: fa01 f303 lsl.w r3, r1, r3 + 8000e94: 431a orrs r2, r3 + 8000e96: 697b ldr r3, [r7, #20] + 8000e98: 601a str r2, [r3, #0] + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE) + 8000e9a: 683b ldr r3, [r7, #0] + 8000e9c: 685b ldr r3, [r3, #4] + 8000e9e: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8000ea2: 2b00 cmp r3, #0 + 8000ea4: f000 80b1 beq.w 800100a + { + /* Enable AFIO Clock */ + __HAL_RCC_AFIO_CLK_ENABLE(); + 8000ea8: 4b4d ldr r3, [pc, #308] @ (8000fe0 ) + 8000eaa: 699b ldr r3, [r3, #24] + 8000eac: 4a4c ldr r2, [pc, #304] @ (8000fe0 ) + 8000eae: f043 0301 orr.w r3, r3, #1 + 8000eb2: 6193 str r3, [r2, #24] + 8000eb4: 4b4a ldr r3, [pc, #296] @ (8000fe0 ) + 8000eb6: 699b ldr r3, [r3, #24] + 8000eb8: f003 0301 and.w r3, r3, #1 + 8000ebc: 60bb str r3, [r7, #8] + 8000ebe: 68bb ldr r3, [r7, #8] + temp = AFIO->EXTICR[position >> 2u]; + 8000ec0: 4a48 ldr r2, [pc, #288] @ (8000fe4 ) + 8000ec2: 6a7b ldr r3, [r7, #36] @ 0x24 + 8000ec4: 089b lsrs r3, r3, #2 + 8000ec6: 3302 adds r3, #2 + 8000ec8: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8000ecc: 60fb str r3, [r7, #12] + CLEAR_BIT(temp, (0x0Fu) << (4u * (position & 0x03u))); + 8000ece: 6a7b ldr r3, [r7, #36] @ 0x24 + 8000ed0: f003 0303 and.w r3, r3, #3 + 8000ed4: 009b lsls r3, r3, #2 + 8000ed6: 220f movs r2, #15 + 8000ed8: fa02 f303 lsl.w r3, r2, r3 + 8000edc: 43db mvns r3, r3 + 8000ede: 68fa ldr r2, [r7, #12] + 8000ee0: 4013 ands r3, r2 + 8000ee2: 60fb str r3, [r7, #12] + SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4u * (position & 0x03u))); + 8000ee4: 687b ldr r3, [r7, #4] + 8000ee6: 4a40 ldr r2, [pc, #256] @ (8000fe8 ) + 8000ee8: 4293 cmp r3, r2 + 8000eea: d013 beq.n 8000f14 + 8000eec: 687b ldr r3, [r7, #4] + 8000eee: 4a3f ldr r2, [pc, #252] @ (8000fec ) + 8000ef0: 4293 cmp r3, r2 + 8000ef2: d00d beq.n 8000f10 + 8000ef4: 687b ldr r3, [r7, #4] + 8000ef6: 4a3e ldr r2, [pc, #248] @ (8000ff0 ) + 8000ef8: 4293 cmp r3, r2 + 8000efa: d007 beq.n 8000f0c + 8000efc: 687b ldr r3, [r7, #4] + 8000efe: 4a3d ldr r2, [pc, #244] @ (8000ff4 ) + 8000f00: 4293 cmp r3, r2 + 8000f02: d101 bne.n 8000f08 + 8000f04: 2303 movs r3, #3 + 8000f06: e006 b.n 8000f16 + 8000f08: 2304 movs r3, #4 + 8000f0a: e004 b.n 8000f16 + 8000f0c: 2302 movs r3, #2 + 8000f0e: e002 b.n 8000f16 + 8000f10: 2301 movs r3, #1 + 8000f12: e000 b.n 8000f16 + 8000f14: 2300 movs r3, #0 + 8000f16: 6a7a ldr r2, [r7, #36] @ 0x24 + 8000f18: f002 0203 and.w r2, r2, #3 + 8000f1c: 0092 lsls r2, r2, #2 + 8000f1e: 4093 lsls r3, r2 + 8000f20: 68fa ldr r2, [r7, #12] + 8000f22: 4313 orrs r3, r2 + 8000f24: 60fb str r3, [r7, #12] + AFIO->EXTICR[position >> 2u] = temp; + 8000f26: 492f ldr r1, [pc, #188] @ (8000fe4 ) + 8000f28: 6a7b ldr r3, [r7, #36] @ 0x24 + 8000f2a: 089b lsrs r3, r3, #2 + 8000f2c: 3302 adds r3, #2 + 8000f2e: 68fa ldr r2, [r7, #12] + 8000f30: f841 2023 str.w r2, [r1, r3, lsl #2] + + + /* Enable or disable the rising trigger */ + if ((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE) + 8000f34: 683b ldr r3, [r7, #0] + 8000f36: 685b ldr r3, [r3, #4] + 8000f38: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 8000f3c: 2b00 cmp r3, #0 + 8000f3e: d006 beq.n 8000f4e + { + SET_BIT(EXTI->RTSR, iocurrent); + 8000f40: 4b2d ldr r3, [pc, #180] @ (8000ff8 ) + 8000f42: 689a ldr r2, [r3, #8] + 8000f44: 492c ldr r1, [pc, #176] @ (8000ff8 ) + 8000f46: 69bb ldr r3, [r7, #24] + 8000f48: 4313 orrs r3, r2 + 8000f4a: 608b str r3, [r1, #8] + 8000f4c: e006 b.n 8000f5c + } + else + { + CLEAR_BIT(EXTI->RTSR, iocurrent); + 8000f4e: 4b2a ldr r3, [pc, #168] @ (8000ff8 ) + 8000f50: 689a ldr r2, [r3, #8] + 8000f52: 69bb ldr r3, [r7, #24] + 8000f54: 43db mvns r3, r3 + 8000f56: 4928 ldr r1, [pc, #160] @ (8000ff8 ) + 8000f58: 4013 ands r3, r2 + 8000f5a: 608b str r3, [r1, #8] + } + + /* Enable or disable the falling trigger */ + if ((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE) + 8000f5c: 683b ldr r3, [r7, #0] + 8000f5e: 685b ldr r3, [r3, #4] + 8000f60: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 8000f64: 2b00 cmp r3, #0 + 8000f66: d006 beq.n 8000f76 + { + SET_BIT(EXTI->FTSR, iocurrent); + 8000f68: 4b23 ldr r3, [pc, #140] @ (8000ff8 ) + 8000f6a: 68da ldr r2, [r3, #12] + 8000f6c: 4922 ldr r1, [pc, #136] @ (8000ff8 ) + 8000f6e: 69bb ldr r3, [r7, #24] + 8000f70: 4313 orrs r3, r2 + 8000f72: 60cb str r3, [r1, #12] + 8000f74: e006 b.n 8000f84 + } + else + { + CLEAR_BIT(EXTI->FTSR, iocurrent); + 8000f76: 4b20 ldr r3, [pc, #128] @ (8000ff8 ) + 8000f78: 68da ldr r2, [r3, #12] + 8000f7a: 69bb ldr r3, [r7, #24] + 8000f7c: 43db mvns r3, r3 + 8000f7e: 491e ldr r1, [pc, #120] @ (8000ff8 ) + 8000f80: 4013 ands r3, r2 + 8000f82: 60cb str r3, [r1, #12] + } + + /* Configure the event mask */ + if ((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT) + 8000f84: 683b ldr r3, [r7, #0] + 8000f86: 685b ldr r3, [r3, #4] + 8000f88: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8000f8c: 2b00 cmp r3, #0 + 8000f8e: d006 beq.n 8000f9e + { + SET_BIT(EXTI->EMR, iocurrent); + 8000f90: 4b19 ldr r3, [pc, #100] @ (8000ff8 ) + 8000f92: 685a ldr r2, [r3, #4] + 8000f94: 4918 ldr r1, [pc, #96] @ (8000ff8 ) + 8000f96: 69bb ldr r3, [r7, #24] + 8000f98: 4313 orrs r3, r2 + 8000f9a: 604b str r3, [r1, #4] + 8000f9c: e006 b.n 8000fac + } + else + { + CLEAR_BIT(EXTI->EMR, iocurrent); + 8000f9e: 4b16 ldr r3, [pc, #88] @ (8000ff8 ) + 8000fa0: 685a ldr r2, [r3, #4] + 8000fa2: 69bb ldr r3, [r7, #24] + 8000fa4: 43db mvns r3, r3 + 8000fa6: 4914 ldr r1, [pc, #80] @ (8000ff8 ) + 8000fa8: 4013 ands r3, r2 + 8000faa: 604b str r3, [r1, #4] + } + + /* Configure the interrupt mask */ + if ((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT) + 8000fac: 683b ldr r3, [r7, #0] + 8000fae: 685b ldr r3, [r3, #4] + 8000fb0: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8000fb4: 2b00 cmp r3, #0 + 8000fb6: d021 beq.n 8000ffc + { + SET_BIT(EXTI->IMR, iocurrent); + 8000fb8: 4b0f ldr r3, [pc, #60] @ (8000ff8 ) + 8000fba: 681a ldr r2, [r3, #0] + 8000fbc: 490e ldr r1, [pc, #56] @ (8000ff8 ) + 8000fbe: 69bb ldr r3, [r7, #24] + 8000fc0: 4313 orrs r3, r2 + 8000fc2: 600b str r3, [r1, #0] + 8000fc4: e021 b.n 800100a + 8000fc6: bf00 nop + 8000fc8: 10320000 .word 0x10320000 + 8000fcc: 10310000 .word 0x10310000 + 8000fd0: 10220000 .word 0x10220000 + 8000fd4: 10210000 .word 0x10210000 + 8000fd8: 10120000 .word 0x10120000 + 8000fdc: 10110000 .word 0x10110000 + 8000fe0: 40021000 .word 0x40021000 + 8000fe4: 40010000 .word 0x40010000 + 8000fe8: 40010800 .word 0x40010800 + 8000fec: 40010c00 .word 0x40010c00 + 8000ff0: 40011000 .word 0x40011000 + 8000ff4: 40011400 .word 0x40011400 + 8000ff8: 40010400 .word 0x40010400 + } + else + { + CLEAR_BIT(EXTI->IMR, iocurrent); + 8000ffc: 4b0b ldr r3, [pc, #44] @ (800102c ) + 8000ffe: 681a ldr r2, [r3, #0] + 8001000: 69bb ldr r3, [r7, #24] + 8001002: 43db mvns r3, r3 + 8001004: 4909 ldr r1, [pc, #36] @ (800102c ) + 8001006: 4013 ands r3, r2 + 8001008: 600b str r3, [r1, #0] + } + } + } + + position++; + 800100a: 6a7b ldr r3, [r7, #36] @ 0x24 + 800100c: 3301 adds r3, #1 + 800100e: 627b str r3, [r7, #36] @ 0x24 + while (((GPIO_Init->Pin) >> position) != 0x00u) + 8001010: 683b ldr r3, [r7, #0] + 8001012: 681a ldr r2, [r3, #0] + 8001014: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001016: fa22 f303 lsr.w r3, r2, r3 + 800101a: 2b00 cmp r3, #0 + 800101c: f47f ae8e bne.w 8000d3c + } +} + 8001020: bf00 nop + 8001022: bf00 nop + 8001024: 372c adds r7, #44 @ 0x2c + 8001026: 46bd mov sp, r7 + 8001028: bc80 pop {r7} + 800102a: 4770 bx lr + 800102c: 40010400 .word 0x40010400 + +08001030 : + * parameters in the PCD_InitTypeDef and initialize the associated handle. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd) +{ + 8001030: b580 push {r7, lr} + 8001032: b084 sub sp, #16 + 8001034: af00 add r7, sp, #0 + 8001036: 6078 str r0, [r7, #4] + uint8_t i; + + /* Check the PCD handle allocation */ + if (hpcd == NULL) + 8001038: 687b ldr r3, [r7, #4] + 800103a: 2b00 cmp r3, #0 + 800103c: d101 bne.n 8001042 + { + return HAL_ERROR; + 800103e: 2301 movs r3, #1 + 8001040: e0e8 b.n 8001214 + } + + /* Check the parameters */ + assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance)); + + if (hpcd->State == HAL_PCD_STATE_RESET) + 8001042: 687b ldr r3, [r7, #4] + 8001044: f893 3291 ldrb.w r3, [r3, #657] @ 0x291 + 8001048: b2db uxtb r3, r3 + 800104a: 2b00 cmp r3, #0 + 800104c: d106 bne.n 800105c + { + /* Allocate lock resource and initialize it */ + hpcd->Lock = HAL_UNLOCKED; + 800104e: 687b ldr r3, [r7, #4] + 8001050: 2200 movs r2, #0 + 8001052: f883 2290 strb.w r2, [r3, #656] @ 0x290 + + /* Init the low level hardware */ + hpcd->MspInitCallback(hpcd); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + HAL_PCD_MspInit(hpcd); + 8001056: 6878 ldr r0, [r7, #4] + 8001058: f007 f932 bl 80082c0 +#endif /* (USE_HAL_PCD_REGISTER_CALLBACKS) */ + } + + hpcd->State = HAL_PCD_STATE_BUSY; + 800105c: 687b ldr r3, [r7, #4] + 800105e: 2203 movs r2, #3 + 8001060: f883 2291 strb.w r2, [r3, #657] @ 0x291 + + /* Disable DMA mode for FS instance */ + hpcd->Init.dma_enable = 0U; + 8001064: 687b ldr r3, [r7, #4] + 8001066: 2200 movs r2, #0 + 8001068: 715a strb r2, [r3, #5] + + /* Disable the Interrupts */ + __HAL_PCD_DISABLE(hpcd); + 800106a: 687b ldr r3, [r7, #4] + 800106c: 681b ldr r3, [r3, #0] + 800106e: 4618 mov r0, r3 + 8001070: f002 ffd7 bl 8004022 + + /*Init the Core (common init.) */ + if (USB_CoreInit(hpcd->Instance, hpcd->Init) != HAL_OK) + 8001074: 687b ldr r3, [r7, #4] + 8001076: 6818 ldr r0, [r3, #0] + 8001078: 687b ldr r3, [r7, #4] + 800107a: 3304 adds r3, #4 + 800107c: cb0e ldmia r3, {r1, r2, r3} + 800107e: f002 ffad bl 8003fdc + 8001082: 4603 mov r3, r0 + 8001084: 2b00 cmp r3, #0 + 8001086: d005 beq.n 8001094 + { + hpcd->State = HAL_PCD_STATE_ERROR; + 8001088: 687b ldr r3, [r7, #4] + 800108a: 2202 movs r2, #2 + 800108c: f883 2291 strb.w r2, [r3, #657] @ 0x291 + return HAL_ERROR; + 8001090: 2301 movs r3, #1 + 8001092: e0bf b.n 8001214 + } + + /* Force Device Mode */ + if (USB_SetCurrentMode(hpcd->Instance, USB_DEVICE_MODE) != HAL_OK) + 8001094: 687b ldr r3, [r7, #4] + 8001096: 681b ldr r3, [r3, #0] + 8001098: 2100 movs r1, #0 + 800109a: 4618 mov r0, r3 + 800109c: f002 ffdb bl 8004056 + 80010a0: 4603 mov r3, r0 + 80010a2: 2b00 cmp r3, #0 + 80010a4: d005 beq.n 80010b2 + { + hpcd->State = HAL_PCD_STATE_ERROR; + 80010a6: 687b ldr r3, [r7, #4] + 80010a8: 2202 movs r2, #2 + 80010aa: f883 2291 strb.w r2, [r3, #657] @ 0x291 + return HAL_ERROR; + 80010ae: 2301 movs r3, #1 + 80010b0: e0b0 b.n 8001214 + } + + /* Init endpoints structures */ + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + 80010b2: 2300 movs r3, #0 + 80010b4: 73fb strb r3, [r7, #15] + 80010b6: e03e b.n 8001136 + { + /* Init ep structure */ + hpcd->IN_ep[i].is_in = 1U; + 80010b8: 7bfa ldrb r2, [r7, #15] + 80010ba: 6879 ldr r1, [r7, #4] + 80010bc: 4613 mov r3, r2 + 80010be: 009b lsls r3, r3, #2 + 80010c0: 4413 add r3, r2 + 80010c2: 00db lsls r3, r3, #3 + 80010c4: 440b add r3, r1 + 80010c6: 3311 adds r3, #17 + 80010c8: 2201 movs r2, #1 + 80010ca: 701a strb r2, [r3, #0] + hpcd->IN_ep[i].num = i; + 80010cc: 7bfa ldrb r2, [r7, #15] + 80010ce: 6879 ldr r1, [r7, #4] + 80010d0: 4613 mov r3, r2 + 80010d2: 009b lsls r3, r3, #2 + 80010d4: 4413 add r3, r2 + 80010d6: 00db lsls r3, r3, #3 + 80010d8: 440b add r3, r1 + 80010da: 3310 adds r3, #16 + 80010dc: 7bfa ldrb r2, [r7, #15] + 80010de: 701a strb r2, [r3, #0] +#if defined (USB_OTG_FS) + hpcd->IN_ep[i].tx_fifo_num = i; +#endif /* defined (USB_OTG_FS) */ + /* Control until ep is activated */ + hpcd->IN_ep[i].type = EP_TYPE_CTRL; + 80010e0: 7bfa ldrb r2, [r7, #15] + 80010e2: 6879 ldr r1, [r7, #4] + 80010e4: 4613 mov r3, r2 + 80010e6: 009b lsls r3, r3, #2 + 80010e8: 4413 add r3, r2 + 80010ea: 00db lsls r3, r3, #3 + 80010ec: 440b add r3, r1 + 80010ee: 3313 adds r3, #19 + 80010f0: 2200 movs r2, #0 + 80010f2: 701a strb r2, [r3, #0] + hpcd->IN_ep[i].maxpacket = 0U; + 80010f4: 7bfa ldrb r2, [r7, #15] + 80010f6: 6879 ldr r1, [r7, #4] + 80010f8: 4613 mov r3, r2 + 80010fa: 009b lsls r3, r3, #2 + 80010fc: 4413 add r3, r2 + 80010fe: 00db lsls r3, r3, #3 + 8001100: 440b add r3, r1 + 8001102: 3320 adds r3, #32 + 8001104: 2200 movs r2, #0 + 8001106: 601a str r2, [r3, #0] + hpcd->IN_ep[i].xfer_buff = 0U; + 8001108: 7bfa ldrb r2, [r7, #15] + 800110a: 6879 ldr r1, [r7, #4] + 800110c: 4613 mov r3, r2 + 800110e: 009b lsls r3, r3, #2 + 8001110: 4413 add r3, r2 + 8001112: 00db lsls r3, r3, #3 + 8001114: 440b add r3, r1 + 8001116: 3324 adds r3, #36 @ 0x24 + 8001118: 2200 movs r2, #0 + 800111a: 601a str r2, [r3, #0] + hpcd->IN_ep[i].xfer_len = 0U; + 800111c: 7bfb ldrb r3, [r7, #15] + 800111e: 6879 ldr r1, [r7, #4] + 8001120: 1c5a adds r2, r3, #1 + 8001122: 4613 mov r3, r2 + 8001124: 009b lsls r3, r3, #2 + 8001126: 4413 add r3, r2 + 8001128: 00db lsls r3, r3, #3 + 800112a: 440b add r3, r1 + 800112c: 2200 movs r2, #0 + 800112e: 601a str r2, [r3, #0] + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + 8001130: 7bfb ldrb r3, [r7, #15] + 8001132: 3301 adds r3, #1 + 8001134: 73fb strb r3, [r7, #15] + 8001136: 687b ldr r3, [r7, #4] + 8001138: 791b ldrb r3, [r3, #4] + 800113a: 7bfa ldrb r2, [r7, #15] + 800113c: 429a cmp r2, r3 + 800113e: d3bb bcc.n 80010b8 + } + + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + 8001140: 2300 movs r3, #0 + 8001142: 73fb strb r3, [r7, #15] + 8001144: e044 b.n 80011d0 + { + hpcd->OUT_ep[i].is_in = 0U; + 8001146: 7bfa ldrb r2, [r7, #15] + 8001148: 6879 ldr r1, [r7, #4] + 800114a: 4613 mov r3, r2 + 800114c: 009b lsls r3, r3, #2 + 800114e: 4413 add r3, r2 + 8001150: 00db lsls r3, r3, #3 + 8001152: 440b add r3, r1 + 8001154: f203 1351 addw r3, r3, #337 @ 0x151 + 8001158: 2200 movs r2, #0 + 800115a: 701a strb r2, [r3, #0] + hpcd->OUT_ep[i].num = i; + 800115c: 7bfa ldrb r2, [r7, #15] + 800115e: 6879 ldr r1, [r7, #4] + 8001160: 4613 mov r3, r2 + 8001162: 009b lsls r3, r3, #2 + 8001164: 4413 add r3, r2 + 8001166: 00db lsls r3, r3, #3 + 8001168: 440b add r3, r1 + 800116a: f503 73a8 add.w r3, r3, #336 @ 0x150 + 800116e: 7bfa ldrb r2, [r7, #15] + 8001170: 701a strb r2, [r3, #0] + /* Control until ep is activated */ + hpcd->OUT_ep[i].type = EP_TYPE_CTRL; + 8001172: 7bfa ldrb r2, [r7, #15] + 8001174: 6879 ldr r1, [r7, #4] + 8001176: 4613 mov r3, r2 + 8001178: 009b lsls r3, r3, #2 + 800117a: 4413 add r3, r2 + 800117c: 00db lsls r3, r3, #3 + 800117e: 440b add r3, r1 + 8001180: f203 1353 addw r3, r3, #339 @ 0x153 + 8001184: 2200 movs r2, #0 + 8001186: 701a strb r2, [r3, #0] + hpcd->OUT_ep[i].maxpacket = 0U; + 8001188: 7bfa ldrb r2, [r7, #15] + 800118a: 6879 ldr r1, [r7, #4] + 800118c: 4613 mov r3, r2 + 800118e: 009b lsls r3, r3, #2 + 8001190: 4413 add r3, r2 + 8001192: 00db lsls r3, r3, #3 + 8001194: 440b add r3, r1 + 8001196: f503 73b0 add.w r3, r3, #352 @ 0x160 + 800119a: 2200 movs r2, #0 + 800119c: 601a str r2, [r3, #0] + hpcd->OUT_ep[i].xfer_buff = 0U; + 800119e: 7bfa ldrb r2, [r7, #15] + 80011a0: 6879 ldr r1, [r7, #4] + 80011a2: 4613 mov r3, r2 + 80011a4: 009b lsls r3, r3, #2 + 80011a6: 4413 add r3, r2 + 80011a8: 00db lsls r3, r3, #3 + 80011aa: 440b add r3, r1 + 80011ac: f503 73b2 add.w r3, r3, #356 @ 0x164 + 80011b0: 2200 movs r2, #0 + 80011b2: 601a str r2, [r3, #0] + hpcd->OUT_ep[i].xfer_len = 0U; + 80011b4: 7bfa ldrb r2, [r7, #15] + 80011b6: 6879 ldr r1, [r7, #4] + 80011b8: 4613 mov r3, r2 + 80011ba: 009b lsls r3, r3, #2 + 80011bc: 4413 add r3, r2 + 80011be: 00db lsls r3, r3, #3 + 80011c0: 440b add r3, r1 + 80011c2: f503 73b4 add.w r3, r3, #360 @ 0x168 + 80011c6: 2200 movs r2, #0 + 80011c8: 601a str r2, [r3, #0] + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + 80011ca: 7bfb ldrb r3, [r7, #15] + 80011cc: 3301 adds r3, #1 + 80011ce: 73fb strb r3, [r7, #15] + 80011d0: 687b ldr r3, [r7, #4] + 80011d2: 791b ldrb r3, [r3, #4] + 80011d4: 7bfa ldrb r2, [r7, #15] + 80011d6: 429a cmp r2, r3 + 80011d8: d3b5 bcc.n 8001146 + } + + /* Init Device */ + if (USB_DevInit(hpcd->Instance, hpcd->Init) != HAL_OK) + 80011da: 687b ldr r3, [r7, #4] + 80011dc: 6818 ldr r0, [r3, #0] + 80011de: 687b ldr r3, [r7, #4] + 80011e0: 3304 adds r3, #4 + 80011e2: cb0e ldmia r3, {r1, r2, r3} + 80011e4: f002 ff43 bl 800406e + 80011e8: 4603 mov r3, r0 + 80011ea: 2b00 cmp r3, #0 + 80011ec: d005 beq.n 80011fa + { + hpcd->State = HAL_PCD_STATE_ERROR; + 80011ee: 687b ldr r3, [r7, #4] + 80011f0: 2202 movs r2, #2 + 80011f2: f883 2291 strb.w r2, [r3, #657] @ 0x291 + return HAL_ERROR; + 80011f6: 2301 movs r3, #1 + 80011f8: e00c b.n 8001214 + } + + hpcd->USB_Address = 0U; + 80011fa: 687b ldr r3, [r7, #4] + 80011fc: 2200 movs r2, #0 + 80011fe: 735a strb r2, [r3, #13] + hpcd->State = HAL_PCD_STATE_READY; + 8001200: 687b ldr r3, [r7, #4] + 8001202: 2201 movs r2, #1 + 8001204: f883 2291 strb.w r2, [r3, #657] @ 0x291 + (void)USB_DevDisconnect(hpcd->Instance); + 8001208: 687b ldr r3, [r7, #4] + 800120a: 681b ldr r3, [r3, #0] + 800120c: 4618 mov r0, r3 + 800120e: f005 f9c2 bl 8006596 + + return HAL_OK; + 8001212: 2300 movs r3, #0 +} + 8001214: 4618 mov r0, r3 + 8001216: 3710 adds r7, #16 + 8001218: 46bd mov sp, r7 + 800121a: bd80 pop {r7, pc} + +0800121c : + * @brief Start the USB device + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd) +{ + 800121c: b580 push {r7, lr} + 800121e: b082 sub sp, #8 + 8001220: af00 add r7, sp, #0 + 8001222: 6078 str r0, [r7, #4] + __HAL_LOCK(hpcd); + 8001224: 687b ldr r3, [r7, #4] + 8001226: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 + 800122a: 2b01 cmp r3, #1 + 800122c: d101 bne.n 8001232 + 800122e: 2302 movs r3, #2 + 8001230: e016 b.n 8001260 + 8001232: 687b ldr r3, [r7, #4] + 8001234: 2201 movs r2, #1 + 8001236: f883 2290 strb.w r2, [r3, #656] @ 0x290 + __HAL_PCD_ENABLE(hpcd); + 800123a: 687b ldr r3, [r7, #4] + 800123c: 681b ldr r3, [r3, #0] + 800123e: 4618 mov r0, r3 + 8001240: f002 fed9 bl 8003ff6 + +#if defined (USB) + HAL_PCDEx_SetConnectionState(hpcd, 1U); + 8001244: 2101 movs r1, #1 + 8001246: 6878 ldr r0, [r7, #4] + 8001248: f007 faad bl 80087a6 +#endif /* defined (USB) */ + + (void)USB_DevConnect(hpcd->Instance); + 800124c: 687b ldr r3, [r7, #4] + 800124e: 681b ldr r3, [r3, #0] + 8001250: 4618 mov r0, r3 + 8001252: f005 f996 bl 8006582 + __HAL_UNLOCK(hpcd); + 8001256: 687b ldr r3, [r7, #4] + 8001258: 2200 movs r2, #0 + 800125a: f883 2290 strb.w r2, [r3, #656] @ 0x290 + + return HAL_OK; + 800125e: 2300 movs r3, #0 +} + 8001260: 4618 mov r0, r3 + 8001262: 3708 adds r7, #8 + 8001264: 46bd mov sp, r7 + 8001266: bd80 pop {r7, pc} + +08001268 : + * @brief This function handles PCD interrupt request. + * @param hpcd PCD handle + * @retval HAL status + */ +void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) +{ + 8001268: b580 push {r7, lr} + 800126a: b088 sub sp, #32 + 800126c: af00 add r7, sp, #0 + 800126e: 6078 str r0, [r7, #4] + uint32_t wIstr = USB_ReadInterrupts(hpcd->Instance); + 8001270: 687b ldr r3, [r7, #4] + 8001272: 681b ldr r3, [r3, #0] + 8001274: 4618 mov r0, r3 + 8001276: f005 f998 bl 80065aa + 800127a: 61b8 str r0, [r7, #24] + uint16_t store_ep[8]; + uint8_t i; + + if ((wIstr & USB_ISTR_CTR) == USB_ISTR_CTR) + 800127c: 69bb ldr r3, [r7, #24] + 800127e: f403 4300 and.w r3, r3, #32768 @ 0x8000 + 8001282: 2b00 cmp r3, #0 + 8001284: d003 beq.n 800128e + { + /* servicing of the endpoint correct transfer interrupt */ + /* clear of the CTR flag into the sub */ + (void)PCD_EP_ISR_Handler(hpcd); + 8001286: 6878 ldr r0, [r7, #4] + 8001288: f000 fb1a bl 80018c0 + + return; + 800128c: e119 b.n 80014c2 + } + + if ((wIstr & USB_ISTR_RESET) == USB_ISTR_RESET) + 800128e: 69bb ldr r3, [r7, #24] + 8001290: f403 6380 and.w r3, r3, #1024 @ 0x400 + 8001294: 2b00 cmp r3, #0 + 8001296: d013 beq.n 80012c0 + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET); + 8001298: 687b ldr r3, [r7, #4] + 800129a: 681b ldr r3, [r3, #0] + 800129c: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 80012a0: b29a uxth r2, r3 + 80012a2: 687b ldr r3, [r7, #4] + 80012a4: 681b ldr r3, [r3, #0] + 80012a6: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 80012aa: b292 uxth r2, r2 + 80012ac: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ResetCallback(hpcd); +#else + HAL_PCD_ResetCallback(hpcd); + 80012b0: 6878 ldr r0, [r7, #4] + 80012b2: f007 f880 bl 80083b6 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + (void)HAL_PCD_SetAddress(hpcd, 0U); + 80012b6: 2100 movs r1, #0 + 80012b8: 6878 ldr r0, [r7, #4] + 80012ba: f000 f905 bl 80014c8 + + return; + 80012be: e100 b.n 80014c2 + } + + if ((wIstr & USB_ISTR_PMAOVR) == USB_ISTR_PMAOVR) + 80012c0: 69bb ldr r3, [r7, #24] + 80012c2: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 80012c6: 2b00 cmp r3, #0 + 80012c8: d00c beq.n 80012e4 + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_PMAOVR); + 80012ca: 687b ldr r3, [r7, #4] + 80012cc: 681b ldr r3, [r3, #0] + 80012ce: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 80012d2: b29a uxth r2, r3 + 80012d4: 687b ldr r3, [r7, #4] + 80012d6: 681b ldr r3, [r3, #0] + 80012d8: f422 4280 bic.w r2, r2, #16384 @ 0x4000 + 80012dc: b292 uxth r2, r2 + 80012de: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + return; + 80012e2: e0ee b.n 80014c2 + } + + if ((wIstr & USB_ISTR_ERR) == USB_ISTR_ERR) + 80012e4: 69bb ldr r3, [r7, #24] + 80012e6: f403 5300 and.w r3, r3, #8192 @ 0x2000 + 80012ea: 2b00 cmp r3, #0 + 80012ec: d00c beq.n 8001308 + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ERR); + 80012ee: 687b ldr r3, [r7, #4] + 80012f0: 681b ldr r3, [r3, #0] + 80012f2: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 80012f6: b29a uxth r2, r3 + 80012f8: 687b ldr r3, [r7, #4] + 80012fa: 681b ldr r3, [r3, #0] + 80012fc: f422 5200 bic.w r2, r2, #8192 @ 0x2000 + 8001300: b292 uxth r2, r2 + 8001302: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + return; + 8001306: e0dc b.n 80014c2 + } + + if ((wIstr & USB_ISTR_WKUP) == USB_ISTR_WKUP) + 8001308: 69bb ldr r3, [r7, #24] + 800130a: f403 5380 and.w r3, r3, #4096 @ 0x1000 + 800130e: 2b00 cmp r3, #0 + 8001310: d027 beq.n 8001362 + { + hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_LP_MODE); + 8001312: 687b ldr r3, [r7, #4] + 8001314: 681b ldr r3, [r3, #0] + 8001316: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 800131a: b29a uxth r2, r3 + 800131c: 687b ldr r3, [r7, #4] + 800131e: 681b ldr r3, [r3, #0] + 8001320: f022 0204 bic.w r2, r2, #4 + 8001324: b292 uxth r2, r2 + 8001326: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_FSUSP); + 800132a: 687b ldr r3, [r7, #4] + 800132c: 681b ldr r3, [r3, #0] + 800132e: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 8001332: b29a uxth r2, r3 + 8001334: 687b ldr r3, [r7, #4] + 8001336: 681b ldr r3, [r3, #0] + 8001338: f022 0208 bic.w r2, r2, #8 + 800133c: b292 uxth r2, r2 + 800133e: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ResumeCallback(hpcd); +#else + HAL_PCD_ResumeCallback(hpcd); + 8001342: 6878 ldr r0, [r7, #4] + 8001344: f007 f870 bl 8008428 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_WKUP); + 8001348: 687b ldr r3, [r7, #4] + 800134a: 681b ldr r3, [r3, #0] + 800134c: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 8001350: b29a uxth r2, r3 + 8001352: 687b ldr r3, [r7, #4] + 8001354: 681b ldr r3, [r3, #0] + 8001356: f422 5280 bic.w r2, r2, #4096 @ 0x1000 + 800135a: b292 uxth r2, r2 + 800135c: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + return; + 8001360: e0af b.n 80014c2 + } + + if ((wIstr & USB_ISTR_SUSP) == USB_ISTR_SUSP) + 8001362: 69bb ldr r3, [r7, #24] + 8001364: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8001368: 2b00 cmp r3, #0 + 800136a: f000 8083 beq.w 8001474 + { + /* WA: To Clear Wakeup flag if raised with suspend signal */ + + /* Store Endpoint registers */ + for (i = 0U; i < 8U; i++) + 800136e: 2300 movs r3, #0 + 8001370: 77fb strb r3, [r7, #31] + 8001372: e010 b.n 8001396 + { + store_ep[i] = PCD_GET_ENDPOINT(hpcd->Instance, i); + 8001374: 687b ldr r3, [r7, #4] + 8001376: 681b ldr r3, [r3, #0] + 8001378: 461a mov r2, r3 + 800137a: 7ffb ldrb r3, [r7, #31] + 800137c: 009b lsls r3, r3, #2 + 800137e: 441a add r2, r3 + 8001380: 7ffb ldrb r3, [r7, #31] + 8001382: 8812 ldrh r2, [r2, #0] + 8001384: b292 uxth r2, r2 + 8001386: 005b lsls r3, r3, #1 + 8001388: 3320 adds r3, #32 + 800138a: 443b add r3, r7 + 800138c: f823 2c18 strh.w r2, [r3, #-24] + for (i = 0U; i < 8U; i++) + 8001390: 7ffb ldrb r3, [r7, #31] + 8001392: 3301 adds r3, #1 + 8001394: 77fb strb r3, [r7, #31] + 8001396: 7ffb ldrb r3, [r7, #31] + 8001398: 2b07 cmp r3, #7 + 800139a: d9eb bls.n 8001374 + } + + /* FORCE RESET */ + hpcd->Instance->CNTR |= (uint16_t)(USB_CNTR_FRES); + 800139c: 687b ldr r3, [r7, #4] + 800139e: 681b ldr r3, [r3, #0] + 80013a0: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 80013a4: b29a uxth r2, r3 + 80013a6: 687b ldr r3, [r7, #4] + 80013a8: 681b ldr r3, [r3, #0] + 80013aa: f042 0201 orr.w r2, r2, #1 + 80013ae: b292 uxth r2, r2 + 80013b0: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + + /* CLEAR RESET */ + hpcd->Instance->CNTR &= (uint16_t)(~USB_CNTR_FRES); + 80013b4: 687b ldr r3, [r7, #4] + 80013b6: 681b ldr r3, [r3, #0] + 80013b8: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 80013bc: b29a uxth r2, r3 + 80013be: 687b ldr r3, [r7, #4] + 80013c0: 681b ldr r3, [r3, #0] + 80013c2: f022 0201 bic.w r2, r2, #1 + 80013c6: b292 uxth r2, r2 + 80013c8: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + + /* wait for reset flag in ISTR */ + while ((hpcd->Instance->ISTR & USB_ISTR_RESET) == 0U) + 80013cc: bf00 nop + 80013ce: 687b ldr r3, [r7, #4] + 80013d0: 681b ldr r3, [r3, #0] + 80013d2: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 80013d6: b29b uxth r3, r3 + 80013d8: f403 6380 and.w r3, r3, #1024 @ 0x400 + 80013dc: 2b00 cmp r3, #0 + 80013de: d0f6 beq.n 80013ce + { + } + + /* Clear Reset Flag */ + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET); + 80013e0: 687b ldr r3, [r7, #4] + 80013e2: 681b ldr r3, [r3, #0] + 80013e4: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 80013e8: b29a uxth r2, r3 + 80013ea: 687b ldr r3, [r7, #4] + 80013ec: 681b ldr r3, [r3, #0] + 80013ee: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 80013f2: b292 uxth r2, r2 + 80013f4: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + /* Restore Registre */ + for (i = 0U; i < 8U; i++) + 80013f8: 2300 movs r3, #0 + 80013fa: 77fb strb r3, [r7, #31] + 80013fc: e00f b.n 800141e + { + PCD_SET_ENDPOINT(hpcd->Instance, i, store_ep[i]); + 80013fe: 7ffb ldrb r3, [r7, #31] + 8001400: 687a ldr r2, [r7, #4] + 8001402: 6812 ldr r2, [r2, #0] + 8001404: 4611 mov r1, r2 + 8001406: 7ffa ldrb r2, [r7, #31] + 8001408: 0092 lsls r2, r2, #2 + 800140a: 440a add r2, r1 + 800140c: 005b lsls r3, r3, #1 + 800140e: 3320 adds r3, #32 + 8001410: 443b add r3, r7 + 8001412: f833 3c18 ldrh.w r3, [r3, #-24] + 8001416: 8013 strh r3, [r2, #0] + for (i = 0U; i < 8U; i++) + 8001418: 7ffb ldrb r3, [r7, #31] + 800141a: 3301 adds r3, #1 + 800141c: 77fb strb r3, [r7, #31] + 800141e: 7ffb ldrb r3, [r7, #31] + 8001420: 2b07 cmp r3, #7 + 8001422: d9ec bls.n 80013fe + } + + /* Force low-power mode in the macrocell */ + hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_FSUSP; + 8001424: 687b ldr r3, [r7, #4] + 8001426: 681b ldr r3, [r3, #0] + 8001428: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 800142c: b29a uxth r2, r3 + 800142e: 687b ldr r3, [r7, #4] + 8001430: 681b ldr r3, [r3, #0] + 8001432: f042 0208 orr.w r2, r2, #8 + 8001436: b292 uxth r2, r2 + 8001438: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + + /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */ + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SUSP); + 800143c: 687b ldr r3, [r7, #4] + 800143e: 681b ldr r3, [r3, #0] + 8001440: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 8001444: b29a uxth r2, r3 + 8001446: 687b ldr r3, [r7, #4] + 8001448: 681b ldr r3, [r3, #0] + 800144a: f422 6200 bic.w r2, r2, #2048 @ 0x800 + 800144e: b292 uxth r2, r2 + 8001450: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_LP_MODE; + 8001454: 687b ldr r3, [r7, #4] + 8001456: 681b ldr r3, [r3, #0] + 8001458: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 800145c: b29a uxth r2, r3 + 800145e: 687b ldr r3, [r7, #4] + 8001460: 681b ldr r3, [r3, #0] + 8001462: f042 0204 orr.w r2, r2, #4 + 8001466: b292 uxth r2, r2 + 8001468: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SuspendCallback(hpcd); +#else + HAL_PCD_SuspendCallback(hpcd); + 800146c: 6878 ldr r0, [r7, #4] + 800146e: f006 ffc1 bl 80083f4 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + return; + 8001472: e026 b.n 80014c2 + } + + if ((wIstr & USB_ISTR_SOF) == USB_ISTR_SOF) + 8001474: 69bb ldr r3, [r7, #24] + 8001476: f403 7300 and.w r3, r3, #512 @ 0x200 + 800147a: 2b00 cmp r3, #0 + 800147c: d00f beq.n 800149e + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SOF); + 800147e: 687b ldr r3, [r7, #4] + 8001480: 681b ldr r3, [r3, #0] + 8001482: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 8001486: b29a uxth r2, r3 + 8001488: 687b ldr r3, [r7, #4] + 800148a: 681b ldr r3, [r3, #0] + 800148c: f422 7200 bic.w r2, r2, #512 @ 0x200 + 8001490: b292 uxth r2, r2 + 8001492: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SOFCallback(hpcd); +#else + HAL_PCD_SOFCallback(hpcd); + 8001496: 6878 ldr r0, [r7, #4] + 8001498: f006 ff7f bl 800839a +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + return; + 800149c: e011 b.n 80014c2 + } + + if ((wIstr & USB_ISTR_ESOF) == USB_ISTR_ESOF) + 800149e: 69bb ldr r3, [r7, #24] + 80014a0: f403 7380 and.w r3, r3, #256 @ 0x100 + 80014a4: 2b00 cmp r3, #0 + 80014a6: d00c beq.n 80014c2 + { + /* clear ESOF flag in ISTR */ + __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ESOF); + 80014a8: 687b ldr r3, [r7, #4] + 80014aa: 681b ldr r3, [r3, #0] + 80014ac: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 80014b0: b29a uxth r2, r3 + 80014b2: 687b ldr r3, [r7, #4] + 80014b4: 681b ldr r3, [r3, #0] + 80014b6: f422 7280 bic.w r2, r2, #256 @ 0x100 + 80014ba: b292 uxth r2, r2 + 80014bc: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + return; + 80014c0: bf00 nop + } +} + 80014c2: 3720 adds r7, #32 + 80014c4: 46bd mov sp, r7 + 80014c6: bd80 pop {r7, pc} + +080014c8 : + * @param hpcd PCD handle + * @param address new device address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address) +{ + 80014c8: b580 push {r7, lr} + 80014ca: b082 sub sp, #8 + 80014cc: af00 add r7, sp, #0 + 80014ce: 6078 str r0, [r7, #4] + 80014d0: 460b mov r3, r1 + 80014d2: 70fb strb r3, [r7, #3] + __HAL_LOCK(hpcd); + 80014d4: 687b ldr r3, [r7, #4] + 80014d6: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 + 80014da: 2b01 cmp r3, #1 + 80014dc: d101 bne.n 80014e2 + 80014de: 2302 movs r3, #2 + 80014e0: e012 b.n 8001508 + 80014e2: 687b ldr r3, [r7, #4] + 80014e4: 2201 movs r2, #1 + 80014e6: f883 2290 strb.w r2, [r3, #656] @ 0x290 + hpcd->USB_Address = address; + 80014ea: 687b ldr r3, [r7, #4] + 80014ec: 78fa ldrb r2, [r7, #3] + 80014ee: 735a strb r2, [r3, #13] + (void)USB_SetDevAddress(hpcd->Instance, address); + 80014f0: 687b ldr r3, [r7, #4] + 80014f2: 681b ldr r3, [r3, #0] + 80014f4: 78fa ldrb r2, [r7, #3] + 80014f6: 4611 mov r1, r2 + 80014f8: 4618 mov r0, r3 + 80014fa: f005 f82f bl 800655c + __HAL_UNLOCK(hpcd); + 80014fe: 687b ldr r3, [r7, #4] + 8001500: 2200 movs r2, #0 + 8001502: f883 2290 strb.w r2, [r3, #656] @ 0x290 + + return HAL_OK; + 8001506: 2300 movs r3, #0 +} + 8001508: 4618 mov r0, r3 + 800150a: 3708 adds r7, #8 + 800150c: 46bd mov sp, r7 + 800150e: bd80 pop {r7, pc} + +08001510 : + * @param ep_type endpoint type + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, + uint16_t ep_mps, uint8_t ep_type) +{ + 8001510: b580 push {r7, lr} + 8001512: b084 sub sp, #16 + 8001514: af00 add r7, sp, #0 + 8001516: 6078 str r0, [r7, #4] + 8001518: 4608 mov r0, r1 + 800151a: 4611 mov r1, r2 + 800151c: 461a mov r2, r3 + 800151e: 4603 mov r3, r0 + 8001520: 70fb strb r3, [r7, #3] + 8001522: 460b mov r3, r1 + 8001524: 803b strh r3, [r7, #0] + 8001526: 4613 mov r3, r2 + 8001528: 70bb strb r3, [r7, #2] + HAL_StatusTypeDef ret = HAL_OK; + 800152a: 2300 movs r3, #0 + 800152c: 72fb strb r3, [r7, #11] + PCD_EPTypeDef *ep; + + if ((ep_addr & 0x80U) == 0x80U) + 800152e: f997 3003 ldrsb.w r3, [r7, #3] + 8001532: 2b00 cmp r3, #0 + 8001534: da0e bge.n 8001554 + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 8001536: 78fb ldrb r3, [r7, #3] + 8001538: f003 0207 and.w r2, r3, #7 + 800153c: 4613 mov r3, r2 + 800153e: 009b lsls r3, r3, #2 + 8001540: 4413 add r3, r2 + 8001542: 00db lsls r3, r3, #3 + 8001544: 3310 adds r3, #16 + 8001546: 687a ldr r2, [r7, #4] + 8001548: 4413 add r3, r2 + 800154a: 60fb str r3, [r7, #12] + ep->is_in = 1U; + 800154c: 68fb ldr r3, [r7, #12] + 800154e: 2201 movs r2, #1 + 8001550: 705a strb r2, [r3, #1] + 8001552: e00e b.n 8001572 + } + else + { + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + 8001554: 78fb ldrb r3, [r7, #3] + 8001556: f003 0207 and.w r2, r3, #7 + 800155a: 4613 mov r3, r2 + 800155c: 009b lsls r3, r3, #2 + 800155e: 4413 add r3, r2 + 8001560: 00db lsls r3, r3, #3 + 8001562: f503 73a8 add.w r3, r3, #336 @ 0x150 + 8001566: 687a ldr r2, [r7, #4] + 8001568: 4413 add r3, r2 + 800156a: 60fb str r3, [r7, #12] + ep->is_in = 0U; + 800156c: 68fb ldr r3, [r7, #12] + 800156e: 2200 movs r2, #0 + 8001570: 705a strb r2, [r3, #1] + } + + ep->num = ep_addr & EP_ADDR_MSK; + 8001572: 78fb ldrb r3, [r7, #3] + 8001574: f003 0307 and.w r3, r3, #7 + 8001578: b2da uxtb r2, r3 + 800157a: 68fb ldr r3, [r7, #12] + 800157c: 701a strb r2, [r3, #0] + ep->maxpacket = ep_mps; + 800157e: 883a ldrh r2, [r7, #0] + 8001580: 68fb ldr r3, [r7, #12] + 8001582: 611a str r2, [r3, #16] + ep->type = ep_type; + 8001584: 68fb ldr r3, [r7, #12] + 8001586: 78ba ldrb r2, [r7, #2] + 8001588: 70da strb r2, [r3, #3] + ep->tx_fifo_num = ep->num; + } +#endif /* defined (USB_OTG_FS) */ + + /* Set initial data PID. */ + if (ep_type == EP_TYPE_BULK) + 800158a: 78bb ldrb r3, [r7, #2] + 800158c: 2b02 cmp r3, #2 + 800158e: d102 bne.n 8001596 + { + ep->data_pid_start = 0U; + 8001590: 68fb ldr r3, [r7, #12] + 8001592: 2200 movs r2, #0 + 8001594: 711a strb r2, [r3, #4] + } + + __HAL_LOCK(hpcd); + 8001596: 687b ldr r3, [r7, #4] + 8001598: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 + 800159c: 2b01 cmp r3, #1 + 800159e: d101 bne.n 80015a4 + 80015a0: 2302 movs r3, #2 + 80015a2: e00e b.n 80015c2 + 80015a4: 687b ldr r3, [r7, #4] + 80015a6: 2201 movs r2, #1 + 80015a8: f883 2290 strb.w r2, [r3, #656] @ 0x290 + (void)USB_ActivateEndpoint(hpcd->Instance, ep); + 80015ac: 687b ldr r3, [r7, #4] + 80015ae: 681b ldr r3, [r3, #0] + 80015b0: 68f9 ldr r1, [r7, #12] + 80015b2: 4618 mov r0, r3 + 80015b4: f002 fd78 bl 80040a8 + __HAL_UNLOCK(hpcd); + 80015b8: 687b ldr r3, [r7, #4] + 80015ba: 2200 movs r2, #0 + 80015bc: f883 2290 strb.w r2, [r3, #656] @ 0x290 + + return ret; + 80015c0: 7afb ldrb r3, [r7, #11] +} + 80015c2: 4618 mov r0, r3 + 80015c4: 3710 adds r7, #16 + 80015c6: 46bd mov sp, r7 + 80015c8: bd80 pop {r7, pc} + +080015ca : + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + 80015ca: b580 push {r7, lr} + 80015cc: b084 sub sp, #16 + 80015ce: af00 add r7, sp, #0 + 80015d0: 6078 str r0, [r7, #4] + 80015d2: 460b mov r3, r1 + 80015d4: 70fb strb r3, [r7, #3] + PCD_EPTypeDef *ep; + + if ((ep_addr & 0x80U) == 0x80U) + 80015d6: f997 3003 ldrsb.w r3, [r7, #3] + 80015da: 2b00 cmp r3, #0 + 80015dc: da0e bge.n 80015fc + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 80015de: 78fb ldrb r3, [r7, #3] + 80015e0: f003 0207 and.w r2, r3, #7 + 80015e4: 4613 mov r3, r2 + 80015e6: 009b lsls r3, r3, #2 + 80015e8: 4413 add r3, r2 + 80015ea: 00db lsls r3, r3, #3 + 80015ec: 3310 adds r3, #16 + 80015ee: 687a ldr r2, [r7, #4] + 80015f0: 4413 add r3, r2 + 80015f2: 60fb str r3, [r7, #12] + ep->is_in = 1U; + 80015f4: 68fb ldr r3, [r7, #12] + 80015f6: 2201 movs r2, #1 + 80015f8: 705a strb r2, [r3, #1] + 80015fa: e00e b.n 800161a + } + else + { + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + 80015fc: 78fb ldrb r3, [r7, #3] + 80015fe: f003 0207 and.w r2, r3, #7 + 8001602: 4613 mov r3, r2 + 8001604: 009b lsls r3, r3, #2 + 8001606: 4413 add r3, r2 + 8001608: 00db lsls r3, r3, #3 + 800160a: f503 73a8 add.w r3, r3, #336 @ 0x150 + 800160e: 687a ldr r2, [r7, #4] + 8001610: 4413 add r3, r2 + 8001612: 60fb str r3, [r7, #12] + ep->is_in = 0U; + 8001614: 68fb ldr r3, [r7, #12] + 8001616: 2200 movs r2, #0 + 8001618: 705a strb r2, [r3, #1] + } + ep->num = ep_addr & EP_ADDR_MSK; + 800161a: 78fb ldrb r3, [r7, #3] + 800161c: f003 0307 and.w r3, r3, #7 + 8001620: b2da uxtb r2, r3 + 8001622: 68fb ldr r3, [r7, #12] + 8001624: 701a strb r2, [r3, #0] + + __HAL_LOCK(hpcd); + 8001626: 687b ldr r3, [r7, #4] + 8001628: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 + 800162c: 2b01 cmp r3, #1 + 800162e: d101 bne.n 8001634 + 8001630: 2302 movs r3, #2 + 8001632: e00e b.n 8001652 + 8001634: 687b ldr r3, [r7, #4] + 8001636: 2201 movs r2, #1 + 8001638: f883 2290 strb.w r2, [r3, #656] @ 0x290 + (void)USB_DeactivateEndpoint(hpcd->Instance, ep); + 800163c: 687b ldr r3, [r7, #4] + 800163e: 681b ldr r3, [r3, #0] + 8001640: 68f9 ldr r1, [r7, #12] + 8001642: 4618 mov r0, r3 + 8001644: f003 f8f0 bl 8004828 + __HAL_UNLOCK(hpcd); + 8001648: 687b ldr r3, [r7, #4] + 800164a: 2200 movs r2, #0 + 800164c: f883 2290 strb.w r2, [r3, #656] @ 0x290 + return HAL_OK; + 8001650: 2300 movs r3, #0 +} + 8001652: 4618 mov r0, r3 + 8001654: 3710 adds r7, #16 + 8001656: 46bd mov sp, r7 + 8001658: bd80 pop {r7, pc} + +0800165a : + * @param pBuf pointer to the reception buffer + * @param len amount of data to be received + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len) +{ + 800165a: b580 push {r7, lr} + 800165c: b086 sub sp, #24 + 800165e: af00 add r7, sp, #0 + 8001660: 60f8 str r0, [r7, #12] + 8001662: 607a str r2, [r7, #4] + 8001664: 603b str r3, [r7, #0] + 8001666: 460b mov r3, r1 + 8001668: 72fb strb r3, [r7, #11] + PCD_EPTypeDef *ep; + + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + 800166a: 7afb ldrb r3, [r7, #11] + 800166c: f003 0207 and.w r2, r3, #7 + 8001670: 4613 mov r3, r2 + 8001672: 009b lsls r3, r3, #2 + 8001674: 4413 add r3, r2 + 8001676: 00db lsls r3, r3, #3 + 8001678: f503 73a8 add.w r3, r3, #336 @ 0x150 + 800167c: 68fa ldr r2, [r7, #12] + 800167e: 4413 add r3, r2 + 8001680: 617b str r3, [r7, #20] + + /*setup and start the Xfer */ + ep->xfer_buff = pBuf; + 8001682: 697b ldr r3, [r7, #20] + 8001684: 687a ldr r2, [r7, #4] + 8001686: 615a str r2, [r3, #20] + ep->xfer_len = len; + 8001688: 697b ldr r3, [r7, #20] + 800168a: 683a ldr r2, [r7, #0] + 800168c: 619a str r2, [r3, #24] + ep->xfer_count = 0U; + 800168e: 697b ldr r3, [r7, #20] + 8001690: 2200 movs r2, #0 + 8001692: 61da str r2, [r3, #28] + ep->is_in = 0U; + 8001694: 697b ldr r3, [r7, #20] + 8001696: 2200 movs r2, #0 + 8001698: 705a strb r2, [r3, #1] + ep->num = ep_addr & EP_ADDR_MSK; + 800169a: 7afb ldrb r3, [r7, #11] + 800169c: f003 0307 and.w r3, r3, #7 + 80016a0: b2da uxtb r2, r3 + 80016a2: 697b ldr r3, [r7, #20] + 80016a4: 701a strb r2, [r3, #0] + + (void)USB_EPStartXfer(hpcd->Instance, ep); + 80016a6: 68fb ldr r3, [r7, #12] + 80016a8: 681b ldr r3, [r3, #0] + 80016aa: 6979 ldr r1, [r7, #20] + 80016ac: 4618 mov r0, r3 + 80016ae: f003 faa7 bl 8004c00 + + return HAL_OK; + 80016b2: 2300 movs r3, #0 +} + 80016b4: 4618 mov r0, r3 + 80016b6: 3718 adds r7, #24 + 80016b8: 46bd mov sp, r7 + 80016ba: bd80 pop {r7, pc} + +080016bc : + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval Data Size + */ +uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef const *hpcd, uint8_t ep_addr) +{ + 80016bc: b480 push {r7} + 80016be: b083 sub sp, #12 + 80016c0: af00 add r7, sp, #0 + 80016c2: 6078 str r0, [r7, #4] + 80016c4: 460b mov r3, r1 + 80016c6: 70fb strb r3, [r7, #3] + return hpcd->OUT_ep[ep_addr & EP_ADDR_MSK].xfer_count; + 80016c8: 78fb ldrb r3, [r7, #3] + 80016ca: f003 0207 and.w r2, r3, #7 + 80016ce: 6879 ldr r1, [r7, #4] + 80016d0: 4613 mov r3, r2 + 80016d2: 009b lsls r3, r3, #2 + 80016d4: 4413 add r3, r2 + 80016d6: 00db lsls r3, r3, #3 + 80016d8: 440b add r3, r1 + 80016da: f503 73b6 add.w r3, r3, #364 @ 0x16c + 80016de: 681b ldr r3, [r3, #0] +} + 80016e0: 4618 mov r0, r3 + 80016e2: 370c adds r7, #12 + 80016e4: 46bd mov sp, r7 + 80016e6: bc80 pop {r7} + 80016e8: 4770 bx lr + +080016ea : + * @param pBuf pointer to the transmission buffer + * @param len amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len) +{ + 80016ea: b580 push {r7, lr} + 80016ec: b086 sub sp, #24 + 80016ee: af00 add r7, sp, #0 + 80016f0: 60f8 str r0, [r7, #12] + 80016f2: 607a str r2, [r7, #4] + 80016f4: 603b str r3, [r7, #0] + 80016f6: 460b mov r3, r1 + 80016f8: 72fb strb r3, [r7, #11] + PCD_EPTypeDef *ep; + + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 80016fa: 7afb ldrb r3, [r7, #11] + 80016fc: f003 0207 and.w r2, r3, #7 + 8001700: 4613 mov r3, r2 + 8001702: 009b lsls r3, r3, #2 + 8001704: 4413 add r3, r2 + 8001706: 00db lsls r3, r3, #3 + 8001708: 3310 adds r3, #16 + 800170a: 68fa ldr r2, [r7, #12] + 800170c: 4413 add r3, r2 + 800170e: 617b str r3, [r7, #20] + + /*setup and start the Xfer */ + ep->xfer_buff = pBuf; + 8001710: 697b ldr r3, [r7, #20] + 8001712: 687a ldr r2, [r7, #4] + 8001714: 615a str r2, [r3, #20] + ep->xfer_len = len; + 8001716: 697b ldr r3, [r7, #20] + 8001718: 683a ldr r2, [r7, #0] + 800171a: 619a str r2, [r3, #24] +#if defined (USB) + ep->xfer_fill_db = 1U; + 800171c: 697b ldr r3, [r7, #20] + 800171e: 2201 movs r2, #1 + 8001720: f883 2024 strb.w r2, [r3, #36] @ 0x24 + ep->xfer_len_db = len; + 8001724: 697b ldr r3, [r7, #20] + 8001726: 683a ldr r2, [r7, #0] + 8001728: 621a str r2, [r3, #32] +#endif /* defined (USB) */ + ep->xfer_count = 0U; + 800172a: 697b ldr r3, [r7, #20] + 800172c: 2200 movs r2, #0 + 800172e: 61da str r2, [r3, #28] + ep->is_in = 1U; + 8001730: 697b ldr r3, [r7, #20] + 8001732: 2201 movs r2, #1 + 8001734: 705a strb r2, [r3, #1] + ep->num = ep_addr & EP_ADDR_MSK; + 8001736: 7afb ldrb r3, [r7, #11] + 8001738: f003 0307 and.w r3, r3, #7 + 800173c: b2da uxtb r2, r3 + 800173e: 697b ldr r3, [r7, #20] + 8001740: 701a strb r2, [r3, #0] + + (void)USB_EPStartXfer(hpcd->Instance, ep); + 8001742: 68fb ldr r3, [r7, #12] + 8001744: 681b ldr r3, [r3, #0] + 8001746: 6979 ldr r1, [r7, #20] + 8001748: 4618 mov r0, r3 + 800174a: f003 fa59 bl 8004c00 + + return HAL_OK; + 800174e: 2300 movs r3, #0 +} + 8001750: 4618 mov r0, r3 + 8001752: 3718 adds r7, #24 + 8001754: 46bd mov sp, r7 + 8001756: bd80 pop {r7, pc} + +08001758 : + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + 8001758: b580 push {r7, lr} + 800175a: b084 sub sp, #16 + 800175c: af00 add r7, sp, #0 + 800175e: 6078 str r0, [r7, #4] + 8001760: 460b mov r3, r1 + 8001762: 70fb strb r3, [r7, #3] + PCD_EPTypeDef *ep; + + if (((uint32_t)ep_addr & EP_ADDR_MSK) > hpcd->Init.dev_endpoints) + 8001764: 78fb ldrb r3, [r7, #3] + 8001766: f003 0307 and.w r3, r3, #7 + 800176a: 687a ldr r2, [r7, #4] + 800176c: 7912 ldrb r2, [r2, #4] + 800176e: 4293 cmp r3, r2 + 8001770: d901 bls.n 8001776 + { + return HAL_ERROR; + 8001772: 2301 movs r3, #1 + 8001774: e04c b.n 8001810 + } + + if ((0x80U & ep_addr) == 0x80U) + 8001776: f997 3003 ldrsb.w r3, [r7, #3] + 800177a: 2b00 cmp r3, #0 + 800177c: da0e bge.n 800179c + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 800177e: 78fb ldrb r3, [r7, #3] + 8001780: f003 0207 and.w r2, r3, #7 + 8001784: 4613 mov r3, r2 + 8001786: 009b lsls r3, r3, #2 + 8001788: 4413 add r3, r2 + 800178a: 00db lsls r3, r3, #3 + 800178c: 3310 adds r3, #16 + 800178e: 687a ldr r2, [r7, #4] + 8001790: 4413 add r3, r2 + 8001792: 60fb str r3, [r7, #12] + ep->is_in = 1U; + 8001794: 68fb ldr r3, [r7, #12] + 8001796: 2201 movs r2, #1 + 8001798: 705a strb r2, [r3, #1] + 800179a: e00c b.n 80017b6 + } + else + { + ep = &hpcd->OUT_ep[ep_addr]; + 800179c: 78fa ldrb r2, [r7, #3] + 800179e: 4613 mov r3, r2 + 80017a0: 009b lsls r3, r3, #2 + 80017a2: 4413 add r3, r2 + 80017a4: 00db lsls r3, r3, #3 + 80017a6: f503 73a8 add.w r3, r3, #336 @ 0x150 + 80017aa: 687a ldr r2, [r7, #4] + 80017ac: 4413 add r3, r2 + 80017ae: 60fb str r3, [r7, #12] + ep->is_in = 0U; + 80017b0: 68fb ldr r3, [r7, #12] + 80017b2: 2200 movs r2, #0 + 80017b4: 705a strb r2, [r3, #1] + } + + ep->is_stall = 1U; + 80017b6: 68fb ldr r3, [r7, #12] + 80017b8: 2201 movs r2, #1 + 80017ba: 709a strb r2, [r3, #2] + ep->num = ep_addr & EP_ADDR_MSK; + 80017bc: 78fb ldrb r3, [r7, #3] + 80017be: f003 0307 and.w r3, r3, #7 + 80017c2: b2da uxtb r2, r3 + 80017c4: 68fb ldr r3, [r7, #12] + 80017c6: 701a strb r2, [r3, #0] + + __HAL_LOCK(hpcd); + 80017c8: 687b ldr r3, [r7, #4] + 80017ca: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 + 80017ce: 2b01 cmp r3, #1 + 80017d0: d101 bne.n 80017d6 + 80017d2: 2302 movs r3, #2 + 80017d4: e01c b.n 8001810 + 80017d6: 687b ldr r3, [r7, #4] + 80017d8: 2201 movs r2, #1 + 80017da: f883 2290 strb.w r2, [r3, #656] @ 0x290 + + (void)USB_EPSetStall(hpcd->Instance, ep); + 80017de: 687b ldr r3, [r7, #4] + 80017e0: 681b ldr r3, [r3, #0] + 80017e2: 68f9 ldr r1, [r7, #12] + 80017e4: 4618 mov r0, r3 + 80017e6: f004 fdbc bl 8006362 + + if ((ep_addr & EP_ADDR_MSK) == 0U) + 80017ea: 78fb ldrb r3, [r7, #3] + 80017ec: f003 0307 and.w r3, r3, #7 + 80017f0: 2b00 cmp r3, #0 + 80017f2: d108 bne.n 8001806 + { + (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t *)hpcd->Setup); + 80017f4: 687b ldr r3, [r7, #4] + 80017f6: 681a ldr r2, [r3, #0] + 80017f8: 687b ldr r3, [r7, #4] + 80017fa: f503 7326 add.w r3, r3, #664 @ 0x298 + 80017fe: 4619 mov r1, r3 + 8001800: 4610 mov r0, r2 + 8001802: f004 fee1 bl 80065c8 + } + + __HAL_UNLOCK(hpcd); + 8001806: 687b ldr r3, [r7, #4] + 8001808: 2200 movs r2, #0 + 800180a: f883 2290 strb.w r2, [r3, #656] @ 0x290 + + return HAL_OK; + 800180e: 2300 movs r3, #0 +} + 8001810: 4618 mov r0, r3 + 8001812: 3710 adds r7, #16 + 8001814: 46bd mov sp, r7 + 8001816: bd80 pop {r7, pc} + +08001818 : + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + 8001818: b580 push {r7, lr} + 800181a: b084 sub sp, #16 + 800181c: af00 add r7, sp, #0 + 800181e: 6078 str r0, [r7, #4] + 8001820: 460b mov r3, r1 + 8001822: 70fb strb r3, [r7, #3] + PCD_EPTypeDef *ep; + + if (((uint32_t)ep_addr & 0x0FU) > hpcd->Init.dev_endpoints) + 8001824: 78fb ldrb r3, [r7, #3] + 8001826: f003 030f and.w r3, r3, #15 + 800182a: 687a ldr r2, [r7, #4] + 800182c: 7912 ldrb r2, [r2, #4] + 800182e: 4293 cmp r3, r2 + 8001830: d901 bls.n 8001836 + { + return HAL_ERROR; + 8001832: 2301 movs r3, #1 + 8001834: e040 b.n 80018b8 + } + + if ((0x80U & ep_addr) == 0x80U) + 8001836: f997 3003 ldrsb.w r3, [r7, #3] + 800183a: 2b00 cmp r3, #0 + 800183c: da0e bge.n 800185c + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 800183e: 78fb ldrb r3, [r7, #3] + 8001840: f003 0207 and.w r2, r3, #7 + 8001844: 4613 mov r3, r2 + 8001846: 009b lsls r3, r3, #2 + 8001848: 4413 add r3, r2 + 800184a: 00db lsls r3, r3, #3 + 800184c: 3310 adds r3, #16 + 800184e: 687a ldr r2, [r7, #4] + 8001850: 4413 add r3, r2 + 8001852: 60fb str r3, [r7, #12] + ep->is_in = 1U; + 8001854: 68fb ldr r3, [r7, #12] + 8001856: 2201 movs r2, #1 + 8001858: 705a strb r2, [r3, #1] + 800185a: e00e b.n 800187a + } + else + { + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + 800185c: 78fb ldrb r3, [r7, #3] + 800185e: f003 0207 and.w r2, r3, #7 + 8001862: 4613 mov r3, r2 + 8001864: 009b lsls r3, r3, #2 + 8001866: 4413 add r3, r2 + 8001868: 00db lsls r3, r3, #3 + 800186a: f503 73a8 add.w r3, r3, #336 @ 0x150 + 800186e: 687a ldr r2, [r7, #4] + 8001870: 4413 add r3, r2 + 8001872: 60fb str r3, [r7, #12] + ep->is_in = 0U; + 8001874: 68fb ldr r3, [r7, #12] + 8001876: 2200 movs r2, #0 + 8001878: 705a strb r2, [r3, #1] + } + + ep->is_stall = 0U; + 800187a: 68fb ldr r3, [r7, #12] + 800187c: 2200 movs r2, #0 + 800187e: 709a strb r2, [r3, #2] + ep->num = ep_addr & EP_ADDR_MSK; + 8001880: 78fb ldrb r3, [r7, #3] + 8001882: f003 0307 and.w r3, r3, #7 + 8001886: b2da uxtb r2, r3 + 8001888: 68fb ldr r3, [r7, #12] + 800188a: 701a strb r2, [r3, #0] + + __HAL_LOCK(hpcd); + 800188c: 687b ldr r3, [r7, #4] + 800188e: f893 3290 ldrb.w r3, [r3, #656] @ 0x290 + 8001892: 2b01 cmp r3, #1 + 8001894: d101 bne.n 800189a + 8001896: 2302 movs r3, #2 + 8001898: e00e b.n 80018b8 + 800189a: 687b ldr r3, [r7, #4] + 800189c: 2201 movs r2, #1 + 800189e: f883 2290 strb.w r2, [r3, #656] @ 0x290 + (void)USB_EPClearStall(hpcd->Instance, ep); + 80018a2: 687b ldr r3, [r7, #4] + 80018a4: 681b ldr r3, [r3, #0] + 80018a6: 68f9 ldr r1, [r7, #12] + 80018a8: 4618 mov r0, r3 + 80018aa: f004 fdaa bl 8006402 + __HAL_UNLOCK(hpcd); + 80018ae: 687b ldr r3, [r7, #4] + 80018b0: 2200 movs r2, #0 + 80018b2: f883 2290 strb.w r2, [r3, #656] @ 0x290 + + return HAL_OK; + 80018b6: 2300 movs r3, #0 +} + 80018b8: 4618 mov r0, r3 + 80018ba: 3710 adds r7, #16 + 80018bc: 46bd mov sp, r7 + 80018be: bd80 pop {r7, pc} + +080018c0 : + * @brief This function handles PCD Endpoint interrupt request. + * @param hpcd PCD handle + * @retval HAL status + */ +static HAL_StatusTypeDef PCD_EP_ISR_Handler(PCD_HandleTypeDef *hpcd) +{ + 80018c0: b580 push {r7, lr} + 80018c2: b096 sub sp, #88 @ 0x58 + 80018c4: af00 add r7, sp, #0 + 80018c6: 6078 str r0, [r7, #4] +#if (USE_USB_DOUBLE_BUFFER != 1U) + count = 0U; +#endif /* USE_USB_DOUBLE_BUFFER */ + + /* stay in loop while pending interrupts */ + while ((hpcd->Instance->ISTR & USB_ISTR_CTR) != 0U) + 80018c8: e3bb b.n 8002042 + { + wIstr = hpcd->Instance->ISTR; + 80018ca: 687b ldr r3, [r7, #4] + 80018cc: 681b ldr r3, [r3, #0] + 80018ce: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 80018d2: f8a7 304e strh.w r3, [r7, #78] @ 0x4e + + /* extract highest priority endpoint number */ + epindex = (uint8_t)(wIstr & USB_ISTR_EP_ID); + 80018d6: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e + 80018da: b2db uxtb r3, r3 + 80018dc: f003 030f and.w r3, r3, #15 + 80018e0: f887 304d strb.w r3, [r7, #77] @ 0x4d + + if (epindex == 0U) + 80018e4: f897 304d ldrb.w r3, [r7, #77] @ 0x4d + 80018e8: 2b00 cmp r3, #0 + 80018ea: f040 8175 bne.w 8001bd8 + { + /* Decode and service control endpoint interrupt */ + + /* DIR bit = origin of the interrupt */ + if ((wIstr & USB_ISTR_DIR) == 0U) + 80018ee: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e + 80018f2: f003 0310 and.w r3, r3, #16 + 80018f6: 2b00 cmp r3, #0 + 80018f8: d14e bne.n 8001998 + { + /* DIR = 0 */ + + /* DIR = 0 => IN int */ + /* DIR = 0 implies that (EP_CTR_TX = 1) always */ + PCD_CLEAR_TX_EP_CTR(hpcd->Instance, PCD_ENDP0); + 80018fa: 687b ldr r3, [r7, #4] + 80018fc: 681b ldr r3, [r3, #0] + 80018fe: 881b ldrh r3, [r3, #0] + 8001900: b29b uxth r3, r3 + 8001902: f423 43e1 bic.w r3, r3, #28800 @ 0x7080 + 8001906: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800190a: 81fb strh r3, [r7, #14] + 800190c: 687b ldr r3, [r7, #4] + 800190e: 681a ldr r2, [r3, #0] + 8001910: 89fb ldrh r3, [r7, #14] + 8001912: ea6f 4343 mvn.w r3, r3, lsl #17 + 8001916: ea6f 4353 mvn.w r3, r3, lsr #17 + 800191a: b29b uxth r3, r3 + 800191c: 8013 strh r3, [r2, #0] + ep = &hpcd->IN_ep[0]; + 800191e: 687b ldr r3, [r7, #4] + 8001920: 3310 adds r3, #16 + 8001922: 657b str r3, [r7, #84] @ 0x54 + + ep->xfer_count = PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); + 8001924: 687b ldr r3, [r7, #4] + 8001926: 681b ldr r3, [r3, #0] + 8001928: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800192c: b29b uxth r3, r3 + 800192e: 461a mov r2, r3 + 8001930: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001932: 781b ldrb r3, [r3, #0] + 8001934: 00db lsls r3, r3, #3 + 8001936: 4413 add r3, r2 + 8001938: 3302 adds r3, #2 + 800193a: 005b lsls r3, r3, #1 + 800193c: 687a ldr r2, [r7, #4] + 800193e: 6812 ldr r2, [r2, #0] + 8001940: 4413 add r3, r2 + 8001942: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8001946: 881b ldrh r3, [r3, #0] + 8001948: f3c3 0209 ubfx r2, r3, #0, #10 + 800194c: 6d7b ldr r3, [r7, #84] @ 0x54 + 800194e: 61da str r2, [r3, #28] + ep->xfer_buff += ep->xfer_count; + 8001950: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001952: 695a ldr r2, [r3, #20] + 8001954: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001956: 69db ldr r3, [r3, #28] + 8001958: 441a add r2, r3 + 800195a: 6d7b ldr r3, [r7, #84] @ 0x54 + 800195c: 615a str r2, [r3, #20] + + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, 0U); +#else + HAL_PCD_DataInStageCallback(hpcd, 0U); + 800195e: 2100 movs r1, #0 + 8001960: 6878 ldr r0, [r7, #4] + 8001962: f006 fd00 bl 8008366 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + if ((hpcd->USB_Address > 0U) && (ep->xfer_len == 0U)) + 8001966: 687b ldr r3, [r7, #4] + 8001968: 7b5b ldrb r3, [r3, #13] + 800196a: b2db uxtb r3, r3 + 800196c: 2b00 cmp r3, #0 + 800196e: f000 8368 beq.w 8002042 + 8001972: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001974: 699b ldr r3, [r3, #24] + 8001976: 2b00 cmp r3, #0 + 8001978: f040 8363 bne.w 8002042 + { + hpcd->Instance->DADDR = ((uint16_t)hpcd->USB_Address | USB_DADDR_EF); + 800197c: 687b ldr r3, [r7, #4] + 800197e: 7b5b ldrb r3, [r3, #13] + 8001980: b2db uxtb r3, r3 + 8001982: f063 037f orn r3, r3, #127 @ 0x7f + 8001986: b2da uxtb r2, r3 + 8001988: 687b ldr r3, [r7, #4] + 800198a: 681b ldr r3, [r3, #0] + 800198c: f8a3 204c strh.w r2, [r3, #76] @ 0x4c + hpcd->USB_Address = 0U; + 8001990: 687b ldr r3, [r7, #4] + 8001992: 2200 movs r2, #0 + 8001994: 735a strb r2, [r3, #13] + 8001996: e354 b.n 8002042 + { + /* DIR = 1 */ + + /* DIR = 1 & CTR_RX => SETUP or OUT int */ + /* DIR = 1 & (CTR_TX | CTR_RX) => 2 int pending */ + ep = &hpcd->OUT_ep[0]; + 8001998: 687b ldr r3, [r7, #4] + 800199a: f503 73a8 add.w r3, r3, #336 @ 0x150 + 800199e: 657b str r3, [r7, #84] @ 0x54 + wEPVal = PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); + 80019a0: 687b ldr r3, [r7, #4] + 80019a2: 681b ldr r3, [r3, #0] + 80019a4: 881b ldrh r3, [r3, #0] + 80019a6: f8a7 304a strh.w r3, [r7, #74] @ 0x4a + + if ((wEPVal & USB_EP_SETUP) != 0U) + 80019aa: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 80019ae: f403 6300 and.w r3, r3, #2048 @ 0x800 + 80019b2: 2b00 cmp r3, #0 + 80019b4: d034 beq.n 8001a20 + { + /* Get SETUP Packet */ + ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); + 80019b6: 687b ldr r3, [r7, #4] + 80019b8: 681b ldr r3, [r3, #0] + 80019ba: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80019be: b29b uxth r3, r3 + 80019c0: 461a mov r2, r3 + 80019c2: 6d7b ldr r3, [r7, #84] @ 0x54 + 80019c4: 781b ldrb r3, [r3, #0] + 80019c6: 00db lsls r3, r3, #3 + 80019c8: 4413 add r3, r2 + 80019ca: 3306 adds r3, #6 + 80019cc: 005b lsls r3, r3, #1 + 80019ce: 687a ldr r2, [r7, #4] + 80019d0: 6812 ldr r2, [r2, #0] + 80019d2: 4413 add r3, r2 + 80019d4: f503 6380 add.w r3, r3, #1024 @ 0x400 + 80019d8: 881b ldrh r3, [r3, #0] + 80019da: f3c3 0209 ubfx r2, r3, #0, #10 + 80019de: 6d7b ldr r3, [r7, #84] @ 0x54 + 80019e0: 61da str r2, [r3, #28] + + USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup, + 80019e2: 687b ldr r3, [r7, #4] + 80019e4: 6818 ldr r0, [r3, #0] + 80019e6: 687b ldr r3, [r7, #4] + 80019e8: f503 7126 add.w r1, r3, #664 @ 0x298 + 80019ec: 6d7b ldr r3, [r7, #84] @ 0x54 + 80019ee: 88da ldrh r2, [r3, #6] + ep->pmaadress, (uint16_t)ep->xfer_count); + 80019f0: 6d7b ldr r3, [r7, #84] @ 0x54 + 80019f2: 69db ldr r3, [r3, #28] + USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup, + 80019f4: b29b uxth r3, r3 + 80019f6: f004 fe38 bl 800666a + + /* SETUP bit kept frozen while CTR_RX = 1 */ + PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); + 80019fa: 687b ldr r3, [r7, #4] + 80019fc: 681b ldr r3, [r3, #0] + 80019fe: 881b ldrh r3, [r3, #0] + 8001a00: b29a uxth r2, r3 + 8001a02: f640 738f movw r3, #3983 @ 0xf8f + 8001a06: 4013 ands r3, r2 + 8001a08: 823b strh r3, [r7, #16] + 8001a0a: 687b ldr r3, [r7, #4] + 8001a0c: 681b ldr r3, [r3, #0] + 8001a0e: 8a3a ldrh r2, [r7, #16] + 8001a10: f042 0280 orr.w r2, r2, #128 @ 0x80 + 8001a14: b292 uxth r2, r2 + 8001a16: 801a strh r2, [r3, #0] + + /* Process SETUP Packet*/ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SetupStageCallback(hpcd); +#else + HAL_PCD_SetupStageCallback(hpcd); + 8001a18: 6878 ldr r0, [r7, #4] + 8001a1a: f006 fc77 bl 800830c + 8001a1e: e310 b.n 8002042 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else if ((wEPVal & USB_EP_CTR_RX) != 0U) + 8001a20: f9b7 304a ldrsh.w r3, [r7, #74] @ 0x4a + 8001a24: 2b00 cmp r3, #0 + 8001a26: f280 830c bge.w 8002042 + { + PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0); + 8001a2a: 687b ldr r3, [r7, #4] + 8001a2c: 681b ldr r3, [r3, #0] + 8001a2e: 881b ldrh r3, [r3, #0] + 8001a30: b29a uxth r2, r3 + 8001a32: f640 738f movw r3, #3983 @ 0xf8f + 8001a36: 4013 ands r3, r2 + 8001a38: 83fb strh r3, [r7, #30] + 8001a3a: 687b ldr r3, [r7, #4] + 8001a3c: 681b ldr r3, [r3, #0] + 8001a3e: 8bfa ldrh r2, [r7, #30] + 8001a40: f042 0280 orr.w r2, r2, #128 @ 0x80 + 8001a44: b292 uxth r2, r2 + 8001a46: 801a strh r2, [r3, #0] + + /* Get Control Data OUT Packet */ + ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); + 8001a48: 687b ldr r3, [r7, #4] + 8001a4a: 681b ldr r3, [r3, #0] + 8001a4c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8001a50: b29b uxth r3, r3 + 8001a52: 461a mov r2, r3 + 8001a54: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001a56: 781b ldrb r3, [r3, #0] + 8001a58: 00db lsls r3, r3, #3 + 8001a5a: 4413 add r3, r2 + 8001a5c: 3306 adds r3, #6 + 8001a5e: 005b lsls r3, r3, #1 + 8001a60: 687a ldr r2, [r7, #4] + 8001a62: 6812 ldr r2, [r2, #0] + 8001a64: 4413 add r3, r2 + 8001a66: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8001a6a: 881b ldrh r3, [r3, #0] + 8001a6c: f3c3 0209 ubfx r2, r3, #0, #10 + 8001a70: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001a72: 61da str r2, [r3, #28] + + if ((ep->xfer_count != 0U) && (ep->xfer_buff != 0U)) + 8001a74: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001a76: 69db ldr r3, [r3, #28] + 8001a78: 2b00 cmp r3, #0 + 8001a7a: d019 beq.n 8001ab0 + 8001a7c: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001a7e: 695b ldr r3, [r3, #20] + 8001a80: 2b00 cmp r3, #0 + 8001a82: d015 beq.n 8001ab0 + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, + 8001a84: 687b ldr r3, [r7, #4] + 8001a86: 6818 ldr r0, [r3, #0] + 8001a88: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001a8a: 6959 ldr r1, [r3, #20] + 8001a8c: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001a8e: 88da ldrh r2, [r3, #6] + ep->pmaadress, (uint16_t)ep->xfer_count); + 8001a90: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001a92: 69db ldr r3, [r3, #28] + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, + 8001a94: b29b uxth r3, r3 + 8001a96: f004 fde8 bl 800666a + + ep->xfer_buff += ep->xfer_count; + 8001a9a: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001a9c: 695a ldr r2, [r3, #20] + 8001a9e: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001aa0: 69db ldr r3, [r3, #28] + 8001aa2: 441a add r2, r3 + 8001aa4: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001aa6: 615a str r2, [r3, #20] + + /* Process Control Data OUT Packet */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataOutStageCallback(hpcd, 0U); +#else + HAL_PCD_DataOutStageCallback(hpcd, 0U); + 8001aa8: 2100 movs r1, #0 + 8001aaa: 6878 ldr r0, [r7, #4] + 8001aac: f006 fc40 bl 8008330 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + + wEPVal = (uint16_t)PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0); + 8001ab0: 687b ldr r3, [r7, #4] + 8001ab2: 681b ldr r3, [r3, #0] + 8001ab4: 881b ldrh r3, [r3, #0] + 8001ab6: f8a7 304a strh.w r3, [r7, #74] @ 0x4a + + if (((wEPVal & USB_EP_SETUP) == 0U) && ((wEPVal & USB_EP_RX_STRX) != USB_EP_RX_VALID)) + 8001aba: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 8001abe: f403 6300 and.w r3, r3, #2048 @ 0x800 + 8001ac2: 2b00 cmp r3, #0 + 8001ac4: f040 82bd bne.w 8002042 + 8001ac8: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 8001acc: f403 5340 and.w r3, r3, #12288 @ 0x3000 + 8001ad0: f5b3 5f40 cmp.w r3, #12288 @ 0x3000 + 8001ad4: f000 82b5 beq.w 8002042 + { + PCD_SET_EP_RX_CNT(hpcd->Instance, PCD_ENDP0, ep->maxpacket); + 8001ad8: 687b ldr r3, [r7, #4] + 8001ada: 681b ldr r3, [r3, #0] + 8001adc: 61bb str r3, [r7, #24] + 8001ade: 687b ldr r3, [r7, #4] + 8001ae0: 681b ldr r3, [r3, #0] + 8001ae2: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8001ae6: b29b uxth r3, r3 + 8001ae8: 461a mov r2, r3 + 8001aea: 69bb ldr r3, [r7, #24] + 8001aec: 4413 add r3, r2 + 8001aee: 61bb str r3, [r7, #24] + 8001af0: 69bb ldr r3, [r7, #24] + 8001af2: f203 430c addw r3, r3, #1036 @ 0x40c + 8001af6: 617b str r3, [r7, #20] + 8001af8: 697b ldr r3, [r7, #20] + 8001afa: 881b ldrh r3, [r3, #0] + 8001afc: b29b uxth r3, r3 + 8001afe: f3c3 0309 ubfx r3, r3, #0, #10 + 8001b02: b29a uxth r2, r3 + 8001b04: 697b ldr r3, [r7, #20] + 8001b06: 801a strh r2, [r3, #0] + 8001b08: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001b0a: 691b ldr r3, [r3, #16] + 8001b0c: 2b3e cmp r3, #62 @ 0x3e + 8001b0e: d91d bls.n 8001b4c + 8001b10: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001b12: 691b ldr r3, [r3, #16] + 8001b14: 095b lsrs r3, r3, #5 + 8001b16: 647b str r3, [r7, #68] @ 0x44 + 8001b18: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001b1a: 691b ldr r3, [r3, #16] + 8001b1c: f003 031f and.w r3, r3, #31 + 8001b20: 2b00 cmp r3, #0 + 8001b22: d102 bne.n 8001b2a + 8001b24: 6c7b ldr r3, [r7, #68] @ 0x44 + 8001b26: 3b01 subs r3, #1 + 8001b28: 647b str r3, [r7, #68] @ 0x44 + 8001b2a: 697b ldr r3, [r7, #20] + 8001b2c: 881b ldrh r3, [r3, #0] + 8001b2e: b29a uxth r2, r3 + 8001b30: 6c7b ldr r3, [r7, #68] @ 0x44 + 8001b32: b29b uxth r3, r3 + 8001b34: 029b lsls r3, r3, #10 + 8001b36: b29b uxth r3, r3 + 8001b38: 4313 orrs r3, r2 + 8001b3a: b29b uxth r3, r3 + 8001b3c: ea6f 4343 mvn.w r3, r3, lsl #17 + 8001b40: ea6f 4353 mvn.w r3, r3, lsr #17 + 8001b44: b29a uxth r2, r3 + 8001b46: 697b ldr r3, [r7, #20] + 8001b48: 801a strh r2, [r3, #0] + 8001b4a: e026 b.n 8001b9a + 8001b4c: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001b4e: 691b ldr r3, [r3, #16] + 8001b50: 2b00 cmp r3, #0 + 8001b52: d10a bne.n 8001b6a + 8001b54: 697b ldr r3, [r7, #20] + 8001b56: 881b ldrh r3, [r3, #0] + 8001b58: b29b uxth r3, r3 + 8001b5a: ea6f 4343 mvn.w r3, r3, lsl #17 + 8001b5e: ea6f 4353 mvn.w r3, r3, lsr #17 + 8001b62: b29a uxth r2, r3 + 8001b64: 697b ldr r3, [r7, #20] + 8001b66: 801a strh r2, [r3, #0] + 8001b68: e017 b.n 8001b9a + 8001b6a: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001b6c: 691b ldr r3, [r3, #16] + 8001b6e: 085b lsrs r3, r3, #1 + 8001b70: 647b str r3, [r7, #68] @ 0x44 + 8001b72: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001b74: 691b ldr r3, [r3, #16] + 8001b76: f003 0301 and.w r3, r3, #1 + 8001b7a: 2b00 cmp r3, #0 + 8001b7c: d002 beq.n 8001b84 + 8001b7e: 6c7b ldr r3, [r7, #68] @ 0x44 + 8001b80: 3301 adds r3, #1 + 8001b82: 647b str r3, [r7, #68] @ 0x44 + 8001b84: 697b ldr r3, [r7, #20] + 8001b86: 881b ldrh r3, [r3, #0] + 8001b88: b29a uxth r2, r3 + 8001b8a: 6c7b ldr r3, [r7, #68] @ 0x44 + 8001b8c: b29b uxth r3, r3 + 8001b8e: 029b lsls r3, r3, #10 + 8001b90: b29b uxth r3, r3 + 8001b92: 4313 orrs r3, r2 + 8001b94: b29a uxth r2, r3 + 8001b96: 697b ldr r3, [r7, #20] + 8001b98: 801a strh r2, [r3, #0] + PCD_SET_EP_RX_STATUS(hpcd->Instance, PCD_ENDP0, USB_EP_RX_VALID); + 8001b9a: 687b ldr r3, [r7, #4] + 8001b9c: 681b ldr r3, [r3, #0] + 8001b9e: 881b ldrh r3, [r3, #0] + 8001ba0: b29b uxth r3, r3 + 8001ba2: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8001ba6: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8001baa: 827b strh r3, [r7, #18] + 8001bac: 8a7b ldrh r3, [r7, #18] + 8001bae: f483 5380 eor.w r3, r3, #4096 @ 0x1000 + 8001bb2: 827b strh r3, [r7, #18] + 8001bb4: 8a7b ldrh r3, [r7, #18] + 8001bb6: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 8001bba: 827b strh r3, [r7, #18] + 8001bbc: 687b ldr r3, [r7, #4] + 8001bbe: 681a ldr r2, [r3, #0] + 8001bc0: 8a7b ldrh r3, [r7, #18] + 8001bc2: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8001bc6: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8001bca: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8001bce: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8001bd2: b29b uxth r3, r3 + 8001bd4: 8013 strh r3, [r2, #0] + 8001bd6: e234 b.n 8002042 + } + else + { + /* Decode and service non control endpoints interrupt */ + /* process related endpoint register */ + wEPVal = PCD_GET_ENDPOINT(hpcd->Instance, epindex); + 8001bd8: 687b ldr r3, [r7, #4] + 8001bda: 681b ldr r3, [r3, #0] + 8001bdc: 461a mov r2, r3 + 8001bde: f897 304d ldrb.w r3, [r7, #77] @ 0x4d + 8001be2: 009b lsls r3, r3, #2 + 8001be4: 4413 add r3, r2 + 8001be6: 881b ldrh r3, [r3, #0] + 8001be8: f8a7 304a strh.w r3, [r7, #74] @ 0x4a + + if ((wEPVal & USB_EP_CTR_RX) != 0U) + 8001bec: f9b7 304a ldrsh.w r3, [r7, #74] @ 0x4a + 8001bf0: 2b00 cmp r3, #0 + 8001bf2: f280 80fc bge.w 8001dee + { + /* clear int flag */ + PCD_CLEAR_RX_EP_CTR(hpcd->Instance, epindex); + 8001bf6: 687b ldr r3, [r7, #4] + 8001bf8: 681b ldr r3, [r3, #0] + 8001bfa: 461a mov r2, r3 + 8001bfc: f897 304d ldrb.w r3, [r7, #77] @ 0x4d + 8001c00: 009b lsls r3, r3, #2 + 8001c02: 4413 add r3, r2 + 8001c04: 881b ldrh r3, [r3, #0] + 8001c06: b29a uxth r2, r3 + 8001c08: f640 738f movw r3, #3983 @ 0xf8f + 8001c0c: 4013 ands r3, r2 + 8001c0e: f8a7 3048 strh.w r3, [r7, #72] @ 0x48 + 8001c12: 687b ldr r3, [r7, #4] + 8001c14: 681b ldr r3, [r3, #0] + 8001c16: 461a mov r2, r3 + 8001c18: f897 304d ldrb.w r3, [r7, #77] @ 0x4d + 8001c1c: 009b lsls r3, r3, #2 + 8001c1e: 4413 add r3, r2 + 8001c20: f8b7 2048 ldrh.w r2, [r7, #72] @ 0x48 + 8001c24: f042 0280 orr.w r2, r2, #128 @ 0x80 + 8001c28: b292 uxth r2, r2 + 8001c2a: 801a strh r2, [r3, #0] + ep = &hpcd->OUT_ep[epindex]; + 8001c2c: f897 204d ldrb.w r2, [r7, #77] @ 0x4d + 8001c30: 4613 mov r3, r2 + 8001c32: 009b lsls r3, r3, #2 + 8001c34: 4413 add r3, r2 + 8001c36: 00db lsls r3, r3, #3 + 8001c38: f503 73a8 add.w r3, r3, #336 @ 0x150 + 8001c3c: 687a ldr r2, [r7, #4] + 8001c3e: 4413 add r3, r2 + 8001c40: 657b str r3, [r7, #84] @ 0x54 + + /* OUT Single Buffering */ + if (ep->doublebuffer == 0U) + 8001c42: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001c44: 7b1b ldrb r3, [r3, #12] + 8001c46: 2b00 cmp r3, #0 + 8001c48: d125 bne.n 8001c96 + { + count = (uint16_t)PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num); + 8001c4a: 687b ldr r3, [r7, #4] + 8001c4c: 681b ldr r3, [r3, #0] + 8001c4e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8001c52: b29b uxth r3, r3 + 8001c54: 461a mov r2, r3 + 8001c56: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001c58: 781b ldrb r3, [r3, #0] + 8001c5a: 00db lsls r3, r3, #3 + 8001c5c: 4413 add r3, r2 + 8001c5e: 3306 adds r3, #6 + 8001c60: 005b lsls r3, r3, #1 + 8001c62: 687a ldr r2, [r7, #4] + 8001c64: 6812 ldr r2, [r2, #0] + 8001c66: 4413 add r3, r2 + 8001c68: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8001c6c: 881b ldrh r3, [r3, #0] + 8001c6e: f3c3 0309 ubfx r3, r3, #0, #10 + 8001c72: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 + + if (count != 0U) + 8001c76: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 8001c7a: 2b00 cmp r3, #0 + 8001c7c: f000 8092 beq.w 8001da4 + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaadress, count); + 8001c80: 687b ldr r3, [r7, #4] + 8001c82: 6818 ldr r0, [r3, #0] + 8001c84: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001c86: 6959 ldr r1, [r3, #20] + 8001c88: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001c8a: 88da ldrh r2, [r3, #6] + 8001c8c: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 8001c90: f004 fceb bl 800666a + 8001c94: e086 b.n 8001da4 + } +#if (USE_USB_DOUBLE_BUFFER == 1U) + else + { + /* manage double buffer bulk out */ + if (ep->type == EP_TYPE_BULK) + 8001c96: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001c98: 78db ldrb r3, [r3, #3] + 8001c9a: 2b02 cmp r3, #2 + 8001c9c: d10a bne.n 8001cb4 + { + count = HAL_PCD_EP_DB_Receive(hpcd, ep, wEPVal); + 8001c9e: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 8001ca2: 461a mov r2, r3 + 8001ca4: 6d79 ldr r1, [r7, #84] @ 0x54 + 8001ca6: 6878 ldr r0, [r7, #4] + 8001ca8: f000 f9d9 bl 800205e + 8001cac: 4603 mov r3, r0 + 8001cae: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 + 8001cb2: e077 b.n 8001da4 + } + else /* manage double buffer iso out */ + { + /* free EP OUT Buffer */ + PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); + 8001cb4: 687b ldr r3, [r7, #4] + 8001cb6: 681b ldr r3, [r3, #0] + 8001cb8: 461a mov r2, r3 + 8001cba: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001cbc: 781b ldrb r3, [r3, #0] + 8001cbe: 009b lsls r3, r3, #2 + 8001cc0: 4413 add r3, r2 + 8001cc2: 881b ldrh r3, [r3, #0] + 8001cc4: b29b uxth r3, r3 + 8001cc6: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8001cca: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8001cce: f8a7 3052 strh.w r3, [r7, #82] @ 0x52 + 8001cd2: 687b ldr r3, [r7, #4] + 8001cd4: 681b ldr r3, [r3, #0] + 8001cd6: 461a mov r2, r3 + 8001cd8: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001cda: 781b ldrb r3, [r3, #0] + 8001cdc: 009b lsls r3, r3, #2 + 8001cde: 441a add r2, r3 + 8001ce0: f8b7 3052 ldrh.w r3, [r7, #82] @ 0x52 + 8001ce4: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8001ce8: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8001cec: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8001cf0: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 8001cf4: b29b uxth r3, r3 + 8001cf6: 8013 strh r3, [r2, #0] + + if ((PCD_GET_ENDPOINT(hpcd->Instance, ep->num) & USB_EP_DTOG_RX) != 0U) + 8001cf8: 687b ldr r3, [r7, #4] + 8001cfa: 681b ldr r3, [r3, #0] + 8001cfc: 461a mov r2, r3 + 8001cfe: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001d00: 781b ldrb r3, [r3, #0] + 8001d02: 009b lsls r3, r3, #2 + 8001d04: 4413 add r3, r2 + 8001d06: 881b ldrh r3, [r3, #0] + 8001d08: b29b uxth r3, r3 + 8001d0a: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8001d0e: 2b00 cmp r3, #0 + 8001d10: d024 beq.n 8001d5c + { + /* read from endpoint BUF0Addr buffer */ + count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); + 8001d12: 687b ldr r3, [r7, #4] + 8001d14: 681b ldr r3, [r3, #0] + 8001d16: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8001d1a: b29b uxth r3, r3 + 8001d1c: 461a mov r2, r3 + 8001d1e: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001d20: 781b ldrb r3, [r3, #0] + 8001d22: 00db lsls r3, r3, #3 + 8001d24: 4413 add r3, r2 + 8001d26: 3302 adds r3, #2 + 8001d28: 005b lsls r3, r3, #1 + 8001d2a: 687a ldr r2, [r7, #4] + 8001d2c: 6812 ldr r2, [r2, #0] + 8001d2e: 4413 add r3, r2 + 8001d30: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8001d34: 881b ldrh r3, [r3, #0] + 8001d36: f3c3 0309 ubfx r3, r3, #0, #10 + 8001d3a: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 + + if (count != 0U) + 8001d3e: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 8001d42: 2b00 cmp r3, #0 + 8001d44: d02e beq.n 8001da4 + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); + 8001d46: 687b ldr r3, [r7, #4] + 8001d48: 6818 ldr r0, [r3, #0] + 8001d4a: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001d4c: 6959 ldr r1, [r3, #20] + 8001d4e: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001d50: 891a ldrh r2, [r3, #8] + 8001d52: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 8001d56: f004 fc88 bl 800666a + 8001d5a: e023 b.n 8001da4 + } + } + else + { + /* read from endpoint BUF1Addr buffer */ + count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); + 8001d5c: 687b ldr r3, [r7, #4] + 8001d5e: 681b ldr r3, [r3, #0] + 8001d60: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8001d64: b29b uxth r3, r3 + 8001d66: 461a mov r2, r3 + 8001d68: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001d6a: 781b ldrb r3, [r3, #0] + 8001d6c: 00db lsls r3, r3, #3 + 8001d6e: 4413 add r3, r2 + 8001d70: 3306 adds r3, #6 + 8001d72: 005b lsls r3, r3, #1 + 8001d74: 687a ldr r2, [r7, #4] + 8001d76: 6812 ldr r2, [r2, #0] + 8001d78: 4413 add r3, r2 + 8001d7a: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8001d7e: 881b ldrh r3, [r3, #0] + 8001d80: f3c3 0309 ubfx r3, r3, #0, #10 + 8001d84: f8a7 3050 strh.w r3, [r7, #80] @ 0x50 + + if (count != 0U) + 8001d88: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 8001d8c: 2b00 cmp r3, #0 + 8001d8e: d009 beq.n 8001da4 + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); + 8001d90: 687b ldr r3, [r7, #4] + 8001d92: 6818 ldr r0, [r3, #0] + 8001d94: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001d96: 6959 ldr r1, [r3, #20] + 8001d98: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001d9a: 895a ldrh r2, [r3, #10] + 8001d9c: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 8001da0: f004 fc63 bl 800666a + } + } +#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ + + /* multi-packet on the NON control OUT endpoint */ + ep->xfer_count += count; + 8001da4: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001da6: 69da ldr r2, [r3, #28] + 8001da8: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 8001dac: 441a add r2, r3 + 8001dae: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001db0: 61da str r2, [r3, #28] + ep->xfer_buff += count; + 8001db2: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001db4: 695a ldr r2, [r3, #20] + 8001db6: f8b7 3050 ldrh.w r3, [r7, #80] @ 0x50 + 8001dba: 441a add r2, r3 + 8001dbc: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001dbe: 615a str r2, [r3, #20] + + if ((ep->xfer_len == 0U) || (count < ep->maxpacket)) + 8001dc0: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001dc2: 699b ldr r3, [r3, #24] + 8001dc4: 2b00 cmp r3, #0 + 8001dc6: d005 beq.n 8001dd4 + 8001dc8: f8b7 2050 ldrh.w r2, [r7, #80] @ 0x50 + 8001dcc: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001dce: 691b ldr r3, [r3, #16] + 8001dd0: 429a cmp r2, r3 + 8001dd2: d206 bcs.n 8001de2 + { + /* RX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataOutStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataOutStageCallback(hpcd, ep->num); + 8001dd4: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001dd6: 781b ldrb r3, [r3, #0] + 8001dd8: 4619 mov r1, r3 + 8001dda: 6878 ldr r0, [r7, #4] + 8001ddc: f006 faa8 bl 8008330 + 8001de0: e005 b.n 8001dee +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else + { + (void)USB_EPStartXfer(hpcd->Instance, ep); + 8001de2: 687b ldr r3, [r7, #4] + 8001de4: 681b ldr r3, [r3, #0] + 8001de6: 6d79 ldr r1, [r7, #84] @ 0x54 + 8001de8: 4618 mov r0, r3 + 8001dea: f002 ff09 bl 8004c00 + } + } + + if ((wEPVal & USB_EP_CTR_TX) != 0U) + 8001dee: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 8001df2: f003 0380 and.w r3, r3, #128 @ 0x80 + 8001df6: 2b00 cmp r3, #0 + 8001df8: f000 8123 beq.w 8002042 + { + ep = &hpcd->IN_ep[epindex]; + 8001dfc: f897 204d ldrb.w r2, [r7, #77] @ 0x4d + 8001e00: 4613 mov r3, r2 + 8001e02: 009b lsls r3, r3, #2 + 8001e04: 4413 add r3, r2 + 8001e06: 00db lsls r3, r3, #3 + 8001e08: 3310 adds r3, #16 + 8001e0a: 687a ldr r2, [r7, #4] + 8001e0c: 4413 add r3, r2 + 8001e0e: 657b str r3, [r7, #84] @ 0x54 + + /* clear int flag */ + PCD_CLEAR_TX_EP_CTR(hpcd->Instance, epindex); + 8001e10: 687b ldr r3, [r7, #4] + 8001e12: 681b ldr r3, [r3, #0] + 8001e14: 461a mov r2, r3 + 8001e16: f897 304d ldrb.w r3, [r7, #77] @ 0x4d + 8001e1a: 009b lsls r3, r3, #2 + 8001e1c: 4413 add r3, r2 + 8001e1e: 881b ldrh r3, [r3, #0] + 8001e20: b29b uxth r3, r3 + 8001e22: f423 43e1 bic.w r3, r3, #28800 @ 0x7080 + 8001e26: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8001e2a: f8a7 3042 strh.w r3, [r7, #66] @ 0x42 + 8001e2e: 687b ldr r3, [r7, #4] + 8001e30: 681b ldr r3, [r3, #0] + 8001e32: 461a mov r2, r3 + 8001e34: f897 304d ldrb.w r3, [r7, #77] @ 0x4d + 8001e38: 009b lsls r3, r3, #2 + 8001e3a: 441a add r2, r3 + 8001e3c: f8b7 3042 ldrh.w r3, [r7, #66] @ 0x42 + 8001e40: ea6f 4343 mvn.w r3, r3, lsl #17 + 8001e44: ea6f 4353 mvn.w r3, r3, lsr #17 + 8001e48: b29b uxth r3, r3 + 8001e4a: 8013 strh r3, [r2, #0] + + if (ep->type == EP_TYPE_ISOC) + 8001e4c: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001e4e: 78db ldrb r3, [r3, #3] + 8001e50: 2b01 cmp r3, #1 + 8001e52: f040 80a2 bne.w 8001f9a + { + ep->xfer_len = 0U; + 8001e56: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001e58: 2200 movs r2, #0 + 8001e5a: 619a str r2, [r3, #24] + +#if (USE_USB_DOUBLE_BUFFER == 1U) + if (ep->doublebuffer != 0U) + 8001e5c: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001e5e: 7b1b ldrb r3, [r3, #12] + 8001e60: 2b00 cmp r3, #0 + 8001e62: f000 8093 beq.w 8001f8c + { + if ((wEPVal & USB_EP_DTOG_TX) != 0U) + 8001e66: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 8001e6a: f003 0340 and.w r3, r3, #64 @ 0x40 + 8001e6e: 2b00 cmp r3, #0 + 8001e70: d046 beq.n 8001f00 + { + PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 8001e72: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001e74: 785b ldrb r3, [r3, #1] + 8001e76: 2b00 cmp r3, #0 + 8001e78: d126 bne.n 8001ec8 + 8001e7a: 687b ldr r3, [r7, #4] + 8001e7c: 681b ldr r3, [r3, #0] + 8001e7e: 627b str r3, [r7, #36] @ 0x24 + 8001e80: 687b ldr r3, [r7, #4] + 8001e82: 681b ldr r3, [r3, #0] + 8001e84: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8001e88: b29b uxth r3, r3 + 8001e8a: 461a mov r2, r3 + 8001e8c: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001e8e: 4413 add r3, r2 + 8001e90: 627b str r3, [r7, #36] @ 0x24 + 8001e92: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001e94: 781b ldrb r3, [r3, #0] + 8001e96: 011a lsls r2, r3, #4 + 8001e98: 6a7b ldr r3, [r7, #36] @ 0x24 + 8001e9a: 4413 add r3, r2 + 8001e9c: f203 4304 addw r3, r3, #1028 @ 0x404 + 8001ea0: 623b str r3, [r7, #32] + 8001ea2: 6a3b ldr r3, [r7, #32] + 8001ea4: 881b ldrh r3, [r3, #0] + 8001ea6: b29b uxth r3, r3 + 8001ea8: f3c3 0309 ubfx r3, r3, #0, #10 + 8001eac: b29a uxth r2, r3 + 8001eae: 6a3b ldr r3, [r7, #32] + 8001eb0: 801a strh r2, [r3, #0] + 8001eb2: 6a3b ldr r3, [r7, #32] + 8001eb4: 881b ldrh r3, [r3, #0] + 8001eb6: b29b uxth r3, r3 + 8001eb8: ea6f 4343 mvn.w r3, r3, lsl #17 + 8001ebc: ea6f 4353 mvn.w r3, r3, lsr #17 + 8001ec0: b29a uxth r2, r3 + 8001ec2: 6a3b ldr r3, [r7, #32] + 8001ec4: 801a strh r2, [r3, #0] + 8001ec6: e061 b.n 8001f8c + 8001ec8: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001eca: 785b ldrb r3, [r3, #1] + 8001ecc: 2b01 cmp r3, #1 + 8001ece: d15d bne.n 8001f8c + 8001ed0: 687b ldr r3, [r7, #4] + 8001ed2: 681b ldr r3, [r3, #0] + 8001ed4: 62fb str r3, [r7, #44] @ 0x2c + 8001ed6: 687b ldr r3, [r7, #4] + 8001ed8: 681b ldr r3, [r3, #0] + 8001eda: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8001ede: b29b uxth r3, r3 + 8001ee0: 461a mov r2, r3 + 8001ee2: 6afb ldr r3, [r7, #44] @ 0x2c + 8001ee4: 4413 add r3, r2 + 8001ee6: 62fb str r3, [r7, #44] @ 0x2c + 8001ee8: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001eea: 781b ldrb r3, [r3, #0] + 8001eec: 011a lsls r2, r3, #4 + 8001eee: 6afb ldr r3, [r7, #44] @ 0x2c + 8001ef0: 4413 add r3, r2 + 8001ef2: f203 4304 addw r3, r3, #1028 @ 0x404 + 8001ef6: 62bb str r3, [r7, #40] @ 0x28 + 8001ef8: 6abb ldr r3, [r7, #40] @ 0x28 + 8001efa: 2200 movs r2, #0 + 8001efc: 801a strh r2, [r3, #0] + 8001efe: e045 b.n 8001f8c + } + else + { + PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 8001f00: 687b ldr r3, [r7, #4] + 8001f02: 681b ldr r3, [r3, #0] + 8001f04: 63fb str r3, [r7, #60] @ 0x3c + 8001f06: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001f08: 785b ldrb r3, [r3, #1] + 8001f0a: 2b00 cmp r3, #0 + 8001f0c: d126 bne.n 8001f5c + 8001f0e: 687b ldr r3, [r7, #4] + 8001f10: 681b ldr r3, [r3, #0] + 8001f12: 637b str r3, [r7, #52] @ 0x34 + 8001f14: 687b ldr r3, [r7, #4] + 8001f16: 681b ldr r3, [r3, #0] + 8001f18: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8001f1c: b29b uxth r3, r3 + 8001f1e: 461a mov r2, r3 + 8001f20: 6b7b ldr r3, [r7, #52] @ 0x34 + 8001f22: 4413 add r3, r2 + 8001f24: 637b str r3, [r7, #52] @ 0x34 + 8001f26: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001f28: 781b ldrb r3, [r3, #0] + 8001f2a: 011a lsls r2, r3, #4 + 8001f2c: 6b7b ldr r3, [r7, #52] @ 0x34 + 8001f2e: 4413 add r3, r2 + 8001f30: f203 430c addw r3, r3, #1036 @ 0x40c + 8001f34: 633b str r3, [r7, #48] @ 0x30 + 8001f36: 6b3b ldr r3, [r7, #48] @ 0x30 + 8001f38: 881b ldrh r3, [r3, #0] + 8001f3a: b29b uxth r3, r3 + 8001f3c: f3c3 0309 ubfx r3, r3, #0, #10 + 8001f40: b29a uxth r2, r3 + 8001f42: 6b3b ldr r3, [r7, #48] @ 0x30 + 8001f44: 801a strh r2, [r3, #0] + 8001f46: 6b3b ldr r3, [r7, #48] @ 0x30 + 8001f48: 881b ldrh r3, [r3, #0] + 8001f4a: b29b uxth r3, r3 + 8001f4c: ea6f 4343 mvn.w r3, r3, lsl #17 + 8001f50: ea6f 4353 mvn.w r3, r3, lsr #17 + 8001f54: b29a uxth r2, r3 + 8001f56: 6b3b ldr r3, [r7, #48] @ 0x30 + 8001f58: 801a strh r2, [r3, #0] + 8001f5a: e017 b.n 8001f8c + 8001f5c: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001f5e: 785b ldrb r3, [r3, #1] + 8001f60: 2b01 cmp r3, #1 + 8001f62: d113 bne.n 8001f8c + 8001f64: 687b ldr r3, [r7, #4] + 8001f66: 681b ldr r3, [r3, #0] + 8001f68: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8001f6c: b29b uxth r3, r3 + 8001f6e: 461a mov r2, r3 + 8001f70: 6bfb ldr r3, [r7, #60] @ 0x3c + 8001f72: 4413 add r3, r2 + 8001f74: 63fb str r3, [r7, #60] @ 0x3c + 8001f76: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001f78: 781b ldrb r3, [r3, #0] + 8001f7a: 011a lsls r2, r3, #4 + 8001f7c: 6bfb ldr r3, [r7, #60] @ 0x3c + 8001f7e: 4413 add r3, r2 + 8001f80: f203 430c addw r3, r3, #1036 @ 0x40c + 8001f84: 63bb str r3, [r7, #56] @ 0x38 + 8001f86: 6bbb ldr r3, [r7, #56] @ 0x38 + 8001f88: 2200 movs r2, #0 + 8001f8a: 801a strh r2, [r3, #0] + + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataInStageCallback(hpcd, ep->num); + 8001f8c: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001f8e: 781b ldrb r3, [r3, #0] + 8001f90: 4619 mov r1, r3 + 8001f92: 6878 ldr r0, [r7, #4] + 8001f94: f006 f9e7 bl 8008366 + 8001f98: e053 b.n 8002042 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else + { + /* Manage Single Buffer Transaction */ + if ((wEPVal & USB_EP_KIND) == 0U) + 8001f9a: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 8001f9e: f403 7380 and.w r3, r3, #256 @ 0x100 + 8001fa2: 2b00 cmp r3, #0 + 8001fa4: d146 bne.n 8002034 + { + /* multi-packet on the NON control IN endpoint */ + TxPctSize = (uint16_t)PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num); + 8001fa6: 687b ldr r3, [r7, #4] + 8001fa8: 681b ldr r3, [r3, #0] + 8001faa: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8001fae: b29b uxth r3, r3 + 8001fb0: 461a mov r2, r3 + 8001fb2: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001fb4: 781b ldrb r3, [r3, #0] + 8001fb6: 00db lsls r3, r3, #3 + 8001fb8: 4413 add r3, r2 + 8001fba: 3302 adds r3, #2 + 8001fbc: 005b lsls r3, r3, #1 + 8001fbe: 687a ldr r2, [r7, #4] + 8001fc0: 6812 ldr r2, [r2, #0] + 8001fc2: 4413 add r3, r2 + 8001fc4: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8001fc8: 881b ldrh r3, [r3, #0] + 8001fca: f3c3 0309 ubfx r3, r3, #0, #10 + 8001fce: f8a7 3040 strh.w r3, [r7, #64] @ 0x40 + + if (ep->xfer_len > TxPctSize) + 8001fd2: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001fd4: 699a ldr r2, [r3, #24] + 8001fd6: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 + 8001fda: 429a cmp r2, r3 + 8001fdc: d907 bls.n 8001fee + { + ep->xfer_len -= TxPctSize; + 8001fde: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001fe0: 699a ldr r2, [r3, #24] + 8001fe2: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 + 8001fe6: 1ad2 subs r2, r2, r3 + 8001fe8: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001fea: 619a str r2, [r3, #24] + 8001fec: e002 b.n 8001ff4 + } + else + { + ep->xfer_len = 0U; + 8001fee: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001ff0: 2200 movs r2, #0 + 8001ff2: 619a str r2, [r3, #24] + } + + /* Zero Length Packet? */ + if (ep->xfer_len == 0U) + 8001ff4: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001ff6: 699b ldr r3, [r3, #24] + 8001ff8: 2b00 cmp r3, #0 + 8001ffa: d106 bne.n 800200a + { + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataInStageCallback(hpcd, ep->num); + 8001ffc: 6d7b ldr r3, [r7, #84] @ 0x54 + 8001ffe: 781b ldrb r3, [r3, #0] + 8002000: 4619 mov r1, r3 + 8002002: 6878 ldr r0, [r7, #4] + 8002004: f006 f9af bl 8008366 + 8002008: e01b b.n 8002042 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else + { + /* Transfer is not yet Done */ + ep->xfer_buff += TxPctSize; + 800200a: 6d7b ldr r3, [r7, #84] @ 0x54 + 800200c: 695a ldr r2, [r3, #20] + 800200e: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 + 8002012: 441a add r2, r3 + 8002014: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002016: 615a str r2, [r3, #20] + ep->xfer_count += TxPctSize; + 8002018: 6d7b ldr r3, [r7, #84] @ 0x54 + 800201a: 69da ldr r2, [r3, #28] + 800201c: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 + 8002020: 441a add r2, r3 + 8002022: 6d7b ldr r3, [r7, #84] @ 0x54 + 8002024: 61da str r2, [r3, #28] + (void)USB_EPStartXfer(hpcd->Instance, ep); + 8002026: 687b ldr r3, [r7, #4] + 8002028: 681b ldr r3, [r3, #0] + 800202a: 6d79 ldr r1, [r7, #84] @ 0x54 + 800202c: 4618 mov r0, r3 + 800202e: f002 fde7 bl 8004c00 + 8002032: e006 b.n 8002042 + } +#if (USE_USB_DOUBLE_BUFFER == 1U) + /* Double Buffer bulk IN (bulk transfer Len > Ep_Mps) */ + else + { + (void)HAL_PCD_EP_DB_Transmit(hpcd, ep, wEPVal); + 8002034: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 8002038: 461a mov r2, r3 + 800203a: 6d79 ldr r1, [r7, #84] @ 0x54 + 800203c: 6878 ldr r0, [r7, #4] + 800203e: f000 f91b bl 8002278 + while ((hpcd->Instance->ISTR & USB_ISTR_CTR) != 0U) + 8002042: 687b ldr r3, [r7, #4] + 8002044: 681b ldr r3, [r3, #0] + 8002046: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 800204a: b29b uxth r3, r3 + 800204c: b21b sxth r3, r3 + 800204e: 2b00 cmp r3, #0 + 8002050: f6ff ac3b blt.w 80018ca + } + } + } + } + + return HAL_OK; + 8002054: 2300 movs r3, #0 +} + 8002056: 4618 mov r0, r3 + 8002058: 3758 adds r7, #88 @ 0x58 + 800205a: 46bd mov sp, r7 + 800205c: bd80 pop {r7, pc} + +0800205e : + * @param wEPVal Last snapshot of EPRx register value taken in ISR + * @retval HAL status + */ +static uint16_t HAL_PCD_EP_DB_Receive(PCD_HandleTypeDef *hpcd, + PCD_EPTypeDef *ep, uint16_t wEPVal) +{ + 800205e: b580 push {r7, lr} + 8002060: b088 sub sp, #32 + 8002062: af00 add r7, sp, #0 + 8002064: 60f8 str r0, [r7, #12] + 8002066: 60b9 str r1, [r7, #8] + 8002068: 4613 mov r3, r2 + 800206a: 80fb strh r3, [r7, #6] + uint16_t count; + + /* Manage Buffer0 OUT */ + if ((wEPVal & USB_EP_DTOG_RX) != 0U) + 800206c: 88fb ldrh r3, [r7, #6] + 800206e: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8002072: 2b00 cmp r3, #0 + 8002074: d07e beq.n 8002174 + { + /* Get count of received Data on buffer0 */ + count = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); + 8002076: 68fb ldr r3, [r7, #12] + 8002078: 681b ldr r3, [r3, #0] + 800207a: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800207e: b29b uxth r3, r3 + 8002080: 461a mov r2, r3 + 8002082: 68bb ldr r3, [r7, #8] + 8002084: 781b ldrb r3, [r3, #0] + 8002086: 00db lsls r3, r3, #3 + 8002088: 4413 add r3, r2 + 800208a: 3302 adds r3, #2 + 800208c: 005b lsls r3, r3, #1 + 800208e: 68fa ldr r2, [r7, #12] + 8002090: 6812 ldr r2, [r2, #0] + 8002092: 4413 add r3, r2 + 8002094: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8002098: 881b ldrh r3, [r3, #0] + 800209a: f3c3 0309 ubfx r3, r3, #0, #10 + 800209e: 837b strh r3, [r7, #26] + + if (ep->xfer_len >= count) + 80020a0: 68bb ldr r3, [r7, #8] + 80020a2: 699a ldr r2, [r3, #24] + 80020a4: 8b7b ldrh r3, [r7, #26] + 80020a6: 429a cmp r2, r3 + 80020a8: d306 bcc.n 80020b8 + { + ep->xfer_len -= count; + 80020aa: 68bb ldr r3, [r7, #8] + 80020ac: 699a ldr r2, [r3, #24] + 80020ae: 8b7b ldrh r3, [r7, #26] + 80020b0: 1ad2 subs r2, r2, r3 + 80020b2: 68bb ldr r3, [r7, #8] + 80020b4: 619a str r2, [r3, #24] + 80020b6: e002 b.n 80020be + } + else + { + ep->xfer_len = 0U; + 80020b8: 68bb ldr r3, [r7, #8] + 80020ba: 2200 movs r2, #0 + 80020bc: 619a str r2, [r3, #24] + } + + if (ep->xfer_len == 0U) + 80020be: 68bb ldr r3, [r7, #8] + 80020c0: 699b ldr r3, [r3, #24] + 80020c2: 2b00 cmp r3, #0 + 80020c4: d123 bne.n 800210e + { + /* set NAK to OUT endpoint since double buffer is enabled */ + PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); + 80020c6: 68fb ldr r3, [r7, #12] + 80020c8: 681b ldr r3, [r3, #0] + 80020ca: 461a mov r2, r3 + 80020cc: 68bb ldr r3, [r7, #8] + 80020ce: 781b ldrb r3, [r3, #0] + 80020d0: 009b lsls r3, r3, #2 + 80020d2: 4413 add r3, r2 + 80020d4: 881b ldrh r3, [r3, #0] + 80020d6: b29b uxth r3, r3 + 80020d8: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 80020dc: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80020e0: 833b strh r3, [r7, #24] + 80020e2: 8b3b ldrh r3, [r7, #24] + 80020e4: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 80020e8: 833b strh r3, [r7, #24] + 80020ea: 68fb ldr r3, [r7, #12] + 80020ec: 681b ldr r3, [r3, #0] + 80020ee: 461a mov r2, r3 + 80020f0: 68bb ldr r3, [r7, #8] + 80020f2: 781b ldrb r3, [r3, #0] + 80020f4: 009b lsls r3, r3, #2 + 80020f6: 441a add r2, r3 + 80020f8: 8b3b ldrh r3, [r7, #24] + 80020fa: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80020fe: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8002102: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8002106: f043 0380 orr.w r3, r3, #128 @ 0x80 + 800210a: b29b uxth r3, r3 + 800210c: 8013 strh r3, [r2, #0] + } + + /* Check if Buffer1 is in blocked state which requires to toggle */ + if ((wEPVal & USB_EP_DTOG_TX) != 0U) + 800210e: 88fb ldrh r3, [r7, #6] + 8002110: f003 0340 and.w r3, r3, #64 @ 0x40 + 8002114: 2b00 cmp r3, #0 + 8002116: d01f beq.n 8002158 + { + PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); + 8002118: 68fb ldr r3, [r7, #12] + 800211a: 681b ldr r3, [r3, #0] + 800211c: 461a mov r2, r3 + 800211e: 68bb ldr r3, [r7, #8] + 8002120: 781b ldrb r3, [r3, #0] + 8002122: 009b lsls r3, r3, #2 + 8002124: 4413 add r3, r2 + 8002126: 881b ldrh r3, [r3, #0] + 8002128: b29b uxth r3, r3 + 800212a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800212e: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002132: 82fb strh r3, [r7, #22] + 8002134: 68fb ldr r3, [r7, #12] + 8002136: 681b ldr r3, [r3, #0] + 8002138: 461a mov r2, r3 + 800213a: 68bb ldr r3, [r7, #8] + 800213c: 781b ldrb r3, [r3, #0] + 800213e: 009b lsls r3, r3, #2 + 8002140: 441a add r2, r3 + 8002142: 8afb ldrh r3, [r7, #22] + 8002144: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8002148: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800214c: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8002150: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 8002154: b29b uxth r3, r3 + 8002156: 8013 strh r3, [r2, #0] + } + + if (count != 0U) + 8002158: 8b7b ldrh r3, [r7, #26] + 800215a: 2b00 cmp r3, #0 + 800215c: f000 8087 beq.w 800226e + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, count); + 8002160: 68fb ldr r3, [r7, #12] + 8002162: 6818 ldr r0, [r3, #0] + 8002164: 68bb ldr r3, [r7, #8] + 8002166: 6959 ldr r1, [r3, #20] + 8002168: 68bb ldr r3, [r7, #8] + 800216a: 891a ldrh r2, [r3, #8] + 800216c: 8b7b ldrh r3, [r7, #26] + 800216e: f004 fa7c bl 800666a + 8002172: e07c b.n 800226e + } + /* Manage Buffer 1 DTOG_RX=0 */ + else + { + /* Get count of received data */ + count = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); + 8002174: 68fb ldr r3, [r7, #12] + 8002176: 681b ldr r3, [r3, #0] + 8002178: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800217c: b29b uxth r3, r3 + 800217e: 461a mov r2, r3 + 8002180: 68bb ldr r3, [r7, #8] + 8002182: 781b ldrb r3, [r3, #0] + 8002184: 00db lsls r3, r3, #3 + 8002186: 4413 add r3, r2 + 8002188: 3306 adds r3, #6 + 800218a: 005b lsls r3, r3, #1 + 800218c: 68fa ldr r2, [r7, #12] + 800218e: 6812 ldr r2, [r2, #0] + 8002190: 4413 add r3, r2 + 8002192: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8002196: 881b ldrh r3, [r3, #0] + 8002198: f3c3 0309 ubfx r3, r3, #0, #10 + 800219c: 837b strh r3, [r7, #26] + + if (ep->xfer_len >= count) + 800219e: 68bb ldr r3, [r7, #8] + 80021a0: 699a ldr r2, [r3, #24] + 80021a2: 8b7b ldrh r3, [r7, #26] + 80021a4: 429a cmp r2, r3 + 80021a6: d306 bcc.n 80021b6 + { + ep->xfer_len -= count; + 80021a8: 68bb ldr r3, [r7, #8] + 80021aa: 699a ldr r2, [r3, #24] + 80021ac: 8b7b ldrh r3, [r7, #26] + 80021ae: 1ad2 subs r2, r2, r3 + 80021b0: 68bb ldr r3, [r7, #8] + 80021b2: 619a str r2, [r3, #24] + 80021b4: e002 b.n 80021bc + } + else + { + ep->xfer_len = 0U; + 80021b6: 68bb ldr r3, [r7, #8] + 80021b8: 2200 movs r2, #0 + 80021ba: 619a str r2, [r3, #24] + } + + if (ep->xfer_len == 0U) + 80021bc: 68bb ldr r3, [r7, #8] + 80021be: 699b ldr r3, [r3, #24] + 80021c0: 2b00 cmp r3, #0 + 80021c2: d123 bne.n 800220c + { + /* set NAK on the current endpoint */ + PCD_SET_EP_RX_STATUS(hpcd->Instance, ep->num, USB_EP_RX_NAK); + 80021c4: 68fb ldr r3, [r7, #12] + 80021c6: 681b ldr r3, [r3, #0] + 80021c8: 461a mov r2, r3 + 80021ca: 68bb ldr r3, [r7, #8] + 80021cc: 781b ldrb r3, [r3, #0] + 80021ce: 009b lsls r3, r3, #2 + 80021d0: 4413 add r3, r2 + 80021d2: 881b ldrh r3, [r3, #0] + 80021d4: b29b uxth r3, r3 + 80021d6: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 80021da: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80021de: 83fb strh r3, [r7, #30] + 80021e0: 8bfb ldrh r3, [r7, #30] + 80021e2: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 80021e6: 83fb strh r3, [r7, #30] + 80021e8: 68fb ldr r3, [r7, #12] + 80021ea: 681b ldr r3, [r3, #0] + 80021ec: 461a mov r2, r3 + 80021ee: 68bb ldr r3, [r7, #8] + 80021f0: 781b ldrb r3, [r3, #0] + 80021f2: 009b lsls r3, r3, #2 + 80021f4: 441a add r2, r3 + 80021f6: 8bfb ldrh r3, [r7, #30] + 80021f8: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80021fc: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8002200: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8002204: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8002208: b29b uxth r3, r3 + 800220a: 8013 strh r3, [r2, #0] + } + + /*Need to FreeUser Buffer*/ + if ((wEPVal & USB_EP_DTOG_TX) == 0U) + 800220c: 88fb ldrh r3, [r7, #6] + 800220e: f003 0340 and.w r3, r3, #64 @ 0x40 + 8002212: 2b00 cmp r3, #0 + 8002214: d11f bne.n 8002256 + { + PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 0U); + 8002216: 68fb ldr r3, [r7, #12] + 8002218: 681b ldr r3, [r3, #0] + 800221a: 461a mov r2, r3 + 800221c: 68bb ldr r3, [r7, #8] + 800221e: 781b ldrb r3, [r3, #0] + 8002220: 009b lsls r3, r3, #2 + 8002222: 4413 add r3, r2 + 8002224: 881b ldrh r3, [r3, #0] + 8002226: b29b uxth r3, r3 + 8002228: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800222c: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002230: 83bb strh r3, [r7, #28] + 8002232: 68fb ldr r3, [r7, #12] + 8002234: 681b ldr r3, [r3, #0] + 8002236: 461a mov r2, r3 + 8002238: 68bb ldr r3, [r7, #8] + 800223a: 781b ldrb r3, [r3, #0] + 800223c: 009b lsls r3, r3, #2 + 800223e: 441a add r2, r3 + 8002240: 8bbb ldrh r3, [r7, #28] + 8002242: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8002246: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800224a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800224e: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 8002252: b29b uxth r3, r3 + 8002254: 8013 strh r3, [r2, #0] + } + + if (count != 0U) + 8002256: 8b7b ldrh r3, [r7, #26] + 8002258: 2b00 cmp r3, #0 + 800225a: d008 beq.n 800226e + { + USB_ReadPMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, count); + 800225c: 68fb ldr r3, [r7, #12] + 800225e: 6818 ldr r0, [r3, #0] + 8002260: 68bb ldr r3, [r7, #8] + 8002262: 6959 ldr r1, [r3, #20] + 8002264: 68bb ldr r3, [r7, #8] + 8002266: 895a ldrh r2, [r3, #10] + 8002268: 8b7b ldrh r3, [r7, #26] + 800226a: f004 f9fe bl 800666a + } + } + + return count; + 800226e: 8b7b ldrh r3, [r7, #26] +} + 8002270: 4618 mov r0, r3 + 8002272: 3720 adds r7, #32 + 8002274: 46bd mov sp, r7 + 8002276: bd80 pop {r7, pc} + +08002278 : + * @param wEPVal Last snapshot of EPRx register value taken in ISR + * @retval HAL status + */ +static HAL_StatusTypeDef HAL_PCD_EP_DB_Transmit(PCD_HandleTypeDef *hpcd, + PCD_EPTypeDef *ep, uint16_t wEPVal) +{ + 8002278: b580 push {r7, lr} + 800227a: b0a4 sub sp, #144 @ 0x90 + 800227c: af00 add r7, sp, #0 + 800227e: 60f8 str r0, [r7, #12] + 8002280: 60b9 str r1, [r7, #8] + 8002282: 4613 mov r3, r2 + 8002284: 80fb strh r3, [r7, #6] + uint32_t len; + uint16_t TxPctSize; + + /* Data Buffer0 ACK received */ + if ((wEPVal & USB_EP_DTOG_TX) != 0U) + 8002286: 88fb ldrh r3, [r7, #6] + 8002288: f003 0340 and.w r3, r3, #64 @ 0x40 + 800228c: 2b00 cmp r3, #0 + 800228e: f000 81dd beq.w 800264c + { + /* multi-packet on the NON control IN endpoint */ + TxPctSize = (uint16_t)PCD_GET_EP_DBUF0_CNT(hpcd->Instance, ep->num); + 8002292: 68fb ldr r3, [r7, #12] + 8002294: 681b ldr r3, [r3, #0] + 8002296: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800229a: b29b uxth r3, r3 + 800229c: 461a mov r2, r3 + 800229e: 68bb ldr r3, [r7, #8] + 80022a0: 781b ldrb r3, [r3, #0] + 80022a2: 00db lsls r3, r3, #3 + 80022a4: 4413 add r3, r2 + 80022a6: 3302 adds r3, #2 + 80022a8: 005b lsls r3, r3, #1 + 80022aa: 68fa ldr r2, [r7, #12] + 80022ac: 6812 ldr r2, [r2, #0] + 80022ae: 4413 add r3, r2 + 80022b0: f503 6380 add.w r3, r3, #1024 @ 0x400 + 80022b4: 881b ldrh r3, [r3, #0] + 80022b6: f3c3 0309 ubfx r3, r3, #0, #10 + 80022ba: f8a7 3086 strh.w r3, [r7, #134] @ 0x86 + + if (ep->xfer_len > TxPctSize) + 80022be: 68bb ldr r3, [r7, #8] + 80022c0: 699a ldr r2, [r3, #24] + 80022c2: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 80022c6: 429a cmp r2, r3 + 80022c8: d907 bls.n 80022da + { + ep->xfer_len -= TxPctSize; + 80022ca: 68bb ldr r3, [r7, #8] + 80022cc: 699a ldr r2, [r3, #24] + 80022ce: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 80022d2: 1ad2 subs r2, r2, r3 + 80022d4: 68bb ldr r3, [r7, #8] + 80022d6: 619a str r2, [r3, #24] + 80022d8: e002 b.n 80022e0 + } + else + { + ep->xfer_len = 0U; + 80022da: 68bb ldr r3, [r7, #8] + 80022dc: 2200 movs r2, #0 + 80022de: 619a str r2, [r3, #24] + } + + /* Transfer is completed */ + if (ep->xfer_len == 0U) + 80022e0: 68bb ldr r3, [r7, #8] + 80022e2: 699b ldr r3, [r3, #24] + 80022e4: 2b00 cmp r3, #0 + 80022e6: f040 80b9 bne.w 800245c + { + PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 80022ea: 68bb ldr r3, [r7, #8] + 80022ec: 785b ldrb r3, [r3, #1] + 80022ee: 2b00 cmp r3, #0 + 80022f0: d126 bne.n 8002340 + 80022f2: 68fb ldr r3, [r7, #12] + 80022f4: 681b ldr r3, [r3, #0] + 80022f6: 62fb str r3, [r7, #44] @ 0x2c + 80022f8: 68fb ldr r3, [r7, #12] + 80022fa: 681b ldr r3, [r3, #0] + 80022fc: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002300: b29b uxth r3, r3 + 8002302: 461a mov r2, r3 + 8002304: 6afb ldr r3, [r7, #44] @ 0x2c + 8002306: 4413 add r3, r2 + 8002308: 62fb str r3, [r7, #44] @ 0x2c + 800230a: 68bb ldr r3, [r7, #8] + 800230c: 781b ldrb r3, [r3, #0] + 800230e: 011a lsls r2, r3, #4 + 8002310: 6afb ldr r3, [r7, #44] @ 0x2c + 8002312: 4413 add r3, r2 + 8002314: f203 4304 addw r3, r3, #1028 @ 0x404 + 8002318: 62bb str r3, [r7, #40] @ 0x28 + 800231a: 6abb ldr r3, [r7, #40] @ 0x28 + 800231c: 881b ldrh r3, [r3, #0] + 800231e: b29b uxth r3, r3 + 8002320: f3c3 0309 ubfx r3, r3, #0, #10 + 8002324: b29a uxth r2, r3 + 8002326: 6abb ldr r3, [r7, #40] @ 0x28 + 8002328: 801a strh r2, [r3, #0] + 800232a: 6abb ldr r3, [r7, #40] @ 0x28 + 800232c: 881b ldrh r3, [r3, #0] + 800232e: b29b uxth r3, r3 + 8002330: ea6f 4343 mvn.w r3, r3, lsl #17 + 8002334: ea6f 4353 mvn.w r3, r3, lsr #17 + 8002338: b29a uxth r2, r3 + 800233a: 6abb ldr r3, [r7, #40] @ 0x28 + 800233c: 801a strh r2, [r3, #0] + 800233e: e01a b.n 8002376 + 8002340: 68bb ldr r3, [r7, #8] + 8002342: 785b ldrb r3, [r3, #1] + 8002344: 2b01 cmp r3, #1 + 8002346: d116 bne.n 8002376 + 8002348: 68fb ldr r3, [r7, #12] + 800234a: 681b ldr r3, [r3, #0] + 800234c: 637b str r3, [r7, #52] @ 0x34 + 800234e: 68fb ldr r3, [r7, #12] + 8002350: 681b ldr r3, [r3, #0] + 8002352: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002356: b29b uxth r3, r3 + 8002358: 461a mov r2, r3 + 800235a: 6b7b ldr r3, [r7, #52] @ 0x34 + 800235c: 4413 add r3, r2 + 800235e: 637b str r3, [r7, #52] @ 0x34 + 8002360: 68bb ldr r3, [r7, #8] + 8002362: 781b ldrb r3, [r3, #0] + 8002364: 011a lsls r2, r3, #4 + 8002366: 6b7b ldr r3, [r7, #52] @ 0x34 + 8002368: 4413 add r3, r2 + 800236a: f203 4304 addw r3, r3, #1028 @ 0x404 + 800236e: 633b str r3, [r7, #48] @ 0x30 + 8002370: 6b3b ldr r3, [r7, #48] @ 0x30 + 8002372: 2200 movs r2, #0 + 8002374: 801a strh r2, [r3, #0] + PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 8002376: 68fb ldr r3, [r7, #12] + 8002378: 681b ldr r3, [r3, #0] + 800237a: 627b str r3, [r7, #36] @ 0x24 + 800237c: 68bb ldr r3, [r7, #8] + 800237e: 785b ldrb r3, [r3, #1] + 8002380: 2b00 cmp r3, #0 + 8002382: d126 bne.n 80023d2 + 8002384: 68fb ldr r3, [r7, #12] + 8002386: 681b ldr r3, [r3, #0] + 8002388: 61fb str r3, [r7, #28] + 800238a: 68fb ldr r3, [r7, #12] + 800238c: 681b ldr r3, [r3, #0] + 800238e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002392: b29b uxth r3, r3 + 8002394: 461a mov r2, r3 + 8002396: 69fb ldr r3, [r7, #28] + 8002398: 4413 add r3, r2 + 800239a: 61fb str r3, [r7, #28] + 800239c: 68bb ldr r3, [r7, #8] + 800239e: 781b ldrb r3, [r3, #0] + 80023a0: 011a lsls r2, r3, #4 + 80023a2: 69fb ldr r3, [r7, #28] + 80023a4: 4413 add r3, r2 + 80023a6: f203 430c addw r3, r3, #1036 @ 0x40c + 80023aa: 61bb str r3, [r7, #24] + 80023ac: 69bb ldr r3, [r7, #24] + 80023ae: 881b ldrh r3, [r3, #0] + 80023b0: b29b uxth r3, r3 + 80023b2: f3c3 0309 ubfx r3, r3, #0, #10 + 80023b6: b29a uxth r2, r3 + 80023b8: 69bb ldr r3, [r7, #24] + 80023ba: 801a strh r2, [r3, #0] + 80023bc: 69bb ldr r3, [r7, #24] + 80023be: 881b ldrh r3, [r3, #0] + 80023c0: b29b uxth r3, r3 + 80023c2: ea6f 4343 mvn.w r3, r3, lsl #17 + 80023c6: ea6f 4353 mvn.w r3, r3, lsr #17 + 80023ca: b29a uxth r2, r3 + 80023cc: 69bb ldr r3, [r7, #24] + 80023ce: 801a strh r2, [r3, #0] + 80023d0: e017 b.n 8002402 + 80023d2: 68bb ldr r3, [r7, #8] + 80023d4: 785b ldrb r3, [r3, #1] + 80023d6: 2b01 cmp r3, #1 + 80023d8: d113 bne.n 8002402 + 80023da: 68fb ldr r3, [r7, #12] + 80023dc: 681b ldr r3, [r3, #0] + 80023de: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80023e2: b29b uxth r3, r3 + 80023e4: 461a mov r2, r3 + 80023e6: 6a7b ldr r3, [r7, #36] @ 0x24 + 80023e8: 4413 add r3, r2 + 80023ea: 627b str r3, [r7, #36] @ 0x24 + 80023ec: 68bb ldr r3, [r7, #8] + 80023ee: 781b ldrb r3, [r3, #0] + 80023f0: 011a lsls r2, r3, #4 + 80023f2: 6a7b ldr r3, [r7, #36] @ 0x24 + 80023f4: 4413 add r3, r2 + 80023f6: f203 430c addw r3, r3, #1036 @ 0x40c + 80023fa: 623b str r3, [r7, #32] + 80023fc: 6a3b ldr r3, [r7, #32] + 80023fe: 2200 movs r2, #0 + 8002400: 801a strh r2, [r3, #0] + + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataInStageCallback(hpcd, ep->num); + 8002402: 68bb ldr r3, [r7, #8] + 8002404: 781b ldrb r3, [r3, #0] + 8002406: 4619 mov r1, r3 + 8002408: 68f8 ldr r0, [r7, #12] + 800240a: f005 ffac bl 8008366 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + if ((wEPVal & USB_EP_DTOG_RX) != 0U) + 800240e: 88fb ldrh r3, [r7, #6] + 8002410: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8002414: 2b00 cmp r3, #0 + 8002416: f000 82fc beq.w 8002a12 + { + PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); + 800241a: 68fb ldr r3, [r7, #12] + 800241c: 681b ldr r3, [r3, #0] + 800241e: 461a mov r2, r3 + 8002420: 68bb ldr r3, [r7, #8] + 8002422: 781b ldrb r3, [r3, #0] + 8002424: 009b lsls r3, r3, #2 + 8002426: 4413 add r3, r2 + 8002428: 881b ldrh r3, [r3, #0] + 800242a: b29b uxth r3, r3 + 800242c: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002430: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002434: 82fb strh r3, [r7, #22] + 8002436: 68fb ldr r3, [r7, #12] + 8002438: 681b ldr r3, [r3, #0] + 800243a: 461a mov r2, r3 + 800243c: 68bb ldr r3, [r7, #8] + 800243e: 781b ldrb r3, [r3, #0] + 8002440: 009b lsls r3, r3, #2 + 8002442: 441a add r2, r3 + 8002444: 8afb ldrh r3, [r7, #22] + 8002446: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800244a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800244e: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8002452: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8002456: b29b uxth r3, r3 + 8002458: 8013 strh r3, [r2, #0] + 800245a: e2da b.n 8002a12 + } + } + else /* Transfer is not yet Done */ + { + /* need to Free USB Buff */ + if ((wEPVal & USB_EP_DTOG_RX) != 0U) + 800245c: 88fb ldrh r3, [r7, #6] + 800245e: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8002462: 2b00 cmp r3, #0 + 8002464: d021 beq.n 80024aa + { + PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); + 8002466: 68fb ldr r3, [r7, #12] + 8002468: 681b ldr r3, [r3, #0] + 800246a: 461a mov r2, r3 + 800246c: 68bb ldr r3, [r7, #8] + 800246e: 781b ldrb r3, [r3, #0] + 8002470: 009b lsls r3, r3, #2 + 8002472: 4413 add r3, r2 + 8002474: 881b ldrh r3, [r3, #0] + 8002476: b29b uxth r3, r3 + 8002478: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800247c: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002480: f8a7 308a strh.w r3, [r7, #138] @ 0x8a + 8002484: 68fb ldr r3, [r7, #12] + 8002486: 681b ldr r3, [r3, #0] + 8002488: 461a mov r2, r3 + 800248a: 68bb ldr r3, [r7, #8] + 800248c: 781b ldrb r3, [r3, #0] + 800248e: 009b lsls r3, r3, #2 + 8002490: 441a add r2, r3 + 8002492: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a + 8002496: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800249a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800249e: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 80024a2: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80024a6: b29b uxth r3, r3 + 80024a8: 8013 strh r3, [r2, #0] + } + + /* Still there is data to Fill in the next Buffer */ + if (ep->xfer_fill_db == 1U) + 80024aa: 68bb ldr r3, [r7, #8] + 80024ac: f893 3024 ldrb.w r3, [r3, #36] @ 0x24 + 80024b0: 2b01 cmp r3, #1 + 80024b2: f040 82ae bne.w 8002a12 + { + ep->xfer_buff += TxPctSize; + 80024b6: 68bb ldr r3, [r7, #8] + 80024b8: 695a ldr r2, [r3, #20] + 80024ba: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 80024be: 441a add r2, r3 + 80024c0: 68bb ldr r3, [r7, #8] + 80024c2: 615a str r2, [r3, #20] + ep->xfer_count += TxPctSize; + 80024c4: 68bb ldr r3, [r7, #8] + 80024c6: 69da ldr r2, [r3, #28] + 80024c8: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 80024cc: 441a add r2, r3 + 80024ce: 68bb ldr r3, [r7, #8] + 80024d0: 61da str r2, [r3, #28] + + /* Calculate the len of the new buffer to fill */ + if (ep->xfer_len_db >= ep->maxpacket) + 80024d2: 68bb ldr r3, [r7, #8] + 80024d4: 6a1a ldr r2, [r3, #32] + 80024d6: 68bb ldr r3, [r7, #8] + 80024d8: 691b ldr r3, [r3, #16] + 80024da: 429a cmp r2, r3 + 80024dc: d30b bcc.n 80024f6 + { + len = ep->maxpacket; + 80024de: 68bb ldr r3, [r7, #8] + 80024e0: 691b ldr r3, [r3, #16] + 80024e2: f8c7 308c str.w r3, [r7, #140] @ 0x8c + ep->xfer_len_db -= len; + 80024e6: 68bb ldr r3, [r7, #8] + 80024e8: 6a1a ldr r2, [r3, #32] + 80024ea: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 80024ee: 1ad2 subs r2, r2, r3 + 80024f0: 68bb ldr r3, [r7, #8] + 80024f2: 621a str r2, [r3, #32] + 80024f4: e017 b.n 8002526 + } + else if (ep->xfer_len_db == 0U) + 80024f6: 68bb ldr r3, [r7, #8] + 80024f8: 6a1b ldr r3, [r3, #32] + 80024fa: 2b00 cmp r3, #0 + 80024fc: d108 bne.n 8002510 + { + len = TxPctSize; + 80024fe: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 8002502: f8c7 308c str.w r3, [r7, #140] @ 0x8c + ep->xfer_fill_db = 0U; + 8002506: 68bb ldr r3, [r7, #8] + 8002508: 2200 movs r2, #0 + 800250a: f883 2024 strb.w r2, [r3, #36] @ 0x24 + 800250e: e00a b.n 8002526 + } + else + { + ep->xfer_fill_db = 0U; + 8002510: 68bb ldr r3, [r7, #8] + 8002512: 2200 movs r2, #0 + 8002514: f883 2024 strb.w r2, [r3, #36] @ 0x24 + len = ep->xfer_len_db; + 8002518: 68bb ldr r3, [r7, #8] + 800251a: 6a1b ldr r3, [r3, #32] + 800251c: f8c7 308c str.w r3, [r7, #140] @ 0x8c + ep->xfer_len_db = 0U; + 8002520: 68bb ldr r3, [r7, #8] + 8002522: 2200 movs r2, #0 + 8002524: 621a str r2, [r3, #32] + } + + /* Write remaining Data to Buffer */ + /* Set the Double buffer counter for pma buffer1 */ + PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, len); + 8002526: 68bb ldr r3, [r7, #8] + 8002528: 785b ldrb r3, [r3, #1] + 800252a: 2b00 cmp r3, #0 + 800252c: d165 bne.n 80025fa + 800252e: 68fb ldr r3, [r7, #12] + 8002530: 681b ldr r3, [r3, #0] + 8002532: 63fb str r3, [r7, #60] @ 0x3c + 8002534: 68fb ldr r3, [r7, #12] + 8002536: 681b ldr r3, [r3, #0] + 8002538: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800253c: b29b uxth r3, r3 + 800253e: 461a mov r2, r3 + 8002540: 6bfb ldr r3, [r7, #60] @ 0x3c + 8002542: 4413 add r3, r2 + 8002544: 63fb str r3, [r7, #60] @ 0x3c + 8002546: 68bb ldr r3, [r7, #8] + 8002548: 781b ldrb r3, [r3, #0] + 800254a: 011a lsls r2, r3, #4 + 800254c: 6bfb ldr r3, [r7, #60] @ 0x3c + 800254e: 4413 add r3, r2 + 8002550: f203 4304 addw r3, r3, #1028 @ 0x404 + 8002554: 63bb str r3, [r7, #56] @ 0x38 + 8002556: 6bbb ldr r3, [r7, #56] @ 0x38 + 8002558: 881b ldrh r3, [r3, #0] + 800255a: b29b uxth r3, r3 + 800255c: f3c3 0309 ubfx r3, r3, #0, #10 + 8002560: b29a uxth r2, r3 + 8002562: 6bbb ldr r3, [r7, #56] @ 0x38 + 8002564: 801a strh r2, [r3, #0] + 8002566: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 800256a: 2b3e cmp r3, #62 @ 0x3e + 800256c: d91d bls.n 80025aa + 800256e: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8002572: 095b lsrs r3, r3, #5 + 8002574: 64bb str r3, [r7, #72] @ 0x48 + 8002576: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 800257a: f003 031f and.w r3, r3, #31 + 800257e: 2b00 cmp r3, #0 + 8002580: d102 bne.n 8002588 + 8002582: 6cbb ldr r3, [r7, #72] @ 0x48 + 8002584: 3b01 subs r3, #1 + 8002586: 64bb str r3, [r7, #72] @ 0x48 + 8002588: 6bbb ldr r3, [r7, #56] @ 0x38 + 800258a: 881b ldrh r3, [r3, #0] + 800258c: b29a uxth r2, r3 + 800258e: 6cbb ldr r3, [r7, #72] @ 0x48 + 8002590: b29b uxth r3, r3 + 8002592: 029b lsls r3, r3, #10 + 8002594: b29b uxth r3, r3 + 8002596: 4313 orrs r3, r2 + 8002598: b29b uxth r3, r3 + 800259a: ea6f 4343 mvn.w r3, r3, lsl #17 + 800259e: ea6f 4353 mvn.w r3, r3, lsr #17 + 80025a2: b29a uxth r2, r3 + 80025a4: 6bbb ldr r3, [r7, #56] @ 0x38 + 80025a6: 801a strh r2, [r3, #0] + 80025a8: e044 b.n 8002634 + 80025aa: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 80025ae: 2b00 cmp r3, #0 + 80025b0: d10a bne.n 80025c8 + 80025b2: 6bbb ldr r3, [r7, #56] @ 0x38 + 80025b4: 881b ldrh r3, [r3, #0] + 80025b6: b29b uxth r3, r3 + 80025b8: ea6f 4343 mvn.w r3, r3, lsl #17 + 80025bc: ea6f 4353 mvn.w r3, r3, lsr #17 + 80025c0: b29a uxth r2, r3 + 80025c2: 6bbb ldr r3, [r7, #56] @ 0x38 + 80025c4: 801a strh r2, [r3, #0] + 80025c6: e035 b.n 8002634 + 80025c8: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 80025cc: 085b lsrs r3, r3, #1 + 80025ce: 64bb str r3, [r7, #72] @ 0x48 + 80025d0: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 80025d4: f003 0301 and.w r3, r3, #1 + 80025d8: 2b00 cmp r3, #0 + 80025da: d002 beq.n 80025e2 + 80025dc: 6cbb ldr r3, [r7, #72] @ 0x48 + 80025de: 3301 adds r3, #1 + 80025e0: 64bb str r3, [r7, #72] @ 0x48 + 80025e2: 6bbb ldr r3, [r7, #56] @ 0x38 + 80025e4: 881b ldrh r3, [r3, #0] + 80025e6: b29a uxth r2, r3 + 80025e8: 6cbb ldr r3, [r7, #72] @ 0x48 + 80025ea: b29b uxth r3, r3 + 80025ec: 029b lsls r3, r3, #10 + 80025ee: b29b uxth r3, r3 + 80025f0: 4313 orrs r3, r2 + 80025f2: b29a uxth r2, r3 + 80025f4: 6bbb ldr r3, [r7, #56] @ 0x38 + 80025f6: 801a strh r2, [r3, #0] + 80025f8: e01c b.n 8002634 + 80025fa: 68bb ldr r3, [r7, #8] + 80025fc: 785b ldrb r3, [r3, #1] + 80025fe: 2b01 cmp r3, #1 + 8002600: d118 bne.n 8002634 + 8002602: 68fb ldr r3, [r7, #12] + 8002604: 681b ldr r3, [r3, #0] + 8002606: 647b str r3, [r7, #68] @ 0x44 + 8002608: 68fb ldr r3, [r7, #12] + 800260a: 681b ldr r3, [r3, #0] + 800260c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002610: b29b uxth r3, r3 + 8002612: 461a mov r2, r3 + 8002614: 6c7b ldr r3, [r7, #68] @ 0x44 + 8002616: 4413 add r3, r2 + 8002618: 647b str r3, [r7, #68] @ 0x44 + 800261a: 68bb ldr r3, [r7, #8] + 800261c: 781b ldrb r3, [r3, #0] + 800261e: 011a lsls r2, r3, #4 + 8002620: 6c7b ldr r3, [r7, #68] @ 0x44 + 8002622: 4413 add r3, r2 + 8002624: f203 4304 addw r3, r3, #1028 @ 0x404 + 8002628: 643b str r3, [r7, #64] @ 0x40 + 800262a: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 800262e: b29a uxth r2, r3 + 8002630: 6c3b ldr r3, [r7, #64] @ 0x40 + 8002632: 801a strh r2, [r3, #0] + + /* Copy user buffer to USB PMA */ + USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr0, (uint16_t)len); + 8002634: 68fb ldr r3, [r7, #12] + 8002636: 6818 ldr r0, [r3, #0] + 8002638: 68bb ldr r3, [r7, #8] + 800263a: 6959 ldr r1, [r3, #20] + 800263c: 68bb ldr r3, [r7, #8] + 800263e: 891a ldrh r2, [r3, #8] + 8002640: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8002644: b29b uxth r3, r3 + 8002646: f003 ffca bl 80065de + 800264a: e1e2 b.n 8002a12 + } + } + else /* Data Buffer1 ACK received */ + { + /* multi-packet on the NON control IN endpoint */ + TxPctSize = (uint16_t)PCD_GET_EP_DBUF1_CNT(hpcd->Instance, ep->num); + 800264c: 68fb ldr r3, [r7, #12] + 800264e: 681b ldr r3, [r3, #0] + 8002650: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002654: b29b uxth r3, r3 + 8002656: 461a mov r2, r3 + 8002658: 68bb ldr r3, [r7, #8] + 800265a: 781b ldrb r3, [r3, #0] + 800265c: 00db lsls r3, r3, #3 + 800265e: 4413 add r3, r2 + 8002660: 3306 adds r3, #6 + 8002662: 005b lsls r3, r3, #1 + 8002664: 68fa ldr r2, [r7, #12] + 8002666: 6812 ldr r2, [r2, #0] + 8002668: 4413 add r3, r2 + 800266a: f503 6380 add.w r3, r3, #1024 @ 0x400 + 800266e: 881b ldrh r3, [r3, #0] + 8002670: f3c3 0309 ubfx r3, r3, #0, #10 + 8002674: f8a7 3086 strh.w r3, [r7, #134] @ 0x86 + + if (ep->xfer_len >= TxPctSize) + 8002678: 68bb ldr r3, [r7, #8] + 800267a: 699a ldr r2, [r3, #24] + 800267c: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 8002680: 429a cmp r2, r3 + 8002682: d307 bcc.n 8002694 + { + ep->xfer_len -= TxPctSize; + 8002684: 68bb ldr r3, [r7, #8] + 8002686: 699a ldr r2, [r3, #24] + 8002688: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 800268c: 1ad2 subs r2, r2, r3 + 800268e: 68bb ldr r3, [r7, #8] + 8002690: 619a str r2, [r3, #24] + 8002692: e002 b.n 800269a + } + else + { + ep->xfer_len = 0U; + 8002694: 68bb ldr r3, [r7, #8] + 8002696: 2200 movs r2, #0 + 8002698: 619a str r2, [r3, #24] + } + + /* Transfer is completed */ + if (ep->xfer_len == 0U) + 800269a: 68bb ldr r3, [r7, #8] + 800269c: 699b ldr r3, [r3, #24] + 800269e: 2b00 cmp r3, #0 + 80026a0: f040 80c0 bne.w 8002824 + { + PCD_SET_EP_DBUF0_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 80026a4: 68bb ldr r3, [r7, #8] + 80026a6: 785b ldrb r3, [r3, #1] + 80026a8: 2b00 cmp r3, #0 + 80026aa: d126 bne.n 80026fa + 80026ac: 68fb ldr r3, [r7, #12] + 80026ae: 681b ldr r3, [r3, #0] + 80026b0: 67fb str r3, [r7, #124] @ 0x7c + 80026b2: 68fb ldr r3, [r7, #12] + 80026b4: 681b ldr r3, [r3, #0] + 80026b6: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80026ba: b29b uxth r3, r3 + 80026bc: 461a mov r2, r3 + 80026be: 6ffb ldr r3, [r7, #124] @ 0x7c + 80026c0: 4413 add r3, r2 + 80026c2: 67fb str r3, [r7, #124] @ 0x7c + 80026c4: 68bb ldr r3, [r7, #8] + 80026c6: 781b ldrb r3, [r3, #0] + 80026c8: 011a lsls r2, r3, #4 + 80026ca: 6ffb ldr r3, [r7, #124] @ 0x7c + 80026cc: 4413 add r3, r2 + 80026ce: f203 4304 addw r3, r3, #1028 @ 0x404 + 80026d2: 67bb str r3, [r7, #120] @ 0x78 + 80026d4: 6fbb ldr r3, [r7, #120] @ 0x78 + 80026d6: 881b ldrh r3, [r3, #0] + 80026d8: b29b uxth r3, r3 + 80026da: f3c3 0309 ubfx r3, r3, #0, #10 + 80026de: b29a uxth r2, r3 + 80026e0: 6fbb ldr r3, [r7, #120] @ 0x78 + 80026e2: 801a strh r2, [r3, #0] + 80026e4: 6fbb ldr r3, [r7, #120] @ 0x78 + 80026e6: 881b ldrh r3, [r3, #0] + 80026e8: b29b uxth r3, r3 + 80026ea: ea6f 4343 mvn.w r3, r3, lsl #17 + 80026ee: ea6f 4353 mvn.w r3, r3, lsr #17 + 80026f2: b29a uxth r2, r3 + 80026f4: 6fbb ldr r3, [r7, #120] @ 0x78 + 80026f6: 801a strh r2, [r3, #0] + 80026f8: e01a b.n 8002730 + 80026fa: 68bb ldr r3, [r7, #8] + 80026fc: 785b ldrb r3, [r3, #1] + 80026fe: 2b01 cmp r3, #1 + 8002700: d116 bne.n 8002730 + 8002702: 68fb ldr r3, [r7, #12] + 8002704: 681b ldr r3, [r3, #0] + 8002706: 667b str r3, [r7, #100] @ 0x64 + 8002708: 68fb ldr r3, [r7, #12] + 800270a: 681b ldr r3, [r3, #0] + 800270c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8002710: b29b uxth r3, r3 + 8002712: 461a mov r2, r3 + 8002714: 6e7b ldr r3, [r7, #100] @ 0x64 + 8002716: 4413 add r3, r2 + 8002718: 667b str r3, [r7, #100] @ 0x64 + 800271a: 68bb ldr r3, [r7, #8] + 800271c: 781b ldrb r3, [r3, #0] + 800271e: 011a lsls r2, r3, #4 + 8002720: 6e7b ldr r3, [r7, #100] @ 0x64 + 8002722: 4413 add r3, r2 + 8002724: f203 4304 addw r3, r3, #1028 @ 0x404 + 8002728: 663b str r3, [r7, #96] @ 0x60 + 800272a: 6e3b ldr r3, [r7, #96] @ 0x60 + 800272c: 2200 movs r2, #0 + 800272e: 801a strh r2, [r3, #0] + PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, 0U); + 8002730: 68fb ldr r3, [r7, #12] + 8002732: 681b ldr r3, [r3, #0] + 8002734: 677b str r3, [r7, #116] @ 0x74 + 8002736: 68bb ldr r3, [r7, #8] + 8002738: 785b ldrb r3, [r3, #1] + 800273a: 2b00 cmp r3, #0 + 800273c: d12b bne.n 8002796 + 800273e: 68fb ldr r3, [r7, #12] + 8002740: 681b ldr r3, [r3, #0] + 8002742: 66fb str r3, [r7, #108] @ 0x6c + 8002744: 68fb ldr r3, [r7, #12] + 8002746: 681b ldr r3, [r3, #0] + 8002748: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800274c: b29b uxth r3, r3 + 800274e: 461a mov r2, r3 + 8002750: 6efb ldr r3, [r7, #108] @ 0x6c + 8002752: 4413 add r3, r2 + 8002754: 66fb str r3, [r7, #108] @ 0x6c + 8002756: 68bb ldr r3, [r7, #8] + 8002758: 781b ldrb r3, [r3, #0] + 800275a: 011a lsls r2, r3, #4 + 800275c: 6efb ldr r3, [r7, #108] @ 0x6c + 800275e: 4413 add r3, r2 + 8002760: f203 430c addw r3, r3, #1036 @ 0x40c + 8002764: f8c7 3080 str.w r3, [r7, #128] @ 0x80 + 8002768: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 + 800276c: 881b ldrh r3, [r3, #0] + 800276e: b29b uxth r3, r3 + 8002770: f3c3 0309 ubfx r3, r3, #0, #10 + 8002774: b29a uxth r2, r3 + 8002776: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 + 800277a: 801a strh r2, [r3, #0] + 800277c: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 + 8002780: 881b ldrh r3, [r3, #0] + 8002782: b29b uxth r3, r3 + 8002784: ea6f 4343 mvn.w r3, r3, lsl #17 + 8002788: ea6f 4353 mvn.w r3, r3, lsr #17 + 800278c: b29a uxth r2, r3 + 800278e: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 + 8002792: 801a strh r2, [r3, #0] + 8002794: e017 b.n 80027c6 + 8002796: 68bb ldr r3, [r7, #8] + 8002798: 785b ldrb r3, [r3, #1] + 800279a: 2b01 cmp r3, #1 + 800279c: d113 bne.n 80027c6 + 800279e: 68fb ldr r3, [r7, #12] + 80027a0: 681b ldr r3, [r3, #0] + 80027a2: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80027a6: b29b uxth r3, r3 + 80027a8: 461a mov r2, r3 + 80027aa: 6f7b ldr r3, [r7, #116] @ 0x74 + 80027ac: 4413 add r3, r2 + 80027ae: 677b str r3, [r7, #116] @ 0x74 + 80027b0: 68bb ldr r3, [r7, #8] + 80027b2: 781b ldrb r3, [r3, #0] + 80027b4: 011a lsls r2, r3, #4 + 80027b6: 6f7b ldr r3, [r7, #116] @ 0x74 + 80027b8: 4413 add r3, r2 + 80027ba: f203 430c addw r3, r3, #1036 @ 0x40c + 80027be: 673b str r3, [r7, #112] @ 0x70 + 80027c0: 6f3b ldr r3, [r7, #112] @ 0x70 + 80027c2: 2200 movs r2, #0 + 80027c4: 801a strh r2, [r3, #0] + + /* TX COMPLETE */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, ep->num); +#else + HAL_PCD_DataInStageCallback(hpcd, ep->num); + 80027c6: 68bb ldr r3, [r7, #8] + 80027c8: 781b ldrb r3, [r3, #0] + 80027ca: 4619 mov r1, r3 + 80027cc: 68f8 ldr r0, [r7, #12] + 80027ce: f005 fdca bl 8008366 +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + /* need to Free USB Buff */ + if ((wEPVal & USB_EP_DTOG_RX) == 0U) + 80027d2: 88fb ldrh r3, [r7, #6] + 80027d4: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 80027d8: 2b00 cmp r3, #0 + 80027da: f040 811a bne.w 8002a12 + { + PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); + 80027de: 68fb ldr r3, [r7, #12] + 80027e0: 681b ldr r3, [r3, #0] + 80027e2: 461a mov r2, r3 + 80027e4: 68bb ldr r3, [r7, #8] + 80027e6: 781b ldrb r3, [r3, #0] + 80027e8: 009b lsls r3, r3, #2 + 80027ea: 4413 add r3, r2 + 80027ec: 881b ldrh r3, [r3, #0] + 80027ee: b29b uxth r3, r3 + 80027f0: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80027f4: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80027f8: f8a7 3088 strh.w r3, [r7, #136] @ 0x88 + 80027fc: 68fb ldr r3, [r7, #12] + 80027fe: 681b ldr r3, [r3, #0] + 8002800: 461a mov r2, r3 + 8002802: 68bb ldr r3, [r7, #8] + 8002804: 781b ldrb r3, [r3, #0] + 8002806: 009b lsls r3, r3, #2 + 8002808: 441a add r2, r3 + 800280a: f8b7 3088 ldrh.w r3, [r7, #136] @ 0x88 + 800280e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8002812: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8002816: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 800281a: f043 0380 orr.w r3, r3, #128 @ 0x80 + 800281e: b29b uxth r3, r3 + 8002820: 8013 strh r3, [r2, #0] + 8002822: e0f6 b.n 8002a12 + } + } + else /* Transfer is not yet Done */ + { + /* need to Free USB Buff */ + if ((wEPVal & USB_EP_DTOG_RX) == 0U) + 8002824: 88fb ldrh r3, [r7, #6] + 8002826: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 800282a: 2b00 cmp r3, #0 + 800282c: d121 bne.n 8002872 + { + PCD_FREE_USER_BUFFER(hpcd->Instance, ep->num, 1U); + 800282e: 68fb ldr r3, [r7, #12] + 8002830: 681b ldr r3, [r3, #0] + 8002832: 461a mov r2, r3 + 8002834: 68bb ldr r3, [r7, #8] + 8002836: 781b ldrb r3, [r3, #0] + 8002838: 009b lsls r3, r3, #2 + 800283a: 4413 add r3, r2 + 800283c: 881b ldrh r3, [r3, #0] + 800283e: b29b uxth r3, r3 + 8002840: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002844: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8002848: f8a7 304e strh.w r3, [r7, #78] @ 0x4e + 800284c: 68fb ldr r3, [r7, #12] + 800284e: 681b ldr r3, [r3, #0] + 8002850: 461a mov r2, r3 + 8002852: 68bb ldr r3, [r7, #8] + 8002854: 781b ldrb r3, [r3, #0] + 8002856: 009b lsls r3, r3, #2 + 8002858: 441a add r2, r3 + 800285a: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e + 800285e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8002862: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8002866: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 800286a: f043 0380 orr.w r3, r3, #128 @ 0x80 + 800286e: b29b uxth r3, r3 + 8002870: 8013 strh r3, [r2, #0] + } + + /* Still there is data to Fill in the next Buffer */ + if (ep->xfer_fill_db == 1U) + 8002872: 68bb ldr r3, [r7, #8] + 8002874: f893 3024 ldrb.w r3, [r3, #36] @ 0x24 + 8002878: 2b01 cmp r3, #1 + 800287a: f040 80ca bne.w 8002a12 + { + ep->xfer_buff += TxPctSize; + 800287e: 68bb ldr r3, [r7, #8] + 8002880: 695a ldr r2, [r3, #20] + 8002882: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 8002886: 441a add r2, r3 + 8002888: 68bb ldr r3, [r7, #8] + 800288a: 615a str r2, [r3, #20] + ep->xfer_count += TxPctSize; + 800288c: 68bb ldr r3, [r7, #8] + 800288e: 69da ldr r2, [r3, #28] + 8002890: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 8002894: 441a add r2, r3 + 8002896: 68bb ldr r3, [r7, #8] + 8002898: 61da str r2, [r3, #28] + + /* Calculate the len of the new buffer to fill */ + if (ep->xfer_len_db >= ep->maxpacket) + 800289a: 68bb ldr r3, [r7, #8] + 800289c: 6a1a ldr r2, [r3, #32] + 800289e: 68bb ldr r3, [r7, #8] + 80028a0: 691b ldr r3, [r3, #16] + 80028a2: 429a cmp r2, r3 + 80028a4: d30b bcc.n 80028be + { + len = ep->maxpacket; + 80028a6: 68bb ldr r3, [r7, #8] + 80028a8: 691b ldr r3, [r3, #16] + 80028aa: f8c7 308c str.w r3, [r7, #140] @ 0x8c + ep->xfer_len_db -= len; + 80028ae: 68bb ldr r3, [r7, #8] + 80028b0: 6a1a ldr r2, [r3, #32] + 80028b2: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 80028b6: 1ad2 subs r2, r2, r3 + 80028b8: 68bb ldr r3, [r7, #8] + 80028ba: 621a str r2, [r3, #32] + 80028bc: e017 b.n 80028ee + } + else if (ep->xfer_len_db == 0U) + 80028be: 68bb ldr r3, [r7, #8] + 80028c0: 6a1b ldr r3, [r3, #32] + 80028c2: 2b00 cmp r3, #0 + 80028c4: d108 bne.n 80028d8 + { + len = TxPctSize; + 80028c6: f8b7 3086 ldrh.w r3, [r7, #134] @ 0x86 + 80028ca: f8c7 308c str.w r3, [r7, #140] @ 0x8c + ep->xfer_fill_db = 0U; + 80028ce: 68bb ldr r3, [r7, #8] + 80028d0: 2200 movs r2, #0 + 80028d2: f883 2024 strb.w r2, [r3, #36] @ 0x24 + 80028d6: e00a b.n 80028ee + } + else + { + len = ep->xfer_len_db; + 80028d8: 68bb ldr r3, [r7, #8] + 80028da: 6a1b ldr r3, [r3, #32] + 80028dc: f8c7 308c str.w r3, [r7, #140] @ 0x8c + ep->xfer_len_db = 0U; + 80028e0: 68bb ldr r3, [r7, #8] + 80028e2: 2200 movs r2, #0 + 80028e4: 621a str r2, [r3, #32] + ep->xfer_fill_db = 0; + 80028e6: 68bb ldr r3, [r7, #8] + 80028e8: 2200 movs r2, #0 + 80028ea: f883 2024 strb.w r2, [r3, #36] @ 0x24 + } + + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(hpcd->Instance, ep->num, ep->is_in, len); + 80028ee: 68fb ldr r3, [r7, #12] + 80028f0: 681b ldr r3, [r3, #0] + 80028f2: 657b str r3, [r7, #84] @ 0x54 + 80028f4: 68bb ldr r3, [r7, #8] + 80028f6: 785b ldrb r3, [r3, #1] + 80028f8: 2b00 cmp r3, #0 + 80028fa: d165 bne.n 80029c8 + 80028fc: 68fb ldr r3, [r7, #12] + 80028fe: 681b ldr r3, [r3, #0] + 8002900: 65fb str r3, [r7, #92] @ 0x5c + 8002902: 68fb ldr r3, [r7, #12] + 8002904: 681b ldr r3, [r3, #0] + 8002906: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800290a: b29b uxth r3, r3 + 800290c: 461a mov r2, r3 + 800290e: 6dfb ldr r3, [r7, #92] @ 0x5c + 8002910: 4413 add r3, r2 + 8002912: 65fb str r3, [r7, #92] @ 0x5c + 8002914: 68bb ldr r3, [r7, #8] + 8002916: 781b ldrb r3, [r3, #0] + 8002918: 011a lsls r2, r3, #4 + 800291a: 6dfb ldr r3, [r7, #92] @ 0x5c + 800291c: 4413 add r3, r2 + 800291e: f203 430c addw r3, r3, #1036 @ 0x40c + 8002922: 65bb str r3, [r7, #88] @ 0x58 + 8002924: 6dbb ldr r3, [r7, #88] @ 0x58 + 8002926: 881b ldrh r3, [r3, #0] + 8002928: b29b uxth r3, r3 + 800292a: f3c3 0309 ubfx r3, r3, #0, #10 + 800292e: b29a uxth r2, r3 + 8002930: 6dbb ldr r3, [r7, #88] @ 0x58 + 8002932: 801a strh r2, [r3, #0] + 8002934: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8002938: 2b3e cmp r3, #62 @ 0x3e + 800293a: d91d bls.n 8002978 + 800293c: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8002940: 095b lsrs r3, r3, #5 + 8002942: 66bb str r3, [r7, #104] @ 0x68 + 8002944: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8002948: f003 031f and.w r3, r3, #31 + 800294c: 2b00 cmp r3, #0 + 800294e: d102 bne.n 8002956 + 8002950: 6ebb ldr r3, [r7, #104] @ 0x68 + 8002952: 3b01 subs r3, #1 + 8002954: 66bb str r3, [r7, #104] @ 0x68 + 8002956: 6dbb ldr r3, [r7, #88] @ 0x58 + 8002958: 881b ldrh r3, [r3, #0] + 800295a: b29a uxth r2, r3 + 800295c: 6ebb ldr r3, [r7, #104] @ 0x68 + 800295e: b29b uxth r3, r3 + 8002960: 029b lsls r3, r3, #10 + 8002962: b29b uxth r3, r3 + 8002964: 4313 orrs r3, r2 + 8002966: b29b uxth r3, r3 + 8002968: ea6f 4343 mvn.w r3, r3, lsl #17 + 800296c: ea6f 4353 mvn.w r3, r3, lsr #17 + 8002970: b29a uxth r2, r3 + 8002972: 6dbb ldr r3, [r7, #88] @ 0x58 + 8002974: 801a strh r2, [r3, #0] + 8002976: e041 b.n 80029fc + 8002978: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 800297c: 2b00 cmp r3, #0 + 800297e: d10a bne.n 8002996 + 8002980: 6dbb ldr r3, [r7, #88] @ 0x58 + 8002982: 881b ldrh r3, [r3, #0] + 8002984: b29b uxth r3, r3 + 8002986: ea6f 4343 mvn.w r3, r3, lsl #17 + 800298a: ea6f 4353 mvn.w r3, r3, lsr #17 + 800298e: b29a uxth r2, r3 + 8002990: 6dbb ldr r3, [r7, #88] @ 0x58 + 8002992: 801a strh r2, [r3, #0] + 8002994: e032 b.n 80029fc + 8002996: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 800299a: 085b lsrs r3, r3, #1 + 800299c: 66bb str r3, [r7, #104] @ 0x68 + 800299e: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 80029a2: f003 0301 and.w r3, r3, #1 + 80029a6: 2b00 cmp r3, #0 + 80029a8: d002 beq.n 80029b0 + 80029aa: 6ebb ldr r3, [r7, #104] @ 0x68 + 80029ac: 3301 adds r3, #1 + 80029ae: 66bb str r3, [r7, #104] @ 0x68 + 80029b0: 6dbb ldr r3, [r7, #88] @ 0x58 + 80029b2: 881b ldrh r3, [r3, #0] + 80029b4: b29a uxth r2, r3 + 80029b6: 6ebb ldr r3, [r7, #104] @ 0x68 + 80029b8: b29b uxth r3, r3 + 80029ba: 029b lsls r3, r3, #10 + 80029bc: b29b uxth r3, r3 + 80029be: 4313 orrs r3, r2 + 80029c0: b29a uxth r2, r3 + 80029c2: 6dbb ldr r3, [r7, #88] @ 0x58 + 80029c4: 801a strh r2, [r3, #0] + 80029c6: e019 b.n 80029fc + 80029c8: 68bb ldr r3, [r7, #8] + 80029ca: 785b ldrb r3, [r3, #1] + 80029cc: 2b01 cmp r3, #1 + 80029ce: d115 bne.n 80029fc + 80029d0: 68fb ldr r3, [r7, #12] + 80029d2: 681b ldr r3, [r3, #0] + 80029d4: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80029d8: b29b uxth r3, r3 + 80029da: 461a mov r2, r3 + 80029dc: 6d7b ldr r3, [r7, #84] @ 0x54 + 80029de: 4413 add r3, r2 + 80029e0: 657b str r3, [r7, #84] @ 0x54 + 80029e2: 68bb ldr r3, [r7, #8] + 80029e4: 781b ldrb r3, [r3, #0] + 80029e6: 011a lsls r2, r3, #4 + 80029e8: 6d7b ldr r3, [r7, #84] @ 0x54 + 80029ea: 4413 add r3, r2 + 80029ec: f203 430c addw r3, r3, #1036 @ 0x40c + 80029f0: 653b str r3, [r7, #80] @ 0x50 + 80029f2: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 80029f6: b29a uxth r2, r3 + 80029f8: 6d3b ldr r3, [r7, #80] @ 0x50 + 80029fa: 801a strh r2, [r3, #0] + + /* Copy the user buffer to USB PMA */ + USB_WritePMA(hpcd->Instance, ep->xfer_buff, ep->pmaaddr1, (uint16_t)len); + 80029fc: 68fb ldr r3, [r7, #12] + 80029fe: 6818 ldr r0, [r3, #0] + 8002a00: 68bb ldr r3, [r7, #8] + 8002a02: 6959 ldr r1, [r3, #20] + 8002a04: 68bb ldr r3, [r7, #8] + 8002a06: 895a ldrh r2, [r3, #10] + 8002a08: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8002a0c: b29b uxth r3, r3 + 8002a0e: f003 fde6 bl 80065de + } + } + } + + /*enable endpoint IN*/ + PCD_SET_EP_TX_STATUS(hpcd->Instance, ep->num, USB_EP_TX_VALID); + 8002a12: 68fb ldr r3, [r7, #12] + 8002a14: 681b ldr r3, [r3, #0] + 8002a16: 461a mov r2, r3 + 8002a18: 68bb ldr r3, [r7, #8] + 8002a1a: 781b ldrb r3, [r3, #0] + 8002a1c: 009b lsls r3, r3, #2 + 8002a1e: 4413 add r3, r2 + 8002a20: 881b ldrh r3, [r3, #0] + 8002a22: b29b uxth r3, r3 + 8002a24: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8002a28: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8002a2c: 82bb strh r3, [r7, #20] + 8002a2e: 8abb ldrh r3, [r7, #20] + 8002a30: f083 0310 eor.w r3, r3, #16 + 8002a34: 82bb strh r3, [r7, #20] + 8002a36: 8abb ldrh r3, [r7, #20] + 8002a38: f083 0320 eor.w r3, r3, #32 + 8002a3c: 82bb strh r3, [r7, #20] + 8002a3e: 68fb ldr r3, [r7, #12] + 8002a40: 681b ldr r3, [r3, #0] + 8002a42: 461a mov r2, r3 + 8002a44: 68bb ldr r3, [r7, #8] + 8002a46: 781b ldrb r3, [r3, #0] + 8002a48: 009b lsls r3, r3, #2 + 8002a4a: 441a add r2, r3 + 8002a4c: 8abb ldrh r3, [r7, #20] + 8002a4e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8002a52: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8002a56: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8002a5a: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8002a5e: b29b uxth r3, r3 + 8002a60: 8013 strh r3, [r2, #0] + + return HAL_OK; + 8002a62: 2300 movs r3, #0 +} + 8002a64: 4618 mov r0, r3 + 8002a66: 3790 adds r7, #144 @ 0x90 + 8002a68: 46bd mov sp, r7 + 8002a6a: bd80 pop {r7, pc} + +08002a6c : + * @retval HAL status + */ + +HAL_StatusTypeDef HAL_PCDEx_PMAConfig(PCD_HandleTypeDef *hpcd, uint16_t ep_addr, + uint16_t ep_kind, uint32_t pmaadress) +{ + 8002a6c: b480 push {r7} + 8002a6e: b087 sub sp, #28 + 8002a70: af00 add r7, sp, #0 + 8002a72: 60f8 str r0, [r7, #12] + 8002a74: 607b str r3, [r7, #4] + 8002a76: 460b mov r3, r1 + 8002a78: 817b strh r3, [r7, #10] + 8002a7a: 4613 mov r3, r2 + 8002a7c: 813b strh r3, [r7, #8] + PCD_EPTypeDef *ep; + + /* initialize ep structure*/ + if ((0x80U & ep_addr) == 0x80U) + 8002a7e: 897b ldrh r3, [r7, #10] + 8002a80: f003 0380 and.w r3, r3, #128 @ 0x80 + 8002a84: b29b uxth r3, r3 + 8002a86: 2b00 cmp r3, #0 + 8002a88: d00b beq.n 8002aa2 + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + 8002a8a: 897b ldrh r3, [r7, #10] + 8002a8c: f003 0207 and.w r2, r3, #7 + 8002a90: 4613 mov r3, r2 + 8002a92: 009b lsls r3, r3, #2 + 8002a94: 4413 add r3, r2 + 8002a96: 00db lsls r3, r3, #3 + 8002a98: 3310 adds r3, #16 + 8002a9a: 68fa ldr r2, [r7, #12] + 8002a9c: 4413 add r3, r2 + 8002a9e: 617b str r3, [r7, #20] + 8002aa0: e009 b.n 8002ab6 + } + else + { + ep = &hpcd->OUT_ep[ep_addr]; + 8002aa2: 897a ldrh r2, [r7, #10] + 8002aa4: 4613 mov r3, r2 + 8002aa6: 009b lsls r3, r3, #2 + 8002aa8: 4413 add r3, r2 + 8002aaa: 00db lsls r3, r3, #3 + 8002aac: f503 73a8 add.w r3, r3, #336 @ 0x150 + 8002ab0: 68fa ldr r2, [r7, #12] + 8002ab2: 4413 add r3, r2 + 8002ab4: 617b str r3, [r7, #20] + } + + /* Here we check if the endpoint is single or double Buffer*/ + if (ep_kind == PCD_SNG_BUF) + 8002ab6: 893b ldrh r3, [r7, #8] + 8002ab8: 2b00 cmp r3, #0 + 8002aba: d107 bne.n 8002acc + { + /* Single Buffer */ + ep->doublebuffer = 0U; + 8002abc: 697b ldr r3, [r7, #20] + 8002abe: 2200 movs r2, #0 + 8002ac0: 731a strb r2, [r3, #12] + /* Configure the PMA */ + ep->pmaadress = (uint16_t)pmaadress; + 8002ac2: 687b ldr r3, [r7, #4] + 8002ac4: b29a uxth r2, r3 + 8002ac6: 697b ldr r3, [r7, #20] + 8002ac8: 80da strh r2, [r3, #6] + 8002aca: e00b b.n 8002ae4 + } +#if (USE_USB_DOUBLE_BUFFER == 1U) + else /* USB_DBL_BUF */ + { + /* Double Buffer Endpoint */ + ep->doublebuffer = 1U; + 8002acc: 697b ldr r3, [r7, #20] + 8002ace: 2201 movs r2, #1 + 8002ad0: 731a strb r2, [r3, #12] + /* Configure the PMA */ + ep->pmaaddr0 = (uint16_t)(pmaadress & 0xFFFFU); + 8002ad2: 687b ldr r3, [r7, #4] + 8002ad4: b29a uxth r2, r3 + 8002ad6: 697b ldr r3, [r7, #20] + 8002ad8: 811a strh r2, [r3, #8] + ep->pmaaddr1 = (uint16_t)((pmaadress & 0xFFFF0000U) >> 16); + 8002ada: 687b ldr r3, [r7, #4] + 8002adc: 0c1b lsrs r3, r3, #16 + 8002ade: b29a uxth r2, r3 + 8002ae0: 697b ldr r3, [r7, #20] + 8002ae2: 815a strh r2, [r3, #10] + } +#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ + + return HAL_OK; + 8002ae4: 2300 movs r3, #0 +} + 8002ae6: 4618 mov r0, r3 + 8002ae8: 371c adds r7, #28 + 8002aea: 46bd mov sp, r7 + 8002aec: bc80 pop {r7} + 8002aee: 4770 bx lr + +08002af0 : + * supported by this macro. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + 8002af0: b580 push {r7, lr} + 8002af2: b086 sub sp, #24 + 8002af4: af00 add r7, sp, #0 + 8002af6: 6078 str r0, [r7, #4] + uint32_t tickstart; + uint32_t pll_config; + + /* Check Null pointer */ + if (RCC_OscInitStruct == NULL) + 8002af8: 687b ldr r3, [r7, #4] + 8002afa: 2b00 cmp r3, #0 + 8002afc: d101 bne.n 8002b02 + { + return HAL_ERROR; + 8002afe: 2301 movs r3, #1 + 8002b00: e272 b.n 8002fe8 + + /* Check the parameters */ + assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + + /*------------------------------- HSE Configuration ------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + 8002b02: 687b ldr r3, [r7, #4] + 8002b04: 681b ldr r3, [r3, #0] + 8002b06: f003 0301 and.w r3, r3, #1 + 8002b0a: 2b00 cmp r3, #0 + 8002b0c: f000 8087 beq.w 8002c1e + { + /* Check the parameters */ + assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); + + /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ + if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE) + 8002b10: 4b92 ldr r3, [pc, #584] @ (8002d5c ) + 8002b12: 685b ldr r3, [r3, #4] + 8002b14: f003 030c and.w r3, r3, #12 + 8002b18: 2b04 cmp r3, #4 + 8002b1a: d00c beq.n 8002b36 + || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSE))) + 8002b1c: 4b8f ldr r3, [pc, #572] @ (8002d5c ) + 8002b1e: 685b ldr r3, [r3, #4] + 8002b20: f003 030c and.w r3, r3, #12 + 8002b24: 2b08 cmp r3, #8 + 8002b26: d112 bne.n 8002b4e + 8002b28: 4b8c ldr r3, [pc, #560] @ (8002d5c ) + 8002b2a: 685b ldr r3, [r3, #4] + 8002b2c: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8002b30: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8002b34: d10b bne.n 8002b4e + { + if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 8002b36: 4b89 ldr r3, [pc, #548] @ (8002d5c ) + 8002b38: 681b ldr r3, [r3, #0] + 8002b3a: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8002b3e: 2b00 cmp r3, #0 + 8002b40: d06c beq.n 8002c1c + 8002b42: 687b ldr r3, [r7, #4] + 8002b44: 685b ldr r3, [r3, #4] + 8002b46: 2b00 cmp r3, #0 + 8002b48: d168 bne.n 8002c1c + { + return HAL_ERROR; + 8002b4a: 2301 movs r3, #1 + 8002b4c: e24c b.n 8002fe8 + } + } + else + { + /* Set the new HSE configuration ---------------------------------------*/ + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + 8002b4e: 687b ldr r3, [r7, #4] + 8002b50: 685b ldr r3, [r3, #4] + 8002b52: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8002b56: d106 bne.n 8002b66 + 8002b58: 4b80 ldr r3, [pc, #512] @ (8002d5c ) + 8002b5a: 681b ldr r3, [r3, #0] + 8002b5c: 4a7f ldr r2, [pc, #508] @ (8002d5c ) + 8002b5e: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8002b62: 6013 str r3, [r2, #0] + 8002b64: e02e b.n 8002bc4 + 8002b66: 687b ldr r3, [r7, #4] + 8002b68: 685b ldr r3, [r3, #4] + 8002b6a: 2b00 cmp r3, #0 + 8002b6c: d10c bne.n 8002b88 + 8002b6e: 4b7b ldr r3, [pc, #492] @ (8002d5c ) + 8002b70: 681b ldr r3, [r3, #0] + 8002b72: 4a7a ldr r2, [pc, #488] @ (8002d5c ) + 8002b74: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8002b78: 6013 str r3, [r2, #0] + 8002b7a: 4b78 ldr r3, [pc, #480] @ (8002d5c ) + 8002b7c: 681b ldr r3, [r3, #0] + 8002b7e: 4a77 ldr r2, [pc, #476] @ (8002d5c ) + 8002b80: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 8002b84: 6013 str r3, [r2, #0] + 8002b86: e01d b.n 8002bc4 + 8002b88: 687b ldr r3, [r7, #4] + 8002b8a: 685b ldr r3, [r3, #4] + 8002b8c: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 + 8002b90: d10c bne.n 8002bac + 8002b92: 4b72 ldr r3, [pc, #456] @ (8002d5c ) + 8002b94: 681b ldr r3, [r3, #0] + 8002b96: 4a71 ldr r2, [pc, #452] @ (8002d5c ) + 8002b98: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 8002b9c: 6013 str r3, [r2, #0] + 8002b9e: 4b6f ldr r3, [pc, #444] @ (8002d5c ) + 8002ba0: 681b ldr r3, [r3, #0] + 8002ba2: 4a6e ldr r2, [pc, #440] @ (8002d5c ) + 8002ba4: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 8002ba8: 6013 str r3, [r2, #0] + 8002baa: e00b b.n 8002bc4 + 8002bac: 4b6b ldr r3, [pc, #428] @ (8002d5c ) + 8002bae: 681b ldr r3, [r3, #0] + 8002bb0: 4a6a ldr r2, [pc, #424] @ (8002d5c ) + 8002bb2: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 8002bb6: 6013 str r3, [r2, #0] + 8002bb8: 4b68 ldr r3, [pc, #416] @ (8002d5c ) + 8002bba: 681b ldr r3, [r3, #0] + 8002bbc: 4a67 ldr r2, [pc, #412] @ (8002d5c ) + 8002bbe: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 8002bc2: 6013 str r3, [r2, #0] + + + /* Check the HSE State */ + if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + 8002bc4: 687b ldr r3, [r7, #4] + 8002bc6: 685b ldr r3, [r3, #4] + 8002bc8: 2b00 cmp r3, #0 + 8002bca: d013 beq.n 8002bf4 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002bcc: f7fd ff94 bl 8000af8 + 8002bd0: 6138 str r0, [r7, #16] + + /* Wait till HSE is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) + 8002bd2: e008 b.n 8002be6 + { + if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) + 8002bd4: f7fd ff90 bl 8000af8 + 8002bd8: 4602 mov r2, r0 + 8002bda: 693b ldr r3, [r7, #16] + 8002bdc: 1ad3 subs r3, r2, r3 + 8002bde: 2b64 cmp r3, #100 @ 0x64 + 8002be0: d901 bls.n 8002be6 + { + return HAL_TIMEOUT; + 8002be2: 2303 movs r3, #3 + 8002be4: e200 b.n 8002fe8 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) + 8002be6: 4b5d ldr r3, [pc, #372] @ (8002d5c ) + 8002be8: 681b ldr r3, [r3, #0] + 8002bea: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8002bee: 2b00 cmp r3, #0 + 8002bf0: d0f0 beq.n 8002bd4 + 8002bf2: e014 b.n 8002c1e + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002bf4: f7fd ff80 bl 8000af8 + 8002bf8: 6138 str r0, [r7, #16] + + /* Wait till HSE is disabled */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) + 8002bfa: e008 b.n 8002c0e + { + if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) + 8002bfc: f7fd ff7c bl 8000af8 + 8002c00: 4602 mov r2, r0 + 8002c02: 693b ldr r3, [r7, #16] + 8002c04: 1ad3 subs r3, r2, r3 + 8002c06: 2b64 cmp r3, #100 @ 0x64 + 8002c08: d901 bls.n 8002c0e + { + return HAL_TIMEOUT; + 8002c0a: 2303 movs r3, #3 + 8002c0c: e1ec b.n 8002fe8 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) + 8002c0e: 4b53 ldr r3, [pc, #332] @ (8002d5c ) + 8002c10: 681b ldr r3, [r3, #0] + 8002c12: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8002c16: 2b00 cmp r3, #0 + 8002c18: d1f0 bne.n 8002bfc + 8002c1a: e000 b.n 8002c1e + if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 8002c1c: bf00 nop + } + } + } + } + /*----------------------------- HSI Configuration --------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + 8002c1e: 687b ldr r3, [r7, #4] + 8002c20: 681b ldr r3, [r3, #0] + 8002c22: f003 0302 and.w r3, r3, #2 + 8002c26: 2b00 cmp r3, #0 + 8002c28: d063 beq.n 8002cf2 + /* Check the parameters */ + assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + + /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ + if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI) + 8002c2a: 4b4c ldr r3, [pc, #304] @ (8002d5c ) + 8002c2c: 685b ldr r3, [r3, #4] + 8002c2e: f003 030c and.w r3, r3, #12 + 8002c32: 2b00 cmp r3, #0 + 8002c34: d00b beq.n 8002c4e + || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSI_DIV2))) + 8002c36: 4b49 ldr r3, [pc, #292] @ (8002d5c ) + 8002c38: 685b ldr r3, [r3, #4] + 8002c3a: f003 030c and.w r3, r3, #12 + 8002c3e: 2b08 cmp r3, #8 + 8002c40: d11c bne.n 8002c7c + 8002c42: 4b46 ldr r3, [pc, #280] @ (8002d5c ) + 8002c44: 685b ldr r3, [r3, #4] + 8002c46: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8002c4a: 2b00 cmp r3, #0 + 8002c4c: d116 bne.n 8002c7c + { + /* 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)) + 8002c4e: 4b43 ldr r3, [pc, #268] @ (8002d5c ) + 8002c50: 681b ldr r3, [r3, #0] + 8002c52: f003 0302 and.w r3, r3, #2 + 8002c56: 2b00 cmp r3, #0 + 8002c58: d005 beq.n 8002c66 + 8002c5a: 687b ldr r3, [r7, #4] + 8002c5c: 691b ldr r3, [r3, #16] + 8002c5e: 2b01 cmp r3, #1 + 8002c60: d001 beq.n 8002c66 + { + return HAL_ERROR; + 8002c62: 2301 movs r3, #1 + 8002c64: e1c0 b.n 8002fe8 + } + /* Otherwise, just the calibration is allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 8002c66: 4b3d ldr r3, [pc, #244] @ (8002d5c ) + 8002c68: 681b ldr r3, [r3, #0] + 8002c6a: f023 02f8 bic.w r2, r3, #248 @ 0xf8 + 8002c6e: 687b ldr r3, [r7, #4] + 8002c70: 695b ldr r3, [r3, #20] + 8002c72: 00db lsls r3, r3, #3 + 8002c74: 4939 ldr r1, [pc, #228] @ (8002d5c ) + 8002c76: 4313 orrs r3, r2 + 8002c78: 600b str r3, [r1, #0] + if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + 8002c7a: e03a b.n 8002cf2 + } + } + else + { + /* Check the HSI State */ + if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF) + 8002c7c: 687b ldr r3, [r7, #4] + 8002c7e: 691b ldr r3, [r3, #16] + 8002c80: 2b00 cmp r3, #0 + 8002c82: d020 beq.n 8002cc6 + { + /* Enable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_ENABLE(); + 8002c84: 4b36 ldr r3, [pc, #216] @ (8002d60 ) + 8002c86: 2201 movs r2, #1 + 8002c88: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002c8a: f7fd ff35 bl 8000af8 + 8002c8e: 6138 str r0, [r7, #16] + + /* Wait till HSI is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) + 8002c90: e008 b.n 8002ca4 + { + if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) + 8002c92: f7fd ff31 bl 8000af8 + 8002c96: 4602 mov r2, r0 + 8002c98: 693b ldr r3, [r7, #16] + 8002c9a: 1ad3 subs r3, r2, r3 + 8002c9c: 2b02 cmp r3, #2 + 8002c9e: d901 bls.n 8002ca4 + { + return HAL_TIMEOUT; + 8002ca0: 2303 movs r3, #3 + 8002ca2: e1a1 b.n 8002fe8 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) + 8002ca4: 4b2d ldr r3, [pc, #180] @ (8002d5c ) + 8002ca6: 681b ldr r3, [r3, #0] + 8002ca8: f003 0302 and.w r3, r3, #2 + 8002cac: 2b00 cmp r3, #0 + 8002cae: d0f0 beq.n 8002c92 + } + } + + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 8002cb0: 4b2a ldr r3, [pc, #168] @ (8002d5c ) + 8002cb2: 681b ldr r3, [r3, #0] + 8002cb4: f023 02f8 bic.w r2, r3, #248 @ 0xf8 + 8002cb8: 687b ldr r3, [r7, #4] + 8002cba: 695b ldr r3, [r3, #20] + 8002cbc: 00db lsls r3, r3, #3 + 8002cbe: 4927 ldr r1, [pc, #156] @ (8002d5c ) + 8002cc0: 4313 orrs r3, r2 + 8002cc2: 600b str r3, [r1, #0] + 8002cc4: e015 b.n 8002cf2 + } + else + { + /* Disable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_DISABLE(); + 8002cc6: 4b26 ldr r3, [pc, #152] @ (8002d60 ) + 8002cc8: 2200 movs r2, #0 + 8002cca: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002ccc: f7fd ff14 bl 8000af8 + 8002cd0: 6138 str r0, [r7, #16] + + /* Wait till HSI is disabled */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) + 8002cd2: e008 b.n 8002ce6 + { + if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) + 8002cd4: f7fd ff10 bl 8000af8 + 8002cd8: 4602 mov r2, r0 + 8002cda: 693b ldr r3, [r7, #16] + 8002cdc: 1ad3 subs r3, r2, r3 + 8002cde: 2b02 cmp r3, #2 + 8002ce0: d901 bls.n 8002ce6 + { + return HAL_TIMEOUT; + 8002ce2: 2303 movs r3, #3 + 8002ce4: e180 b.n 8002fe8 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) + 8002ce6: 4b1d ldr r3, [pc, #116] @ (8002d5c ) + 8002ce8: 681b ldr r3, [r3, #0] + 8002cea: f003 0302 and.w r3, r3, #2 + 8002cee: 2b00 cmp r3, #0 + 8002cf0: d1f0 bne.n 8002cd4 + } + } + } + } + /*------------------------------ LSI Configuration -------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + 8002cf2: 687b ldr r3, [r7, #4] + 8002cf4: 681b ldr r3, [r3, #0] + 8002cf6: f003 0308 and.w r3, r3, #8 + 8002cfa: 2b00 cmp r3, #0 + 8002cfc: d03a beq.n 8002d74 + { + /* Check the parameters */ + assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + + /* Check the LSI State */ + if (RCC_OscInitStruct->LSIState != RCC_LSI_OFF) + 8002cfe: 687b ldr r3, [r7, #4] + 8002d00: 699b ldr r3, [r3, #24] + 8002d02: 2b00 cmp r3, #0 + 8002d04: d019 beq.n 8002d3a + { + /* Enable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_ENABLE(); + 8002d06: 4b17 ldr r3, [pc, #92] @ (8002d64 ) + 8002d08: 2201 movs r2, #1 + 8002d0a: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002d0c: f7fd fef4 bl 8000af8 + 8002d10: 6138 str r0, [r7, #16] + + /* Wait till LSI is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) + 8002d12: e008 b.n 8002d26 + { + if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) + 8002d14: f7fd fef0 bl 8000af8 + 8002d18: 4602 mov r2, r0 + 8002d1a: 693b ldr r3, [r7, #16] + 8002d1c: 1ad3 subs r3, r2, r3 + 8002d1e: 2b02 cmp r3, #2 + 8002d20: d901 bls.n 8002d26 + { + return HAL_TIMEOUT; + 8002d22: 2303 movs r3, #3 + 8002d24: e160 b.n 8002fe8 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) + 8002d26: 4b0d ldr r3, [pc, #52] @ (8002d5c ) + 8002d28: 6a5b ldr r3, [r3, #36] @ 0x24 + 8002d2a: f003 0302 and.w r3, r3, #2 + 8002d2e: 2b00 cmp r3, #0 + 8002d30: d0f0 beq.n 8002d14 + } + } + /* To have a fully stabilized clock in the specified range, a software delay of 1ms + should be added.*/ + RCC_Delay(1); + 8002d32: 2001 movs r0, #1 + 8002d34: f000 fa9c bl 8003270 + 8002d38: e01c b.n 8002d74 + } + else + { + /* Disable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_DISABLE(); + 8002d3a: 4b0a ldr r3, [pc, #40] @ (8002d64 ) + 8002d3c: 2200 movs r2, #0 + 8002d3e: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002d40: f7fd feda bl 8000af8 + 8002d44: 6138 str r0, [r7, #16] + + /* Wait till LSI is disabled */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) + 8002d46: e00f b.n 8002d68 + { + if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) + 8002d48: f7fd fed6 bl 8000af8 + 8002d4c: 4602 mov r2, r0 + 8002d4e: 693b ldr r3, [r7, #16] + 8002d50: 1ad3 subs r3, r2, r3 + 8002d52: 2b02 cmp r3, #2 + 8002d54: d908 bls.n 8002d68 + { + return HAL_TIMEOUT; + 8002d56: 2303 movs r3, #3 + 8002d58: e146 b.n 8002fe8 + 8002d5a: bf00 nop + 8002d5c: 40021000 .word 0x40021000 + 8002d60: 42420000 .word 0x42420000 + 8002d64: 42420480 .word 0x42420480 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) + 8002d68: 4b92 ldr r3, [pc, #584] @ (8002fb4 ) + 8002d6a: 6a5b ldr r3, [r3, #36] @ 0x24 + 8002d6c: f003 0302 and.w r3, r3, #2 + 8002d70: 2b00 cmp r3, #0 + 8002d72: d1e9 bne.n 8002d48 + } + } + } + } + /*------------------------------ LSE Configuration -------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + 8002d74: 687b ldr r3, [r7, #4] + 8002d76: 681b ldr r3, [r3, #0] + 8002d78: f003 0304 and.w r3, r3, #4 + 8002d7c: 2b00 cmp r3, #0 + 8002d7e: f000 80a6 beq.w 8002ece + { + FlagStatus pwrclkchanged = RESET; + 8002d82: 2300 movs r3, #0 + 8002d84: 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()) + 8002d86: 4b8b ldr r3, [pc, #556] @ (8002fb4 ) + 8002d88: 69db ldr r3, [r3, #28] + 8002d8a: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8002d8e: 2b00 cmp r3, #0 + 8002d90: d10d bne.n 8002dae + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8002d92: 4b88 ldr r3, [pc, #544] @ (8002fb4 ) + 8002d94: 69db ldr r3, [r3, #28] + 8002d96: 4a87 ldr r2, [pc, #540] @ (8002fb4 ) + 8002d98: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 8002d9c: 61d3 str r3, [r2, #28] + 8002d9e: 4b85 ldr r3, [pc, #532] @ (8002fb4 ) + 8002da0: 69db ldr r3, [r3, #28] + 8002da2: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8002da6: 60bb str r3, [r7, #8] + 8002da8: 68bb ldr r3, [r7, #8] + pwrclkchanged = SET; + 8002daa: 2301 movs r3, #1 + 8002dac: 75fb strb r3, [r7, #23] + } + + if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8002dae: 4b82 ldr r3, [pc, #520] @ (8002fb8 ) + 8002db0: 681b ldr r3, [r3, #0] + 8002db2: f403 7380 and.w r3, r3, #256 @ 0x100 + 8002db6: 2b00 cmp r3, #0 + 8002db8: d118 bne.n 8002dec + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 8002dba: 4b7f ldr r3, [pc, #508] @ (8002fb8 ) + 8002dbc: 681b ldr r3, [r3, #0] + 8002dbe: 4a7e ldr r2, [pc, #504] @ (8002fb8 ) + 8002dc0: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8002dc4: 6013 str r3, [r2, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 8002dc6: f7fd fe97 bl 8000af8 + 8002dca: 6138 str r0, [r7, #16] + + while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8002dcc: e008 b.n 8002de0 + { + if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 8002dce: f7fd fe93 bl 8000af8 + 8002dd2: 4602 mov r2, r0 + 8002dd4: 693b ldr r3, [r7, #16] + 8002dd6: 1ad3 subs r3, r2, r3 + 8002dd8: 2b64 cmp r3, #100 @ 0x64 + 8002dda: d901 bls.n 8002de0 + { + return HAL_TIMEOUT; + 8002ddc: 2303 movs r3, #3 + 8002dde: e103 b.n 8002fe8 + while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8002de0: 4b75 ldr r3, [pc, #468] @ (8002fb8 ) + 8002de2: 681b ldr r3, [r3, #0] + 8002de4: f403 7380 and.w r3, r3, #256 @ 0x100 + 8002de8: 2b00 cmp r3, #0 + 8002dea: d0f0 beq.n 8002dce + } + } + } + + /* Set the new LSE configuration -----------------------------------------*/ + __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + 8002dec: 687b ldr r3, [r7, #4] + 8002dee: 68db ldr r3, [r3, #12] + 8002df0: 2b01 cmp r3, #1 + 8002df2: d106 bne.n 8002e02 + 8002df4: 4b6f ldr r3, [pc, #444] @ (8002fb4 ) + 8002df6: 6a1b ldr r3, [r3, #32] + 8002df8: 4a6e ldr r2, [pc, #440] @ (8002fb4 ) + 8002dfa: f043 0301 orr.w r3, r3, #1 + 8002dfe: 6213 str r3, [r2, #32] + 8002e00: e02d b.n 8002e5e + 8002e02: 687b ldr r3, [r7, #4] + 8002e04: 68db ldr r3, [r3, #12] + 8002e06: 2b00 cmp r3, #0 + 8002e08: d10c bne.n 8002e24 + 8002e0a: 4b6a ldr r3, [pc, #424] @ (8002fb4 ) + 8002e0c: 6a1b ldr r3, [r3, #32] + 8002e0e: 4a69 ldr r2, [pc, #420] @ (8002fb4 ) + 8002e10: f023 0301 bic.w r3, r3, #1 + 8002e14: 6213 str r3, [r2, #32] + 8002e16: 4b67 ldr r3, [pc, #412] @ (8002fb4 ) + 8002e18: 6a1b ldr r3, [r3, #32] + 8002e1a: 4a66 ldr r2, [pc, #408] @ (8002fb4 ) + 8002e1c: f023 0304 bic.w r3, r3, #4 + 8002e20: 6213 str r3, [r2, #32] + 8002e22: e01c b.n 8002e5e + 8002e24: 687b ldr r3, [r7, #4] + 8002e26: 68db ldr r3, [r3, #12] + 8002e28: 2b05 cmp r3, #5 + 8002e2a: d10c bne.n 8002e46 + 8002e2c: 4b61 ldr r3, [pc, #388] @ (8002fb4 ) + 8002e2e: 6a1b ldr r3, [r3, #32] + 8002e30: 4a60 ldr r2, [pc, #384] @ (8002fb4 ) + 8002e32: f043 0304 orr.w r3, r3, #4 + 8002e36: 6213 str r3, [r2, #32] + 8002e38: 4b5e ldr r3, [pc, #376] @ (8002fb4 ) + 8002e3a: 6a1b ldr r3, [r3, #32] + 8002e3c: 4a5d ldr r2, [pc, #372] @ (8002fb4 ) + 8002e3e: f043 0301 orr.w r3, r3, #1 + 8002e42: 6213 str r3, [r2, #32] + 8002e44: e00b b.n 8002e5e + 8002e46: 4b5b ldr r3, [pc, #364] @ (8002fb4 ) + 8002e48: 6a1b ldr r3, [r3, #32] + 8002e4a: 4a5a ldr r2, [pc, #360] @ (8002fb4 ) + 8002e4c: f023 0301 bic.w r3, r3, #1 + 8002e50: 6213 str r3, [r2, #32] + 8002e52: 4b58 ldr r3, [pc, #352] @ (8002fb4 ) + 8002e54: 6a1b ldr r3, [r3, #32] + 8002e56: 4a57 ldr r2, [pc, #348] @ (8002fb4 ) + 8002e58: f023 0304 bic.w r3, r3, #4 + 8002e5c: 6213 str r3, [r2, #32] + /* Check the LSE State */ + if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF) + 8002e5e: 687b ldr r3, [r7, #4] + 8002e60: 68db ldr r3, [r3, #12] + 8002e62: 2b00 cmp r3, #0 + 8002e64: d015 beq.n 8002e92 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002e66: f7fd fe47 bl 8000af8 + 8002e6a: 6138 str r0, [r7, #16] + + /* Wait till LSE is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + 8002e6c: e00a b.n 8002e84 + { + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + 8002e6e: f7fd fe43 bl 8000af8 + 8002e72: 4602 mov r2, r0 + 8002e74: 693b ldr r3, [r7, #16] + 8002e76: 1ad3 subs r3, r2, r3 + 8002e78: f241 3288 movw r2, #5000 @ 0x1388 + 8002e7c: 4293 cmp r3, r2 + 8002e7e: d901 bls.n 8002e84 + { + return HAL_TIMEOUT; + 8002e80: 2303 movs r3, #3 + 8002e82: e0b1 b.n 8002fe8 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + 8002e84: 4b4b ldr r3, [pc, #300] @ (8002fb4 ) + 8002e86: 6a1b ldr r3, [r3, #32] + 8002e88: f003 0302 and.w r3, r3, #2 + 8002e8c: 2b00 cmp r3, #0 + 8002e8e: d0ee beq.n 8002e6e + 8002e90: e014 b.n 8002ebc + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002e92: f7fd fe31 bl 8000af8 + 8002e96: 6138 str r0, [r7, #16] + + /* Wait till LSE is disabled */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) + 8002e98: e00a b.n 8002eb0 + { + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + 8002e9a: f7fd fe2d bl 8000af8 + 8002e9e: 4602 mov r2, r0 + 8002ea0: 693b ldr r3, [r7, #16] + 8002ea2: 1ad3 subs r3, r2, r3 + 8002ea4: f241 3288 movw r2, #5000 @ 0x1388 + 8002ea8: 4293 cmp r3, r2 + 8002eaa: d901 bls.n 8002eb0 + { + return HAL_TIMEOUT; + 8002eac: 2303 movs r3, #3 + 8002eae: e09b b.n 8002fe8 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) + 8002eb0: 4b40 ldr r3, [pc, #256] @ (8002fb4 ) + 8002eb2: 6a1b ldr r3, [r3, #32] + 8002eb4: f003 0302 and.w r3, r3, #2 + 8002eb8: 2b00 cmp r3, #0 + 8002eba: d1ee bne.n 8002e9a + } + } + } + + /* Require to disable power clock if necessary */ + if (pwrclkchanged == SET) + 8002ebc: 7dfb ldrb r3, [r7, #23] + 8002ebe: 2b01 cmp r3, #1 + 8002ec0: d105 bne.n 8002ece + { + __HAL_RCC_PWR_CLK_DISABLE(); + 8002ec2: 4b3c ldr r3, [pc, #240] @ (8002fb4 ) + 8002ec4: 69db ldr r3, [r3, #28] + 8002ec6: 4a3b ldr r2, [pc, #236] @ (8002fb4 ) + 8002ec8: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 8002ecc: 61d3 str r3, [r2, #28] + +#endif /* RCC_CR_PLL2ON */ + /*-------------------------------- PLL Configuration -----------------------*/ + /* Check the parameters */ + assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) + 8002ece: 687b ldr r3, [r7, #4] + 8002ed0: 69db ldr r3, [r3, #28] + 8002ed2: 2b00 cmp r3, #0 + 8002ed4: f000 8087 beq.w 8002fe6 + { + /* Check if the PLL is used as system clock or not */ + if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8002ed8: 4b36 ldr r3, [pc, #216] @ (8002fb4 ) + 8002eda: 685b ldr r3, [r3, #4] + 8002edc: f003 030c and.w r3, r3, #12 + 8002ee0: 2b08 cmp r3, #8 + 8002ee2: d061 beq.n 8002fa8 + { + if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) + 8002ee4: 687b ldr r3, [r7, #4] + 8002ee6: 69db ldr r3, [r3, #28] + 8002ee8: 2b02 cmp r3, #2 + 8002eea: d146 bne.n 8002f7a + /* Check the parameters */ + assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); + assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL)); + + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 8002eec: 4b33 ldr r3, [pc, #204] @ (8002fbc ) + 8002eee: 2200 movs r2, #0 + 8002ef0: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002ef2: f7fd fe01 bl 8000af8 + 8002ef6: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) + 8002ef8: e008 b.n 8002f0c + { + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + 8002efa: f7fd fdfd bl 8000af8 + 8002efe: 4602 mov r2, r0 + 8002f00: 693b ldr r3, [r7, #16] + 8002f02: 1ad3 subs r3, r2, r3 + 8002f04: 2b02 cmp r3, #2 + 8002f06: d901 bls.n 8002f0c + { + return HAL_TIMEOUT; + 8002f08: 2303 movs r3, #3 + 8002f0a: e06d b.n 8002fe8 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) + 8002f0c: 4b29 ldr r3, [pc, #164] @ (8002fb4 ) + 8002f0e: 681b ldr r3, [r3, #0] + 8002f10: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8002f14: 2b00 cmp r3, #0 + 8002f16: d1f0 bne.n 8002efa + } + } + + /* Configure the HSE prediv factor --------------------------------*/ + /* It can be written only when the PLL is disabled. Not used in PLL source is different than HSE */ + if (RCC_OscInitStruct->PLL.PLLSource == RCC_PLLSOURCE_HSE) + 8002f18: 687b ldr r3, [r7, #4] + 8002f1a: 6a1b ldr r3, [r3, #32] + 8002f1c: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 8002f20: d108 bne.n 8002f34 + /* Set PREDIV1 source */ + SET_BIT(RCC->CFGR2, RCC_OscInitStruct->Prediv1Source); +#endif /* RCC_CFGR2_PREDIV1SRC */ + + /* Set PREDIV1 Value */ + __HAL_RCC_HSE_PREDIV_CONFIG(RCC_OscInitStruct->HSEPredivValue); + 8002f22: 4b24 ldr r3, [pc, #144] @ (8002fb4 ) + 8002f24: 685b ldr r3, [r3, #4] + 8002f26: f423 3200 bic.w r2, r3, #131072 @ 0x20000 + 8002f2a: 687b ldr r3, [r7, #4] + 8002f2c: 689b ldr r3, [r3, #8] + 8002f2e: 4921 ldr r1, [pc, #132] @ (8002fb4 ) + 8002f30: 4313 orrs r3, r2 + 8002f32: 604b str r3, [r1, #4] + } + + /* Configure the main PLL clock source and multiplication factors. */ + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + 8002f34: 4b1f ldr r3, [pc, #124] @ (8002fb4 ) + 8002f36: 685b ldr r3, [r3, #4] + 8002f38: f423 1274 bic.w r2, r3, #3997696 @ 0x3d0000 + 8002f3c: 687b ldr r3, [r7, #4] + 8002f3e: 6a19 ldr r1, [r3, #32] + 8002f40: 687b ldr r3, [r7, #4] + 8002f42: 6a5b ldr r3, [r3, #36] @ 0x24 + 8002f44: 430b orrs r3, r1 + 8002f46: 491b ldr r1, [pc, #108] @ (8002fb4 ) + 8002f48: 4313 orrs r3, r2 + 8002f4a: 604b str r3, [r1, #4] + RCC_OscInitStruct->PLL.PLLMUL); + /* Enable the main PLL. */ + __HAL_RCC_PLL_ENABLE(); + 8002f4c: 4b1b ldr r3, [pc, #108] @ (8002fbc ) + 8002f4e: 2201 movs r2, #1 + 8002f50: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002f52: f7fd fdd1 bl 8000af8 + 8002f56: 6138 str r0, [r7, #16] + + /* Wait till PLL is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) + 8002f58: e008 b.n 8002f6c + { + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + 8002f5a: f7fd fdcd bl 8000af8 + 8002f5e: 4602 mov r2, r0 + 8002f60: 693b ldr r3, [r7, #16] + 8002f62: 1ad3 subs r3, r2, r3 + 8002f64: 2b02 cmp r3, #2 + 8002f66: d901 bls.n 8002f6c + { + return HAL_TIMEOUT; + 8002f68: 2303 movs r3, #3 + 8002f6a: e03d b.n 8002fe8 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) + 8002f6c: 4b11 ldr r3, [pc, #68] @ (8002fb4 ) + 8002f6e: 681b ldr r3, [r3, #0] + 8002f70: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8002f74: 2b00 cmp r3, #0 + 8002f76: d0f0 beq.n 8002f5a + 8002f78: e035 b.n 8002fe6 + } + } + else + { + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 8002f7a: 4b10 ldr r3, [pc, #64] @ (8002fbc ) + 8002f7c: 2200 movs r2, #0 + 8002f7e: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002f80: f7fd fdba bl 8000af8 + 8002f84: 6138 str r0, [r7, #16] + + /* Wait till PLL is disabled */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) + 8002f86: e008 b.n 8002f9a + { + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + 8002f88: f7fd fdb6 bl 8000af8 + 8002f8c: 4602 mov r2, r0 + 8002f8e: 693b ldr r3, [r7, #16] + 8002f90: 1ad3 subs r3, r2, r3 + 8002f92: 2b02 cmp r3, #2 + 8002f94: d901 bls.n 8002f9a + { + return HAL_TIMEOUT; + 8002f96: 2303 movs r3, #3 + 8002f98: e026 b.n 8002fe8 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) + 8002f9a: 4b06 ldr r3, [pc, #24] @ (8002fb4 ) + 8002f9c: 681b ldr r3, [r3, #0] + 8002f9e: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8002fa2: 2b00 cmp r3, #0 + 8002fa4: d1f0 bne.n 8002f88 + 8002fa6: e01e b.n 8002fe6 + } + } + else + { + /* Check if there is a request to disable the PLL used as System clock source */ + if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) + 8002fa8: 687b ldr r3, [r7, #4] + 8002faa: 69db ldr r3, [r3, #28] + 8002fac: 2b01 cmp r3, #1 + 8002fae: d107 bne.n 8002fc0 + { + return HAL_ERROR; + 8002fb0: 2301 movs r3, #1 + 8002fb2: e019 b.n 8002fe8 + 8002fb4: 40021000 .word 0x40021000 + 8002fb8: 40007000 .word 0x40007000 + 8002fbc: 42420060 .word 0x42420060 + } + else + { + /* Do not return HAL_ERROR if request repeats the current configuration */ + pll_config = RCC->CFGR; + 8002fc0: 4b0b ldr r3, [pc, #44] @ (8002ff0 ) + 8002fc2: 685b ldr r3, [r3, #4] + 8002fc4: 60fb str r3, [r7, #12] + if ((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 8002fc6: 68fb ldr r3, [r7, #12] + 8002fc8: f403 3280 and.w r2, r3, #65536 @ 0x10000 + 8002fcc: 687b ldr r3, [r7, #4] + 8002fce: 6a1b ldr r3, [r3, #32] + 8002fd0: 429a cmp r2, r3 + 8002fd2: d106 bne.n 8002fe2 + (READ_BIT(pll_config, RCC_CFGR_PLLMULL) != RCC_OscInitStruct->PLL.PLLMUL)) + 8002fd4: 68fb ldr r3, [r7, #12] + 8002fd6: f403 1270 and.w r2, r3, #3932160 @ 0x3c0000 + 8002fda: 687b ldr r3, [r7, #4] + 8002fdc: 6a5b ldr r3, [r3, #36] @ 0x24 + if ((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 8002fde: 429a cmp r2, r3 + 8002fe0: d001 beq.n 8002fe6 + { + return HAL_ERROR; + 8002fe2: 2301 movs r3, #1 + 8002fe4: e000 b.n 8002fe8 + } + } + } + } + + return HAL_OK; + 8002fe6: 2300 movs r3, #0 +} + 8002fe8: 4618 mov r0, r3 + 8002fea: 3718 adds r7, #24 + 8002fec: 46bd mov sp, r7 + 8002fee: bd80 pop {r7, pc} + 8002ff0: 40021000 .word 0x40021000 + +08002ff4 : + * You can use @ref HAL_RCC_GetClockConfig() function to know which clock is + * currently used as system clock source. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) +{ + 8002ff4: b580 push {r7, lr} + 8002ff6: b084 sub sp, #16 + 8002ff8: af00 add r7, sp, #0 + 8002ffa: 6078 str r0, [r7, #4] + 8002ffc: 6039 str r1, [r7, #0] + uint32_t tickstart; + + /* Check Null pointer */ + if (RCC_ClkInitStruct == NULL) + 8002ffe: 687b ldr r3, [r7, #4] + 8003000: 2b00 cmp r3, #0 + 8003002: d101 bne.n 8003008 + { + return HAL_ERROR; + 8003004: 2301 movs r3, #1 + 8003006: e0d0 b.n 80031aa + must be correctly programmed according to the frequency of the CPU clock + (HCLK) of the device. */ + +#if defined(FLASH_ACR_LATENCY) + /* Increasing the number of wait states because of higher CPU frequency */ + if (FLatency > __HAL_FLASH_GET_LATENCY()) + 8003008: 4b6a ldr r3, [pc, #424] @ (80031b4 ) + 800300a: 681b ldr r3, [r3, #0] + 800300c: f003 0307 and.w r3, r3, #7 + 8003010: 683a ldr r2, [r7, #0] + 8003012: 429a cmp r2, r3 + 8003014: d910 bls.n 8003038 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 8003016: 4b67 ldr r3, [pc, #412] @ (80031b4 ) + 8003018: 681b ldr r3, [r3, #0] + 800301a: f023 0207 bic.w r2, r3, #7 + 800301e: 4965 ldr r1, [pc, #404] @ (80031b4 ) + 8003020: 683b ldr r3, [r7, #0] + 8003022: 4313 orrs r3, r2 + 8003024: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if (__HAL_FLASH_GET_LATENCY() != FLatency) + 8003026: 4b63 ldr r3, [pc, #396] @ (80031b4 ) + 8003028: 681b ldr r3, [r3, #0] + 800302a: f003 0307 and.w r3, r3, #7 + 800302e: 683a ldr r2, [r7, #0] + 8003030: 429a cmp r2, r3 + 8003032: d001 beq.n 8003038 + { + return HAL_ERROR; + 8003034: 2301 movs r3, #1 + 8003036: e0b8 b.n 80031aa + } +} + +#endif /* FLASH_ACR_LATENCY */ +/*-------------------------- HCLK Configuration --------------------------*/ +if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + 8003038: 687b ldr r3, [r7, #4] + 800303a: 681b ldr r3, [r3, #0] + 800303c: f003 0302 and.w r3, r3, #2 + 8003040: 2b00 cmp r3, #0 + 8003042: d020 beq.n 8003086 + { + /* 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) + 8003044: 687b ldr r3, [r7, #4] + 8003046: 681b ldr r3, [r3, #0] + 8003048: f003 0304 and.w r3, r3, #4 + 800304c: 2b00 cmp r3, #0 + 800304e: d005 beq.n 800305c + { + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16); + 8003050: 4b59 ldr r3, [pc, #356] @ (80031b8 ) + 8003052: 685b ldr r3, [r3, #4] + 8003054: 4a58 ldr r2, [pc, #352] @ (80031b8 ) + 8003056: f443 63e0 orr.w r3, r3, #1792 @ 0x700 + 800305a: 6053 str r3, [r2, #4] + } + + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 800305c: 687b ldr r3, [r7, #4] + 800305e: 681b ldr r3, [r3, #0] + 8003060: f003 0308 and.w r3, r3, #8 + 8003064: 2b00 cmp r3, #0 + 8003066: d005 beq.n 8003074 + { + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3)); + 8003068: 4b53 ldr r3, [pc, #332] @ (80031b8 ) + 800306a: 685b ldr r3, [r3, #4] + 800306c: 4a52 ldr r2, [pc, #328] @ (80031b8 ) + 800306e: f443 5360 orr.w r3, r3, #14336 @ 0x3800 + 8003072: 6053 str r3, [r2, #4] + } + + /* Set the new HCLK clock divider */ + assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + 8003074: 4b50 ldr r3, [pc, #320] @ (80031b8 ) + 8003076: 685b ldr r3, [r3, #4] + 8003078: f023 02f0 bic.w r2, r3, #240 @ 0xf0 + 800307c: 687b ldr r3, [r7, #4] + 800307e: 689b ldr r3, [r3, #8] + 8003080: 494d ldr r1, [pc, #308] @ (80031b8 ) + 8003082: 4313 orrs r3, r2 + 8003084: 604b str r3, [r1, #4] + } + + /*------------------------- SYSCLK Configuration ---------------------------*/ + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + 8003086: 687b ldr r3, [r7, #4] + 8003088: 681b ldr r3, [r3, #0] + 800308a: f003 0301 and.w r3, r3, #1 + 800308e: 2b00 cmp r3, #0 + 8003090: d040 beq.n 8003114 + { + assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + + /* HSE is selected as System Clock Source */ + if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 8003092: 687b ldr r3, [r7, #4] + 8003094: 685b ldr r3, [r3, #4] + 8003096: 2b01 cmp r3, #1 + 8003098: d107 bne.n 80030aa + { + /* Check the HSE ready flag */ + if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) + 800309a: 4b47 ldr r3, [pc, #284] @ (80031b8 ) + 800309c: 681b ldr r3, [r3, #0] + 800309e: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80030a2: 2b00 cmp r3, #0 + 80030a4: d115 bne.n 80030d2 + { + return HAL_ERROR; + 80030a6: 2301 movs r3, #1 + 80030a8: e07f b.n 80031aa + } + } + /* PLL is selected as System Clock Source */ + else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 80030aa: 687b ldr r3, [r7, #4] + 80030ac: 685b ldr r3, [r3, #4] + 80030ae: 2b02 cmp r3, #2 + 80030b0: d107 bne.n 80030c2 + { + /* Check the PLL ready flag */ + if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) + 80030b2: 4b41 ldr r3, [pc, #260] @ (80031b8 ) + 80030b4: 681b ldr r3, [r3, #0] + 80030b6: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80030ba: 2b00 cmp r3, #0 + 80030bc: d109 bne.n 80030d2 + { + return HAL_ERROR; + 80030be: 2301 movs r3, #1 + 80030c0: e073 b.n 80031aa + } + /* HSI is selected as System Clock Source */ + else + { + /* Check the HSI ready flag */ + if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) + 80030c2: 4b3d ldr r3, [pc, #244] @ (80031b8 ) + 80030c4: 681b ldr r3, [r3, #0] + 80030c6: f003 0302 and.w r3, r3, #2 + 80030ca: 2b00 cmp r3, #0 + 80030cc: d101 bne.n 80030d2 + { + return HAL_ERROR; + 80030ce: 2301 movs r3, #1 + 80030d0: e06b b.n 80031aa + } + } + __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); + 80030d2: 4b39 ldr r3, [pc, #228] @ (80031b8 ) + 80030d4: 685b ldr r3, [r3, #4] + 80030d6: f023 0203 bic.w r2, r3, #3 + 80030da: 687b ldr r3, [r7, #4] + 80030dc: 685b ldr r3, [r3, #4] + 80030de: 4936 ldr r1, [pc, #216] @ (80031b8 ) + 80030e0: 4313 orrs r3, r2 + 80030e2: 604b str r3, [r1, #4] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80030e4: f7fd fd08 bl 8000af8 + 80030e8: 60f8 str r0, [r7, #12] + + while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) + 80030ea: e00a b.n 8003102 + { + if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + 80030ec: f7fd fd04 bl 8000af8 + 80030f0: 4602 mov r2, r0 + 80030f2: 68fb ldr r3, [r7, #12] + 80030f4: 1ad3 subs r3, r2, r3 + 80030f6: f241 3288 movw r2, #5000 @ 0x1388 + 80030fa: 4293 cmp r3, r2 + 80030fc: d901 bls.n 8003102 + { + return HAL_TIMEOUT; + 80030fe: 2303 movs r3, #3 + 8003100: e053 b.n 80031aa + while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) + 8003102: 4b2d ldr r3, [pc, #180] @ (80031b8 ) + 8003104: 685b ldr r3, [r3, #4] + 8003106: f003 020c and.w r2, r3, #12 + 800310a: 687b ldr r3, [r7, #4] + 800310c: 685b ldr r3, [r3, #4] + 800310e: 009b lsls r3, r3, #2 + 8003110: 429a cmp r2, r3 + 8003112: d1eb bne.n 80030ec + } + } + +#if defined(FLASH_ACR_LATENCY) + /* Decreasing the number of wait states because of lower CPU frequency */ + if (FLatency < __HAL_FLASH_GET_LATENCY()) + 8003114: 4b27 ldr r3, [pc, #156] @ (80031b4 ) + 8003116: 681b ldr r3, [r3, #0] + 8003118: f003 0307 and.w r3, r3, #7 + 800311c: 683a ldr r2, [r7, #0] + 800311e: 429a cmp r2, r3 + 8003120: d210 bcs.n 8003144 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 8003122: 4b24 ldr r3, [pc, #144] @ (80031b4 ) + 8003124: 681b ldr r3, [r3, #0] + 8003126: f023 0207 bic.w r2, r3, #7 + 800312a: 4922 ldr r1, [pc, #136] @ (80031b4 ) + 800312c: 683b ldr r3, [r7, #0] + 800312e: 4313 orrs r3, r2 + 8003130: 600b str r3, [r1, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if (__HAL_FLASH_GET_LATENCY() != FLatency) + 8003132: 4b20 ldr r3, [pc, #128] @ (80031b4 ) + 8003134: 681b ldr r3, [r3, #0] + 8003136: f003 0307 and.w r3, r3, #7 + 800313a: 683a ldr r2, [r7, #0] + 800313c: 429a cmp r2, r3 + 800313e: d001 beq.n 8003144 + { + return HAL_ERROR; + 8003140: 2301 movs r3, #1 + 8003142: e032 b.n 80031aa + } +} +#endif /* FLASH_ACR_LATENCY */ + +/*-------------------------- PCLK1 Configuration ---------------------------*/ +if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + 8003144: 687b ldr r3, [r7, #4] + 8003146: 681b ldr r3, [r3, #0] + 8003148: f003 0304 and.w r3, r3, #4 + 800314c: 2b00 cmp r3, #0 + 800314e: d008 beq.n 8003162 + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + 8003150: 4b19 ldr r3, [pc, #100] @ (80031b8 ) + 8003152: 685b ldr r3, [r3, #4] + 8003154: f423 62e0 bic.w r2, r3, #1792 @ 0x700 + 8003158: 687b ldr r3, [r7, #4] + 800315a: 68db ldr r3, [r3, #12] + 800315c: 4916 ldr r1, [pc, #88] @ (80031b8 ) + 800315e: 4313 orrs r3, r2 + 8003160: 604b str r3, [r1, #4] + } + + /*-------------------------- PCLK2 Configuration ---------------------------*/ + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 8003162: 687b ldr r3, [r7, #4] + 8003164: 681b ldr r3, [r3, #0] + 8003166: f003 0308 and.w r3, r3, #8 + 800316a: 2b00 cmp r3, #0 + 800316c: d009 beq.n 8003182 + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3)); + 800316e: 4b12 ldr r3, [pc, #72] @ (80031b8 ) + 8003170: 685b ldr r3, [r3, #4] + 8003172: f423 5260 bic.w r2, r3, #14336 @ 0x3800 + 8003176: 687b ldr r3, [r7, #4] + 8003178: 691b ldr r3, [r3, #16] + 800317a: 00db lsls r3, r3, #3 + 800317c: 490e ldr r1, [pc, #56] @ (80031b8 ) + 800317e: 4313 orrs r3, r2 + 8003180: 604b str r3, [r1, #4] + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]; + 8003182: f000 f821 bl 80031c8 + 8003186: 4602 mov r2, r0 + 8003188: 4b0b ldr r3, [pc, #44] @ (80031b8 ) + 800318a: 685b ldr r3, [r3, #4] + 800318c: 091b lsrs r3, r3, #4 + 800318e: f003 030f and.w r3, r3, #15 + 8003192: 490a ldr r1, [pc, #40] @ (80031bc ) + 8003194: 5ccb ldrb r3, [r1, r3] + 8003196: fa22 f303 lsr.w r3, r2, r3 + 800319a: 4a09 ldr r2, [pc, #36] @ (80031c0 ) + 800319c: 6013 str r3, [r2, #0] + + /* Configure the source of time base considering new system clocks settings*/ + HAL_InitTick(uwTickPrio); + 800319e: 4b09 ldr r3, [pc, #36] @ (80031c4 ) + 80031a0: 681b ldr r3, [r3, #0] + 80031a2: 4618 mov r0, r3 + 80031a4: f7fd fc66 bl 8000a74 + + return HAL_OK; + 80031a8: 2300 movs r3, #0 +} + 80031aa: 4618 mov r0, r3 + 80031ac: 3710 adds r7, #16 + 80031ae: 46bd mov sp, r7 + 80031b0: bd80 pop {r7, pc} + 80031b2: bf00 nop + 80031b4: 40022000 .word 0x40022000 + 80031b8: 40021000 .word 0x40021000 + 80031bc: 080091e4 .word 0x080091e4 + 80031c0: 20000000 .word 0x20000000 + 80031c4: 20000004 .word 0x20000004 + +080031c8 : + * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * @retval SYSCLK frequency + */ +uint32_t HAL_RCC_GetSysClockFreq(void) +{ + 80031c8: b480 push {r7} + 80031ca: b087 sub sp, #28 + 80031cc: af00 add r7, sp, #0 +#else + static const uint8_t aPredivFactorTable[2U] = {1, 2}; +#endif /*RCC_CFGR2_PREDIV1*/ + +#endif + uint32_t tmpreg = 0U, prediv = 0U, pllclk = 0U, pllmul = 0U; + 80031ce: 2300 movs r3, #0 + 80031d0: 60fb str r3, [r7, #12] + 80031d2: 2300 movs r3, #0 + 80031d4: 60bb str r3, [r7, #8] + 80031d6: 2300 movs r3, #0 + 80031d8: 617b str r3, [r7, #20] + 80031da: 2300 movs r3, #0 + 80031dc: 607b str r3, [r7, #4] + uint32_t sysclockfreq = 0U; + 80031de: 2300 movs r3, #0 + 80031e0: 613b str r3, [r7, #16] +#if defined(RCC_CFGR2_PREDIV1SRC) + uint32_t prediv2 = 0U, pll2mul = 0U; +#endif /*RCC_CFGR2_PREDIV1SRC*/ + + tmpreg = RCC->CFGR; + 80031e2: 4b1e ldr r3, [pc, #120] @ (800325c ) + 80031e4: 685b ldr r3, [r3, #4] + 80031e6: 60fb str r3, [r7, #12] + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (tmpreg & RCC_CFGR_SWS) + 80031e8: 68fb ldr r3, [r7, #12] + 80031ea: f003 030c and.w r3, r3, #12 + 80031ee: 2b04 cmp r3, #4 + 80031f0: d002 beq.n 80031f8 + 80031f2: 2b08 cmp r3, #8 + 80031f4: d003 beq.n 80031fe + 80031f6: e027 b.n 8003248 + { + case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ + { + sysclockfreq = HSE_VALUE; + 80031f8: 4b19 ldr r3, [pc, #100] @ (8003260 ) + 80031fa: 613b str r3, [r7, #16] + break; + 80031fc: e027 b.n 800324e + } + case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ + { + pllmul = aPLLMULFactorTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMULL) >> RCC_CFGR_PLLMULL_Pos]; + 80031fe: 68fb ldr r3, [r7, #12] + 8003200: 0c9b lsrs r3, r3, #18 + 8003202: f003 030f and.w r3, r3, #15 + 8003206: 4a17 ldr r2, [pc, #92] @ (8003264 ) + 8003208: 5cd3 ldrb r3, [r2, r3] + 800320a: 607b str r3, [r7, #4] + if ((tmpreg & RCC_CFGR_PLLSRC) != RCC_PLLSOURCE_HSI_DIV2) + 800320c: 68fb ldr r3, [r7, #12] + 800320e: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8003212: 2b00 cmp r3, #0 + 8003214: d010 beq.n 8003238 + { +#if defined(RCC_CFGR2_PREDIV1) + prediv = aPredivFactorTable[(uint32_t)(RCC->CFGR2 & RCC_CFGR2_PREDIV1) >> RCC_CFGR2_PREDIV1_Pos]; +#else + prediv = aPredivFactorTable[(uint32_t)(RCC->CFGR & RCC_CFGR_PLLXTPRE) >> RCC_CFGR_PLLXTPRE_Pos]; + 8003216: 4b11 ldr r3, [pc, #68] @ (800325c ) + 8003218: 685b ldr r3, [r3, #4] + 800321a: 0c5b lsrs r3, r3, #17 + 800321c: f003 0301 and.w r3, r3, #1 + 8003220: 4a11 ldr r2, [pc, #68] @ (8003268 ) + 8003222: 5cd3 ldrb r3, [r2, r3] + 8003224: 60bb str r3, [r7, #8] + { + pllclk = pllclk / 2; + } +#else + /* HSE used as PLL clock source : PLLCLK = HSE/PREDIV1 * PLLMUL */ + pllclk = (uint32_t)((HSE_VALUE * pllmul) / prediv); + 8003226: 687b ldr r3, [r7, #4] + 8003228: 4a0d ldr r2, [pc, #52] @ (8003260 ) + 800322a: fb03 f202 mul.w r2, r3, r2 + 800322e: 68bb ldr r3, [r7, #8] + 8003230: fbb2 f3f3 udiv r3, r2, r3 + 8003234: 617b str r3, [r7, #20] + 8003236: e004 b.n 8003242 +#endif /*RCC_CFGR2_PREDIV1SRC*/ + } + else + { + /* HSI used as PLL clock source : PLLCLK = HSI/2 * PLLMUL */ + pllclk = (uint32_t)((HSI_VALUE >> 1) * pllmul); + 8003238: 687b ldr r3, [r7, #4] + 800323a: 4a0c ldr r2, [pc, #48] @ (800326c ) + 800323c: fb02 f303 mul.w r3, r2, r3 + 8003240: 617b str r3, [r7, #20] + } + sysclockfreq = pllclk; + 8003242: 697b ldr r3, [r7, #20] + 8003244: 613b str r3, [r7, #16] + break; + 8003246: e002 b.n 800324e + } + case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + default: /* HSI used as system clock */ + { + sysclockfreq = HSI_VALUE; + 8003248: 4b05 ldr r3, [pc, #20] @ (8003260 ) + 800324a: 613b str r3, [r7, #16] + break; + 800324c: bf00 nop + } + } + return sysclockfreq; + 800324e: 693b ldr r3, [r7, #16] +} + 8003250: 4618 mov r0, r3 + 8003252: 371c adds r7, #28 + 8003254: 46bd mov sp, r7 + 8003256: bc80 pop {r7} + 8003258: 4770 bx lr + 800325a: bf00 nop + 800325c: 40021000 .word 0x40021000 + 8003260: 007a1200 .word 0x007a1200 + 8003264: 080091f4 .word 0x080091f4 + 8003268: 08009204 .word 0x08009204 + 800326c: 003d0900 .word 0x003d0900 + +08003270 : + * @brief This function provides delay (in milliseconds) based on CPU cycles method. + * @param mdelay: specifies the delay time length, in milliseconds. + * @retval None + */ +static void RCC_Delay(uint32_t mdelay) +{ + 8003270: b480 push {r7} + 8003272: b085 sub sp, #20 + 8003274: af00 add r7, sp, #0 + 8003276: 6078 str r0, [r7, #4] + __IO uint32_t Delay = mdelay * (SystemCoreClock / 8U / 1000U); + 8003278: 4b0a ldr r3, [pc, #40] @ (80032a4 ) + 800327a: 681b ldr r3, [r3, #0] + 800327c: 4a0a ldr r2, [pc, #40] @ (80032a8 ) + 800327e: fba2 2303 umull r2, r3, r2, r3 + 8003282: 0a5b lsrs r3, r3, #9 + 8003284: 687a ldr r2, [r7, #4] + 8003286: fb02 f303 mul.w r3, r2, r3 + 800328a: 60fb str r3, [r7, #12] + do + { + __NOP(); + 800328c: bf00 nop + } + while (Delay --); + 800328e: 68fb ldr r3, [r7, #12] + 8003290: 1e5a subs r2, r3, #1 + 8003292: 60fa str r2, [r7, #12] + 8003294: 2b00 cmp r3, #0 + 8003296: d1f9 bne.n 800328c +} + 8003298: bf00 nop + 800329a: bf00 nop + 800329c: 3714 adds r7, #20 + 800329e: 46bd mov sp, r7 + 80032a0: bc80 pop {r7} + 80032a2: 4770 bx lr + 80032a4: 20000000 .word 0x20000000 + 80032a8: 10624dd3 .word 0x10624dd3 + +080032ac : + * manually disable it. + * + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) +{ + 80032ac: b580 push {r7, lr} + 80032ae: b086 sub sp, #24 + 80032b0: af00 add r7, sp, #0 + 80032b2: 6078 str r0, [r7, #4] + uint32_t tickstart = 0U, temp_reg = 0U; + 80032b4: 2300 movs r3, #0 + 80032b6: 613b str r3, [r7, #16] + 80032b8: 2300 movs r3, #0 + 80032ba: 60fb str r3, [r7, #12] + + /* Check the parameters */ + assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); + + /*------------------------------- RTC/LCD Configuration ------------------------*/ + if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) + 80032bc: 687b ldr r3, [r7, #4] + 80032be: 681b ldr r3, [r3, #0] + 80032c0: f003 0301 and.w r3, r3, #1 + 80032c4: 2b00 cmp r3, #0 + 80032c6: d07d beq.n 80033c4 + { + FlagStatus pwrclkchanged = RESET; + 80032c8: 2300 movs r3, #0 + 80032ca: 75fb strb r3, [r7, #23] + assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); + + /* As soon as function is called to change RTC clock source, activation of the + power domain is done. */ + /* Requires to enable write access to Backup Domain of necessary */ + if (__HAL_RCC_PWR_IS_CLK_DISABLED()) + 80032cc: 4b4f ldr r3, [pc, #316] @ (800340c ) + 80032ce: 69db ldr r3, [r3, #28] + 80032d0: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80032d4: 2b00 cmp r3, #0 + 80032d6: d10d bne.n 80032f4 + { + __HAL_RCC_PWR_CLK_ENABLE(); + 80032d8: 4b4c ldr r3, [pc, #304] @ (800340c ) + 80032da: 69db ldr r3, [r3, #28] + 80032dc: 4a4b ldr r2, [pc, #300] @ (800340c ) + 80032de: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 80032e2: 61d3 str r3, [r2, #28] + 80032e4: 4b49 ldr r3, [pc, #292] @ (800340c ) + 80032e6: 69db ldr r3, [r3, #28] + 80032e8: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80032ec: 60bb str r3, [r7, #8] + 80032ee: 68bb ldr r3, [r7, #8] + pwrclkchanged = SET; + 80032f0: 2301 movs r3, #1 + 80032f2: 75fb strb r3, [r7, #23] + } + + if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80032f4: 4b46 ldr r3, [pc, #280] @ (8003410 ) + 80032f6: 681b ldr r3, [r3, #0] + 80032f8: f403 7380 and.w r3, r3, #256 @ 0x100 + 80032fc: 2b00 cmp r3, #0 + 80032fe: d118 bne.n 8003332 + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 8003300: 4b43 ldr r3, [pc, #268] @ (8003410 ) + 8003302: 681b ldr r3, [r3, #0] + 8003304: 4a42 ldr r2, [pc, #264] @ (8003410 ) + 8003306: f443 7380 orr.w r3, r3, #256 @ 0x100 + 800330a: 6013 str r3, [r2, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 800330c: f7fd fbf4 bl 8000af8 + 8003310: 6138 str r0, [r7, #16] + + while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8003312: e008 b.n 8003326 + { + if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 8003314: f7fd fbf0 bl 8000af8 + 8003318: 4602 mov r2, r0 + 800331a: 693b ldr r3, [r7, #16] + 800331c: 1ad3 subs r3, r2, r3 + 800331e: 2b64 cmp r3, #100 @ 0x64 + 8003320: d901 bls.n 8003326 + { + return HAL_TIMEOUT; + 8003322: 2303 movs r3, #3 + 8003324: e06d b.n 8003402 + while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8003326: 4b3a ldr r3, [pc, #232] @ (8003410 ) + 8003328: 681b ldr r3, [r3, #0] + 800332a: f403 7380 and.w r3, r3, #256 @ 0x100 + 800332e: 2b00 cmp r3, #0 + 8003330: d0f0 beq.n 8003314 + } + } + } + + /* Reset the Backup domain only if the RTC Clock source selection is modified from reset value */ + temp_reg = (RCC->BDCR & RCC_BDCR_RTCSEL); + 8003332: 4b36 ldr r3, [pc, #216] @ (800340c ) + 8003334: 6a1b ldr r3, [r3, #32] + 8003336: f403 7340 and.w r3, r3, #768 @ 0x300 + 800333a: 60fb str r3, [r7, #12] + if ((temp_reg != 0x00000000U) && (temp_reg != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL))) + 800333c: 68fb ldr r3, [r7, #12] + 800333e: 2b00 cmp r3, #0 + 8003340: d02e beq.n 80033a0 + 8003342: 687b ldr r3, [r7, #4] + 8003344: 685b ldr r3, [r3, #4] + 8003346: f403 7340 and.w r3, r3, #768 @ 0x300 + 800334a: 68fa ldr r2, [r7, #12] + 800334c: 429a cmp r2, r3 + 800334e: d027 beq.n 80033a0 + { + /* Store the content of BDCR register before the reset of Backup Domain */ + temp_reg = (RCC->BDCR & ~(RCC_BDCR_RTCSEL)); + 8003350: 4b2e ldr r3, [pc, #184] @ (800340c ) + 8003352: 6a1b ldr r3, [r3, #32] + 8003354: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8003358: 60fb str r3, [r7, #12] + /* RTC Clock selection can be changed only if the Backup Domain is reset */ + __HAL_RCC_BACKUPRESET_FORCE(); + 800335a: 4b2e ldr r3, [pc, #184] @ (8003414 ) + 800335c: 2201 movs r2, #1 + 800335e: 601a str r2, [r3, #0] + __HAL_RCC_BACKUPRESET_RELEASE(); + 8003360: 4b2c ldr r3, [pc, #176] @ (8003414 ) + 8003362: 2200 movs r2, #0 + 8003364: 601a str r2, [r3, #0] + /* Restore the Content of BDCR register */ + RCC->BDCR = temp_reg; + 8003366: 4a29 ldr r2, [pc, #164] @ (800340c ) + 8003368: 68fb ldr r3, [r7, #12] + 800336a: 6213 str r3, [r2, #32] + + /* Wait for LSERDY if LSE was enabled */ + if (HAL_IS_BIT_SET(temp_reg, RCC_BDCR_LSEON)) + 800336c: 68fb ldr r3, [r7, #12] + 800336e: f003 0301 and.w r3, r3, #1 + 8003372: 2b00 cmp r3, #0 + 8003374: d014 beq.n 80033a0 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8003376: f7fd fbbf bl 8000af8 + 800337a: 6138 str r0, [r7, #16] + + /* Wait till LSE is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + 800337c: e00a b.n 8003394 + { + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + 800337e: f7fd fbbb bl 8000af8 + 8003382: 4602 mov r2, r0 + 8003384: 693b ldr r3, [r7, #16] + 8003386: 1ad3 subs r3, r2, r3 + 8003388: f241 3288 movw r2, #5000 @ 0x1388 + 800338c: 4293 cmp r3, r2 + 800338e: d901 bls.n 8003394 + { + return HAL_TIMEOUT; + 8003390: 2303 movs r3, #3 + 8003392: e036 b.n 8003402 + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + 8003394: 4b1d ldr r3, [pc, #116] @ (800340c ) + 8003396: 6a1b ldr r3, [r3, #32] + 8003398: f003 0302 and.w r3, r3, #2 + 800339c: 2b00 cmp r3, #0 + 800339e: d0ee beq.n 800337e + } + } + } + } + __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); + 80033a0: 4b1a ldr r3, [pc, #104] @ (800340c ) + 80033a2: 6a1b ldr r3, [r3, #32] + 80033a4: f423 7240 bic.w r2, r3, #768 @ 0x300 + 80033a8: 687b ldr r3, [r7, #4] + 80033aa: 685b ldr r3, [r3, #4] + 80033ac: 4917 ldr r1, [pc, #92] @ (800340c ) + 80033ae: 4313 orrs r3, r2 + 80033b0: 620b str r3, [r1, #32] + + /* Require to disable power clock if necessary */ + if (pwrclkchanged == SET) + 80033b2: 7dfb ldrb r3, [r7, #23] + 80033b4: 2b01 cmp r3, #1 + 80033b6: d105 bne.n 80033c4 + { + __HAL_RCC_PWR_CLK_DISABLE(); + 80033b8: 4b14 ldr r3, [pc, #80] @ (800340c ) + 80033ba: 69db ldr r3, [r3, #28] + 80033bc: 4a13 ldr r2, [pc, #76] @ (800340c ) + 80033be: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 80033c2: 61d3 str r3, [r2, #28] + } + } + + /*------------------------------ ADC clock Configuration ------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) + 80033c4: 687b ldr r3, [r7, #4] + 80033c6: 681b ldr r3, [r3, #0] + 80033c8: f003 0302 and.w r3, r3, #2 + 80033cc: 2b00 cmp r3, #0 + 80033ce: d008 beq.n 80033e2 + { + /* Check the parameters */ + assert_param(IS_RCC_ADCPLLCLK_DIV(PeriphClkInit->AdcClockSelection)); + + /* Configure the ADC clock source */ + __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection); + 80033d0: 4b0e ldr r3, [pc, #56] @ (800340c ) + 80033d2: 685b ldr r3, [r3, #4] + 80033d4: f423 4240 bic.w r2, r3, #49152 @ 0xc000 + 80033d8: 687b ldr r3, [r7, #4] + 80033da: 689b ldr r3, [r3, #8] + 80033dc: 490b ldr r1, [pc, #44] @ (800340c ) + 80033de: 4313 orrs r3, r2 + 80033e0: 604b str r3, [r1, #4] + +#if defined(STM32F102x6) || defined(STM32F102xB) || defined(STM32F103x6)\ + || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)\ + || defined(STM32F105xC) || defined(STM32F107xC) + /*------------------------------ USB clock Configuration ------------------*/ + if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USB) == RCC_PERIPHCLK_USB) + 80033e2: 687b ldr r3, [r7, #4] + 80033e4: 681b ldr r3, [r3, #0] + 80033e6: f003 0310 and.w r3, r3, #16 + 80033ea: 2b00 cmp r3, #0 + 80033ec: d008 beq.n 8003400 + { + /* Check the parameters */ + assert_param(IS_RCC_USBPLLCLK_DIV(PeriphClkInit->UsbClockSelection)); + + /* Configure the USB clock source */ + __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection); + 80033ee: 4b07 ldr r3, [pc, #28] @ (800340c ) + 80033f0: 685b ldr r3, [r3, #4] + 80033f2: f423 0280 bic.w r2, r3, #4194304 @ 0x400000 + 80033f6: 687b ldr r3, [r7, #4] + 80033f8: 68db ldr r3, [r3, #12] + 80033fa: 4904 ldr r1, [pc, #16] @ (800340c ) + 80033fc: 4313 orrs r3, r2 + 80033fe: 604b str r3, [r1, #4] + } +#endif /* STM32F102x6 || STM32F102xB || STM32F103x6 || STM32F103xB || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */ + + return HAL_OK; + 8003400: 2300 movs r3, #0 +} + 8003402: 4618 mov r0, r3 + 8003404: 3718 adds r7, #24 + 8003406: 46bd mov sp, r7 + 8003408: bd80 pop {r7, pc} + 800340a: bf00 nop + 800340c: 40021000 .word 0x40021000 + 8003410: 40007000 .word 0x40007000 + 8003414: 42420440 .word 0x42420440 + +08003418 : + * 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) +{ + 8003418: b580 push {r7, lr} + 800341a: b082 sub sp, #8 + 800341c: af00 add r7, sp, #0 + 800341e: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 8003420: 687b ldr r3, [r7, #4] + 8003422: 2b00 cmp r3, #0 + 8003424: d101 bne.n 800342a + { + return HAL_ERROR; + 8003426: 2301 movs r3, #1 + 8003428: e041 b.n 80034ae + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 800342a: 687b ldr r3, [r7, #4] + 800342c: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8003430: b2db uxtb r3, r3 + 8003432: 2b00 cmp r3, #0 + 8003434: d106 bne.n 8003444 + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 8003436: 687b ldr r3, [r7, #4] + 8003438: 2200 movs r2, #0 + 800343a: 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); + 800343e: 6878 ldr r0, [r7, #4] + 8003440: f7fd f99e bl 8000780 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 8003444: 687b ldr r3, [r7, #4] + 8003446: 2202 movs r2, #2 + 8003448: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Set the Time Base configuration */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 800344c: 687b ldr r3, [r7, #4] + 800344e: 681a ldr r2, [r3, #0] + 8003450: 687b ldr r3, [r7, #4] + 8003452: 3304 adds r3, #4 + 8003454: 4619 mov r1, r3 + 8003456: 4610 mov r0, r2 + 8003458: f000 fab2 bl 80039c0 + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 800345c: 687b ldr r3, [r7, #4] + 800345e: 2201 movs r2, #1 + 8003460: f883 2046 strb.w r2, [r3, #70] @ 0x46 + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8003464: 687b ldr r3, [r7, #4] + 8003466: 2201 movs r2, #1 + 8003468: f883 203e strb.w r2, [r3, #62] @ 0x3e + 800346c: 687b ldr r3, [r7, #4] + 800346e: 2201 movs r2, #1 + 8003470: f883 203f strb.w r2, [r3, #63] @ 0x3f + 8003474: 687b ldr r3, [r7, #4] + 8003476: 2201 movs r2, #1 + 8003478: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 800347c: 687b ldr r3, [r7, #4] + 800347e: 2201 movs r2, #1 + 8003480: f883 2041 strb.w r2, [r3, #65] @ 0x41 + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8003484: 687b ldr r3, [r7, #4] + 8003486: 2201 movs r2, #1 + 8003488: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 800348c: 687b ldr r3, [r7, #4] + 800348e: 2201 movs r2, #1 + 8003490: f883 2043 strb.w r2, [r3, #67] @ 0x43 + 8003494: 687b ldr r3, [r7, #4] + 8003496: 2201 movs r2, #1 + 8003498: f883 2044 strb.w r2, [r3, #68] @ 0x44 + 800349c: 687b ldr r3, [r7, #4] + 800349e: 2201 movs r2, #1 + 80034a0: f883 2045 strb.w r2, [r3, #69] @ 0x45 + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 80034a4: 687b ldr r3, [r7, #4] + 80034a6: 2201 movs r2, #1 + 80034a8: f883 203d strb.w r2, [r3, #61] @ 0x3d + + return HAL_OK; + 80034ac: 2300 movs r3, #0 +} + 80034ae: 4618 mov r0, r3 + 80034b0: 3708 adds r7, #8 + 80034b2: 46bd mov sp, r7 + 80034b4: bd80 pop {r7, pc} + +080034b6 : + * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init() + * @param htim TIM PWM handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim) +{ + 80034b6: b580 push {r7, lr} + 80034b8: b082 sub sp, #8 + 80034ba: af00 add r7, sp, #0 + 80034bc: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 80034be: 687b ldr r3, [r7, #4] + 80034c0: 2b00 cmp r3, #0 + 80034c2: d101 bne.n 80034c8 + { + return HAL_ERROR; + 80034c4: 2301 movs r3, #1 + 80034c6: e041 b.n 800354c + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim->Init.Period)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 80034c8: 687b ldr r3, [r7, #4] + 80034ca: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 80034ce: b2db uxtb r3, r3 + 80034d0: 2b00 cmp r3, #0 + 80034d2: d106 bne.n 80034e2 + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 80034d4: 687b ldr r3, [r7, #4] + 80034d6: 2200 movs r2, #0 + 80034d8: f883 203c strb.w r2, [r3, #60] @ 0x3c + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->PWM_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_PWM_MspInit(htim); + 80034dc: 6878 ldr r0, [r7, #4] + 80034de: f000 f839 bl 8003554 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 80034e2: 687b ldr r3, [r7, #4] + 80034e4: 2202 movs r2, #2 + 80034e6: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Init the base time for the PWM */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 80034ea: 687b ldr r3, [r7, #4] + 80034ec: 681a ldr r2, [r3, #0] + 80034ee: 687b ldr r3, [r7, #4] + 80034f0: 3304 adds r3, #4 + 80034f2: 4619 mov r1, r3 + 80034f4: 4610 mov r0, r2 + 80034f6: f000 fa63 bl 80039c0 + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 80034fa: 687b ldr r3, [r7, #4] + 80034fc: 2201 movs r2, #1 + 80034fe: f883 2046 strb.w r2, [r3, #70] @ 0x46 + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8003502: 687b ldr r3, [r7, #4] + 8003504: 2201 movs r2, #1 + 8003506: f883 203e strb.w r2, [r3, #62] @ 0x3e + 800350a: 687b ldr r3, [r7, #4] + 800350c: 2201 movs r2, #1 + 800350e: f883 203f strb.w r2, [r3, #63] @ 0x3f + 8003512: 687b ldr r3, [r7, #4] + 8003514: 2201 movs r2, #1 + 8003516: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 800351a: 687b ldr r3, [r7, #4] + 800351c: 2201 movs r2, #1 + 800351e: f883 2041 strb.w r2, [r3, #65] @ 0x41 + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8003522: 687b ldr r3, [r7, #4] + 8003524: 2201 movs r2, #1 + 8003526: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 800352a: 687b ldr r3, [r7, #4] + 800352c: 2201 movs r2, #1 + 800352e: f883 2043 strb.w r2, [r3, #67] @ 0x43 + 8003532: 687b ldr r3, [r7, #4] + 8003534: 2201 movs r2, #1 + 8003536: f883 2044 strb.w r2, [r3, #68] @ 0x44 + 800353a: 687b ldr r3, [r7, #4] + 800353c: 2201 movs r2, #1 + 800353e: f883 2045 strb.w r2, [r3, #69] @ 0x45 + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 8003542: 687b ldr r3, [r7, #4] + 8003544: 2201 movs r2, #1 + 8003546: f883 203d strb.w r2, [r3, #61] @ 0x3d + + return HAL_OK; + 800354a: 2300 movs r3, #0 +} + 800354c: 4618 mov r0, r3 + 800354e: 3708 adds r7, #8 + 8003550: 46bd mov sp, r7 + 8003552: bd80 pop {r7, pc} + +08003554 : + * @brief Initializes the TIM PWM MSP. + * @param htim TIM PWM handle + * @retval None + */ +__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) +{ + 8003554: b480 push {r7} + 8003556: b083 sub sp, #12 + 8003558: af00 add r7, sp, #0 + 800355a: 6078 str r0, [r7, #4] + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_MspInit could be implemented in the user file + */ +} + 800355c: bf00 nop + 800355e: 370c adds r7, #12 + 8003560: 46bd mov sp, r7 + 8003562: bc80 pop {r7} + 8003564: 4770 bx lr + ... + +08003568 : + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + 8003568: b580 push {r7, lr} + 800356a: b084 sub sp, #16 + 800356c: af00 add r7, sp, #0 + 800356e: 6078 str r0, [r7, #4] + 8003570: 6039 str r1, [r7, #0] + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + 8003572: 683b ldr r3, [r7, #0] + 8003574: 2b00 cmp r3, #0 + 8003576: d109 bne.n 800358c + 8003578: 687b ldr r3, [r7, #4] + 800357a: f893 303e ldrb.w r3, [r3, #62] @ 0x3e + 800357e: b2db uxtb r3, r3 + 8003580: 2b01 cmp r3, #1 + 8003582: bf14 ite ne + 8003584: 2301 movne r3, #1 + 8003586: 2300 moveq r3, #0 + 8003588: b2db uxtb r3, r3 + 800358a: e022 b.n 80035d2 + 800358c: 683b ldr r3, [r7, #0] + 800358e: 2b04 cmp r3, #4 + 8003590: d109 bne.n 80035a6 + 8003592: 687b ldr r3, [r7, #4] + 8003594: f893 303f ldrb.w r3, [r3, #63] @ 0x3f + 8003598: b2db uxtb r3, r3 + 800359a: 2b01 cmp r3, #1 + 800359c: bf14 ite ne + 800359e: 2301 movne r3, #1 + 80035a0: 2300 moveq r3, #0 + 80035a2: b2db uxtb r3, r3 + 80035a4: e015 b.n 80035d2 + 80035a6: 683b ldr r3, [r7, #0] + 80035a8: 2b08 cmp r3, #8 + 80035aa: d109 bne.n 80035c0 + 80035ac: 687b ldr r3, [r7, #4] + 80035ae: f893 3040 ldrb.w r3, [r3, #64] @ 0x40 + 80035b2: b2db uxtb r3, r3 + 80035b4: 2b01 cmp r3, #1 + 80035b6: bf14 ite ne + 80035b8: 2301 movne r3, #1 + 80035ba: 2300 moveq r3, #0 + 80035bc: b2db uxtb r3, r3 + 80035be: e008 b.n 80035d2 + 80035c0: 687b ldr r3, [r7, #4] + 80035c2: f893 3041 ldrb.w r3, [r3, #65] @ 0x41 + 80035c6: b2db uxtb r3, r3 + 80035c8: 2b01 cmp r3, #1 + 80035ca: bf14 ite ne + 80035cc: 2301 movne r3, #1 + 80035ce: 2300 moveq r3, #0 + 80035d0: b2db uxtb r3, r3 + 80035d2: 2b00 cmp r3, #0 + 80035d4: d001 beq.n 80035da + { + return HAL_ERROR; + 80035d6: 2301 movs r3, #1 + 80035d8: e05e b.n 8003698 + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 80035da: 683b ldr r3, [r7, #0] + 80035dc: 2b00 cmp r3, #0 + 80035de: d104 bne.n 80035ea + 80035e0: 687b ldr r3, [r7, #4] + 80035e2: 2202 movs r2, #2 + 80035e4: f883 203e strb.w r2, [r3, #62] @ 0x3e + 80035e8: e013 b.n 8003612 + 80035ea: 683b ldr r3, [r7, #0] + 80035ec: 2b04 cmp r3, #4 + 80035ee: d104 bne.n 80035fa + 80035f0: 687b ldr r3, [r7, #4] + 80035f2: 2202 movs r2, #2 + 80035f4: f883 203f strb.w r2, [r3, #63] @ 0x3f + 80035f8: e00b b.n 8003612 + 80035fa: 683b ldr r3, [r7, #0] + 80035fc: 2b08 cmp r3, #8 + 80035fe: d104 bne.n 800360a + 8003600: 687b ldr r3, [r7, #4] + 8003602: 2202 movs r2, #2 + 8003604: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 8003608: e003 b.n 8003612 + 800360a: 687b ldr r3, [r7, #4] + 800360c: 2202 movs r2, #2 + 800360e: f883 2041 strb.w r2, [r3, #65] @ 0x41 + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + 8003612: 687b ldr r3, [r7, #4] + 8003614: 681b ldr r3, [r3, #0] + 8003616: 2201 movs r2, #1 + 8003618: 6839 ldr r1, [r7, #0] + 800361a: 4618 mov r0, r3 + 800361c: f000 fc5c bl 8003ed8 + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + 8003620: 687b ldr r3, [r7, #4] + 8003622: 681b ldr r3, [r3, #0] + 8003624: 4a1e ldr r2, [pc, #120] @ (80036a0 ) + 8003626: 4293 cmp r3, r2 + 8003628: d107 bne.n 800363a + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + 800362a: 687b ldr r3, [r7, #4] + 800362c: 681b ldr r3, [r3, #0] + 800362e: 6c5a ldr r2, [r3, #68] @ 0x44 + 8003630: 687b ldr r3, [r7, #4] + 8003632: 681b ldr r3, [r3, #0] + 8003634: f442 4200 orr.w r2, r2, #32768 @ 0x8000 + 8003638: 645a str r2, [r3, #68] @ 0x44 + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 800363a: 687b ldr r3, [r7, #4] + 800363c: 681b ldr r3, [r3, #0] + 800363e: 4a18 ldr r2, [pc, #96] @ (80036a0 ) + 8003640: 4293 cmp r3, r2 + 8003642: d00e beq.n 8003662 + 8003644: 687b ldr r3, [r7, #4] + 8003646: 681b ldr r3, [r3, #0] + 8003648: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 800364c: d009 beq.n 8003662 + 800364e: 687b ldr r3, [r7, #4] + 8003650: 681b ldr r3, [r3, #0] + 8003652: 4a14 ldr r2, [pc, #80] @ (80036a4 ) + 8003654: 4293 cmp r3, r2 + 8003656: d004 beq.n 8003662 + 8003658: 687b ldr r3, [r7, #4] + 800365a: 681b ldr r3, [r3, #0] + 800365c: 4a12 ldr r2, [pc, #72] @ (80036a8 ) + 800365e: 4293 cmp r3, r2 + 8003660: d111 bne.n 8003686 + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 8003662: 687b ldr r3, [r7, #4] + 8003664: 681b ldr r3, [r3, #0] + 8003666: 689b ldr r3, [r3, #8] + 8003668: f003 0307 and.w r3, r3, #7 + 800366c: 60fb str r3, [r7, #12] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 800366e: 68fb ldr r3, [r7, #12] + 8003670: 2b06 cmp r3, #6 + 8003672: d010 beq.n 8003696 + { + __HAL_TIM_ENABLE(htim); + 8003674: 687b ldr r3, [r7, #4] + 8003676: 681b ldr r3, [r3, #0] + 8003678: 681a ldr r2, [r3, #0] + 800367a: 687b ldr r3, [r7, #4] + 800367c: 681b ldr r3, [r3, #0] + 800367e: f042 0201 orr.w r2, r2, #1 + 8003682: 601a str r2, [r3, #0] + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 8003684: e007 b.n 8003696 + } + } + else + { + __HAL_TIM_ENABLE(htim); + 8003686: 687b ldr r3, [r7, #4] + 8003688: 681b ldr r3, [r3, #0] + 800368a: 681a ldr r2, [r3, #0] + 800368c: 687b ldr r3, [r7, #4] + 800368e: 681b ldr r3, [r3, #0] + 8003690: f042 0201 orr.w r2, r2, #1 + 8003694: 601a str r2, [r3, #0] + } + + /* Return function status */ + return HAL_OK; + 8003696: 2300 movs r3, #0 +} + 8003698: 4618 mov r0, r3 + 800369a: 3710 adds r7, #16 + 800369c: 46bd mov sp, r7 + 800369e: bd80 pop {r7, pc} + 80036a0: 40012c00 .word 0x40012c00 + 80036a4: 40000400 .word 0x40000400 + 80036a8: 40000800 .word 0x40000800 + +080036ac : + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, + const TIM_OC_InitTypeDef *sConfig, + uint32_t Channel) +{ + 80036ac: b580 push {r7, lr} + 80036ae: b086 sub sp, #24 + 80036b0: af00 add r7, sp, #0 + 80036b2: 60f8 str r0, [r7, #12] + 80036b4: 60b9 str r1, [r7, #8] + 80036b6: 607a str r2, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 80036b8: 2300 movs r3, #0 + 80036ba: 75fb strb r3, [r7, #23] + assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); + assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); + assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); + + /* Process Locked */ + __HAL_LOCK(htim); + 80036bc: 68fb ldr r3, [r7, #12] + 80036be: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 80036c2: 2b01 cmp r3, #1 + 80036c4: d101 bne.n 80036ca + 80036c6: 2302 movs r3, #2 + 80036c8: e0ae b.n 8003828 + 80036ca: 68fb ldr r3, [r7, #12] + 80036cc: 2201 movs r2, #1 + 80036ce: f883 203c strb.w r2, [r3, #60] @ 0x3c + + switch (Channel) + 80036d2: 687b ldr r3, [r7, #4] + 80036d4: 2b0c cmp r3, #12 + 80036d6: f200 809f bhi.w 8003818 + 80036da: a201 add r2, pc, #4 @ (adr r2, 80036e0 ) + 80036dc: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 80036e0: 08003715 .word 0x08003715 + 80036e4: 08003819 .word 0x08003819 + 80036e8: 08003819 .word 0x08003819 + 80036ec: 08003819 .word 0x08003819 + 80036f0: 08003755 .word 0x08003755 + 80036f4: 08003819 .word 0x08003819 + 80036f8: 08003819 .word 0x08003819 + 80036fc: 08003819 .word 0x08003819 + 8003700: 08003797 .word 0x08003797 + 8003704: 08003819 .word 0x08003819 + 8003708: 08003819 .word 0x08003819 + 800370c: 08003819 .word 0x08003819 + 8003710: 080037d7 .word 0x080037d7 + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Configure the Channel 1 in PWM mode */ + TIM_OC1_SetConfig(htim->Instance, sConfig); + 8003714: 68fb ldr r3, [r7, #12] + 8003716: 681b ldr r3, [r3, #0] + 8003718: 68b9 ldr r1, [r7, #8] + 800371a: 4618 mov r0, r3 + 800371c: f000 f9be bl 8003a9c + + /* Set the Preload enable bit for channel1 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; + 8003720: 68fb ldr r3, [r7, #12] + 8003722: 681b ldr r3, [r3, #0] + 8003724: 699a ldr r2, [r3, #24] + 8003726: 68fb ldr r3, [r7, #12] + 8003728: 681b ldr r3, [r3, #0] + 800372a: f042 0208 orr.w r2, r2, #8 + 800372e: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; + 8003730: 68fb ldr r3, [r7, #12] + 8003732: 681b ldr r3, [r3, #0] + 8003734: 699a ldr r2, [r3, #24] + 8003736: 68fb ldr r3, [r7, #12] + 8003738: 681b ldr r3, [r3, #0] + 800373a: f022 0204 bic.w r2, r2, #4 + 800373e: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode; + 8003740: 68fb ldr r3, [r7, #12] + 8003742: 681b ldr r3, [r3, #0] + 8003744: 6999 ldr r1, [r3, #24] + 8003746: 68bb ldr r3, [r7, #8] + 8003748: 691a ldr r2, [r3, #16] + 800374a: 68fb ldr r3, [r7, #12] + 800374c: 681b ldr r3, [r3, #0] + 800374e: 430a orrs r2, r1 + 8003750: 619a str r2, [r3, #24] + break; + 8003752: e064 b.n 800381e + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Configure the Channel 2 in PWM mode */ + TIM_OC2_SetConfig(htim->Instance, sConfig); + 8003754: 68fb ldr r3, [r7, #12] + 8003756: 681b ldr r3, [r3, #0] + 8003758: 68b9 ldr r1, [r7, #8] + 800375a: 4618 mov r0, r3 + 800375c: f000 fa04 bl 8003b68 + + /* Set the Preload enable bit for channel2 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; + 8003760: 68fb ldr r3, [r7, #12] + 8003762: 681b ldr r3, [r3, #0] + 8003764: 699a ldr r2, [r3, #24] + 8003766: 68fb ldr r3, [r7, #12] + 8003768: 681b ldr r3, [r3, #0] + 800376a: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 800376e: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; + 8003770: 68fb ldr r3, [r7, #12] + 8003772: 681b ldr r3, [r3, #0] + 8003774: 699a ldr r2, [r3, #24] + 8003776: 68fb ldr r3, [r7, #12] + 8003778: 681b ldr r3, [r3, #0] + 800377a: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 800377e: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + 8003780: 68fb ldr r3, [r7, #12] + 8003782: 681b ldr r3, [r3, #0] + 8003784: 6999 ldr r1, [r3, #24] + 8003786: 68bb ldr r3, [r7, #8] + 8003788: 691b ldr r3, [r3, #16] + 800378a: 021a lsls r2, r3, #8 + 800378c: 68fb ldr r3, [r7, #12] + 800378e: 681b ldr r3, [r3, #0] + 8003790: 430a orrs r2, r1 + 8003792: 619a str r2, [r3, #24] + break; + 8003794: e043 b.n 800381e + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Configure the Channel 3 in PWM mode */ + TIM_OC3_SetConfig(htim->Instance, sConfig); + 8003796: 68fb ldr r3, [r7, #12] + 8003798: 681b ldr r3, [r3, #0] + 800379a: 68b9 ldr r1, [r7, #8] + 800379c: 4618 mov r0, r3 + 800379e: f000 fa4d bl 8003c3c + + /* Set the Preload enable bit for channel3 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; + 80037a2: 68fb ldr r3, [r7, #12] + 80037a4: 681b ldr r3, [r3, #0] + 80037a6: 69da ldr r2, [r3, #28] + 80037a8: 68fb ldr r3, [r7, #12] + 80037aa: 681b ldr r3, [r3, #0] + 80037ac: f042 0208 orr.w r2, r2, #8 + 80037b0: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; + 80037b2: 68fb ldr r3, [r7, #12] + 80037b4: 681b ldr r3, [r3, #0] + 80037b6: 69da ldr r2, [r3, #28] + 80037b8: 68fb ldr r3, [r7, #12] + 80037ba: 681b ldr r3, [r3, #0] + 80037bc: f022 0204 bic.w r2, r2, #4 + 80037c0: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode; + 80037c2: 68fb ldr r3, [r7, #12] + 80037c4: 681b ldr r3, [r3, #0] + 80037c6: 69d9 ldr r1, [r3, #28] + 80037c8: 68bb ldr r3, [r7, #8] + 80037ca: 691a ldr r2, [r3, #16] + 80037cc: 68fb ldr r3, [r7, #12] + 80037ce: 681b ldr r3, [r3, #0] + 80037d0: 430a orrs r2, r1 + 80037d2: 61da str r2, [r3, #28] + break; + 80037d4: e023 b.n 800381e + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Configure the Channel 4 in PWM mode */ + TIM_OC4_SetConfig(htim->Instance, sConfig); + 80037d6: 68fb ldr r3, [r7, #12] + 80037d8: 681b ldr r3, [r3, #0] + 80037da: 68b9 ldr r1, [r7, #8] + 80037dc: 4618 mov r0, r3 + 80037de: f000 fa97 bl 8003d10 + + /* Set the Preload enable bit for channel4 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; + 80037e2: 68fb ldr r3, [r7, #12] + 80037e4: 681b ldr r3, [r3, #0] + 80037e6: 69da ldr r2, [r3, #28] + 80037e8: 68fb ldr r3, [r7, #12] + 80037ea: 681b ldr r3, [r3, #0] + 80037ec: f442 6200 orr.w r2, r2, #2048 @ 0x800 + 80037f0: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; + 80037f2: 68fb ldr r3, [r7, #12] + 80037f4: 681b ldr r3, [r3, #0] + 80037f6: 69da ldr r2, [r3, #28] + 80037f8: 68fb ldr r3, [r7, #12] + 80037fa: 681b ldr r3, [r3, #0] + 80037fc: f422 6280 bic.w r2, r2, #1024 @ 0x400 + 8003800: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + 8003802: 68fb ldr r3, [r7, #12] + 8003804: 681b ldr r3, [r3, #0] + 8003806: 69d9 ldr r1, [r3, #28] + 8003808: 68bb ldr r3, [r7, #8] + 800380a: 691b ldr r3, [r3, #16] + 800380c: 021a lsls r2, r3, #8 + 800380e: 68fb ldr r3, [r7, #12] + 8003810: 681b ldr r3, [r3, #0] + 8003812: 430a orrs r2, r1 + 8003814: 61da str r2, [r3, #28] + break; + 8003816: e002 b.n 800381e + } + + default: + status = HAL_ERROR; + 8003818: 2301 movs r3, #1 + 800381a: 75fb strb r3, [r7, #23] + break; + 800381c: bf00 nop + } + + __HAL_UNLOCK(htim); + 800381e: 68fb ldr r3, [r7, #12] + 8003820: 2200 movs r2, #0 + 8003822: f883 203c strb.w r2, [r3, #60] @ 0x3c + + return status; + 8003826: 7dfb ldrb r3, [r7, #23] +} + 8003828: 4618 mov r0, r3 + 800382a: 3718 adds r7, #24 + 800382c: 46bd mov sp, r7 + 800382e: bd80 pop {r7, pc} + +08003830 : + * @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) +{ + 8003830: b580 push {r7, lr} + 8003832: b084 sub sp, #16 + 8003834: af00 add r7, sp, #0 + 8003836: 6078 str r0, [r7, #4] + 8003838: 6039 str r1, [r7, #0] + HAL_StatusTypeDef status = HAL_OK; + 800383a: 2300 movs r3, #0 + 800383c: 73fb strb r3, [r7, #15] + uint32_t tmpsmcr; + + /* Process Locked */ + __HAL_LOCK(htim); + 800383e: 687b ldr r3, [r7, #4] + 8003840: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 8003844: 2b01 cmp r3, #1 + 8003846: d101 bne.n 800384c + 8003848: 2302 movs r3, #2 + 800384a: e0b4 b.n 80039b6 + 800384c: 687b ldr r3, [r7, #4] + 800384e: 2201 movs r2, #1 + 8003850: f883 203c strb.w r2, [r3, #60] @ 0x3c + + htim->State = HAL_TIM_STATE_BUSY; + 8003854: 687b ldr r3, [r7, #4] + 8003856: 2202 movs r2, #2 + 8003858: 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; + 800385c: 687b ldr r3, [r7, #4] + 800385e: 681b ldr r3, [r3, #0] + 8003860: 689b ldr r3, [r3, #8] + 8003862: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); + 8003864: 68bb ldr r3, [r7, #8] + 8003866: f023 0377 bic.w r3, r3, #119 @ 0x77 + 800386a: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 800386c: 68bb ldr r3, [r7, #8] + 800386e: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 8003872: 60bb str r3, [r7, #8] + htim->Instance->SMCR = tmpsmcr; + 8003874: 687b ldr r3, [r7, #4] + 8003876: 681b ldr r3, [r3, #0] + 8003878: 68ba ldr r2, [r7, #8] + 800387a: 609a str r2, [r3, #8] + + switch (sClockSourceConfig->ClockSource) + 800387c: 683b ldr r3, [r7, #0] + 800387e: 681b ldr r3, [r3, #0] + 8003880: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 8003884: d03e beq.n 8003904 + 8003886: f5b3 5f00 cmp.w r3, #8192 @ 0x2000 + 800388a: f200 8087 bhi.w 800399c + 800388e: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 8003892: f000 8086 beq.w 80039a2 + 8003896: f5b3 5f80 cmp.w r3, #4096 @ 0x1000 + 800389a: d87f bhi.n 800399c + 800389c: 2b70 cmp r3, #112 @ 0x70 + 800389e: d01a beq.n 80038d6 + 80038a0: 2b70 cmp r3, #112 @ 0x70 + 80038a2: d87b bhi.n 800399c + 80038a4: 2b60 cmp r3, #96 @ 0x60 + 80038a6: d050 beq.n 800394a + 80038a8: 2b60 cmp r3, #96 @ 0x60 + 80038aa: d877 bhi.n 800399c + 80038ac: 2b50 cmp r3, #80 @ 0x50 + 80038ae: d03c beq.n 800392a + 80038b0: 2b50 cmp r3, #80 @ 0x50 + 80038b2: d873 bhi.n 800399c + 80038b4: 2b40 cmp r3, #64 @ 0x40 + 80038b6: d058 beq.n 800396a + 80038b8: 2b40 cmp r3, #64 @ 0x40 + 80038ba: d86f bhi.n 800399c + 80038bc: 2b30 cmp r3, #48 @ 0x30 + 80038be: d064 beq.n 800398a + 80038c0: 2b30 cmp r3, #48 @ 0x30 + 80038c2: d86b bhi.n 800399c + 80038c4: 2b20 cmp r3, #32 + 80038c6: d060 beq.n 800398a + 80038c8: 2b20 cmp r3, #32 + 80038ca: d867 bhi.n 800399c + 80038cc: 2b00 cmp r3, #0 + 80038ce: d05c beq.n 800398a + 80038d0: 2b10 cmp r3, #16 + 80038d2: d05a beq.n 800398a + 80038d4: e062 b.n 800399c + 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, + 80038d6: 687b ldr r3, [r7, #4] + 80038d8: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 80038da: 683b ldr r3, [r7, #0] + 80038dc: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 80038de: 683b ldr r3, [r7, #0] + 80038e0: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 80038e2: 683b ldr r3, [r7, #0] + 80038e4: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 80038e6: f000 fad8 bl 8003e9a + + /* Select the External clock mode1 and the ETRF trigger */ + tmpsmcr = htim->Instance->SMCR; + 80038ea: 687b ldr r3, [r7, #4] + 80038ec: 681b ldr r3, [r3, #0] + 80038ee: 689b ldr r3, [r3, #8] + 80038f0: 60bb str r3, [r7, #8] + tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); + 80038f2: 68bb ldr r3, [r7, #8] + 80038f4: f043 0377 orr.w r3, r3, #119 @ 0x77 + 80038f8: 60bb str r3, [r7, #8] + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 80038fa: 687b ldr r3, [r7, #4] + 80038fc: 681b ldr r3, [r3, #0] + 80038fe: 68ba ldr r2, [r7, #8] + 8003900: 609a str r2, [r3, #8] + break; + 8003902: e04f b.n 80039a4 + 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, + 8003904: 687b ldr r3, [r7, #4] + 8003906: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPrescaler, + 8003908: 683b ldr r3, [r7, #0] + 800390a: 6899 ldr r1, [r3, #8] + sClockSourceConfig->ClockPolarity, + 800390c: 683b ldr r3, [r7, #0] + 800390e: 685a ldr r2, [r3, #4] + sClockSourceConfig->ClockFilter); + 8003910: 683b ldr r3, [r7, #0] + 8003912: 68db ldr r3, [r3, #12] + TIM_ETR_SetConfig(htim->Instance, + 8003914: f000 fac1 bl 8003e9a + /* Enable the External clock mode2 */ + htim->Instance->SMCR |= TIM_SMCR_ECE; + 8003918: 687b ldr r3, [r7, #4] + 800391a: 681b ldr r3, [r3, #0] + 800391c: 689a ldr r2, [r3, #8] + 800391e: 687b ldr r3, [r7, #4] + 8003920: 681b ldr r3, [r3, #0] + 8003922: f442 4280 orr.w r2, r2, #16384 @ 0x4000 + 8003926: 609a str r2, [r3, #8] + break; + 8003928: e03c b.n 80039a4 + + /* 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, + 800392a: 687b ldr r3, [r7, #4] + 800392c: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 800392e: 683b ldr r3, [r7, #0] + 8003930: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 8003932: 683b ldr r3, [r7, #0] + 8003934: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 8003936: 461a mov r2, r3 + 8003938: f000 fa38 bl 8003dac + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); + 800393c: 687b ldr r3, [r7, #4] + 800393e: 681b ldr r3, [r3, #0] + 8003940: 2150 movs r1, #80 @ 0x50 + 8003942: 4618 mov r0, r3 + 8003944: f000 fa8f bl 8003e66 + break; + 8003948: e02c b.n 80039a4 + + /* 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, + 800394a: 687b ldr r3, [r7, #4] + 800394c: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 800394e: 683b ldr r3, [r7, #0] + 8003950: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 8003952: 683b ldr r3, [r7, #0] + 8003954: 68db ldr r3, [r3, #12] + TIM_TI2_ConfigInputStage(htim->Instance, + 8003956: 461a mov r2, r3 + 8003958: f000 fa56 bl 8003e08 + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); + 800395c: 687b ldr r3, [r7, #4] + 800395e: 681b ldr r3, [r3, #0] + 8003960: 2160 movs r1, #96 @ 0x60 + 8003962: 4618 mov r0, r3 + 8003964: f000 fa7f bl 8003e66 + break; + 8003968: e01c b.n 80039a4 + + /* 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, + 800396a: 687b ldr r3, [r7, #4] + 800396c: 6818 ldr r0, [r3, #0] + sClockSourceConfig->ClockPolarity, + 800396e: 683b ldr r3, [r7, #0] + 8003970: 6859 ldr r1, [r3, #4] + sClockSourceConfig->ClockFilter); + 8003972: 683b ldr r3, [r7, #0] + 8003974: 68db ldr r3, [r3, #12] + TIM_TI1_ConfigInputStage(htim->Instance, + 8003976: 461a mov r2, r3 + 8003978: f000 fa18 bl 8003dac + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); + 800397c: 687b ldr r3, [r7, #4] + 800397e: 681b ldr r3, [r3, #0] + 8003980: 2140 movs r1, #64 @ 0x40 + 8003982: 4618 mov r0, r3 + 8003984: f000 fa6f bl 8003e66 + break; + 8003988: e00c b.n 80039a4 + 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); + 800398a: 687b ldr r3, [r7, #4] + 800398c: 681a ldr r2, [r3, #0] + 800398e: 683b ldr r3, [r7, #0] + 8003990: 681b ldr r3, [r3, #0] + 8003992: 4619 mov r1, r3 + 8003994: 4610 mov r0, r2 + 8003996: f000 fa66 bl 8003e66 + break; + 800399a: e003 b.n 80039a4 + } + + default: + status = HAL_ERROR; + 800399c: 2301 movs r3, #1 + 800399e: 73fb strb r3, [r7, #15] + break; + 80039a0: e000 b.n 80039a4 + break; + 80039a2: bf00 nop + } + htim->State = HAL_TIM_STATE_READY; + 80039a4: 687b ldr r3, [r7, #4] + 80039a6: 2201 movs r2, #1 + 80039a8: f883 203d strb.w r2, [r3, #61] @ 0x3d + + __HAL_UNLOCK(htim); + 80039ac: 687b ldr r3, [r7, #4] + 80039ae: 2200 movs r2, #0 + 80039b0: f883 203c strb.w r2, [r3, #60] @ 0x3c + + return status; + 80039b4: 7bfb ldrb r3, [r7, #15] +} + 80039b6: 4618 mov r0, r3 + 80039b8: 3710 adds r7, #16 + 80039ba: 46bd mov sp, r7 + 80039bc: bd80 pop {r7, pc} + ... + +080039c0 : + * @param TIMx TIM peripheral + * @param Structure TIM Base configuration structure + * @retval None + */ +void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) +{ + 80039c0: b480 push {r7} + 80039c2: b085 sub sp, #20 + 80039c4: af00 add r7, sp, #0 + 80039c6: 6078 str r0, [r7, #4] + 80039c8: 6039 str r1, [r7, #0] + uint32_t tmpcr1; + tmpcr1 = TIMx->CR1; + 80039ca: 687b ldr r3, [r7, #4] + 80039cc: 681b ldr r3, [r3, #0] + 80039ce: 60fb str r3, [r7, #12] + + /* Set TIM Time Base Unit parameters ---------------------------------------*/ + if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + 80039d0: 687b ldr r3, [r7, #4] + 80039d2: 4a2f ldr r2, [pc, #188] @ (8003a90 ) + 80039d4: 4293 cmp r3, r2 + 80039d6: d00b beq.n 80039f0 + 80039d8: 687b ldr r3, [r7, #4] + 80039da: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 80039de: d007 beq.n 80039f0 + 80039e0: 687b ldr r3, [r7, #4] + 80039e2: 4a2c ldr r2, [pc, #176] @ (8003a94 ) + 80039e4: 4293 cmp r3, r2 + 80039e6: d003 beq.n 80039f0 + 80039e8: 687b ldr r3, [r7, #4] + 80039ea: 4a2b ldr r2, [pc, #172] @ (8003a98 ) + 80039ec: 4293 cmp r3, r2 + 80039ee: d108 bne.n 8003a02 + { + /* Select the Counter Mode */ + tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); + 80039f0: 68fb ldr r3, [r7, #12] + 80039f2: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80039f6: 60fb str r3, [r7, #12] + tmpcr1 |= Structure->CounterMode; + 80039f8: 683b ldr r3, [r7, #0] + 80039fa: 685b ldr r3, [r3, #4] + 80039fc: 68fa ldr r2, [r7, #12] + 80039fe: 4313 orrs r3, r2 + 8003a00: 60fb str r3, [r7, #12] + } + + if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + 8003a02: 687b ldr r3, [r7, #4] + 8003a04: 4a22 ldr r2, [pc, #136] @ (8003a90 ) + 8003a06: 4293 cmp r3, r2 + 8003a08: d00b beq.n 8003a22 + 8003a0a: 687b ldr r3, [r7, #4] + 8003a0c: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8003a10: d007 beq.n 8003a22 + 8003a12: 687b ldr r3, [r7, #4] + 8003a14: 4a1f ldr r2, [pc, #124] @ (8003a94 ) + 8003a16: 4293 cmp r3, r2 + 8003a18: d003 beq.n 8003a22 + 8003a1a: 687b ldr r3, [r7, #4] + 8003a1c: 4a1e ldr r2, [pc, #120] @ (8003a98 ) + 8003a1e: 4293 cmp r3, r2 + 8003a20: d108 bne.n 8003a34 + { + /* Set the clock division */ + tmpcr1 &= ~TIM_CR1_CKD; + 8003a22: 68fb ldr r3, [r7, #12] + 8003a24: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8003a28: 60fb str r3, [r7, #12] + tmpcr1 |= (uint32_t)Structure->ClockDivision; + 8003a2a: 683b ldr r3, [r7, #0] + 8003a2c: 68db ldr r3, [r3, #12] + 8003a2e: 68fa ldr r2, [r7, #12] + 8003a30: 4313 orrs r3, r2 + 8003a32: 60fb str r3, [r7, #12] + } + + /* Set the auto-reload preload */ + MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); + 8003a34: 68fb ldr r3, [r7, #12] + 8003a36: f023 0280 bic.w r2, r3, #128 @ 0x80 + 8003a3a: 683b ldr r3, [r7, #0] + 8003a3c: 695b ldr r3, [r3, #20] + 8003a3e: 4313 orrs r3, r2 + 8003a40: 60fb str r3, [r7, #12] + + TIMx->CR1 = tmpcr1; + 8003a42: 687b ldr r3, [r7, #4] + 8003a44: 68fa ldr r2, [r7, #12] + 8003a46: 601a str r2, [r3, #0] + + /* Set the Autoreload value */ + TIMx->ARR = (uint32_t)Structure->Period ; + 8003a48: 683b ldr r3, [r7, #0] + 8003a4a: 689a ldr r2, [r3, #8] + 8003a4c: 687b ldr r3, [r7, #4] + 8003a4e: 62da str r2, [r3, #44] @ 0x2c + + /* Set the Prescaler value */ + TIMx->PSC = Structure->Prescaler; + 8003a50: 683b ldr r3, [r7, #0] + 8003a52: 681a ldr r2, [r3, #0] + 8003a54: 687b ldr r3, [r7, #4] + 8003a56: 629a str r2, [r3, #40] @ 0x28 + + if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) + 8003a58: 687b ldr r3, [r7, #4] + 8003a5a: 4a0d ldr r2, [pc, #52] @ (8003a90 ) + 8003a5c: 4293 cmp r3, r2 + 8003a5e: d103 bne.n 8003a68 + { + /* Set the Repetition Counter value */ + TIMx->RCR = Structure->RepetitionCounter; + 8003a60: 683b ldr r3, [r7, #0] + 8003a62: 691a ldr r2, [r3, #16] + 8003a64: 687b ldr r3, [r7, #4] + 8003a66: 631a str r2, [r3, #48] @ 0x30 + } + + /* Generate an update event to reload the Prescaler + and the repetition counter (only for advanced timer) value immediately */ + TIMx->EGR = TIM_EGR_UG; + 8003a68: 687b ldr r3, [r7, #4] + 8003a6a: 2201 movs r2, #1 + 8003a6c: 615a str r2, [r3, #20] + + /* Check if the update flag is set after the Update Generation, if so clear the UIF flag */ + if (HAL_IS_BIT_SET(TIMx->SR, TIM_FLAG_UPDATE)) + 8003a6e: 687b ldr r3, [r7, #4] + 8003a70: 691b ldr r3, [r3, #16] + 8003a72: f003 0301 and.w r3, r3, #1 + 8003a76: 2b00 cmp r3, #0 + 8003a78: d005 beq.n 8003a86 + { + /* Clear the update flag */ + CLEAR_BIT(TIMx->SR, TIM_FLAG_UPDATE); + 8003a7a: 687b ldr r3, [r7, #4] + 8003a7c: 691b ldr r3, [r3, #16] + 8003a7e: f023 0201 bic.w r2, r3, #1 + 8003a82: 687b ldr r3, [r7, #4] + 8003a84: 611a str r2, [r3, #16] + } +} + 8003a86: bf00 nop + 8003a88: 3714 adds r7, #20 + 8003a8a: 46bd mov sp, r7 + 8003a8c: bc80 pop {r7} + 8003a8e: 4770 bx lr + 8003a90: 40012c00 .word 0x40012c00 + 8003a94: 40000400 .word 0x40000400 + 8003a98: 40000800 .word 0x40000800 + +08003a9c : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8003a9c: b480 push {r7} + 8003a9e: b087 sub sp, #28 + 8003aa0: af00 add r7, sp, #0 + 8003aa2: 6078 str r0, [r7, #4] + 8003aa4: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8003aa6: 687b ldr r3, [r7, #4] + 8003aa8: 6a1b ldr r3, [r3, #32] + 8003aaa: 617b str r3, [r7, #20] + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= ~TIM_CCER_CC1E; + 8003aac: 687b ldr r3, [r7, #4] + 8003aae: 6a1b ldr r3, [r3, #32] + 8003ab0: f023 0201 bic.w r2, r3, #1 + 8003ab4: 687b ldr r3, [r7, #4] + 8003ab6: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8003ab8: 687b ldr r3, [r7, #4] + 8003aba: 685b ldr r3, [r3, #4] + 8003abc: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 8003abe: 687b ldr r3, [r7, #4] + 8003ac0: 699b ldr r3, [r3, #24] + 8003ac2: 60fb str r3, [r7, #12] + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= ~TIM_CCMR1_OC1M; + 8003ac4: 68fb ldr r3, [r7, #12] + 8003ac6: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8003aca: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC1S; + 8003acc: 68fb ldr r3, [r7, #12] + 8003ace: f023 0303 bic.w r3, r3, #3 + 8003ad2: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 8003ad4: 683b ldr r3, [r7, #0] + 8003ad6: 681b ldr r3, [r3, #0] + 8003ad8: 68fa ldr r2, [r7, #12] + 8003ada: 4313 orrs r3, r2 + 8003adc: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC1P; + 8003ade: 697b ldr r3, [r7, #20] + 8003ae0: f023 0302 bic.w r3, r3, #2 + 8003ae4: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= OC_Config->OCPolarity; + 8003ae6: 683b ldr r3, [r7, #0] + 8003ae8: 689b ldr r3, [r3, #8] + 8003aea: 697a ldr r2, [r7, #20] + 8003aec: 4313 orrs r3, r2 + 8003aee: 617b str r3, [r7, #20] + + if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_1)) + 8003af0: 687b ldr r3, [r7, #4] + 8003af2: 4a1c ldr r2, [pc, #112] @ (8003b64 ) + 8003af4: 4293 cmp r3, r2 + 8003af6: d10c bne.n 8003b12 + { + /* Check parameters */ + assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); + + /* Reset the Output N Polarity level */ + tmpccer &= ~TIM_CCER_CC1NP; + 8003af8: 697b ldr r3, [r7, #20] + 8003afa: f023 0308 bic.w r3, r3, #8 + 8003afe: 617b str r3, [r7, #20] + /* Set the Output N Polarity */ + tmpccer |= OC_Config->OCNPolarity; + 8003b00: 683b ldr r3, [r7, #0] + 8003b02: 68db ldr r3, [r3, #12] + 8003b04: 697a ldr r2, [r7, #20] + 8003b06: 4313 orrs r3, r2 + 8003b08: 617b str r3, [r7, #20] + /* Reset the Output N State */ + tmpccer &= ~TIM_CCER_CC1NE; + 8003b0a: 697b ldr r3, [r7, #20] + 8003b0c: f023 0304 bic.w r3, r3, #4 + 8003b10: 617b str r3, [r7, #20] + } + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + 8003b12: 687b ldr r3, [r7, #4] + 8003b14: 4a13 ldr r2, [pc, #76] @ (8003b64 ) + 8003b16: 4293 cmp r3, r2 + 8003b18: d111 bne.n 8003b3e + /* Check parameters */ + assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); + assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + + /* Reset the Output Compare and Output Compare N IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS1; + 8003b1a: 693b ldr r3, [r7, #16] + 8003b1c: f423 7380 bic.w r3, r3, #256 @ 0x100 + 8003b20: 613b str r3, [r7, #16] + tmpcr2 &= ~TIM_CR2_OIS1N; + 8003b22: 693b ldr r3, [r7, #16] + 8003b24: f423 7300 bic.w r3, r3, #512 @ 0x200 + 8003b28: 613b str r3, [r7, #16] + /* Set the Output Idle state */ + tmpcr2 |= OC_Config->OCIdleState; + 8003b2a: 683b ldr r3, [r7, #0] + 8003b2c: 695b ldr r3, [r3, #20] + 8003b2e: 693a ldr r2, [r7, #16] + 8003b30: 4313 orrs r3, r2 + 8003b32: 613b str r3, [r7, #16] + /* Set the Output N Idle state */ + tmpcr2 |= OC_Config->OCNIdleState; + 8003b34: 683b ldr r3, [r7, #0] + 8003b36: 699b ldr r3, [r3, #24] + 8003b38: 693a ldr r2, [r7, #16] + 8003b3a: 4313 orrs r3, r2 + 8003b3c: 613b str r3, [r7, #16] + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8003b3e: 687b ldr r3, [r7, #4] + 8003b40: 693a ldr r2, [r7, #16] + 8003b42: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 8003b44: 687b ldr r3, [r7, #4] + 8003b46: 68fa ldr r2, [r7, #12] + 8003b48: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR1 = OC_Config->Pulse; + 8003b4a: 683b ldr r3, [r7, #0] + 8003b4c: 685a ldr r2, [r3, #4] + 8003b4e: 687b ldr r3, [r7, #4] + 8003b50: 635a str r2, [r3, #52] @ 0x34 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8003b52: 687b ldr r3, [r7, #4] + 8003b54: 697a ldr r2, [r7, #20] + 8003b56: 621a str r2, [r3, #32] +} + 8003b58: bf00 nop + 8003b5a: 371c adds r7, #28 + 8003b5c: 46bd mov sp, r7 + 8003b5e: bc80 pop {r7} + 8003b60: 4770 bx lr + 8003b62: bf00 nop + 8003b64: 40012c00 .word 0x40012c00 + +08003b68 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8003b68: b480 push {r7} + 8003b6a: b087 sub sp, #28 + 8003b6c: af00 add r7, sp, #0 + 8003b6e: 6078 str r0, [r7, #4] + 8003b70: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8003b72: 687b ldr r3, [r7, #4] + 8003b74: 6a1b ldr r3, [r3, #32] + 8003b76: 617b str r3, [r7, #20] + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + 8003b78: 687b ldr r3, [r7, #4] + 8003b7a: 6a1b ldr r3, [r3, #32] + 8003b7c: f023 0210 bic.w r2, r3, #16 + 8003b80: 687b ldr r3, [r7, #4] + 8003b82: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8003b84: 687b ldr r3, [r7, #4] + 8003b86: 685b ldr r3, [r3, #4] + 8003b88: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 8003b8a: 687b ldr r3, [r7, #4] + 8003b8c: 699b ldr r3, [r3, #24] + 8003b8e: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR1_OC2M; + 8003b90: 68fb ldr r3, [r7, #12] + 8003b92: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8003b96: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC2S; + 8003b98: 68fb ldr r3, [r7, #12] + 8003b9a: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8003b9e: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 8003ba0: 683b ldr r3, [r7, #0] + 8003ba2: 681b ldr r3, [r3, #0] + 8003ba4: 021b lsls r3, r3, #8 + 8003ba6: 68fa ldr r2, [r7, #12] + 8003ba8: 4313 orrs r3, r2 + 8003baa: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC2P; + 8003bac: 697b ldr r3, [r7, #20] + 8003bae: f023 0320 bic.w r3, r3, #32 + 8003bb2: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 4U); + 8003bb4: 683b ldr r3, [r7, #0] + 8003bb6: 689b ldr r3, [r3, #8] + 8003bb8: 011b lsls r3, r3, #4 + 8003bba: 697a ldr r2, [r7, #20] + 8003bbc: 4313 orrs r3, r2 + 8003bbe: 617b str r3, [r7, #20] + + if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_2)) + 8003bc0: 687b ldr r3, [r7, #4] + 8003bc2: 4a1d ldr r2, [pc, #116] @ (8003c38 ) + 8003bc4: 4293 cmp r3, r2 + 8003bc6: d10d bne.n 8003be4 + { + assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); + + /* Reset the Output N Polarity level */ + tmpccer &= ~TIM_CCER_CC2NP; + 8003bc8: 697b ldr r3, [r7, #20] + 8003bca: f023 0380 bic.w r3, r3, #128 @ 0x80 + 8003bce: 617b str r3, [r7, #20] + /* Set the Output N Polarity */ + tmpccer |= (OC_Config->OCNPolarity << 4U); + 8003bd0: 683b ldr r3, [r7, #0] + 8003bd2: 68db ldr r3, [r3, #12] + 8003bd4: 011b lsls r3, r3, #4 + 8003bd6: 697a ldr r2, [r7, #20] + 8003bd8: 4313 orrs r3, r2 + 8003bda: 617b str r3, [r7, #20] + /* Reset the Output N State */ + tmpccer &= ~TIM_CCER_CC2NE; + 8003bdc: 697b ldr r3, [r7, #20] + 8003bde: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8003be2: 617b str r3, [r7, #20] + } + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + 8003be4: 687b ldr r3, [r7, #4] + 8003be6: 4a14 ldr r2, [pc, #80] @ (8003c38 ) + 8003be8: 4293 cmp r3, r2 + 8003bea: d113 bne.n 8003c14 + /* Check parameters */ + assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); + assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + + /* Reset the Output Compare and Output Compare N IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS2; + 8003bec: 693b ldr r3, [r7, #16] + 8003bee: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 8003bf2: 613b str r3, [r7, #16] + tmpcr2 &= ~TIM_CR2_OIS2N; + 8003bf4: 693b ldr r3, [r7, #16] + 8003bf6: f423 6300 bic.w r3, r3, #2048 @ 0x800 + 8003bfa: 613b str r3, [r7, #16] + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 2U); + 8003bfc: 683b ldr r3, [r7, #0] + 8003bfe: 695b ldr r3, [r3, #20] + 8003c00: 009b lsls r3, r3, #2 + 8003c02: 693a ldr r2, [r7, #16] + 8003c04: 4313 orrs r3, r2 + 8003c06: 613b str r3, [r7, #16] + /* Set the Output N Idle state */ + tmpcr2 |= (OC_Config->OCNIdleState << 2U); + 8003c08: 683b ldr r3, [r7, #0] + 8003c0a: 699b ldr r3, [r3, #24] + 8003c0c: 009b lsls r3, r3, #2 + 8003c0e: 693a ldr r2, [r7, #16] + 8003c10: 4313 orrs r3, r2 + 8003c12: 613b str r3, [r7, #16] + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8003c14: 687b ldr r3, [r7, #4] + 8003c16: 693a ldr r2, [r7, #16] + 8003c18: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 8003c1a: 687b ldr r3, [r7, #4] + 8003c1c: 68fa ldr r2, [r7, #12] + 8003c1e: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR2 = OC_Config->Pulse; + 8003c20: 683b ldr r3, [r7, #0] + 8003c22: 685a ldr r2, [r3, #4] + 8003c24: 687b ldr r3, [r7, #4] + 8003c26: 639a str r2, [r3, #56] @ 0x38 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8003c28: 687b ldr r3, [r7, #4] + 8003c2a: 697a ldr r2, [r7, #20] + 8003c2c: 621a str r2, [r3, #32] +} + 8003c2e: bf00 nop + 8003c30: 371c adds r7, #28 + 8003c32: 46bd mov sp, r7 + 8003c34: bc80 pop {r7} + 8003c36: 4770 bx lr + 8003c38: 40012c00 .word 0x40012c00 + +08003c3c : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8003c3c: b480 push {r7} + 8003c3e: b087 sub sp, #28 + 8003c40: af00 add r7, sp, #0 + 8003c42: 6078 str r0, [r7, #4] + 8003c44: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8003c46: 687b ldr r3, [r7, #4] + 8003c48: 6a1b ldr r3, [r3, #32] + 8003c4a: 617b str r3, [r7, #20] + + /* Disable the Channel 3: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC3E; + 8003c4c: 687b ldr r3, [r7, #4] + 8003c4e: 6a1b ldr r3, [r3, #32] + 8003c50: f423 7280 bic.w r2, r3, #256 @ 0x100 + 8003c54: 687b ldr r3, [r7, #4] + 8003c56: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8003c58: 687b ldr r3, [r7, #4] + 8003c5a: 685b ldr r3, [r3, #4] + 8003c5c: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 8003c5e: 687b ldr r3, [r7, #4] + 8003c60: 69db ldr r3, [r3, #28] + 8003c62: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC3M; + 8003c64: 68fb ldr r3, [r7, #12] + 8003c66: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8003c6a: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC3S; + 8003c6c: 68fb ldr r3, [r7, #12] + 8003c6e: f023 0303 bic.w r3, r3, #3 + 8003c72: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 8003c74: 683b ldr r3, [r7, #0] + 8003c76: 681b ldr r3, [r3, #0] + 8003c78: 68fa ldr r2, [r7, #12] + 8003c7a: 4313 orrs r3, r2 + 8003c7c: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC3P; + 8003c7e: 697b ldr r3, [r7, #20] + 8003c80: f423 7300 bic.w r3, r3, #512 @ 0x200 + 8003c84: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 8U); + 8003c86: 683b ldr r3, [r7, #0] + 8003c88: 689b ldr r3, [r3, #8] + 8003c8a: 021b lsls r3, r3, #8 + 8003c8c: 697a ldr r2, [r7, #20] + 8003c8e: 4313 orrs r3, r2 + 8003c90: 617b str r3, [r7, #20] + + if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_3)) + 8003c92: 687b ldr r3, [r7, #4] + 8003c94: 4a1d ldr r2, [pc, #116] @ (8003d0c ) + 8003c96: 4293 cmp r3, r2 + 8003c98: d10d bne.n 8003cb6 + { + assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); + + /* Reset the Output N Polarity level */ + tmpccer &= ~TIM_CCER_CC3NP; + 8003c9a: 697b ldr r3, [r7, #20] + 8003c9c: f423 6300 bic.w r3, r3, #2048 @ 0x800 + 8003ca0: 617b str r3, [r7, #20] + /* Set the Output N Polarity */ + tmpccer |= (OC_Config->OCNPolarity << 8U); + 8003ca2: 683b ldr r3, [r7, #0] + 8003ca4: 68db ldr r3, [r3, #12] + 8003ca6: 021b lsls r3, r3, #8 + 8003ca8: 697a ldr r2, [r7, #20] + 8003caa: 4313 orrs r3, r2 + 8003cac: 617b str r3, [r7, #20] + /* Reset the Output N State */ + tmpccer &= ~TIM_CCER_CC3NE; + 8003cae: 697b ldr r3, [r7, #20] + 8003cb0: f423 6380 bic.w r3, r3, #1024 @ 0x400 + 8003cb4: 617b str r3, [r7, #20] + } + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + 8003cb6: 687b ldr r3, [r7, #4] + 8003cb8: 4a14 ldr r2, [pc, #80] @ (8003d0c ) + 8003cba: 4293 cmp r3, r2 + 8003cbc: d113 bne.n 8003ce6 + /* Check parameters */ + assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); + assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + + /* Reset the Output Compare and Output Compare N IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS3; + 8003cbe: 693b ldr r3, [r7, #16] + 8003cc0: f423 5380 bic.w r3, r3, #4096 @ 0x1000 + 8003cc4: 613b str r3, [r7, #16] + tmpcr2 &= ~TIM_CR2_OIS3N; + 8003cc6: 693b ldr r3, [r7, #16] + 8003cc8: f423 5300 bic.w r3, r3, #8192 @ 0x2000 + 8003ccc: 613b str r3, [r7, #16] + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 4U); + 8003cce: 683b ldr r3, [r7, #0] + 8003cd0: 695b ldr r3, [r3, #20] + 8003cd2: 011b lsls r3, r3, #4 + 8003cd4: 693a ldr r2, [r7, #16] + 8003cd6: 4313 orrs r3, r2 + 8003cd8: 613b str r3, [r7, #16] + /* Set the Output N Idle state */ + tmpcr2 |= (OC_Config->OCNIdleState << 4U); + 8003cda: 683b ldr r3, [r7, #0] + 8003cdc: 699b ldr r3, [r3, #24] + 8003cde: 011b lsls r3, r3, #4 + 8003ce0: 693a ldr r2, [r7, #16] + 8003ce2: 4313 orrs r3, r2 + 8003ce4: 613b str r3, [r7, #16] + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8003ce6: 687b ldr r3, [r7, #4] + 8003ce8: 693a ldr r2, [r7, #16] + 8003cea: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 8003cec: 687b ldr r3, [r7, #4] + 8003cee: 68fa ldr r2, [r7, #12] + 8003cf0: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR3 = OC_Config->Pulse; + 8003cf2: 683b ldr r3, [r7, #0] + 8003cf4: 685a ldr r2, [r3, #4] + 8003cf6: 687b ldr r3, [r7, #4] + 8003cf8: 63da str r2, [r3, #60] @ 0x3c + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8003cfa: 687b ldr r3, [r7, #4] + 8003cfc: 697a ldr r2, [r7, #20] + 8003cfe: 621a str r2, [r3, #32] +} + 8003d00: bf00 nop + 8003d02: 371c adds r7, #28 + 8003d04: 46bd mov sp, r7 + 8003d06: bc80 pop {r7} + 8003d08: 4770 bx lr + 8003d0a: bf00 nop + 8003d0c: 40012c00 .word 0x40012c00 + +08003d10 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +{ + 8003d10: b480 push {r7} + 8003d12: b087 sub sp, #28 + 8003d14: af00 add r7, sp, #0 + 8003d16: 6078 str r0, [r7, #4] + 8003d18: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8003d1a: 687b ldr r3, [r7, #4] + 8003d1c: 6a1b ldr r3, [r3, #32] + 8003d1e: 613b str r3, [r7, #16] + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= ~TIM_CCER_CC4E; + 8003d20: 687b ldr r3, [r7, #4] + 8003d22: 6a1b ldr r3, [r3, #32] + 8003d24: f423 5280 bic.w r2, r3, #4096 @ 0x1000 + 8003d28: 687b ldr r3, [r7, #4] + 8003d2a: 621a str r2, [r3, #32] + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8003d2c: 687b ldr r3, [r7, #4] + 8003d2e: 685b ldr r3, [r3, #4] + 8003d30: 617b str r3, [r7, #20] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 8003d32: 687b ldr r3, [r7, #4] + 8003d34: 69db ldr r3, [r3, #28] + 8003d36: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC4M; + 8003d38: 68fb ldr r3, [r7, #12] + 8003d3a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8003d3e: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC4S; + 8003d40: 68fb ldr r3, [r7, #12] + 8003d42: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8003d46: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 8003d48: 683b ldr r3, [r7, #0] + 8003d4a: 681b ldr r3, [r3, #0] + 8003d4c: 021b lsls r3, r3, #8 + 8003d4e: 68fa ldr r2, [r7, #12] + 8003d50: 4313 orrs r3, r2 + 8003d52: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC4P; + 8003d54: 693b ldr r3, [r7, #16] + 8003d56: f423 5300 bic.w r3, r3, #8192 @ 0x2000 + 8003d5a: 613b str r3, [r7, #16] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 12U); + 8003d5c: 683b ldr r3, [r7, #0] + 8003d5e: 689b ldr r3, [r3, #8] + 8003d60: 031b lsls r3, r3, #12 + 8003d62: 693a ldr r2, [r7, #16] + 8003d64: 4313 orrs r3, r2 + 8003d66: 613b str r3, [r7, #16] + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + 8003d68: 687b ldr r3, [r7, #4] + 8003d6a: 4a0f ldr r2, [pc, #60] @ (8003da8 ) + 8003d6c: 4293 cmp r3, r2 + 8003d6e: d109 bne.n 8003d84 + { + /* Check parameters */ + assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + + /* Reset the Output Compare IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS4; + 8003d70: 697b ldr r3, [r7, #20] + 8003d72: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8003d76: 617b str r3, [r7, #20] + + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 6U); + 8003d78: 683b ldr r3, [r7, #0] + 8003d7a: 695b ldr r3, [r3, #20] + 8003d7c: 019b lsls r3, r3, #6 + 8003d7e: 697a ldr r2, [r7, #20] + 8003d80: 4313 orrs r3, r2 + 8003d82: 617b str r3, [r7, #20] + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 8003d84: 687b ldr r3, [r7, #4] + 8003d86: 697a ldr r2, [r7, #20] + 8003d88: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 8003d8a: 687b ldr r3, [r7, #4] + 8003d8c: 68fa ldr r2, [r7, #12] + 8003d8e: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR4 = OC_Config->Pulse; + 8003d90: 683b ldr r3, [r7, #0] + 8003d92: 685a ldr r2, [r3, #4] + 8003d94: 687b ldr r3, [r7, #4] + 8003d96: 641a str r2, [r3, #64] @ 0x40 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8003d98: 687b ldr r3, [r7, #4] + 8003d9a: 693a ldr r2, [r7, #16] + 8003d9c: 621a str r2, [r3, #32] +} + 8003d9e: bf00 nop + 8003da0: 371c adds r7, #28 + 8003da2: 46bd mov sp, r7 + 8003da4: bc80 pop {r7} + 8003da6: 4770 bx lr + 8003da8: 40012c00 .word 0x40012c00 + +08003dac : + * @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) +{ + 8003dac: b480 push {r7} + 8003dae: b087 sub sp, #28 + 8003db0: af00 add r7, sp, #0 + 8003db2: 60f8 str r0, [r7, #12] + 8003db4: 60b9 str r1, [r7, #8] + 8003db6: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = TIMx->CCER; + 8003db8: 68fb ldr r3, [r7, #12] + 8003dba: 6a1b ldr r3, [r3, #32] + 8003dbc: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC1E; + 8003dbe: 68fb ldr r3, [r7, #12] + 8003dc0: 6a1b ldr r3, [r3, #32] + 8003dc2: f023 0201 bic.w r2, r3, #1 + 8003dc6: 68fb ldr r3, [r7, #12] + 8003dc8: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 8003dca: 68fb ldr r3, [r7, #12] + 8003dcc: 699b ldr r3, [r3, #24] + 8003dce: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + 8003dd0: 693b ldr r3, [r7, #16] + 8003dd2: f023 03f0 bic.w r3, r3, #240 @ 0xf0 + 8003dd6: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 4U); + 8003dd8: 687b ldr r3, [r7, #4] + 8003dda: 011b lsls r3, r3, #4 + 8003ddc: 693a ldr r2, [r7, #16] + 8003dde: 4313 orrs r3, r2 + 8003de0: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + 8003de2: 697b ldr r3, [r7, #20] + 8003de4: f023 030a bic.w r3, r3, #10 + 8003de8: 617b str r3, [r7, #20] + tmpccer |= TIM_ICPolarity; + 8003dea: 697a ldr r2, [r7, #20] + 8003dec: 68bb ldr r3, [r7, #8] + 8003dee: 4313 orrs r3, r2 + 8003df0: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + 8003df2: 68fb ldr r3, [r7, #12] + 8003df4: 693a ldr r2, [r7, #16] + 8003df6: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 8003df8: 68fb ldr r3, [r7, #12] + 8003dfa: 697a ldr r2, [r7, #20] + 8003dfc: 621a str r2, [r3, #32] +} + 8003dfe: bf00 nop + 8003e00: 371c adds r7, #28 + 8003e02: 46bd mov sp, r7 + 8003e04: bc80 pop {r7} + 8003e06: 4770 bx lr + +08003e08 : + * @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) +{ + 8003e08: b480 push {r7} + 8003e0a: b087 sub sp, #28 + 8003e0c: af00 add r7, sp, #0 + 8003e0e: 60f8 str r0, [r7, #12] + 8003e10: 60b9 str r1, [r7, #8] + 8003e12: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 2: Reset the CC2E Bit */ + tmpccer = TIMx->CCER; + 8003e14: 68fb ldr r3, [r7, #12] + 8003e16: 6a1b ldr r3, [r3, #32] + 8003e18: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC2E; + 8003e1a: 68fb ldr r3, [r7, #12] + 8003e1c: 6a1b ldr r3, [r3, #32] + 8003e1e: f023 0210 bic.w r2, r3, #16 + 8003e22: 68fb ldr r3, [r7, #12] + 8003e24: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 8003e26: 68fb ldr r3, [r7, #12] + 8003e28: 699b ldr r3, [r3, #24] + 8003e2a: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC2F; + 8003e2c: 693b ldr r3, [r7, #16] + 8003e2e: f423 4370 bic.w r3, r3, #61440 @ 0xf000 + 8003e32: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 12U); + 8003e34: 687b ldr r3, [r7, #4] + 8003e36: 031b lsls r3, r3, #12 + 8003e38: 693a ldr r2, [r7, #16] + 8003e3a: 4313 orrs r3, r2 + 8003e3c: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + 8003e3e: 697b ldr r3, [r7, #20] + 8003e40: f023 03a0 bic.w r3, r3, #160 @ 0xa0 + 8003e44: 617b str r3, [r7, #20] + tmpccer |= (TIM_ICPolarity << 4U); + 8003e46: 68bb ldr r3, [r7, #8] + 8003e48: 011b lsls r3, r3, #4 + 8003e4a: 697a ldr r2, [r7, #20] + 8003e4c: 4313 orrs r3, r2 + 8003e4e: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + 8003e50: 68fb ldr r3, [r7, #12] + 8003e52: 693a ldr r2, [r7, #16] + 8003e54: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 8003e56: 68fb ldr r3, [r7, #12] + 8003e58: 697a ldr r2, [r7, #20] + 8003e5a: 621a str r2, [r3, #32] +} + 8003e5c: bf00 nop + 8003e5e: 371c adds r7, #28 + 8003e60: 46bd mov sp, r7 + 8003e62: bc80 pop {r7} + 8003e64: 4770 bx lr + +08003e66 : + * @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) +{ + 8003e66: b480 push {r7} + 8003e68: b085 sub sp, #20 + 8003e6a: af00 add r7, sp, #0 + 8003e6c: 6078 str r0, [r7, #4] + 8003e6e: 6039 str r1, [r7, #0] + uint32_t tmpsmcr; + + /* Get the TIMx SMCR register value */ + tmpsmcr = TIMx->SMCR; + 8003e70: 687b ldr r3, [r7, #4] + 8003e72: 689b ldr r3, [r3, #8] + 8003e74: 60fb str r3, [r7, #12] + /* Reset the TS Bits */ + tmpsmcr &= ~TIM_SMCR_TS; + 8003e76: 68fb ldr r3, [r7, #12] + 8003e78: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8003e7c: 60fb str r3, [r7, #12] + /* Set the Input Trigger source and the slave mode*/ + tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); + 8003e7e: 683a ldr r2, [r7, #0] + 8003e80: 68fb ldr r3, [r7, #12] + 8003e82: 4313 orrs r3, r2 + 8003e84: f043 0307 orr.w r3, r3, #7 + 8003e88: 60fb str r3, [r7, #12] + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 8003e8a: 687b ldr r3, [r7, #4] + 8003e8c: 68fa ldr r2, [r7, #12] + 8003e8e: 609a str r2, [r3, #8] +} + 8003e90: bf00 nop + 8003e92: 3714 adds r7, #20 + 8003e94: 46bd mov sp, r7 + 8003e96: bc80 pop {r7} + 8003e98: 4770 bx lr + +08003e9a : + * 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) +{ + 8003e9a: b480 push {r7} + 8003e9c: b087 sub sp, #28 + 8003e9e: af00 add r7, sp, #0 + 8003ea0: 60f8 str r0, [r7, #12] + 8003ea2: 60b9 str r1, [r7, #8] + 8003ea4: 607a str r2, [r7, #4] + 8003ea6: 603b str r3, [r7, #0] + uint32_t tmpsmcr; + + tmpsmcr = TIMx->SMCR; + 8003ea8: 68fb ldr r3, [r7, #12] + 8003eaa: 689b ldr r3, [r3, #8] + 8003eac: 617b str r3, [r7, #20] + + /* Reset the ETR Bits */ + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 8003eae: 697b ldr r3, [r7, #20] + 8003eb0: f423 437f bic.w r3, r3, #65280 @ 0xff00 + 8003eb4: 617b str r3, [r7, #20] + + /* Set the Prescaler, the Filter value and the Polarity */ + tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); + 8003eb6: 683b ldr r3, [r7, #0] + 8003eb8: 021a lsls r2, r3, #8 + 8003eba: 687b ldr r3, [r7, #4] + 8003ebc: 431a orrs r2, r3 + 8003ebe: 68bb ldr r3, [r7, #8] + 8003ec0: 4313 orrs r3, r2 + 8003ec2: 697a ldr r2, [r7, #20] + 8003ec4: 4313 orrs r3, r2 + 8003ec6: 617b str r3, [r7, #20] + + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 8003ec8: 68fb ldr r3, [r7, #12] + 8003eca: 697a ldr r2, [r7, #20] + 8003ecc: 609a str r2, [r3, #8] +} + 8003ece: bf00 nop + 8003ed0: 371c adds r7, #28 + 8003ed2: 46bd mov sp, r7 + 8003ed4: bc80 pop {r7} + 8003ed6: 4770 bx lr + +08003ed8 : + * @param ChannelState specifies the TIM Channel CCxE bit new state. + * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE. + * @retval None + */ +void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState) +{ + 8003ed8: b480 push {r7} + 8003eda: b087 sub sp, #28 + 8003edc: af00 add r7, sp, #0 + 8003ede: 60f8 str r0, [r7, #12] + 8003ee0: 60b9 str r1, [r7, #8] + 8003ee2: 607a str r2, [r7, #4] + + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + assert_param(IS_TIM_CHANNELS(Channel)); + + tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */ + 8003ee4: 68bb ldr r3, [r7, #8] + 8003ee6: f003 031f and.w r3, r3, #31 + 8003eea: 2201 movs r2, #1 + 8003eec: fa02 f303 lsl.w r3, r2, r3 + 8003ef0: 617b str r3, [r7, #20] + + /* Reset the CCxE Bit */ + TIMx->CCER &= ~tmp; + 8003ef2: 68fb ldr r3, [r7, #12] + 8003ef4: 6a1a ldr r2, [r3, #32] + 8003ef6: 697b ldr r3, [r7, #20] + 8003ef8: 43db mvns r3, r3 + 8003efa: 401a ands r2, r3 + 8003efc: 68fb ldr r3, [r7, #12] + 8003efe: 621a str r2, [r3, #32] + + /* Set or reset the CCxE Bit */ + TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ + 8003f00: 68fb ldr r3, [r7, #12] + 8003f02: 6a1a ldr r2, [r3, #32] + 8003f04: 68bb ldr r3, [r7, #8] + 8003f06: f003 031f and.w r3, r3, #31 + 8003f0a: 6879 ldr r1, [r7, #4] + 8003f0c: fa01 f303 lsl.w r3, r1, r3 + 8003f10: 431a orrs r2, r3 + 8003f12: 68fb ldr r3, [r7, #12] + 8003f14: 621a str r2, [r3, #32] +} + 8003f16: bf00 nop + 8003f18: 371c adds r7, #28 + 8003f1a: 46bd mov sp, r7 + 8003f1c: bc80 pop {r7} + 8003f1e: 4770 bx lr + +08003f20 : + * mode. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, + const TIM_MasterConfigTypeDef *sMasterConfig) +{ + 8003f20: b480 push {r7} + 8003f22: b085 sub sp, #20 + 8003f24: af00 add r7, sp, #0 + 8003f26: 6078 str r0, [r7, #4] + 8003f28: 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); + 8003f2a: 687b ldr r3, [r7, #4] + 8003f2c: f893 303c ldrb.w r3, [r3, #60] @ 0x3c + 8003f30: 2b01 cmp r3, #1 + 8003f32: d101 bne.n 8003f38 + 8003f34: 2302 movs r3, #2 + 8003f36: e046 b.n 8003fc6 + 8003f38: 687b ldr r3, [r7, #4] + 8003f3a: 2201 movs r2, #1 + 8003f3c: f883 203c strb.w r2, [r3, #60] @ 0x3c + + /* Change the handler state */ + htim->State = HAL_TIM_STATE_BUSY; + 8003f40: 687b ldr r3, [r7, #4] + 8003f42: 2202 movs r2, #2 + 8003f44: f883 203d strb.w r2, [r3, #61] @ 0x3d + + /* Get the TIMx CR2 register value */ + tmpcr2 = htim->Instance->CR2; + 8003f48: 687b ldr r3, [r7, #4] + 8003f4a: 681b ldr r3, [r3, #0] + 8003f4c: 685b ldr r3, [r3, #4] + 8003f4e: 60fb str r3, [r7, #12] + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + 8003f50: 687b ldr r3, [r7, #4] + 8003f52: 681b ldr r3, [r3, #0] + 8003f54: 689b ldr r3, [r3, #8] + 8003f56: 60bb str r3, [r7, #8] + + /* Reset the MMS Bits */ + tmpcr2 &= ~TIM_CR2_MMS; + 8003f58: 68fb ldr r3, [r7, #12] + 8003f5a: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8003f5e: 60fb str r3, [r7, #12] + /* Select the TRGO source */ + tmpcr2 |= sMasterConfig->MasterOutputTrigger; + 8003f60: 683b ldr r3, [r7, #0] + 8003f62: 681b ldr r3, [r3, #0] + 8003f64: 68fa ldr r2, [r7, #12] + 8003f66: 4313 orrs r3, r2 + 8003f68: 60fb str r3, [r7, #12] + + /* Update TIMx CR2 */ + htim->Instance->CR2 = tmpcr2; + 8003f6a: 687b ldr r3, [r7, #4] + 8003f6c: 681b ldr r3, [r3, #0] + 8003f6e: 68fa ldr r2, [r7, #12] + 8003f70: 605a str r2, [r3, #4] + + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 8003f72: 687b ldr r3, [r7, #4] + 8003f74: 681b ldr r3, [r3, #0] + 8003f76: 4a16 ldr r2, [pc, #88] @ (8003fd0 ) + 8003f78: 4293 cmp r3, r2 + 8003f7a: d00e beq.n 8003f9a + 8003f7c: 687b ldr r3, [r7, #4] + 8003f7e: 681b ldr r3, [r3, #0] + 8003f80: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8003f84: d009 beq.n 8003f9a + 8003f86: 687b ldr r3, [r7, #4] + 8003f88: 681b ldr r3, [r3, #0] + 8003f8a: 4a12 ldr r2, [pc, #72] @ (8003fd4 ) + 8003f8c: 4293 cmp r3, r2 + 8003f8e: d004 beq.n 8003f9a + 8003f90: 687b ldr r3, [r7, #4] + 8003f92: 681b ldr r3, [r3, #0] + 8003f94: 4a10 ldr r2, [pc, #64] @ (8003fd8 ) + 8003f96: 4293 cmp r3, r2 + 8003f98: d10c bne.n 8003fb4 + { + /* Reset the MSM Bit */ + tmpsmcr &= ~TIM_SMCR_MSM; + 8003f9a: 68bb ldr r3, [r7, #8] + 8003f9c: f023 0380 bic.w r3, r3, #128 @ 0x80 + 8003fa0: 60bb str r3, [r7, #8] + /* Set master mode */ + tmpsmcr |= sMasterConfig->MasterSlaveMode; + 8003fa2: 683b ldr r3, [r7, #0] + 8003fa4: 685b ldr r3, [r3, #4] + 8003fa6: 68ba ldr r2, [r7, #8] + 8003fa8: 4313 orrs r3, r2 + 8003faa: 60bb str r3, [r7, #8] + + /* Update TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 8003fac: 687b ldr r3, [r7, #4] + 8003fae: 681b ldr r3, [r3, #0] + 8003fb0: 68ba ldr r2, [r7, #8] + 8003fb2: 609a str r2, [r3, #8] + } + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + 8003fb4: 687b ldr r3, [r7, #4] + 8003fb6: 2201 movs r2, #1 + 8003fb8: f883 203d strb.w r2, [r3, #61] @ 0x3d + + __HAL_UNLOCK(htim); + 8003fbc: 687b ldr r3, [r7, #4] + 8003fbe: 2200 movs r2, #0 + 8003fc0: f883 203c strb.w r2, [r3, #60] @ 0x3c + + return HAL_OK; + 8003fc4: 2300 movs r3, #0 +} + 8003fc6: 4618 mov r0, r3 + 8003fc8: 3714 adds r7, #20 + 8003fca: 46bd mov sp, r7 + 8003fcc: bc80 pop {r7} + 8003fce: 4770 bx lr + 8003fd0: 40012c00 .word 0x40012c00 + 8003fd4: 40000400 .word 0x40000400 + 8003fd8: 40000800 .word 0x40000800 + +08003fdc : + * @param cfg pointer to a USB_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_CoreInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg) +{ + 8003fdc: b480 push {r7} + 8003fde: b085 sub sp, #20 + 8003fe0: af00 add r7, sp, #0 + 8003fe2: 60f8 str r0, [r7, #12] + 8003fe4: 4638 mov r0, r7 + 8003fe6: e880 000e stmia.w r0, {r1, r2, r3} + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; + 8003fea: 2300 movs r3, #0 +} + 8003fec: 4618 mov r0, r3 + 8003fee: 3714 adds r7, #20 + 8003ff0: 46bd mov sp, r7 + 8003ff2: bc80 pop {r7} + 8003ff4: 4770 bx lr + +08003ff6 : + * Enables the controller's Global Int in the AHB Config reg + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_EnableGlobalInt(USB_TypeDef *USBx) +{ + 8003ff6: b480 push {r7} + 8003ff8: b085 sub sp, #20 + 8003ffa: af00 add r7, sp, #0 + 8003ffc: 6078 str r0, [r7, #4] + uint32_t winterruptmask; + + /* Clear pending interrupts */ + USBx->ISTR = 0U; + 8003ffe: 687b ldr r3, [r7, #4] + 8004000: 2200 movs r2, #0 + 8004002: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + /* Set winterruptmask variable */ + winterruptmask = USB_CNTR_CTRM | USB_CNTR_WKUPM | + 8004006: f44f 433f mov.w r3, #48896 @ 0xbf00 + 800400a: 60fb str r3, [r7, #12] + USB_CNTR_SUSPM | USB_CNTR_ERRM | + USB_CNTR_SOFM | USB_CNTR_ESOFM | + USB_CNTR_RESETM; + + /* Set interrupt mask */ + USBx->CNTR = (uint16_t)winterruptmask; + 800400c: 68fb ldr r3, [r7, #12] + 800400e: b29a uxth r2, r3 + 8004010: 687b ldr r3, [r7, #4] + 8004012: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + + return HAL_OK; + 8004016: 2300 movs r3, #0 +} + 8004018: 4618 mov r0, r3 + 800401a: 3714 adds r7, #20 + 800401c: 46bd mov sp, r7 + 800401e: bc80 pop {r7} + 8004020: 4770 bx lr + +08004022 : + * Disable the controller's Global Int in the AHB Config reg + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DisableGlobalInt(USB_TypeDef *USBx) +{ + 8004022: b480 push {r7} + 8004024: b085 sub sp, #20 + 8004026: af00 add r7, sp, #0 + 8004028: 6078 str r0, [r7, #4] + uint32_t winterruptmask; + + /* Set winterruptmask variable */ + winterruptmask = USB_CNTR_CTRM | USB_CNTR_WKUPM | + 800402a: f44f 433f mov.w r3, #48896 @ 0xbf00 + 800402e: 60fb str r3, [r7, #12] + USB_CNTR_SUSPM | USB_CNTR_ERRM | + USB_CNTR_SOFM | USB_CNTR_ESOFM | + USB_CNTR_RESETM; + + /* Clear interrupt mask */ + USBx->CNTR &= (uint16_t)(~winterruptmask); + 8004030: 687b ldr r3, [r7, #4] + 8004032: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40 + 8004036: b29a uxth r2, r3 + 8004038: 68fb ldr r3, [r7, #12] + 800403a: b29b uxth r3, r3 + 800403c: 43db mvns r3, r3 + 800403e: b29b uxth r3, r3 + 8004040: 4013 ands r3, r2 + 8004042: b29a uxth r2, r3 + 8004044: 687b ldr r3, [r7, #4] + 8004046: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + + return HAL_OK; + 800404a: 2300 movs r3, #0 +} + 800404c: 4618 mov r0, r3 + 800404e: 3714 adds r7, #20 + 8004050: 46bd mov sp, r7 + 8004052: bc80 pop {r7} + 8004054: 4770 bx lr + +08004056 : + * This parameter can be one of the these values: + * @arg USB_DEVICE_MODE Peripheral mode + * @retval HAL status + */ +HAL_StatusTypeDef USB_SetCurrentMode(USB_TypeDef *USBx, USB_ModeTypeDef mode) +{ + 8004056: b480 push {r7} + 8004058: b083 sub sp, #12 + 800405a: af00 add r7, sp, #0 + 800405c: 6078 str r0, [r7, #4] + 800405e: 460b mov r3, r1 + 8004060: 70fb strb r3, [r7, #3] + + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return HAL_OK; + 8004062: 2300 movs r3, #0 +} + 8004064: 4618 mov r0, r3 + 8004066: 370c adds r7, #12 + 8004068: 46bd mov sp, r7 + 800406a: bc80 pop {r7} + 800406c: 4770 bx lr + +0800406e : + * @param cfg pointer to a USB_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg) +{ + 800406e: b480 push {r7} + 8004070: b085 sub sp, #20 + 8004072: af00 add r7, sp, #0 + 8004074: 60f8 str r0, [r7, #12] + 8004076: 4638 mov r0, r7 + 8004078: e880 000e stmia.w r0, {r1, r2, r3} + /* Prevent unused argument(s) compilation warning */ + UNUSED(cfg); + + /* Init Device */ + /* CNTR_FRES = 1 */ + USBx->CNTR = (uint16_t)USB_CNTR_FRES; + 800407c: 68fb ldr r3, [r7, #12] + 800407e: 2201 movs r2, #1 + 8004080: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + + /* CNTR_FRES = 0 */ + USBx->CNTR = 0U; + 8004084: 68fb ldr r3, [r7, #12] + 8004086: 2200 movs r2, #0 + 8004088: f8a3 2040 strh.w r2, [r3, #64] @ 0x40 + + /* Clear pending interrupts */ + USBx->ISTR = 0U; + 800408c: 68fb ldr r3, [r7, #12] + 800408e: 2200 movs r2, #0 + 8004090: f8a3 2044 strh.w r2, [r3, #68] @ 0x44 + + /*Set Btable Address*/ + USBx->BTABLE = BTABLE_ADDRESS; + 8004094: 68fb ldr r3, [r7, #12] + 8004096: 2200 movs r2, #0 + 8004098: f8a3 2050 strh.w r2, [r3, #80] @ 0x50 + + return HAL_OK; + 800409c: 2300 movs r3, #0 +} + 800409e: 4618 mov r0, r3 + 80040a0: 3714 adds r7, #20 + 80040a2: 46bd mov sp, r7 + 80040a4: bc80 pop {r7} + 80040a6: 4770 bx lr + +080040a8 : + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_ActivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + 80040a8: b480 push {r7} + 80040aa: b09d sub sp, #116 @ 0x74 + 80040ac: af00 add r7, sp, #0 + 80040ae: 6078 str r0, [r7, #4] + 80040b0: 6039 str r1, [r7, #0] + HAL_StatusTypeDef ret = HAL_OK; + 80040b2: 2300 movs r3, #0 + 80040b4: f887 306f strb.w r3, [r7, #111] @ 0x6f + uint16_t wEpRegVal; + + wEpRegVal = PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_T_MASK; + 80040b8: 687a ldr r2, [r7, #4] + 80040ba: 683b ldr r3, [r7, #0] + 80040bc: 781b ldrb r3, [r3, #0] + 80040be: 009b lsls r3, r3, #2 + 80040c0: 4413 add r3, r2 + 80040c2: 881b ldrh r3, [r3, #0] + 80040c4: b29b uxth r3, r3 + 80040c6: f423 43ec bic.w r3, r3, #30208 @ 0x7600 + 80040ca: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80040ce: f8a7 306c strh.w r3, [r7, #108] @ 0x6c + + /* initialize Endpoint */ + switch (ep->type) + 80040d2: 683b ldr r3, [r7, #0] + 80040d4: 78db ldrb r3, [r3, #3] + 80040d6: 2b03 cmp r3, #3 + 80040d8: d81f bhi.n 800411a + 80040da: a201 add r2, pc, #4 @ (adr r2, 80040e0 ) + 80040dc: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 80040e0: 080040f1 .word 0x080040f1 + 80040e4: 0800410d .word 0x0800410d + 80040e8: 08004123 .word 0x08004123 + 80040ec: 080040ff .word 0x080040ff + { + case EP_TYPE_CTRL: + wEpRegVal |= USB_EP_CONTROL; + 80040f0: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c + 80040f4: f443 7300 orr.w r3, r3, #512 @ 0x200 + 80040f8: f8a7 306c strh.w r3, [r7, #108] @ 0x6c + break; + 80040fc: e012 b.n 8004124 + case EP_TYPE_BULK: + wEpRegVal |= USB_EP_BULK; + break; + + case EP_TYPE_INTR: + wEpRegVal |= USB_EP_INTERRUPT; + 80040fe: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c + 8004102: f443 63c0 orr.w r3, r3, #1536 @ 0x600 + 8004106: f8a7 306c strh.w r3, [r7, #108] @ 0x6c + break; + 800410a: e00b b.n 8004124 + + case EP_TYPE_ISOC: + wEpRegVal |= USB_EP_ISOCHRONOUS; + 800410c: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c + 8004110: f443 6380 orr.w r3, r3, #1024 @ 0x400 + 8004114: f8a7 306c strh.w r3, [r7, #108] @ 0x6c + break; + 8004118: e004 b.n 8004124 + + default: + ret = HAL_ERROR; + 800411a: 2301 movs r3, #1 + 800411c: f887 306f strb.w r3, [r7, #111] @ 0x6f + break; + 8004120: e000 b.n 8004124 + break; + 8004122: bf00 nop + } + + PCD_SET_ENDPOINT(USBx, ep->num, (wEpRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX)); + 8004124: 687a ldr r2, [r7, #4] + 8004126: 683b ldr r3, [r7, #0] + 8004128: 781b ldrb r3, [r3, #0] + 800412a: 009b lsls r3, r3, #2 + 800412c: 441a add r2, r3 + 800412e: f8b7 306c ldrh.w r3, [r7, #108] @ 0x6c + 8004132: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004136: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800413a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800413e: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004142: b29b uxth r3, r3 + 8004144: 8013 strh r3, [r2, #0] + + PCD_SET_EP_ADDRESS(USBx, ep->num, ep->num); + 8004146: 687a ldr r2, [r7, #4] + 8004148: 683b ldr r3, [r7, #0] + 800414a: 781b ldrb r3, [r3, #0] + 800414c: 009b lsls r3, r3, #2 + 800414e: 4413 add r3, r2 + 8004150: 881b ldrh r3, [r3, #0] + 8004152: b29b uxth r3, r3 + 8004154: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004158: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800415c: b29b uxth r3, r3 + 800415e: 683a ldr r2, [r7, #0] + 8004160: 7812 ldrb r2, [r2, #0] + 8004162: 4313 orrs r3, r2 + 8004164: f8a7 3066 strh.w r3, [r7, #102] @ 0x66 + 8004168: 687a ldr r2, [r7, #4] + 800416a: 683b ldr r3, [r7, #0] + 800416c: 781b ldrb r3, [r3, #0] + 800416e: 009b lsls r3, r3, #2 + 8004170: 441a add r2, r3 + 8004172: f8b7 3066 ldrh.w r3, [r7, #102] @ 0x66 + 8004176: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800417a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800417e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004182: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004186: b29b uxth r3, r3 + 8004188: 8013 strh r3, [r2, #0] + + if (ep->doublebuffer == 0U) + 800418a: 683b ldr r3, [r7, #0] + 800418c: 7b1b ldrb r3, [r3, #12] + 800418e: 2b00 cmp r3, #0 + 8004190: f040 8178 bne.w 8004484 + { + if (ep->is_in != 0U) + 8004194: 683b ldr r3, [r7, #0] + 8004196: 785b ldrb r3, [r3, #1] + 8004198: 2b00 cmp r3, #0 + 800419a: f000 8084 beq.w 80042a6 + { + /*Set the endpoint Transmit buffer address */ + PCD_SET_EP_TX_ADDRESS(USBx, ep->num, ep->pmaadress); + 800419e: 687b ldr r3, [r7, #4] + 80041a0: 61bb str r3, [r7, #24] + 80041a2: 687b ldr r3, [r7, #4] + 80041a4: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80041a8: b29b uxth r3, r3 + 80041aa: 461a mov r2, r3 + 80041ac: 69bb ldr r3, [r7, #24] + 80041ae: 4413 add r3, r2 + 80041b0: 61bb str r3, [r7, #24] + 80041b2: 683b ldr r3, [r7, #0] + 80041b4: 781b ldrb r3, [r3, #0] + 80041b6: 011a lsls r2, r3, #4 + 80041b8: 69bb ldr r3, [r7, #24] + 80041ba: 4413 add r3, r2 + 80041bc: f503 6380 add.w r3, r3, #1024 @ 0x400 + 80041c0: 617b str r3, [r7, #20] + 80041c2: 683b ldr r3, [r7, #0] + 80041c4: 88db ldrh r3, [r3, #6] + 80041c6: 085b lsrs r3, r3, #1 + 80041c8: b29b uxth r3, r3 + 80041ca: 005b lsls r3, r3, #1 + 80041cc: b29a uxth r2, r3 + 80041ce: 697b ldr r3, [r7, #20] + 80041d0: 801a strh r2, [r3, #0] + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 80041d2: 687a ldr r2, [r7, #4] + 80041d4: 683b ldr r3, [r7, #0] + 80041d6: 781b ldrb r3, [r3, #0] + 80041d8: 009b lsls r3, r3, #2 + 80041da: 4413 add r3, r2 + 80041dc: 881b ldrh r3, [r3, #0] + 80041de: 827b strh r3, [r7, #18] + 80041e0: 8a7b ldrh r3, [r7, #18] + 80041e2: f003 0340 and.w r3, r3, #64 @ 0x40 + 80041e6: 2b00 cmp r3, #0 + 80041e8: d01b beq.n 8004222 + 80041ea: 687a ldr r2, [r7, #4] + 80041ec: 683b ldr r3, [r7, #0] + 80041ee: 781b ldrb r3, [r3, #0] + 80041f0: 009b lsls r3, r3, #2 + 80041f2: 4413 add r3, r2 + 80041f4: 881b ldrh r3, [r3, #0] + 80041f6: b29b uxth r3, r3 + 80041f8: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80041fc: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004200: 823b strh r3, [r7, #16] + 8004202: 687a ldr r2, [r7, #4] + 8004204: 683b ldr r3, [r7, #0] + 8004206: 781b ldrb r3, [r3, #0] + 8004208: 009b lsls r3, r3, #2 + 800420a: 441a add r2, r3 + 800420c: 8a3b ldrh r3, [r7, #16] + 800420e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004212: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004216: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800421a: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 800421e: b29b uxth r3, r3 + 8004220: 8013 strh r3, [r2, #0] + + if (ep->type != EP_TYPE_ISOC) + 8004222: 683b ldr r3, [r7, #0] + 8004224: 78db ldrb r3, [r3, #3] + 8004226: 2b01 cmp r3, #1 + 8004228: d020 beq.n 800426c + { + /* Configure NAK status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); + 800422a: 687a ldr r2, [r7, #4] + 800422c: 683b ldr r3, [r7, #0] + 800422e: 781b ldrb r3, [r3, #0] + 8004230: 009b lsls r3, r3, #2 + 8004232: 4413 add r3, r2 + 8004234: 881b ldrh r3, [r3, #0] + 8004236: b29b uxth r3, r3 + 8004238: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800423c: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8004240: 81bb strh r3, [r7, #12] + 8004242: 89bb ldrh r3, [r7, #12] + 8004244: f083 0320 eor.w r3, r3, #32 + 8004248: 81bb strh r3, [r7, #12] + 800424a: 687a ldr r2, [r7, #4] + 800424c: 683b ldr r3, [r7, #0] + 800424e: 781b ldrb r3, [r3, #0] + 8004250: 009b lsls r3, r3, #2 + 8004252: 441a add r2, r3 + 8004254: 89bb ldrh r3, [r7, #12] + 8004256: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800425a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800425e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004262: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004266: b29b uxth r3, r3 + 8004268: 8013 strh r3, [r2, #0] + 800426a: e2d5 b.n 8004818 + } + else + { + /* Configure TX Endpoint to disabled state */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + 800426c: 687a ldr r2, [r7, #4] + 800426e: 683b ldr r3, [r7, #0] + 8004270: 781b ldrb r3, [r3, #0] + 8004272: 009b lsls r3, r3, #2 + 8004274: 4413 add r3, r2 + 8004276: 881b ldrh r3, [r3, #0] + 8004278: b29b uxth r3, r3 + 800427a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800427e: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8004282: 81fb strh r3, [r7, #14] + 8004284: 687a ldr r2, [r7, #4] + 8004286: 683b ldr r3, [r7, #0] + 8004288: 781b ldrb r3, [r3, #0] + 800428a: 009b lsls r3, r3, #2 + 800428c: 441a add r2, r3 + 800428e: 89fb ldrh r3, [r7, #14] + 8004290: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004294: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004298: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800429c: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80042a0: b29b uxth r3, r3 + 80042a2: 8013 strh r3, [r2, #0] + 80042a4: e2b8 b.n 8004818 + } + } + else + { + /* Set the endpoint Receive buffer address */ + PCD_SET_EP_RX_ADDRESS(USBx, ep->num, ep->pmaadress); + 80042a6: 687b ldr r3, [r7, #4] + 80042a8: 633b str r3, [r7, #48] @ 0x30 + 80042aa: 687b ldr r3, [r7, #4] + 80042ac: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80042b0: b29b uxth r3, r3 + 80042b2: 461a mov r2, r3 + 80042b4: 6b3b ldr r3, [r7, #48] @ 0x30 + 80042b6: 4413 add r3, r2 + 80042b8: 633b str r3, [r7, #48] @ 0x30 + 80042ba: 683b ldr r3, [r7, #0] + 80042bc: 781b ldrb r3, [r3, #0] + 80042be: 011a lsls r2, r3, #4 + 80042c0: 6b3b ldr r3, [r7, #48] @ 0x30 + 80042c2: 4413 add r3, r2 + 80042c4: f503 6381 add.w r3, r3, #1032 @ 0x408 + 80042c8: 62fb str r3, [r7, #44] @ 0x2c + 80042ca: 683b ldr r3, [r7, #0] + 80042cc: 88db ldrh r3, [r3, #6] + 80042ce: 085b lsrs r3, r3, #1 + 80042d0: b29b uxth r3, r3 + 80042d2: 005b lsls r3, r3, #1 + 80042d4: b29a uxth r2, r3 + 80042d6: 6afb ldr r3, [r7, #44] @ 0x2c + 80042d8: 801a strh r2, [r3, #0] + + /* Set the endpoint Receive buffer counter */ + PCD_SET_EP_RX_CNT(USBx, ep->num, ep->maxpacket); + 80042da: 687b ldr r3, [r7, #4] + 80042dc: 62bb str r3, [r7, #40] @ 0x28 + 80042de: 687b ldr r3, [r7, #4] + 80042e0: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80042e4: b29b uxth r3, r3 + 80042e6: 461a mov r2, r3 + 80042e8: 6abb ldr r3, [r7, #40] @ 0x28 + 80042ea: 4413 add r3, r2 + 80042ec: 62bb str r3, [r7, #40] @ 0x28 + 80042ee: 683b ldr r3, [r7, #0] + 80042f0: 781b ldrb r3, [r3, #0] + 80042f2: 011a lsls r2, r3, #4 + 80042f4: 6abb ldr r3, [r7, #40] @ 0x28 + 80042f6: 4413 add r3, r2 + 80042f8: f203 430c addw r3, r3, #1036 @ 0x40c + 80042fc: 627b str r3, [r7, #36] @ 0x24 + 80042fe: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004300: 881b ldrh r3, [r3, #0] + 8004302: b29b uxth r3, r3 + 8004304: f3c3 0309 ubfx r3, r3, #0, #10 + 8004308: b29a uxth r2, r3 + 800430a: 6a7b ldr r3, [r7, #36] @ 0x24 + 800430c: 801a strh r2, [r3, #0] + 800430e: 683b ldr r3, [r7, #0] + 8004310: 691b ldr r3, [r3, #16] + 8004312: 2b3e cmp r3, #62 @ 0x3e + 8004314: d91d bls.n 8004352 + 8004316: 683b ldr r3, [r7, #0] + 8004318: 691b ldr r3, [r3, #16] + 800431a: 095b lsrs r3, r3, #5 + 800431c: 66bb str r3, [r7, #104] @ 0x68 + 800431e: 683b ldr r3, [r7, #0] + 8004320: 691b ldr r3, [r3, #16] + 8004322: f003 031f and.w r3, r3, #31 + 8004326: 2b00 cmp r3, #0 + 8004328: d102 bne.n 8004330 + 800432a: 6ebb ldr r3, [r7, #104] @ 0x68 + 800432c: 3b01 subs r3, #1 + 800432e: 66bb str r3, [r7, #104] @ 0x68 + 8004330: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004332: 881b ldrh r3, [r3, #0] + 8004334: b29a uxth r2, r3 + 8004336: 6ebb ldr r3, [r7, #104] @ 0x68 + 8004338: b29b uxth r3, r3 + 800433a: 029b lsls r3, r3, #10 + 800433c: b29b uxth r3, r3 + 800433e: 4313 orrs r3, r2 + 8004340: b29b uxth r3, r3 + 8004342: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004346: ea6f 4353 mvn.w r3, r3, lsr #17 + 800434a: b29a uxth r2, r3 + 800434c: 6a7b ldr r3, [r7, #36] @ 0x24 + 800434e: 801a strh r2, [r3, #0] + 8004350: e026 b.n 80043a0 + 8004352: 683b ldr r3, [r7, #0] + 8004354: 691b ldr r3, [r3, #16] + 8004356: 2b00 cmp r3, #0 + 8004358: d10a bne.n 8004370 + 800435a: 6a7b ldr r3, [r7, #36] @ 0x24 + 800435c: 881b ldrh r3, [r3, #0] + 800435e: b29b uxth r3, r3 + 8004360: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004364: ea6f 4353 mvn.w r3, r3, lsr #17 + 8004368: b29a uxth r2, r3 + 800436a: 6a7b ldr r3, [r7, #36] @ 0x24 + 800436c: 801a strh r2, [r3, #0] + 800436e: e017 b.n 80043a0 + 8004370: 683b ldr r3, [r7, #0] + 8004372: 691b ldr r3, [r3, #16] + 8004374: 085b lsrs r3, r3, #1 + 8004376: 66bb str r3, [r7, #104] @ 0x68 + 8004378: 683b ldr r3, [r7, #0] + 800437a: 691b ldr r3, [r3, #16] + 800437c: f003 0301 and.w r3, r3, #1 + 8004380: 2b00 cmp r3, #0 + 8004382: d002 beq.n 800438a + 8004384: 6ebb ldr r3, [r7, #104] @ 0x68 + 8004386: 3301 adds r3, #1 + 8004388: 66bb str r3, [r7, #104] @ 0x68 + 800438a: 6a7b ldr r3, [r7, #36] @ 0x24 + 800438c: 881b ldrh r3, [r3, #0] + 800438e: b29a uxth r2, r3 + 8004390: 6ebb ldr r3, [r7, #104] @ 0x68 + 8004392: b29b uxth r3, r3 + 8004394: 029b lsls r3, r3, #10 + 8004396: b29b uxth r3, r3 + 8004398: 4313 orrs r3, r2 + 800439a: b29a uxth r2, r3 + 800439c: 6a7b ldr r3, [r7, #36] @ 0x24 + 800439e: 801a strh r2, [r3, #0] + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 80043a0: 687a ldr r2, [r7, #4] + 80043a2: 683b ldr r3, [r7, #0] + 80043a4: 781b ldrb r3, [r3, #0] + 80043a6: 009b lsls r3, r3, #2 + 80043a8: 4413 add r3, r2 + 80043aa: 881b ldrh r3, [r3, #0] + 80043ac: 847b strh r3, [r7, #34] @ 0x22 + 80043ae: 8c7b ldrh r3, [r7, #34] @ 0x22 + 80043b0: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 80043b4: 2b00 cmp r3, #0 + 80043b6: d01b beq.n 80043f0 + 80043b8: 687a ldr r2, [r7, #4] + 80043ba: 683b ldr r3, [r7, #0] + 80043bc: 781b ldrb r3, [r3, #0] + 80043be: 009b lsls r3, r3, #2 + 80043c0: 4413 add r3, r2 + 80043c2: 881b ldrh r3, [r3, #0] + 80043c4: b29b uxth r3, r3 + 80043c6: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80043ca: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80043ce: 843b strh r3, [r7, #32] + 80043d0: 687a ldr r2, [r7, #4] + 80043d2: 683b ldr r3, [r7, #0] + 80043d4: 781b ldrb r3, [r3, #0] + 80043d6: 009b lsls r3, r3, #2 + 80043d8: 441a add r2, r3 + 80043da: 8c3b ldrh r3, [r7, #32] + 80043dc: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80043e0: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80043e4: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 80043e8: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80043ec: b29b uxth r3, r3 + 80043ee: 8013 strh r3, [r2, #0] + + if (ep->num == 0U) + 80043f0: 683b ldr r3, [r7, #0] + 80043f2: 781b ldrb r3, [r3, #0] + 80043f4: 2b00 cmp r3, #0 + 80043f6: d124 bne.n 8004442 + { + /* Configure VALID status for EP0 */ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + 80043f8: 687a ldr r2, [r7, #4] + 80043fa: 683b ldr r3, [r7, #0] + 80043fc: 781b ldrb r3, [r3, #0] + 80043fe: 009b lsls r3, r3, #2 + 8004400: 4413 add r3, r2 + 8004402: 881b ldrh r3, [r3, #0] + 8004404: b29b uxth r3, r3 + 8004406: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 800440a: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800440e: 83bb strh r3, [r7, #28] + 8004410: 8bbb ldrh r3, [r7, #28] + 8004412: f483 5380 eor.w r3, r3, #4096 @ 0x1000 + 8004416: 83bb strh r3, [r7, #28] + 8004418: 8bbb ldrh r3, [r7, #28] + 800441a: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 800441e: 83bb strh r3, [r7, #28] + 8004420: 687a ldr r2, [r7, #4] + 8004422: 683b ldr r3, [r7, #0] + 8004424: 781b ldrb r3, [r3, #0] + 8004426: 009b lsls r3, r3, #2 + 8004428: 441a add r2, r3 + 800442a: 8bbb ldrh r3, [r7, #28] + 800442c: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004430: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004434: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004438: f043 0380 orr.w r3, r3, #128 @ 0x80 + 800443c: b29b uxth r3, r3 + 800443e: 8013 strh r3, [r2, #0] + 8004440: e1ea b.n 8004818 + } + else + { + /* Configure NAK status for OUT Endpoint */ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_NAK); + 8004442: 687a ldr r2, [r7, #4] + 8004444: 683b ldr r3, [r7, #0] + 8004446: 781b ldrb r3, [r3, #0] + 8004448: 009b lsls r3, r3, #2 + 800444a: 4413 add r3, r2 + 800444c: 881b ldrh r3, [r3, #0] + 800444e: b29b uxth r3, r3 + 8004450: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8004454: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004458: 83fb strh r3, [r7, #30] + 800445a: 8bfb ldrh r3, [r7, #30] + 800445c: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 8004460: 83fb strh r3, [r7, #30] + 8004462: 687a ldr r2, [r7, #4] + 8004464: 683b ldr r3, [r7, #0] + 8004466: 781b ldrb r3, [r3, #0] + 8004468: 009b lsls r3, r3, #2 + 800446a: 441a add r2, r3 + 800446c: 8bfb ldrh r3, [r7, #30] + 800446e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004472: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004476: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800447a: f043 0380 orr.w r3, r3, #128 @ 0x80 + 800447e: b29b uxth r3, r3 + 8004480: 8013 strh r3, [r2, #0] + 8004482: e1c9 b.n 8004818 + } +#if (USE_USB_DOUBLE_BUFFER == 1U) + /* Double Buffer */ + else + { + if (ep->type == EP_TYPE_BULK) + 8004484: 683b ldr r3, [r7, #0] + 8004486: 78db ldrb r3, [r3, #3] + 8004488: 2b02 cmp r3, #2 + 800448a: d11e bne.n 80044ca + { + /* Set bulk endpoint as double buffered */ + PCD_SET_BULK_EP_DBUF(USBx, ep->num); + 800448c: 687a ldr r2, [r7, #4] + 800448e: 683b ldr r3, [r7, #0] + 8004490: 781b ldrb r3, [r3, #0] + 8004492: 009b lsls r3, r3, #2 + 8004494: 4413 add r3, r2 + 8004496: 881b ldrh r3, [r3, #0] + 8004498: b29b uxth r3, r3 + 800449a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800449e: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80044a2: f8a7 3062 strh.w r3, [r7, #98] @ 0x62 + 80044a6: 687a ldr r2, [r7, #4] + 80044a8: 683b ldr r3, [r7, #0] + 80044aa: 781b ldrb r3, [r3, #0] + 80044ac: 009b lsls r3, r3, #2 + 80044ae: 441a add r2, r3 + 80044b0: f8b7 3062 ldrh.w r3, [r7, #98] @ 0x62 + 80044b4: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80044b8: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80044bc: f443 4301 orr.w r3, r3, #33024 @ 0x8100 + 80044c0: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80044c4: b29b uxth r3, r3 + 80044c6: 8013 strh r3, [r2, #0] + 80044c8: e01d b.n 8004506 + } + else + { + /* Set the ISOC endpoint in double buffer mode */ + PCD_CLEAR_EP_KIND(USBx, ep->num); + 80044ca: 687a ldr r2, [r7, #4] + 80044cc: 683b ldr r3, [r7, #0] + 80044ce: 781b ldrb r3, [r3, #0] + 80044d0: 009b lsls r3, r3, #2 + 80044d2: 4413 add r3, r2 + 80044d4: 881b ldrh r3, [r3, #0] + 80044d6: b29b uxth r3, r3 + 80044d8: f423 43e2 bic.w r3, r3, #28928 @ 0x7100 + 80044dc: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80044e0: f8a7 3064 strh.w r3, [r7, #100] @ 0x64 + 80044e4: 687a ldr r2, [r7, #4] + 80044e6: 683b ldr r3, [r7, #0] + 80044e8: 781b ldrb r3, [r3, #0] + 80044ea: 009b lsls r3, r3, #2 + 80044ec: 441a add r2, r3 + 80044ee: f8b7 3064 ldrh.w r3, [r7, #100] @ 0x64 + 80044f2: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80044f6: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80044fa: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 80044fe: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004502: b29b uxth r3, r3 + 8004504: 8013 strh r3, [r2, #0] + } + + /* Set buffer address for double buffered mode */ + PCD_SET_EP_DBUF_ADDR(USBx, ep->num, ep->pmaaddr0, ep->pmaaddr1); + 8004506: 687b ldr r3, [r7, #4] + 8004508: 65fb str r3, [r7, #92] @ 0x5c + 800450a: 687b ldr r3, [r7, #4] + 800450c: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8004510: b29b uxth r3, r3 + 8004512: 461a mov r2, r3 + 8004514: 6dfb ldr r3, [r7, #92] @ 0x5c + 8004516: 4413 add r3, r2 + 8004518: 65fb str r3, [r7, #92] @ 0x5c + 800451a: 683b ldr r3, [r7, #0] + 800451c: 781b ldrb r3, [r3, #0] + 800451e: 011a lsls r2, r3, #4 + 8004520: 6dfb ldr r3, [r7, #92] @ 0x5c + 8004522: 4413 add r3, r2 + 8004524: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8004528: 65bb str r3, [r7, #88] @ 0x58 + 800452a: 683b ldr r3, [r7, #0] + 800452c: 891b ldrh r3, [r3, #8] + 800452e: 085b lsrs r3, r3, #1 + 8004530: b29b uxth r3, r3 + 8004532: 005b lsls r3, r3, #1 + 8004534: b29a uxth r2, r3 + 8004536: 6dbb ldr r3, [r7, #88] @ 0x58 + 8004538: 801a strh r2, [r3, #0] + 800453a: 687b ldr r3, [r7, #4] + 800453c: 657b str r3, [r7, #84] @ 0x54 + 800453e: 687b ldr r3, [r7, #4] + 8004540: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8004544: b29b uxth r3, r3 + 8004546: 461a mov r2, r3 + 8004548: 6d7b ldr r3, [r7, #84] @ 0x54 + 800454a: 4413 add r3, r2 + 800454c: 657b str r3, [r7, #84] @ 0x54 + 800454e: 683b ldr r3, [r7, #0] + 8004550: 781b ldrb r3, [r3, #0] + 8004552: 011a lsls r2, r3, #4 + 8004554: 6d7b ldr r3, [r7, #84] @ 0x54 + 8004556: 4413 add r3, r2 + 8004558: f503 6381 add.w r3, r3, #1032 @ 0x408 + 800455c: 653b str r3, [r7, #80] @ 0x50 + 800455e: 683b ldr r3, [r7, #0] + 8004560: 895b ldrh r3, [r3, #10] + 8004562: 085b lsrs r3, r3, #1 + 8004564: b29b uxth r3, r3 + 8004566: 005b lsls r3, r3, #1 + 8004568: b29a uxth r2, r3 + 800456a: 6d3b ldr r3, [r7, #80] @ 0x50 + 800456c: 801a strh r2, [r3, #0] + + if (ep->is_in == 0U) + 800456e: 683b ldr r3, [r7, #0] + 8004570: 785b ldrb r3, [r3, #1] + 8004572: 2b00 cmp r3, #0 + 8004574: f040 8093 bne.w 800469e + { + /* Clear the data toggle bits for the endpoint IN/OUT */ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 8004578: 687a ldr r2, [r7, #4] + 800457a: 683b ldr r3, [r7, #0] + 800457c: 781b ldrb r3, [r3, #0] + 800457e: 009b lsls r3, r3, #2 + 8004580: 4413 add r3, r2 + 8004582: 881b ldrh r3, [r3, #0] + 8004584: f8a7 3040 strh.w r3, [r7, #64] @ 0x40 + 8004588: f8b7 3040 ldrh.w r3, [r7, #64] @ 0x40 + 800458c: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8004590: 2b00 cmp r3, #0 + 8004592: d01b beq.n 80045cc + 8004594: 687a ldr r2, [r7, #4] + 8004596: 683b ldr r3, [r7, #0] + 8004598: 781b ldrb r3, [r3, #0] + 800459a: 009b lsls r3, r3, #2 + 800459c: 4413 add r3, r2 + 800459e: 881b ldrh r3, [r3, #0] + 80045a0: b29b uxth r3, r3 + 80045a2: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80045a6: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80045aa: 87fb strh r3, [r7, #62] @ 0x3e + 80045ac: 687a ldr r2, [r7, #4] + 80045ae: 683b ldr r3, [r7, #0] + 80045b0: 781b ldrb r3, [r3, #0] + 80045b2: 009b lsls r3, r3, #2 + 80045b4: 441a add r2, r3 + 80045b6: 8ffb ldrh r3, [r7, #62] @ 0x3e + 80045b8: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80045bc: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80045c0: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 80045c4: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80045c8: b29b uxth r3, r3 + 80045ca: 8013 strh r3, [r2, #0] + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 80045cc: 687a ldr r2, [r7, #4] + 80045ce: 683b ldr r3, [r7, #0] + 80045d0: 781b ldrb r3, [r3, #0] + 80045d2: 009b lsls r3, r3, #2 + 80045d4: 4413 add r3, r2 + 80045d6: 881b ldrh r3, [r3, #0] + 80045d8: 87bb strh r3, [r7, #60] @ 0x3c + 80045da: 8fbb ldrh r3, [r7, #60] @ 0x3c + 80045dc: f003 0340 and.w r3, r3, #64 @ 0x40 + 80045e0: 2b00 cmp r3, #0 + 80045e2: d01b beq.n 800461c + 80045e4: 687a ldr r2, [r7, #4] + 80045e6: 683b ldr r3, [r7, #0] + 80045e8: 781b ldrb r3, [r3, #0] + 80045ea: 009b lsls r3, r3, #2 + 80045ec: 4413 add r3, r2 + 80045ee: 881b ldrh r3, [r3, #0] + 80045f0: b29b uxth r3, r3 + 80045f2: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80045f6: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80045fa: 877b strh r3, [r7, #58] @ 0x3a + 80045fc: 687a ldr r2, [r7, #4] + 80045fe: 683b ldr r3, [r7, #0] + 8004600: 781b ldrb r3, [r3, #0] + 8004602: 009b lsls r3, r3, #2 + 8004604: 441a add r2, r3 + 8004606: 8f7b ldrh r3, [r7, #58] @ 0x3a + 8004608: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800460c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004610: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004614: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 8004618: b29b uxth r3, r3 + 800461a: 8013 strh r3, [r2, #0] + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + 800461c: 687a ldr r2, [r7, #4] + 800461e: 683b ldr r3, [r7, #0] + 8004620: 781b ldrb r3, [r3, #0] + 8004622: 009b lsls r3, r3, #2 + 8004624: 4413 add r3, r2 + 8004626: 881b ldrh r3, [r3, #0] + 8004628: b29b uxth r3, r3 + 800462a: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 800462e: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004632: 873b strh r3, [r7, #56] @ 0x38 + 8004634: 8f3b ldrh r3, [r7, #56] @ 0x38 + 8004636: f483 5380 eor.w r3, r3, #4096 @ 0x1000 + 800463a: 873b strh r3, [r7, #56] @ 0x38 + 800463c: 8f3b ldrh r3, [r7, #56] @ 0x38 + 800463e: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 8004642: 873b strh r3, [r7, #56] @ 0x38 + 8004644: 687a ldr r2, [r7, #4] + 8004646: 683b ldr r3, [r7, #0] + 8004648: 781b ldrb r3, [r3, #0] + 800464a: 009b lsls r3, r3, #2 + 800464c: 441a add r2, r3 + 800464e: 8f3b ldrh r3, [r7, #56] @ 0x38 + 8004650: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004654: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004658: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800465c: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004660: b29b uxth r3, r3 + 8004662: 8013 strh r3, [r2, #0] + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + 8004664: 687a ldr r2, [r7, #4] + 8004666: 683b ldr r3, [r7, #0] + 8004668: 781b ldrb r3, [r3, #0] + 800466a: 009b lsls r3, r3, #2 + 800466c: 4413 add r3, r2 + 800466e: 881b ldrh r3, [r3, #0] + 8004670: b29b uxth r3, r3 + 8004672: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004676: f023 0340 bic.w r3, r3, #64 @ 0x40 + 800467a: 86fb strh r3, [r7, #54] @ 0x36 + 800467c: 687a ldr r2, [r7, #4] + 800467e: 683b ldr r3, [r7, #0] + 8004680: 781b ldrb r3, [r3, #0] + 8004682: 009b lsls r3, r3, #2 + 8004684: 441a add r2, r3 + 8004686: 8efb ldrh r3, [r7, #54] @ 0x36 + 8004688: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800468c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004690: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004694: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004698: b29b uxth r3, r3 + 800469a: 8013 strh r3, [r2, #0] + 800469c: e0bc b.n 8004818 + } + else + { + /* Clear the data toggle bits for the endpoint IN/OUT */ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 800469e: 687a ldr r2, [r7, #4] + 80046a0: 683b ldr r3, [r7, #0] + 80046a2: 781b ldrb r3, [r3, #0] + 80046a4: 009b lsls r3, r3, #2 + 80046a6: 4413 add r3, r2 + 80046a8: 881b ldrh r3, [r3, #0] + 80046aa: f8a7 304e strh.w r3, [r7, #78] @ 0x4e + 80046ae: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e + 80046b2: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 80046b6: 2b00 cmp r3, #0 + 80046b8: d01d beq.n 80046f6 + 80046ba: 687a ldr r2, [r7, #4] + 80046bc: 683b ldr r3, [r7, #0] + 80046be: 781b ldrb r3, [r3, #0] + 80046c0: 009b lsls r3, r3, #2 + 80046c2: 4413 add r3, r2 + 80046c4: 881b ldrh r3, [r3, #0] + 80046c6: b29b uxth r3, r3 + 80046c8: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80046cc: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80046d0: f8a7 304c strh.w r3, [r7, #76] @ 0x4c + 80046d4: 687a ldr r2, [r7, #4] + 80046d6: 683b ldr r3, [r7, #0] + 80046d8: 781b ldrb r3, [r3, #0] + 80046da: 009b lsls r3, r3, #2 + 80046dc: 441a add r2, r3 + 80046de: f8b7 304c ldrh.w r3, [r7, #76] @ 0x4c + 80046e2: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80046e6: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80046ea: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 80046ee: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80046f2: b29b uxth r3, r3 + 80046f4: 8013 strh r3, [r2, #0] + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 80046f6: 687a ldr r2, [r7, #4] + 80046f8: 683b ldr r3, [r7, #0] + 80046fa: 781b ldrb r3, [r3, #0] + 80046fc: 009b lsls r3, r3, #2 + 80046fe: 4413 add r3, r2 + 8004700: 881b ldrh r3, [r3, #0] + 8004702: f8a7 304a strh.w r3, [r7, #74] @ 0x4a + 8004706: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a + 800470a: f003 0340 and.w r3, r3, #64 @ 0x40 + 800470e: 2b00 cmp r3, #0 + 8004710: d01d beq.n 800474e + 8004712: 687a ldr r2, [r7, #4] + 8004714: 683b ldr r3, [r7, #0] + 8004716: 781b ldrb r3, [r3, #0] + 8004718: 009b lsls r3, r3, #2 + 800471a: 4413 add r3, r2 + 800471c: 881b ldrh r3, [r3, #0] + 800471e: b29b uxth r3, r3 + 8004720: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004724: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004728: f8a7 3048 strh.w r3, [r7, #72] @ 0x48 + 800472c: 687a ldr r2, [r7, #4] + 800472e: 683b ldr r3, [r7, #0] + 8004730: 781b ldrb r3, [r3, #0] + 8004732: 009b lsls r3, r3, #2 + 8004734: 441a add r2, r3 + 8004736: f8b7 3048 ldrh.w r3, [r7, #72] @ 0x48 + 800473a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800473e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004742: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004746: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 800474a: b29b uxth r3, r3 + 800474c: 8013 strh r3, [r2, #0] + + if (ep->type != EP_TYPE_ISOC) + 800474e: 683b ldr r3, [r7, #0] + 8004750: 78db ldrb r3, [r3, #3] + 8004752: 2b01 cmp r3, #1 + 8004754: d024 beq.n 80047a0 + { + /* Configure NAK status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); + 8004756: 687a ldr r2, [r7, #4] + 8004758: 683b ldr r3, [r7, #0] + 800475a: 781b ldrb r3, [r3, #0] + 800475c: 009b lsls r3, r3, #2 + 800475e: 4413 add r3, r2 + 8004760: 881b ldrh r3, [r3, #0] + 8004762: b29b uxth r3, r3 + 8004764: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004768: f023 0340 bic.w r3, r3, #64 @ 0x40 + 800476c: f8a7 3044 strh.w r3, [r7, #68] @ 0x44 + 8004770: f8b7 3044 ldrh.w r3, [r7, #68] @ 0x44 + 8004774: f083 0320 eor.w r3, r3, #32 + 8004778: f8a7 3044 strh.w r3, [r7, #68] @ 0x44 + 800477c: 687a ldr r2, [r7, #4] + 800477e: 683b ldr r3, [r7, #0] + 8004780: 781b ldrb r3, [r3, #0] + 8004782: 009b lsls r3, r3, #2 + 8004784: 441a add r2, r3 + 8004786: f8b7 3044 ldrh.w r3, [r7, #68] @ 0x44 + 800478a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800478e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004792: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004796: f043 0380 orr.w r3, r3, #128 @ 0x80 + 800479a: b29b uxth r3, r3 + 800479c: 8013 strh r3, [r2, #0] + 800479e: e01d b.n 80047dc + } + else + { + /* Configure TX Endpoint to disabled state */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + 80047a0: 687a ldr r2, [r7, #4] + 80047a2: 683b ldr r3, [r7, #0] + 80047a4: 781b ldrb r3, [r3, #0] + 80047a6: 009b lsls r3, r3, #2 + 80047a8: 4413 add r3, r2 + 80047aa: 881b ldrh r3, [r3, #0] + 80047ac: b29b uxth r3, r3 + 80047ae: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80047b2: f023 0340 bic.w r3, r3, #64 @ 0x40 + 80047b6: f8a7 3046 strh.w r3, [r7, #70] @ 0x46 + 80047ba: 687a ldr r2, [r7, #4] + 80047bc: 683b ldr r3, [r7, #0] + 80047be: 781b ldrb r3, [r3, #0] + 80047c0: 009b lsls r3, r3, #2 + 80047c2: 441a add r2, r3 + 80047c4: f8b7 3046 ldrh.w r3, [r7, #70] @ 0x46 + 80047c8: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80047cc: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80047d0: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 80047d4: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80047d8: b29b uxth r3, r3 + 80047da: 8013 strh r3, [r2, #0] + } + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + 80047dc: 687a ldr r2, [r7, #4] + 80047de: 683b ldr r3, [r7, #0] + 80047e0: 781b ldrb r3, [r3, #0] + 80047e2: 009b lsls r3, r3, #2 + 80047e4: 4413 add r3, r2 + 80047e6: 881b ldrh r3, [r3, #0] + 80047e8: b29b uxth r3, r3 + 80047ea: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 80047ee: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80047f2: f8a7 3042 strh.w r3, [r7, #66] @ 0x42 + 80047f6: 687a ldr r2, [r7, #4] + 80047f8: 683b ldr r3, [r7, #0] + 80047fa: 781b ldrb r3, [r3, #0] + 80047fc: 009b lsls r3, r3, #2 + 80047fe: 441a add r2, r3 + 8004800: f8b7 3042 ldrh.w r3, [r7, #66] @ 0x42 + 8004804: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004808: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800480c: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004810: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004814: b29b uxth r3, r3 + 8004816: 8013 strh r3, [r2, #0] + } + } +#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ + + return ret; + 8004818: f897 306f ldrb.w r3, [r7, #111] @ 0x6f +} + 800481c: 4618 mov r0, r3 + 800481e: 3774 adds r7, #116 @ 0x74 + 8004820: 46bd mov sp, r7 + 8004822: bc80 pop {r7} + 8004824: 4770 bx lr + 8004826: bf00 nop + +08004828 : + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_DeactivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + 8004828: b480 push {r7} + 800482a: b08d sub sp, #52 @ 0x34 + 800482c: af00 add r7, sp, #0 + 800482e: 6078 str r0, [r7, #4] + 8004830: 6039 str r1, [r7, #0] + if (ep->doublebuffer == 0U) + 8004832: 683b ldr r3, [r7, #0] + 8004834: 7b1b ldrb r3, [r3, #12] + 8004836: 2b00 cmp r3, #0 + 8004838: f040 808e bne.w 8004958 + { + if (ep->is_in != 0U) + 800483c: 683b ldr r3, [r7, #0] + 800483e: 785b ldrb r3, [r3, #1] + 8004840: 2b00 cmp r3, #0 + 8004842: d044 beq.n 80048ce + { + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 8004844: 687a ldr r2, [r7, #4] + 8004846: 683b ldr r3, [r7, #0] + 8004848: 781b ldrb r3, [r3, #0] + 800484a: 009b lsls r3, r3, #2 + 800484c: 4413 add r3, r2 + 800484e: 881b ldrh r3, [r3, #0] + 8004850: 81bb strh r3, [r7, #12] + 8004852: 89bb ldrh r3, [r7, #12] + 8004854: f003 0340 and.w r3, r3, #64 @ 0x40 + 8004858: 2b00 cmp r3, #0 + 800485a: d01b beq.n 8004894 + 800485c: 687a ldr r2, [r7, #4] + 800485e: 683b ldr r3, [r7, #0] + 8004860: 781b ldrb r3, [r3, #0] + 8004862: 009b lsls r3, r3, #2 + 8004864: 4413 add r3, r2 + 8004866: 881b ldrh r3, [r3, #0] + 8004868: b29b uxth r3, r3 + 800486a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800486e: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004872: 817b strh r3, [r7, #10] + 8004874: 687a ldr r2, [r7, #4] + 8004876: 683b ldr r3, [r7, #0] + 8004878: 781b ldrb r3, [r3, #0] + 800487a: 009b lsls r3, r3, #2 + 800487c: 441a add r2, r3 + 800487e: 897b ldrh r3, [r7, #10] + 8004880: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004884: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004888: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800488c: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 8004890: b29b uxth r3, r3 + 8004892: 8013 strh r3, [r2, #0] + + /* Configure DISABLE status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + 8004894: 687a ldr r2, [r7, #4] + 8004896: 683b ldr r3, [r7, #0] + 8004898: 781b ldrb r3, [r3, #0] + 800489a: 009b lsls r3, r3, #2 + 800489c: 4413 add r3, r2 + 800489e: 881b ldrh r3, [r3, #0] + 80048a0: b29b uxth r3, r3 + 80048a2: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80048a6: f023 0340 bic.w r3, r3, #64 @ 0x40 + 80048aa: 813b strh r3, [r7, #8] + 80048ac: 687a ldr r2, [r7, #4] + 80048ae: 683b ldr r3, [r7, #0] + 80048b0: 781b ldrb r3, [r3, #0] + 80048b2: 009b lsls r3, r3, #2 + 80048b4: 441a add r2, r3 + 80048b6: 893b ldrh r3, [r7, #8] + 80048b8: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80048bc: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80048c0: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 80048c4: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80048c8: b29b uxth r3, r3 + 80048ca: 8013 strh r3, [r2, #0] + 80048cc: e192 b.n 8004bf4 + } + + else + { + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 80048ce: 687a ldr r2, [r7, #4] + 80048d0: 683b ldr r3, [r7, #0] + 80048d2: 781b ldrb r3, [r3, #0] + 80048d4: 009b lsls r3, r3, #2 + 80048d6: 4413 add r3, r2 + 80048d8: 881b ldrh r3, [r3, #0] + 80048da: 827b strh r3, [r7, #18] + 80048dc: 8a7b ldrh r3, [r7, #18] + 80048de: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 80048e2: 2b00 cmp r3, #0 + 80048e4: d01b beq.n 800491e + 80048e6: 687a ldr r2, [r7, #4] + 80048e8: 683b ldr r3, [r7, #0] + 80048ea: 781b ldrb r3, [r3, #0] + 80048ec: 009b lsls r3, r3, #2 + 80048ee: 4413 add r3, r2 + 80048f0: 881b ldrh r3, [r3, #0] + 80048f2: b29b uxth r3, r3 + 80048f4: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80048f8: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80048fc: 823b strh r3, [r7, #16] + 80048fe: 687a ldr r2, [r7, #4] + 8004900: 683b ldr r3, [r7, #0] + 8004902: 781b ldrb r3, [r3, #0] + 8004904: 009b lsls r3, r3, #2 + 8004906: 441a add r2, r3 + 8004908: 8a3b ldrh r3, [r7, #16] + 800490a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800490e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004912: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8004916: f043 0380 orr.w r3, r3, #128 @ 0x80 + 800491a: b29b uxth r3, r3 + 800491c: 8013 strh r3, [r2, #0] + + /* Configure DISABLE status for the Endpoint */ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + 800491e: 687a ldr r2, [r7, #4] + 8004920: 683b ldr r3, [r7, #0] + 8004922: 781b ldrb r3, [r3, #0] + 8004924: 009b lsls r3, r3, #2 + 8004926: 4413 add r3, r2 + 8004928: 881b ldrh r3, [r3, #0] + 800492a: b29b uxth r3, r3 + 800492c: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8004930: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004934: 81fb strh r3, [r7, #14] + 8004936: 687a ldr r2, [r7, #4] + 8004938: 683b ldr r3, [r7, #0] + 800493a: 781b ldrb r3, [r3, #0] + 800493c: 009b lsls r3, r3, #2 + 800493e: 441a add r2, r3 + 8004940: 89fb ldrh r3, [r7, #14] + 8004942: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004946: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800494a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800494e: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004952: b29b uxth r3, r3 + 8004954: 8013 strh r3, [r2, #0] + 8004956: e14d b.n 8004bf4 + } +#if (USE_USB_DOUBLE_BUFFER == 1U) + /* Double Buffer */ + else + { + if (ep->is_in == 0U) + 8004958: 683b ldr r3, [r7, #0] + 800495a: 785b ldrb r3, [r3, #1] + 800495c: 2b00 cmp r3, #0 + 800495e: f040 80a5 bne.w 8004aac + { + /* Clear the data toggle bits for the endpoint IN/OUT*/ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 8004962: 687a ldr r2, [r7, #4] + 8004964: 683b ldr r3, [r7, #0] + 8004966: 781b ldrb r3, [r3, #0] + 8004968: 009b lsls r3, r3, #2 + 800496a: 4413 add r3, r2 + 800496c: 881b ldrh r3, [r3, #0] + 800496e: 843b strh r3, [r7, #32] + 8004970: 8c3b ldrh r3, [r7, #32] + 8004972: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8004976: 2b00 cmp r3, #0 + 8004978: d01b beq.n 80049b2 + 800497a: 687a ldr r2, [r7, #4] + 800497c: 683b ldr r3, [r7, #0] + 800497e: 781b ldrb r3, [r3, #0] + 8004980: 009b lsls r3, r3, #2 + 8004982: 4413 add r3, r2 + 8004984: 881b ldrh r3, [r3, #0] + 8004986: b29b uxth r3, r3 + 8004988: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 800498c: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004990: 83fb strh r3, [r7, #30] + 8004992: 687a ldr r2, [r7, #4] + 8004994: 683b ldr r3, [r7, #0] + 8004996: 781b ldrb r3, [r3, #0] + 8004998: 009b lsls r3, r3, #2 + 800499a: 441a add r2, r3 + 800499c: 8bfb ldrh r3, [r7, #30] + 800499e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80049a2: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80049a6: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 80049aa: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80049ae: b29b uxth r3, r3 + 80049b0: 8013 strh r3, [r2, #0] + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 80049b2: 687a ldr r2, [r7, #4] + 80049b4: 683b ldr r3, [r7, #0] + 80049b6: 781b ldrb r3, [r3, #0] + 80049b8: 009b lsls r3, r3, #2 + 80049ba: 4413 add r3, r2 + 80049bc: 881b ldrh r3, [r3, #0] + 80049be: 83bb strh r3, [r7, #28] + 80049c0: 8bbb ldrh r3, [r7, #28] + 80049c2: f003 0340 and.w r3, r3, #64 @ 0x40 + 80049c6: 2b00 cmp r3, #0 + 80049c8: d01b beq.n 8004a02 + 80049ca: 687a ldr r2, [r7, #4] + 80049cc: 683b ldr r3, [r7, #0] + 80049ce: 781b ldrb r3, [r3, #0] + 80049d0: 009b lsls r3, r3, #2 + 80049d2: 4413 add r3, r2 + 80049d4: 881b ldrh r3, [r3, #0] + 80049d6: b29b uxth r3, r3 + 80049d8: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80049dc: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80049e0: 837b strh r3, [r7, #26] + 80049e2: 687a ldr r2, [r7, #4] + 80049e4: 683b ldr r3, [r7, #0] + 80049e6: 781b ldrb r3, [r3, #0] + 80049e8: 009b lsls r3, r3, #2 + 80049ea: 441a add r2, r3 + 80049ec: 8b7b ldrh r3, [r7, #26] + 80049ee: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80049f2: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80049f6: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 80049fa: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 80049fe: b29b uxth r3, r3 + 8004a00: 8013 strh r3, [r2, #0] + + /* Reset value of the data toggle bits for the endpoint out*/ + PCD_TX_DTOG(USBx, ep->num); + 8004a02: 687a ldr r2, [r7, #4] + 8004a04: 683b ldr r3, [r7, #0] + 8004a06: 781b ldrb r3, [r3, #0] + 8004a08: 009b lsls r3, r3, #2 + 8004a0a: 4413 add r3, r2 + 8004a0c: 881b ldrh r3, [r3, #0] + 8004a0e: b29b uxth r3, r3 + 8004a10: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004a14: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004a18: 833b strh r3, [r7, #24] + 8004a1a: 687a ldr r2, [r7, #4] + 8004a1c: 683b ldr r3, [r7, #0] + 8004a1e: 781b ldrb r3, [r3, #0] + 8004a20: 009b lsls r3, r3, #2 + 8004a22: 441a add r2, r3 + 8004a24: 8b3b ldrh r3, [r7, #24] + 8004a26: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004a2a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004a2e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004a32: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 8004a36: b29b uxth r3, r3 + 8004a38: 8013 strh r3, [r2, #0] + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + 8004a3a: 687a ldr r2, [r7, #4] + 8004a3c: 683b ldr r3, [r7, #0] + 8004a3e: 781b ldrb r3, [r3, #0] + 8004a40: 009b lsls r3, r3, #2 + 8004a42: 4413 add r3, r2 + 8004a44: 881b ldrh r3, [r3, #0] + 8004a46: b29b uxth r3, r3 + 8004a48: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8004a4c: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004a50: 82fb strh r3, [r7, #22] + 8004a52: 687a ldr r2, [r7, #4] + 8004a54: 683b ldr r3, [r7, #0] + 8004a56: 781b ldrb r3, [r3, #0] + 8004a58: 009b lsls r3, r3, #2 + 8004a5a: 441a add r2, r3 + 8004a5c: 8afb ldrh r3, [r7, #22] + 8004a5e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004a62: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004a66: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004a6a: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004a6e: b29b uxth r3, r3 + 8004a70: 8013 strh r3, [r2, #0] + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + 8004a72: 687a ldr r2, [r7, #4] + 8004a74: 683b ldr r3, [r7, #0] + 8004a76: 781b ldrb r3, [r3, #0] + 8004a78: 009b lsls r3, r3, #2 + 8004a7a: 4413 add r3, r2 + 8004a7c: 881b ldrh r3, [r3, #0] + 8004a7e: b29b uxth r3, r3 + 8004a80: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004a84: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8004a88: 82bb strh r3, [r7, #20] + 8004a8a: 687a ldr r2, [r7, #4] + 8004a8c: 683b ldr r3, [r7, #0] + 8004a8e: 781b ldrb r3, [r3, #0] + 8004a90: 009b lsls r3, r3, #2 + 8004a92: 441a add r2, r3 + 8004a94: 8abb ldrh r3, [r7, #20] + 8004a96: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004a9a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004a9e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004aa2: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004aa6: b29b uxth r3, r3 + 8004aa8: 8013 strh r3, [r2, #0] + 8004aaa: e0a3 b.n 8004bf4 + } + else + { + /* Clear the data toggle bits for the endpoint IN/OUT*/ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 8004aac: 687a ldr r2, [r7, #4] + 8004aae: 683b ldr r3, [r7, #0] + 8004ab0: 781b ldrb r3, [r3, #0] + 8004ab2: 009b lsls r3, r3, #2 + 8004ab4: 4413 add r3, r2 + 8004ab6: 881b ldrh r3, [r3, #0] + 8004ab8: 85fb strh r3, [r7, #46] @ 0x2e + 8004aba: 8dfb ldrh r3, [r7, #46] @ 0x2e + 8004abc: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8004ac0: 2b00 cmp r3, #0 + 8004ac2: d01b beq.n 8004afc + 8004ac4: 687a ldr r2, [r7, #4] + 8004ac6: 683b ldr r3, [r7, #0] + 8004ac8: 781b ldrb r3, [r3, #0] + 8004aca: 009b lsls r3, r3, #2 + 8004acc: 4413 add r3, r2 + 8004ace: 881b ldrh r3, [r3, #0] + 8004ad0: b29b uxth r3, r3 + 8004ad2: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004ad6: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004ada: 85bb strh r3, [r7, #44] @ 0x2c + 8004adc: 687a ldr r2, [r7, #4] + 8004ade: 683b ldr r3, [r7, #0] + 8004ae0: 781b ldrb r3, [r3, #0] + 8004ae2: 009b lsls r3, r3, #2 + 8004ae4: 441a add r2, r3 + 8004ae6: 8dbb ldrh r3, [r7, #44] @ 0x2c + 8004ae8: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004aec: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004af0: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8004af4: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004af8: b29b uxth r3, r3 + 8004afa: 8013 strh r3, [r2, #0] + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 8004afc: 687a ldr r2, [r7, #4] + 8004afe: 683b ldr r3, [r7, #0] + 8004b00: 781b ldrb r3, [r3, #0] + 8004b02: 009b lsls r3, r3, #2 + 8004b04: 4413 add r3, r2 + 8004b06: 881b ldrh r3, [r3, #0] + 8004b08: 857b strh r3, [r7, #42] @ 0x2a + 8004b0a: 8d7b ldrh r3, [r7, #42] @ 0x2a + 8004b0c: f003 0340 and.w r3, r3, #64 @ 0x40 + 8004b10: 2b00 cmp r3, #0 + 8004b12: d01b beq.n 8004b4c + 8004b14: 687a ldr r2, [r7, #4] + 8004b16: 683b ldr r3, [r7, #0] + 8004b18: 781b ldrb r3, [r3, #0] + 8004b1a: 009b lsls r3, r3, #2 + 8004b1c: 4413 add r3, r2 + 8004b1e: 881b ldrh r3, [r3, #0] + 8004b20: b29b uxth r3, r3 + 8004b22: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004b26: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004b2a: 853b strh r3, [r7, #40] @ 0x28 + 8004b2c: 687a ldr r2, [r7, #4] + 8004b2e: 683b ldr r3, [r7, #0] + 8004b30: 781b ldrb r3, [r3, #0] + 8004b32: 009b lsls r3, r3, #2 + 8004b34: 441a add r2, r3 + 8004b36: 8d3b ldrh r3, [r7, #40] @ 0x28 + 8004b38: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004b3c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004b40: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004b44: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 8004b48: b29b uxth r3, r3 + 8004b4a: 8013 strh r3, [r2, #0] + PCD_RX_DTOG(USBx, ep->num); + 8004b4c: 687a ldr r2, [r7, #4] + 8004b4e: 683b ldr r3, [r7, #0] + 8004b50: 781b ldrb r3, [r3, #0] + 8004b52: 009b lsls r3, r3, #2 + 8004b54: 4413 add r3, r2 + 8004b56: 881b ldrh r3, [r3, #0] + 8004b58: b29b uxth r3, r3 + 8004b5a: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004b5e: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004b62: 84fb strh r3, [r7, #38] @ 0x26 + 8004b64: 687a ldr r2, [r7, #4] + 8004b66: 683b ldr r3, [r7, #0] + 8004b68: 781b ldrb r3, [r3, #0] + 8004b6a: 009b lsls r3, r3, #2 + 8004b6c: 441a add r2, r3 + 8004b6e: 8cfb ldrh r3, [r7, #38] @ 0x26 + 8004b70: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004b74: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004b78: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8004b7c: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004b80: b29b uxth r3, r3 + 8004b82: 8013 strh r3, [r2, #0] + + /* Configure DISABLE status for the Endpoint*/ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + 8004b84: 687a ldr r2, [r7, #4] + 8004b86: 683b ldr r3, [r7, #0] + 8004b88: 781b ldrb r3, [r3, #0] + 8004b8a: 009b lsls r3, r3, #2 + 8004b8c: 4413 add r3, r2 + 8004b8e: 881b ldrh r3, [r3, #0] + 8004b90: b29b uxth r3, r3 + 8004b92: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004b96: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8004b9a: 84bb strh r3, [r7, #36] @ 0x24 + 8004b9c: 687a ldr r2, [r7, #4] + 8004b9e: 683b ldr r3, [r7, #0] + 8004ba0: 781b ldrb r3, [r3, #0] + 8004ba2: 009b lsls r3, r3, #2 + 8004ba4: 441a add r2, r3 + 8004ba6: 8cbb ldrh r3, [r7, #36] @ 0x24 + 8004ba8: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004bac: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004bb0: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004bb4: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004bb8: b29b uxth r3, r3 + 8004bba: 8013 strh r3, [r2, #0] + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + 8004bbc: 687a ldr r2, [r7, #4] + 8004bbe: 683b ldr r3, [r7, #0] + 8004bc0: 781b ldrb r3, [r3, #0] + 8004bc2: 009b lsls r3, r3, #2 + 8004bc4: 4413 add r3, r2 + 8004bc6: 881b ldrh r3, [r3, #0] + 8004bc8: b29b uxth r3, r3 + 8004bca: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8004bce: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004bd2: 847b strh r3, [r7, #34] @ 0x22 + 8004bd4: 687a ldr r2, [r7, #4] + 8004bd6: 683b ldr r3, [r7, #0] + 8004bd8: 781b ldrb r3, [r3, #0] + 8004bda: 009b lsls r3, r3, #2 + 8004bdc: 441a add r2, r3 + 8004bde: 8c7b ldrh r3, [r7, #34] @ 0x22 + 8004be0: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004be4: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004be8: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8004bec: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004bf0: b29b uxth r3, r3 + 8004bf2: 8013 strh r3, [r2, #0] + } + } +#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ + + return HAL_OK; + 8004bf4: 2300 movs r3, #0 +} + 8004bf6: 4618 mov r0, r3 + 8004bf8: 3734 adds r7, #52 @ 0x34 + 8004bfa: 46bd mov sp, r7 + 8004bfc: bc80 pop {r7} + 8004bfe: 4770 bx lr + +08004c00 : + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + 8004c00: b580 push {r7, lr} + 8004c02: b0c2 sub sp, #264 @ 0x108 + 8004c04: af00 add r7, sp, #0 + 8004c06: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004c0a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8004c0e: 6018 str r0, [r3, #0] + 8004c10: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004c14: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004c18: 6019 str r1, [r3, #0] + uint16_t pmabuffer; + uint16_t wEPVal; +#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ + + /* IN endpoint */ + if (ep->is_in == 1U) + 8004c1a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004c1e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004c22: 681b ldr r3, [r3, #0] + 8004c24: 785b ldrb r3, [r3, #1] + 8004c26: 2b01 cmp r3, #1 + 8004c28: f040 86b7 bne.w 800599a + { + /*Multi packet transfer*/ + if (ep->xfer_len > ep->maxpacket) + 8004c2c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004c30: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004c34: 681b ldr r3, [r3, #0] + 8004c36: 699a ldr r2, [r3, #24] + 8004c38: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004c3c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004c40: 681b ldr r3, [r3, #0] + 8004c42: 691b ldr r3, [r3, #16] + 8004c44: 429a cmp r2, r3 + 8004c46: d908 bls.n 8004c5a + { + len = ep->maxpacket; + 8004c48: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004c4c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004c50: 681b ldr r3, [r3, #0] + 8004c52: 691b ldr r3, [r3, #16] + 8004c54: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + 8004c58: e007 b.n 8004c6a + } + else + { + len = ep->xfer_len; + 8004c5a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004c5e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004c62: 681b ldr r3, [r3, #0] + 8004c64: 699b ldr r3, [r3, #24] + 8004c66: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + } + + /* configure and validate Tx endpoint */ + if (ep->doublebuffer == 0U) + 8004c6a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004c6e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004c72: 681b ldr r3, [r3, #0] + 8004c74: 7b1b ldrb r3, [r3, #12] + 8004c76: 2b00 cmp r3, #0 + 8004c78: d13a bne.n 8004cf0 + { + USB_WritePMA(USBx, ep->xfer_buff, ep->pmaadress, (uint16_t)len); + 8004c7a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004c7e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004c82: 681b ldr r3, [r3, #0] + 8004c84: 6959 ldr r1, [r3, #20] + 8004c86: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004c8a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004c8e: 681b ldr r3, [r3, #0] + 8004c90: 88da ldrh r2, [r3, #6] + 8004c92: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8004c96: b29b uxth r3, r3 + 8004c98: f507 7084 add.w r0, r7, #264 @ 0x108 + 8004c9c: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 8004ca0: 6800 ldr r0, [r0, #0] + 8004ca2: f001 fc9c bl 80065de + PCD_SET_EP_TX_CNT(USBx, ep->num, len); + 8004ca6: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004caa: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8004cae: 681b ldr r3, [r3, #0] + 8004cb0: 613b str r3, [r7, #16] + 8004cb2: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004cb6: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8004cba: 681b ldr r3, [r3, #0] + 8004cbc: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8004cc0: b29b uxth r3, r3 + 8004cc2: 461a mov r2, r3 + 8004cc4: 693b ldr r3, [r7, #16] + 8004cc6: 4413 add r3, r2 + 8004cc8: 613b str r3, [r7, #16] + 8004cca: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004cce: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004cd2: 681b ldr r3, [r3, #0] + 8004cd4: 781b ldrb r3, [r3, #0] + 8004cd6: 011a lsls r2, r3, #4 + 8004cd8: 693b ldr r3, [r7, #16] + 8004cda: 4413 add r3, r2 + 8004cdc: f203 4304 addw r3, r3, #1028 @ 0x404 + 8004ce0: 60fb str r3, [r7, #12] + 8004ce2: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8004ce6: b29a uxth r2, r3 + 8004ce8: 68fb ldr r3, [r7, #12] + 8004cea: 801a strh r2, [r3, #0] + 8004cec: f000 be1f b.w 800592e + } +#if (USE_USB_DOUBLE_BUFFER == 1U) + else + { + /* double buffer bulk management */ + if (ep->type == EP_TYPE_BULK) + 8004cf0: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004cf4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004cf8: 681b ldr r3, [r3, #0] + 8004cfa: 78db ldrb r3, [r3, #3] + 8004cfc: 2b02 cmp r3, #2 + 8004cfe: f040 8462 bne.w 80055c6 + { + if (ep->xfer_len_db > ep->maxpacket) + 8004d02: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004d06: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004d0a: 681b ldr r3, [r3, #0] + 8004d0c: 6a1a ldr r2, [r3, #32] + 8004d0e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004d12: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004d16: 681b ldr r3, [r3, #0] + 8004d18: 691b ldr r3, [r3, #16] + 8004d1a: 429a cmp r2, r3 + 8004d1c: f240 83df bls.w 80054de + { + /* enable double buffer */ + PCD_SET_BULK_EP_DBUF(USBx, ep->num); + 8004d20: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004d24: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8004d28: 681a ldr r2, [r3, #0] + 8004d2a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004d2e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004d32: 681b ldr r3, [r3, #0] + 8004d34: 781b ldrb r3, [r3, #0] + 8004d36: 009b lsls r3, r3, #2 + 8004d38: 4413 add r3, r2 + 8004d3a: 881b ldrh r3, [r3, #0] + 8004d3c: b29b uxth r3, r3 + 8004d3e: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8004d42: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8004d46: f8a7 3056 strh.w r3, [r7, #86] @ 0x56 + 8004d4a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004d4e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8004d52: 681a ldr r2, [r3, #0] + 8004d54: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004d58: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004d5c: 681b ldr r3, [r3, #0] + 8004d5e: 781b ldrb r3, [r3, #0] + 8004d60: 009b lsls r3, r3, #2 + 8004d62: 441a add r2, r3 + 8004d64: f8b7 3056 ldrh.w r3, [r7, #86] @ 0x56 + 8004d68: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8004d6c: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8004d70: f443 4301 orr.w r3, r3, #33024 @ 0x8100 + 8004d74: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8004d78: b29b uxth r3, r3 + 8004d7a: 8013 strh r3, [r2, #0] + + /* each Time to write in PMA xfer_len_db will */ + ep->xfer_len_db -= len; + 8004d7c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004d80: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004d84: 681b ldr r3, [r3, #0] + 8004d86: 6a1a ldr r2, [r3, #32] + 8004d88: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8004d8c: 1ad2 subs r2, r2, r3 + 8004d8e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004d92: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004d96: 681b ldr r3, [r3, #0] + 8004d98: 621a str r2, [r3, #32] + + /* Fill the two first buffer in the Buffer0 & Buffer1 */ + if ((PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_DTOG_TX) != 0U) + 8004d9a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004d9e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8004da2: 681a ldr r2, [r3, #0] + 8004da4: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004da8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004dac: 681b ldr r3, [r3, #0] + 8004dae: 781b ldrb r3, [r3, #0] + 8004db0: 009b lsls r3, r3, #2 + 8004db2: 4413 add r3, r2 + 8004db4: 881b ldrh r3, [r3, #0] + 8004db6: b29b uxth r3, r3 + 8004db8: f003 0340 and.w r3, r3, #64 @ 0x40 + 8004dbc: 2b00 cmp r3, #0 + 8004dbe: f000 81c7 beq.w 8005150 + { + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); + 8004dc2: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004dc6: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8004dca: 681b ldr r3, [r3, #0] + 8004dcc: 633b str r3, [r7, #48] @ 0x30 + 8004dce: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004dd2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004dd6: 681b ldr r3, [r3, #0] + 8004dd8: 785b ldrb r3, [r3, #1] + 8004dda: 2b00 cmp r3, #0 + 8004ddc: d177 bne.n 8004ece + 8004dde: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004de2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8004de6: 681b ldr r3, [r3, #0] + 8004de8: 62bb str r3, [r7, #40] @ 0x28 + 8004dea: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004dee: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8004df2: 681b ldr r3, [r3, #0] + 8004df4: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8004df8: b29b uxth r3, r3 + 8004dfa: 461a mov r2, r3 + 8004dfc: 6abb ldr r3, [r7, #40] @ 0x28 + 8004dfe: 4413 add r3, r2 + 8004e00: 62bb str r3, [r7, #40] @ 0x28 + 8004e02: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004e06: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004e0a: 681b ldr r3, [r3, #0] + 8004e0c: 781b ldrb r3, [r3, #0] + 8004e0e: 011a lsls r2, r3, #4 + 8004e10: 6abb ldr r3, [r7, #40] @ 0x28 + 8004e12: 4413 add r3, r2 + 8004e14: f203 430c addw r3, r3, #1036 @ 0x40c + 8004e18: 627b str r3, [r7, #36] @ 0x24 + 8004e1a: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004e1c: 881b ldrh r3, [r3, #0] + 8004e1e: b29b uxth r3, r3 + 8004e20: f3c3 0309 ubfx r3, r3, #0, #10 + 8004e24: b29a uxth r2, r3 + 8004e26: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004e28: 801a strh r2, [r3, #0] + 8004e2a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8004e2e: 2b3e cmp r3, #62 @ 0x3e + 8004e30: d921 bls.n 8004e76 + 8004e32: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8004e36: 095b lsrs r3, r3, #5 + 8004e38: f8c7 3100 str.w r3, [r7, #256] @ 0x100 + 8004e3c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8004e40: f003 031f and.w r3, r3, #31 + 8004e44: 2b00 cmp r3, #0 + 8004e46: d104 bne.n 8004e52 + 8004e48: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 + 8004e4c: 3b01 subs r3, #1 + 8004e4e: f8c7 3100 str.w r3, [r7, #256] @ 0x100 + 8004e52: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004e54: 881b ldrh r3, [r3, #0] + 8004e56: b29a uxth r2, r3 + 8004e58: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 + 8004e5c: b29b uxth r3, r3 + 8004e5e: 029b lsls r3, r3, #10 + 8004e60: b29b uxth r3, r3 + 8004e62: 4313 orrs r3, r2 + 8004e64: b29b uxth r3, r3 + 8004e66: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004e6a: ea6f 4353 mvn.w r3, r3, lsr #17 + 8004e6e: b29a uxth r2, r3 + 8004e70: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004e72: 801a strh r2, [r3, #0] + 8004e74: e050 b.n 8004f18 + 8004e76: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8004e7a: 2b00 cmp r3, #0 + 8004e7c: d10a bne.n 8004e94 + 8004e7e: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004e80: 881b ldrh r3, [r3, #0] + 8004e82: b29b uxth r3, r3 + 8004e84: ea6f 4343 mvn.w r3, r3, lsl #17 + 8004e88: ea6f 4353 mvn.w r3, r3, lsr #17 + 8004e8c: b29a uxth r2, r3 + 8004e8e: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004e90: 801a strh r2, [r3, #0] + 8004e92: e041 b.n 8004f18 + 8004e94: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8004e98: 085b lsrs r3, r3, #1 + 8004e9a: f8c7 3100 str.w r3, [r7, #256] @ 0x100 + 8004e9e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8004ea2: f003 0301 and.w r3, r3, #1 + 8004ea6: 2b00 cmp r3, #0 + 8004ea8: d004 beq.n 8004eb4 + 8004eaa: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 + 8004eae: 3301 adds r3, #1 + 8004eb0: f8c7 3100 str.w r3, [r7, #256] @ 0x100 + 8004eb4: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004eb6: 881b ldrh r3, [r3, #0] + 8004eb8: b29a uxth r2, r3 + 8004eba: f8d7 3100 ldr.w r3, [r7, #256] @ 0x100 + 8004ebe: b29b uxth r3, r3 + 8004ec0: 029b lsls r3, r3, #10 + 8004ec2: b29b uxth r3, r3 + 8004ec4: 4313 orrs r3, r2 + 8004ec6: b29a uxth r2, r3 + 8004ec8: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004eca: 801a strh r2, [r3, #0] + 8004ecc: e024 b.n 8004f18 + 8004ece: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004ed2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004ed6: 681b ldr r3, [r3, #0] + 8004ed8: 785b ldrb r3, [r3, #1] + 8004eda: 2b01 cmp r3, #1 + 8004edc: d11c bne.n 8004f18 + 8004ede: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004ee2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8004ee6: 681b ldr r3, [r3, #0] + 8004ee8: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8004eec: b29b uxth r3, r3 + 8004eee: 461a mov r2, r3 + 8004ef0: 6b3b ldr r3, [r7, #48] @ 0x30 + 8004ef2: 4413 add r3, r2 + 8004ef4: 633b str r3, [r7, #48] @ 0x30 + 8004ef6: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004efa: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004efe: 681b ldr r3, [r3, #0] + 8004f00: 781b ldrb r3, [r3, #0] + 8004f02: 011a lsls r2, r3, #4 + 8004f04: 6b3b ldr r3, [r7, #48] @ 0x30 + 8004f06: 4413 add r3, r2 + 8004f08: f203 430c addw r3, r3, #1036 @ 0x40c + 8004f0c: 62fb str r3, [r7, #44] @ 0x2c + 8004f0e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8004f12: b29a uxth r2, r3 + 8004f14: 6afb ldr r3, [r7, #44] @ 0x2c + 8004f16: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr1; + 8004f18: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004f1c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004f20: 681b ldr r3, [r3, #0] + 8004f22: 895b ldrh r3, [r3, #10] + 8004f24: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 8004f28: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004f2c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004f30: 681b ldr r3, [r3, #0] + 8004f32: 6959 ldr r1, [r3, #20] + 8004f34: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8004f38: b29b uxth r3, r3 + 8004f3a: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 + 8004f3e: f507 7084 add.w r0, r7, #264 @ 0x108 + 8004f42: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 8004f46: 6800 ldr r0, [r0, #0] + 8004f48: f001 fb49 bl 80065de + ep->xfer_buff += len; + 8004f4c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004f50: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004f54: 681b ldr r3, [r3, #0] + 8004f56: 695a ldr r2, [r3, #20] + 8004f58: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8004f5c: 441a add r2, r3 + 8004f5e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004f62: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004f66: 681b ldr r3, [r3, #0] + 8004f68: 615a str r2, [r3, #20] + + if (ep->xfer_len_db > ep->maxpacket) + 8004f6a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004f6e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004f72: 681b ldr r3, [r3, #0] + 8004f74: 6a1a ldr r2, [r3, #32] + 8004f76: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004f7a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004f7e: 681b ldr r3, [r3, #0] + 8004f80: 691b ldr r3, [r3, #16] + 8004f82: 429a cmp r2, r3 + 8004f84: d90f bls.n 8004fa6 + { + ep->xfer_len_db -= len; + 8004f86: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004f8a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004f8e: 681b ldr r3, [r3, #0] + 8004f90: 6a1a ldr r2, [r3, #32] + 8004f92: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8004f96: 1ad2 subs r2, r2, r3 + 8004f98: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004f9c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004fa0: 681b ldr r3, [r3, #0] + 8004fa2: 621a str r2, [r3, #32] + 8004fa4: e00e b.n 8004fc4 + } + else + { + len = ep->xfer_len_db; + 8004fa6: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004faa: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004fae: 681b ldr r3, [r3, #0] + 8004fb0: 6a1b ldr r3, [r3, #32] + 8004fb2: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + ep->xfer_len_db = 0U; + 8004fb6: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004fba: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004fbe: 681b ldr r3, [r3, #0] + 8004fc0: 2200 movs r2, #0 + 8004fc2: 621a str r2, [r3, #32] + } + + /* Set the Double buffer counter for pmabuffer0 */ + PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); + 8004fc4: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004fc8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8004fcc: 681b ldr r3, [r3, #0] + 8004fce: 785b ldrb r3, [r3, #1] + 8004fd0: 2b00 cmp r3, #0 + 8004fd2: d177 bne.n 80050c4 + 8004fd4: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004fd8: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8004fdc: 681b ldr r3, [r3, #0] + 8004fde: 61bb str r3, [r7, #24] + 8004fe0: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004fe4: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8004fe8: 681b ldr r3, [r3, #0] + 8004fea: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8004fee: b29b uxth r3, r3 + 8004ff0: 461a mov r2, r3 + 8004ff2: 69bb ldr r3, [r7, #24] + 8004ff4: 4413 add r3, r2 + 8004ff6: 61bb str r3, [r7, #24] + 8004ff8: f507 7384 add.w r3, r7, #264 @ 0x108 + 8004ffc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005000: 681b ldr r3, [r3, #0] + 8005002: 781b ldrb r3, [r3, #0] + 8005004: 011a lsls r2, r3, #4 + 8005006: 69bb ldr r3, [r7, #24] + 8005008: 4413 add r3, r2 + 800500a: f203 4304 addw r3, r3, #1028 @ 0x404 + 800500e: 617b str r3, [r7, #20] + 8005010: 697b ldr r3, [r7, #20] + 8005012: 881b ldrh r3, [r3, #0] + 8005014: b29b uxth r3, r3 + 8005016: f3c3 0309 ubfx r3, r3, #0, #10 + 800501a: b29a uxth r2, r3 + 800501c: 697b ldr r3, [r7, #20] + 800501e: 801a strh r2, [r3, #0] + 8005020: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005024: 2b3e cmp r3, #62 @ 0x3e + 8005026: d921 bls.n 800506c + 8005028: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800502c: 095b lsrs r3, r3, #5 + 800502e: f8c7 30fc str.w r3, [r7, #252] @ 0xfc + 8005032: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005036: f003 031f and.w r3, r3, #31 + 800503a: 2b00 cmp r3, #0 + 800503c: d104 bne.n 8005048 + 800503e: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 8005042: 3b01 subs r3, #1 + 8005044: f8c7 30fc str.w r3, [r7, #252] @ 0xfc + 8005048: 697b ldr r3, [r7, #20] + 800504a: 881b ldrh r3, [r3, #0] + 800504c: b29a uxth r2, r3 + 800504e: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 8005052: b29b uxth r3, r3 + 8005054: 029b lsls r3, r3, #10 + 8005056: b29b uxth r3, r3 + 8005058: 4313 orrs r3, r2 + 800505a: b29b uxth r3, r3 + 800505c: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005060: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005064: b29a uxth r2, r3 + 8005066: 697b ldr r3, [r7, #20] + 8005068: 801a strh r2, [r3, #0] + 800506a: e056 b.n 800511a + 800506c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005070: 2b00 cmp r3, #0 + 8005072: d10a bne.n 800508a + 8005074: 697b ldr r3, [r7, #20] + 8005076: 881b ldrh r3, [r3, #0] + 8005078: b29b uxth r3, r3 + 800507a: ea6f 4343 mvn.w r3, r3, lsl #17 + 800507e: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005082: b29a uxth r2, r3 + 8005084: 697b ldr r3, [r7, #20] + 8005086: 801a strh r2, [r3, #0] + 8005088: e047 b.n 800511a + 800508a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800508e: 085b lsrs r3, r3, #1 + 8005090: f8c7 30fc str.w r3, [r7, #252] @ 0xfc + 8005094: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005098: f003 0301 and.w r3, r3, #1 + 800509c: 2b00 cmp r3, #0 + 800509e: d004 beq.n 80050aa + 80050a0: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 80050a4: 3301 adds r3, #1 + 80050a6: f8c7 30fc str.w r3, [r7, #252] @ 0xfc + 80050aa: 697b ldr r3, [r7, #20] + 80050ac: 881b ldrh r3, [r3, #0] + 80050ae: b29a uxth r2, r3 + 80050b0: f8d7 30fc ldr.w r3, [r7, #252] @ 0xfc + 80050b4: b29b uxth r3, r3 + 80050b6: 029b lsls r3, r3, #10 + 80050b8: b29b uxth r3, r3 + 80050ba: 4313 orrs r3, r2 + 80050bc: b29a uxth r2, r3 + 80050be: 697b ldr r3, [r7, #20] + 80050c0: 801a strh r2, [r3, #0] + 80050c2: e02a b.n 800511a + 80050c4: f507 7384 add.w r3, r7, #264 @ 0x108 + 80050c8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80050cc: 681b ldr r3, [r3, #0] + 80050ce: 785b ldrb r3, [r3, #1] + 80050d0: 2b01 cmp r3, #1 + 80050d2: d122 bne.n 800511a + 80050d4: f507 7384 add.w r3, r7, #264 @ 0x108 + 80050d8: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80050dc: 681b ldr r3, [r3, #0] + 80050de: 623b str r3, [r7, #32] + 80050e0: f507 7384 add.w r3, r7, #264 @ 0x108 + 80050e4: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80050e8: 681b ldr r3, [r3, #0] + 80050ea: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80050ee: b29b uxth r3, r3 + 80050f0: 461a mov r2, r3 + 80050f2: 6a3b ldr r3, [r7, #32] + 80050f4: 4413 add r3, r2 + 80050f6: 623b str r3, [r7, #32] + 80050f8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80050fc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005100: 681b ldr r3, [r3, #0] + 8005102: 781b ldrb r3, [r3, #0] + 8005104: 011a lsls r2, r3, #4 + 8005106: 6a3b ldr r3, [r7, #32] + 8005108: 4413 add r3, r2 + 800510a: f203 4304 addw r3, r3, #1028 @ 0x404 + 800510e: 61fb str r3, [r7, #28] + 8005110: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005114: b29a uxth r2, r3 + 8005116: 69fb ldr r3, [r7, #28] + 8005118: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr0; + 800511a: f507 7384 add.w r3, r7, #264 @ 0x108 + 800511e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005122: 681b ldr r3, [r3, #0] + 8005124: 891b ldrh r3, [r3, #8] + 8005126: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 800512a: f507 7384 add.w r3, r7, #264 @ 0x108 + 800512e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005132: 681b ldr r3, [r3, #0] + 8005134: 6959 ldr r1, [r3, #20] + 8005136: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800513a: b29b uxth r3, r3 + 800513c: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 + 8005140: f507 7084 add.w r0, r7, #264 @ 0x108 + 8005144: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 8005148: 6800 ldr r0, [r0, #0] + 800514a: f001 fa48 bl 80065de + 800514e: e3ee b.n 800592e + } + else + { + /* Set the Double buffer counter for pmabuffer0 */ + PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); + 8005150: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005154: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005158: 681b ldr r3, [r3, #0] + 800515a: 785b ldrb r3, [r3, #1] + 800515c: 2b00 cmp r3, #0 + 800515e: d177 bne.n 8005250 + 8005160: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005164: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005168: 681b ldr r3, [r3, #0] + 800516a: 64bb str r3, [r7, #72] @ 0x48 + 800516c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005170: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005174: 681b ldr r3, [r3, #0] + 8005176: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800517a: b29b uxth r3, r3 + 800517c: 461a mov r2, r3 + 800517e: 6cbb ldr r3, [r7, #72] @ 0x48 + 8005180: 4413 add r3, r2 + 8005182: 64bb str r3, [r7, #72] @ 0x48 + 8005184: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005188: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800518c: 681b ldr r3, [r3, #0] + 800518e: 781b ldrb r3, [r3, #0] + 8005190: 011a lsls r2, r3, #4 + 8005192: 6cbb ldr r3, [r7, #72] @ 0x48 + 8005194: 4413 add r3, r2 + 8005196: f203 4304 addw r3, r3, #1028 @ 0x404 + 800519a: 647b str r3, [r7, #68] @ 0x44 + 800519c: 6c7b ldr r3, [r7, #68] @ 0x44 + 800519e: 881b ldrh r3, [r3, #0] + 80051a0: b29b uxth r3, r3 + 80051a2: f3c3 0309 ubfx r3, r3, #0, #10 + 80051a6: b29a uxth r2, r3 + 80051a8: 6c7b ldr r3, [r7, #68] @ 0x44 + 80051aa: 801a strh r2, [r3, #0] + 80051ac: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80051b0: 2b3e cmp r3, #62 @ 0x3e + 80051b2: d921 bls.n 80051f8 + 80051b4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80051b8: 095b lsrs r3, r3, #5 + 80051ba: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 + 80051be: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80051c2: f003 031f and.w r3, r3, #31 + 80051c6: 2b00 cmp r3, #0 + 80051c8: d104 bne.n 80051d4 + 80051ca: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 + 80051ce: 3b01 subs r3, #1 + 80051d0: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 + 80051d4: 6c7b ldr r3, [r7, #68] @ 0x44 + 80051d6: 881b ldrh r3, [r3, #0] + 80051d8: b29a uxth r2, r3 + 80051da: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 + 80051de: b29b uxth r3, r3 + 80051e0: 029b lsls r3, r3, #10 + 80051e2: b29b uxth r3, r3 + 80051e4: 4313 orrs r3, r2 + 80051e6: b29b uxth r3, r3 + 80051e8: ea6f 4343 mvn.w r3, r3, lsl #17 + 80051ec: ea6f 4353 mvn.w r3, r3, lsr #17 + 80051f0: b29a uxth r2, r3 + 80051f2: 6c7b ldr r3, [r7, #68] @ 0x44 + 80051f4: 801a strh r2, [r3, #0] + 80051f6: e056 b.n 80052a6 + 80051f8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80051fc: 2b00 cmp r3, #0 + 80051fe: d10a bne.n 8005216 + 8005200: 6c7b ldr r3, [r7, #68] @ 0x44 + 8005202: 881b ldrh r3, [r3, #0] + 8005204: b29b uxth r3, r3 + 8005206: ea6f 4343 mvn.w r3, r3, lsl #17 + 800520a: ea6f 4353 mvn.w r3, r3, lsr #17 + 800520e: b29a uxth r2, r3 + 8005210: 6c7b ldr r3, [r7, #68] @ 0x44 + 8005212: 801a strh r2, [r3, #0] + 8005214: e047 b.n 80052a6 + 8005216: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800521a: 085b lsrs r3, r3, #1 + 800521c: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 + 8005220: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005224: f003 0301 and.w r3, r3, #1 + 8005228: 2b00 cmp r3, #0 + 800522a: d004 beq.n 8005236 + 800522c: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 + 8005230: 3301 adds r3, #1 + 8005232: f8c7 30f8 str.w r3, [r7, #248] @ 0xf8 + 8005236: 6c7b ldr r3, [r7, #68] @ 0x44 + 8005238: 881b ldrh r3, [r3, #0] + 800523a: b29a uxth r2, r3 + 800523c: f8d7 30f8 ldr.w r3, [r7, #248] @ 0xf8 + 8005240: b29b uxth r3, r3 + 8005242: 029b lsls r3, r3, #10 + 8005244: b29b uxth r3, r3 + 8005246: 4313 orrs r3, r2 + 8005248: b29a uxth r2, r3 + 800524a: 6c7b ldr r3, [r7, #68] @ 0x44 + 800524c: 801a strh r2, [r3, #0] + 800524e: e02a b.n 80052a6 + 8005250: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005254: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005258: 681b ldr r3, [r3, #0] + 800525a: 785b ldrb r3, [r3, #1] + 800525c: 2b01 cmp r3, #1 + 800525e: d122 bne.n 80052a6 + 8005260: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005264: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005268: 681b ldr r3, [r3, #0] + 800526a: 653b str r3, [r7, #80] @ 0x50 + 800526c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005270: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005274: 681b ldr r3, [r3, #0] + 8005276: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800527a: b29b uxth r3, r3 + 800527c: 461a mov r2, r3 + 800527e: 6d3b ldr r3, [r7, #80] @ 0x50 + 8005280: 4413 add r3, r2 + 8005282: 653b str r3, [r7, #80] @ 0x50 + 8005284: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005288: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800528c: 681b ldr r3, [r3, #0] + 800528e: 781b ldrb r3, [r3, #0] + 8005290: 011a lsls r2, r3, #4 + 8005292: 6d3b ldr r3, [r7, #80] @ 0x50 + 8005294: 4413 add r3, r2 + 8005296: f203 4304 addw r3, r3, #1028 @ 0x404 + 800529a: 64fb str r3, [r7, #76] @ 0x4c + 800529c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80052a0: b29a uxth r2, r3 + 80052a2: 6cfb ldr r3, [r7, #76] @ 0x4c + 80052a4: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr0; + 80052a6: f507 7384 add.w r3, r7, #264 @ 0x108 + 80052aa: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80052ae: 681b ldr r3, [r3, #0] + 80052b0: 891b ldrh r3, [r3, #8] + 80052b2: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 80052b6: f507 7384 add.w r3, r7, #264 @ 0x108 + 80052ba: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80052be: 681b ldr r3, [r3, #0] + 80052c0: 6959 ldr r1, [r3, #20] + 80052c2: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80052c6: b29b uxth r3, r3 + 80052c8: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 + 80052cc: f507 7084 add.w r0, r7, #264 @ 0x108 + 80052d0: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 80052d4: 6800 ldr r0, [r0, #0] + 80052d6: f001 f982 bl 80065de + ep->xfer_buff += len; + 80052da: f507 7384 add.w r3, r7, #264 @ 0x108 + 80052de: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80052e2: 681b ldr r3, [r3, #0] + 80052e4: 695a ldr r2, [r3, #20] + 80052e6: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80052ea: 441a add r2, r3 + 80052ec: f507 7384 add.w r3, r7, #264 @ 0x108 + 80052f0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80052f4: 681b ldr r3, [r3, #0] + 80052f6: 615a str r2, [r3, #20] + + if (ep->xfer_len_db > ep->maxpacket) + 80052f8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80052fc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005300: 681b ldr r3, [r3, #0] + 8005302: 6a1a ldr r2, [r3, #32] + 8005304: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005308: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800530c: 681b ldr r3, [r3, #0] + 800530e: 691b ldr r3, [r3, #16] + 8005310: 429a cmp r2, r3 + 8005312: d90f bls.n 8005334 + { + ep->xfer_len_db -= len; + 8005314: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005318: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800531c: 681b ldr r3, [r3, #0] + 800531e: 6a1a ldr r2, [r3, #32] + 8005320: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005324: 1ad2 subs r2, r2, r3 + 8005326: f507 7384 add.w r3, r7, #264 @ 0x108 + 800532a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800532e: 681b ldr r3, [r3, #0] + 8005330: 621a str r2, [r3, #32] + 8005332: e00e b.n 8005352 + } + else + { + len = ep->xfer_len_db; + 8005334: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005338: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800533c: 681b ldr r3, [r3, #0] + 800533e: 6a1b ldr r3, [r3, #32] + 8005340: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + ep->xfer_len_db = 0U; + 8005344: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005348: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800534c: 681b ldr r3, [r3, #0] + 800534e: 2200 movs r2, #0 + 8005350: 621a str r2, [r3, #32] + } + + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); + 8005352: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005356: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 800535a: 681b ldr r3, [r3, #0] + 800535c: 643b str r3, [r7, #64] @ 0x40 + 800535e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005362: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005366: 681b ldr r3, [r3, #0] + 8005368: 785b ldrb r3, [r3, #1] + 800536a: 2b00 cmp r3, #0 + 800536c: d177 bne.n 800545e + 800536e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005372: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005376: 681b ldr r3, [r3, #0] + 8005378: 63bb str r3, [r7, #56] @ 0x38 + 800537a: f507 7384 add.w r3, r7, #264 @ 0x108 + 800537e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005382: 681b ldr r3, [r3, #0] + 8005384: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8005388: b29b uxth r3, r3 + 800538a: 461a mov r2, r3 + 800538c: 6bbb ldr r3, [r7, #56] @ 0x38 + 800538e: 4413 add r3, r2 + 8005390: 63bb str r3, [r7, #56] @ 0x38 + 8005392: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005396: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800539a: 681b ldr r3, [r3, #0] + 800539c: 781b ldrb r3, [r3, #0] + 800539e: 011a lsls r2, r3, #4 + 80053a0: 6bbb ldr r3, [r7, #56] @ 0x38 + 80053a2: 4413 add r3, r2 + 80053a4: f203 430c addw r3, r3, #1036 @ 0x40c + 80053a8: 637b str r3, [r7, #52] @ 0x34 + 80053aa: 6b7b ldr r3, [r7, #52] @ 0x34 + 80053ac: 881b ldrh r3, [r3, #0] + 80053ae: b29b uxth r3, r3 + 80053b0: f3c3 0309 ubfx r3, r3, #0, #10 + 80053b4: b29a uxth r2, r3 + 80053b6: 6b7b ldr r3, [r7, #52] @ 0x34 + 80053b8: 801a strh r2, [r3, #0] + 80053ba: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80053be: 2b3e cmp r3, #62 @ 0x3e + 80053c0: d921 bls.n 8005406 + 80053c2: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80053c6: 095b lsrs r3, r3, #5 + 80053c8: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 + 80053cc: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80053d0: f003 031f and.w r3, r3, #31 + 80053d4: 2b00 cmp r3, #0 + 80053d6: d104 bne.n 80053e2 + 80053d8: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 80053dc: 3b01 subs r3, #1 + 80053de: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 + 80053e2: 6b7b ldr r3, [r7, #52] @ 0x34 + 80053e4: 881b ldrh r3, [r3, #0] + 80053e6: b29a uxth r2, r3 + 80053e8: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 80053ec: b29b uxth r3, r3 + 80053ee: 029b lsls r3, r3, #10 + 80053f0: b29b uxth r3, r3 + 80053f2: 4313 orrs r3, r2 + 80053f4: b29b uxth r3, r3 + 80053f6: ea6f 4343 mvn.w r3, r3, lsl #17 + 80053fa: ea6f 4353 mvn.w r3, r3, lsr #17 + 80053fe: b29a uxth r2, r3 + 8005400: 6b7b ldr r3, [r7, #52] @ 0x34 + 8005402: 801a strh r2, [r3, #0] + 8005404: e050 b.n 80054a8 + 8005406: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800540a: 2b00 cmp r3, #0 + 800540c: d10a bne.n 8005424 + 800540e: 6b7b ldr r3, [r7, #52] @ 0x34 + 8005410: 881b ldrh r3, [r3, #0] + 8005412: b29b uxth r3, r3 + 8005414: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005418: ea6f 4353 mvn.w r3, r3, lsr #17 + 800541c: b29a uxth r2, r3 + 800541e: 6b7b ldr r3, [r7, #52] @ 0x34 + 8005420: 801a strh r2, [r3, #0] + 8005422: e041 b.n 80054a8 + 8005424: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005428: 085b lsrs r3, r3, #1 + 800542a: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 + 800542e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005432: f003 0301 and.w r3, r3, #1 + 8005436: 2b00 cmp r3, #0 + 8005438: d004 beq.n 8005444 + 800543a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800543e: 3301 adds r3, #1 + 8005440: f8c7 30f4 str.w r3, [r7, #244] @ 0xf4 + 8005444: 6b7b ldr r3, [r7, #52] @ 0x34 + 8005446: 881b ldrh r3, [r3, #0] + 8005448: b29a uxth r2, r3 + 800544a: f8d7 30f4 ldr.w r3, [r7, #244] @ 0xf4 + 800544e: b29b uxth r3, r3 + 8005450: 029b lsls r3, r3, #10 + 8005452: b29b uxth r3, r3 + 8005454: 4313 orrs r3, r2 + 8005456: b29a uxth r2, r3 + 8005458: 6b7b ldr r3, [r7, #52] @ 0x34 + 800545a: 801a strh r2, [r3, #0] + 800545c: e024 b.n 80054a8 + 800545e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005462: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005466: 681b ldr r3, [r3, #0] + 8005468: 785b ldrb r3, [r3, #1] + 800546a: 2b01 cmp r3, #1 + 800546c: d11c bne.n 80054a8 + 800546e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005472: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005476: 681b ldr r3, [r3, #0] + 8005478: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800547c: b29b uxth r3, r3 + 800547e: 461a mov r2, r3 + 8005480: 6c3b ldr r3, [r7, #64] @ 0x40 + 8005482: 4413 add r3, r2 + 8005484: 643b str r3, [r7, #64] @ 0x40 + 8005486: f507 7384 add.w r3, r7, #264 @ 0x108 + 800548a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800548e: 681b ldr r3, [r3, #0] + 8005490: 781b ldrb r3, [r3, #0] + 8005492: 011a lsls r2, r3, #4 + 8005494: 6c3b ldr r3, [r7, #64] @ 0x40 + 8005496: 4413 add r3, r2 + 8005498: f203 430c addw r3, r3, #1036 @ 0x40c + 800549c: 63fb str r3, [r7, #60] @ 0x3c + 800549e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80054a2: b29a uxth r2, r3 + 80054a4: 6bfb ldr r3, [r7, #60] @ 0x3c + 80054a6: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr1; + 80054a8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80054ac: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80054b0: 681b ldr r3, [r3, #0] + 80054b2: 895b ldrh r3, [r3, #10] + 80054b4: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 80054b8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80054bc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80054c0: 681b ldr r3, [r3, #0] + 80054c2: 6959 ldr r1, [r3, #20] + 80054c4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80054c8: b29b uxth r3, r3 + 80054ca: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 + 80054ce: f507 7084 add.w r0, r7, #264 @ 0x108 + 80054d2: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 80054d6: 6800 ldr r0, [r0, #0] + 80054d8: f001 f881 bl 80065de + 80054dc: e227 b.n 800592e + } + } + /* auto Switch to single buffer mode when transfer xfer_len_db; + 80054de: f507 7384 add.w r3, r7, #264 @ 0x108 + 80054e2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80054e6: 681b ldr r3, [r3, #0] + 80054e8: 6a1b ldr r3, [r3, #32] + 80054ea: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + + /* disable double buffer mode for Bulk endpoint */ + PCD_CLEAR_BULK_EP_DBUF(USBx, ep->num); + 80054ee: f507 7384 add.w r3, r7, #264 @ 0x108 + 80054f2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80054f6: 681a ldr r2, [r3, #0] + 80054f8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80054fc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005500: 681b ldr r3, [r3, #0] + 8005502: 781b ldrb r3, [r3, #0] + 8005504: 009b lsls r3, r3, #2 + 8005506: 4413 add r3, r2 + 8005508: 881b ldrh r3, [r3, #0] + 800550a: b29b uxth r3, r3 + 800550c: f423 43e2 bic.w r3, r3, #28928 @ 0x7100 + 8005510: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8005514: f8a7 3062 strh.w r3, [r7, #98] @ 0x62 + 8005518: f507 7384 add.w r3, r7, #264 @ 0x108 + 800551c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005520: 681a ldr r2, [r3, #0] + 8005522: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005526: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800552a: 681b ldr r3, [r3, #0] + 800552c: 781b ldrb r3, [r3, #0] + 800552e: 009b lsls r3, r3, #2 + 8005530: 441a add r2, r3 + 8005532: f8b7 3062 ldrh.w r3, [r7, #98] @ 0x62 + 8005536: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800553a: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800553e: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8005542: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8005546: b29b uxth r3, r3 + 8005548: 8013 strh r3, [r2, #0] + + /* Set Tx count with nbre of byte to be transmitted */ + PCD_SET_EP_TX_CNT(USBx, ep->num, len); + 800554a: f507 7384 add.w r3, r7, #264 @ 0x108 + 800554e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005552: 681b ldr r3, [r3, #0] + 8005554: 65fb str r3, [r7, #92] @ 0x5c + 8005556: f507 7384 add.w r3, r7, #264 @ 0x108 + 800555a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 800555e: 681b ldr r3, [r3, #0] + 8005560: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8005564: b29b uxth r3, r3 + 8005566: 461a mov r2, r3 + 8005568: 6dfb ldr r3, [r7, #92] @ 0x5c + 800556a: 4413 add r3, r2 + 800556c: 65fb str r3, [r7, #92] @ 0x5c + 800556e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005572: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005576: 681b ldr r3, [r3, #0] + 8005578: 781b ldrb r3, [r3, #0] + 800557a: 011a lsls r2, r3, #4 + 800557c: 6dfb ldr r3, [r7, #92] @ 0x5c + 800557e: 4413 add r3, r2 + 8005580: f203 4304 addw r3, r3, #1028 @ 0x404 + 8005584: 65bb str r3, [r7, #88] @ 0x58 + 8005586: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800558a: b29a uxth r2, r3 + 800558c: 6dbb ldr r3, [r7, #88] @ 0x58 + 800558e: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr0; + 8005590: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005594: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005598: 681b ldr r3, [r3, #0] + 800559a: 891b ldrh r3, [r3, #8] + 800559c: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 80055a0: f507 7384 add.w r3, r7, #264 @ 0x108 + 80055a4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80055a8: 681b ldr r3, [r3, #0] + 80055aa: 6959 ldr r1, [r3, #20] + 80055ac: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80055b0: b29b uxth r3, r3 + 80055b2: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 + 80055b6: f507 7084 add.w r0, r7, #264 @ 0x108 + 80055ba: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 80055be: 6800 ldr r0, [r0, #0] + 80055c0: f001 f80d bl 80065de + 80055c4: e1b3 b.n 800592e + } + } + else /* manage isochronous double buffer IN mode */ + { + /* each Time to write in PMA xfer_len_db will */ + ep->xfer_len_db -= len; + 80055c6: f507 7384 add.w r3, r7, #264 @ 0x108 + 80055ca: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80055ce: 681b ldr r3, [r3, #0] + 80055d0: 6a1a ldr r2, [r3, #32] + 80055d2: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80055d6: 1ad2 subs r2, r2, r3 + 80055d8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80055dc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80055e0: 681b ldr r3, [r3, #0] + 80055e2: 621a str r2, [r3, #32] + + /* Fill the data buffer */ + if ((PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_DTOG_TX) != 0U) + 80055e4: f507 7384 add.w r3, r7, #264 @ 0x108 + 80055e8: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80055ec: 681a ldr r2, [r3, #0] + 80055ee: f507 7384 add.w r3, r7, #264 @ 0x108 + 80055f2: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80055f6: 681b ldr r3, [r3, #0] + 80055f8: 781b ldrb r3, [r3, #0] + 80055fa: 009b lsls r3, r3, #2 + 80055fc: 4413 add r3, r2 + 80055fe: 881b ldrh r3, [r3, #0] + 8005600: b29b uxth r3, r3 + 8005602: f003 0340 and.w r3, r3, #64 @ 0x40 + 8005606: 2b00 cmp r3, #0 + 8005608: f000 80c6 beq.w 8005798 + { + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); + 800560c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005610: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005614: 681b ldr r3, [r3, #0] + 8005616: 673b str r3, [r7, #112] @ 0x70 + 8005618: f507 7384 add.w r3, r7, #264 @ 0x108 + 800561c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005620: 681b ldr r3, [r3, #0] + 8005622: 785b ldrb r3, [r3, #1] + 8005624: 2b00 cmp r3, #0 + 8005626: d177 bne.n 8005718 + 8005628: f507 7384 add.w r3, r7, #264 @ 0x108 + 800562c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005630: 681b ldr r3, [r3, #0] + 8005632: 66bb str r3, [r7, #104] @ 0x68 + 8005634: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005638: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 800563c: 681b ldr r3, [r3, #0] + 800563e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8005642: b29b uxth r3, r3 + 8005644: 461a mov r2, r3 + 8005646: 6ebb ldr r3, [r7, #104] @ 0x68 + 8005648: 4413 add r3, r2 + 800564a: 66bb str r3, [r7, #104] @ 0x68 + 800564c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005650: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005654: 681b ldr r3, [r3, #0] + 8005656: 781b ldrb r3, [r3, #0] + 8005658: 011a lsls r2, r3, #4 + 800565a: 6ebb ldr r3, [r7, #104] @ 0x68 + 800565c: 4413 add r3, r2 + 800565e: f203 430c addw r3, r3, #1036 @ 0x40c + 8005662: 667b str r3, [r7, #100] @ 0x64 + 8005664: 6e7b ldr r3, [r7, #100] @ 0x64 + 8005666: 881b ldrh r3, [r3, #0] + 8005668: b29b uxth r3, r3 + 800566a: f3c3 0309 ubfx r3, r3, #0, #10 + 800566e: b29a uxth r2, r3 + 8005670: 6e7b ldr r3, [r7, #100] @ 0x64 + 8005672: 801a strh r2, [r3, #0] + 8005674: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005678: 2b3e cmp r3, #62 @ 0x3e + 800567a: d921 bls.n 80056c0 + 800567c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005680: 095b lsrs r3, r3, #5 + 8005682: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 + 8005686: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800568a: f003 031f and.w r3, r3, #31 + 800568e: 2b00 cmp r3, #0 + 8005690: d104 bne.n 800569c + 8005692: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 + 8005696: 3b01 subs r3, #1 + 8005698: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 + 800569c: 6e7b ldr r3, [r7, #100] @ 0x64 + 800569e: 881b ldrh r3, [r3, #0] + 80056a0: b29a uxth r2, r3 + 80056a2: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 + 80056a6: b29b uxth r3, r3 + 80056a8: 029b lsls r3, r3, #10 + 80056aa: b29b uxth r3, r3 + 80056ac: 4313 orrs r3, r2 + 80056ae: b29b uxth r3, r3 + 80056b0: ea6f 4343 mvn.w r3, r3, lsl #17 + 80056b4: ea6f 4353 mvn.w r3, r3, lsr #17 + 80056b8: b29a uxth r2, r3 + 80056ba: 6e7b ldr r3, [r7, #100] @ 0x64 + 80056bc: 801a strh r2, [r3, #0] + 80056be: e050 b.n 8005762 + 80056c0: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80056c4: 2b00 cmp r3, #0 + 80056c6: d10a bne.n 80056de + 80056c8: 6e7b ldr r3, [r7, #100] @ 0x64 + 80056ca: 881b ldrh r3, [r3, #0] + 80056cc: b29b uxth r3, r3 + 80056ce: ea6f 4343 mvn.w r3, r3, lsl #17 + 80056d2: ea6f 4353 mvn.w r3, r3, lsr #17 + 80056d6: b29a uxth r2, r3 + 80056d8: 6e7b ldr r3, [r7, #100] @ 0x64 + 80056da: 801a strh r2, [r3, #0] + 80056dc: e041 b.n 8005762 + 80056de: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80056e2: 085b lsrs r3, r3, #1 + 80056e4: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 + 80056e8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80056ec: f003 0301 and.w r3, r3, #1 + 80056f0: 2b00 cmp r3, #0 + 80056f2: d004 beq.n 80056fe + 80056f4: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 + 80056f8: 3301 adds r3, #1 + 80056fa: f8c7 30f0 str.w r3, [r7, #240] @ 0xf0 + 80056fe: 6e7b ldr r3, [r7, #100] @ 0x64 + 8005700: 881b ldrh r3, [r3, #0] + 8005702: b29a uxth r2, r3 + 8005704: f8d7 30f0 ldr.w r3, [r7, #240] @ 0xf0 + 8005708: b29b uxth r3, r3 + 800570a: 029b lsls r3, r3, #10 + 800570c: b29b uxth r3, r3 + 800570e: 4313 orrs r3, r2 + 8005710: b29a uxth r2, r3 + 8005712: 6e7b ldr r3, [r7, #100] @ 0x64 + 8005714: 801a strh r2, [r3, #0] + 8005716: e024 b.n 8005762 + 8005718: f507 7384 add.w r3, r7, #264 @ 0x108 + 800571c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005720: 681b ldr r3, [r3, #0] + 8005722: 785b ldrb r3, [r3, #1] + 8005724: 2b01 cmp r3, #1 + 8005726: d11c bne.n 8005762 + 8005728: f507 7384 add.w r3, r7, #264 @ 0x108 + 800572c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005730: 681b ldr r3, [r3, #0] + 8005732: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8005736: b29b uxth r3, r3 + 8005738: 461a mov r2, r3 + 800573a: 6f3b ldr r3, [r7, #112] @ 0x70 + 800573c: 4413 add r3, r2 + 800573e: 673b str r3, [r7, #112] @ 0x70 + 8005740: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005744: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005748: 681b ldr r3, [r3, #0] + 800574a: 781b ldrb r3, [r3, #0] + 800574c: 011a lsls r2, r3, #4 + 800574e: 6f3b ldr r3, [r7, #112] @ 0x70 + 8005750: 4413 add r3, r2 + 8005752: f203 430c addw r3, r3, #1036 @ 0x40c + 8005756: 66fb str r3, [r7, #108] @ 0x6c + 8005758: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800575c: b29a uxth r2, r3 + 800575e: 6efb ldr r3, [r7, #108] @ 0x6c + 8005760: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr1; + 8005762: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005766: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800576a: 681b ldr r3, [r3, #0] + 800576c: 895b ldrh r3, [r3, #10] + 800576e: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 8005772: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005776: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800577a: 681b ldr r3, [r3, #0] + 800577c: 6959 ldr r1, [r3, #20] + 800577e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005782: b29b uxth r3, r3 + 8005784: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 + 8005788: f507 7084 add.w r0, r7, #264 @ 0x108 + 800578c: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 8005790: 6800 ldr r0, [r0, #0] + 8005792: f000 ff24 bl 80065de + 8005796: e0ca b.n 800592e + } + else + { + /* Set the Double buffer counter for pmabuffer0 */ + PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); + 8005798: f507 7384 add.w r3, r7, #264 @ 0x108 + 800579c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80057a0: 681b ldr r3, [r3, #0] + 80057a2: 785b ldrb r3, [r3, #1] + 80057a4: 2b00 cmp r3, #0 + 80057a6: d177 bne.n 8005898 + 80057a8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80057ac: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80057b0: 681b ldr r3, [r3, #0] + 80057b2: 67fb str r3, [r7, #124] @ 0x7c + 80057b4: f507 7384 add.w r3, r7, #264 @ 0x108 + 80057b8: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80057bc: 681b ldr r3, [r3, #0] + 80057be: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80057c2: b29b uxth r3, r3 + 80057c4: 461a mov r2, r3 + 80057c6: 6ffb ldr r3, [r7, #124] @ 0x7c + 80057c8: 4413 add r3, r2 + 80057ca: 67fb str r3, [r7, #124] @ 0x7c + 80057cc: f507 7384 add.w r3, r7, #264 @ 0x108 + 80057d0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80057d4: 681b ldr r3, [r3, #0] + 80057d6: 781b ldrb r3, [r3, #0] + 80057d8: 011a lsls r2, r3, #4 + 80057da: 6ffb ldr r3, [r7, #124] @ 0x7c + 80057dc: 4413 add r3, r2 + 80057de: f203 4304 addw r3, r3, #1028 @ 0x404 + 80057e2: 67bb str r3, [r7, #120] @ 0x78 + 80057e4: 6fbb ldr r3, [r7, #120] @ 0x78 + 80057e6: 881b ldrh r3, [r3, #0] + 80057e8: b29b uxth r3, r3 + 80057ea: f3c3 0309 ubfx r3, r3, #0, #10 + 80057ee: b29a uxth r2, r3 + 80057f0: 6fbb ldr r3, [r7, #120] @ 0x78 + 80057f2: 801a strh r2, [r3, #0] + 80057f4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80057f8: 2b3e cmp r3, #62 @ 0x3e + 80057fa: d921 bls.n 8005840 + 80057fc: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005800: 095b lsrs r3, r3, #5 + 8005802: f8c7 30ec str.w r3, [r7, #236] @ 0xec + 8005806: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800580a: f003 031f and.w r3, r3, #31 + 800580e: 2b00 cmp r3, #0 + 8005810: d104 bne.n 800581c + 8005812: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec + 8005816: 3b01 subs r3, #1 + 8005818: f8c7 30ec str.w r3, [r7, #236] @ 0xec + 800581c: 6fbb ldr r3, [r7, #120] @ 0x78 + 800581e: 881b ldrh r3, [r3, #0] + 8005820: b29a uxth r2, r3 + 8005822: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec + 8005826: b29b uxth r3, r3 + 8005828: 029b lsls r3, r3, #10 + 800582a: b29b uxth r3, r3 + 800582c: 4313 orrs r3, r2 + 800582e: b29b uxth r3, r3 + 8005830: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005834: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005838: b29a uxth r2, r3 + 800583a: 6fbb ldr r3, [r7, #120] @ 0x78 + 800583c: 801a strh r2, [r3, #0] + 800583e: e05c b.n 80058fa + 8005840: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005844: 2b00 cmp r3, #0 + 8005846: d10a bne.n 800585e + 8005848: 6fbb ldr r3, [r7, #120] @ 0x78 + 800584a: 881b ldrh r3, [r3, #0] + 800584c: b29b uxth r3, r3 + 800584e: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005852: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005856: b29a uxth r2, r3 + 8005858: 6fbb ldr r3, [r7, #120] @ 0x78 + 800585a: 801a strh r2, [r3, #0] + 800585c: e04d b.n 80058fa + 800585e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005862: 085b lsrs r3, r3, #1 + 8005864: f8c7 30ec str.w r3, [r7, #236] @ 0xec + 8005868: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800586c: f003 0301 and.w r3, r3, #1 + 8005870: 2b00 cmp r3, #0 + 8005872: d004 beq.n 800587e + 8005874: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec + 8005878: 3301 adds r3, #1 + 800587a: f8c7 30ec str.w r3, [r7, #236] @ 0xec + 800587e: 6fbb ldr r3, [r7, #120] @ 0x78 + 8005880: 881b ldrh r3, [r3, #0] + 8005882: b29a uxth r2, r3 + 8005884: f8d7 30ec ldr.w r3, [r7, #236] @ 0xec + 8005888: b29b uxth r3, r3 + 800588a: 029b lsls r3, r3, #10 + 800588c: b29b uxth r3, r3 + 800588e: 4313 orrs r3, r2 + 8005890: b29a uxth r2, r3 + 8005892: 6fbb ldr r3, [r7, #120] @ 0x78 + 8005894: 801a strh r2, [r3, #0] + 8005896: e030 b.n 80058fa + 8005898: f507 7384 add.w r3, r7, #264 @ 0x108 + 800589c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80058a0: 681b ldr r3, [r3, #0] + 80058a2: 785b ldrb r3, [r3, #1] + 80058a4: 2b01 cmp r3, #1 + 80058a6: d128 bne.n 80058fa + 80058a8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80058ac: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80058b0: 681b ldr r3, [r3, #0] + 80058b2: f8c7 3084 str.w r3, [r7, #132] @ 0x84 + 80058b6: f507 7384 add.w r3, r7, #264 @ 0x108 + 80058ba: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80058be: 681b ldr r3, [r3, #0] + 80058c0: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80058c4: b29b uxth r3, r3 + 80058c6: 461a mov r2, r3 + 80058c8: f8d7 3084 ldr.w r3, [r7, #132] @ 0x84 + 80058cc: 4413 add r3, r2 + 80058ce: f8c7 3084 str.w r3, [r7, #132] @ 0x84 + 80058d2: f507 7384 add.w r3, r7, #264 @ 0x108 + 80058d6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80058da: 681b ldr r3, [r3, #0] + 80058dc: 781b ldrb r3, [r3, #0] + 80058de: 011a lsls r2, r3, #4 + 80058e0: f8d7 3084 ldr.w r3, [r7, #132] @ 0x84 + 80058e4: 4413 add r3, r2 + 80058e6: f203 4304 addw r3, r3, #1028 @ 0x404 + 80058ea: f8c7 3080 str.w r3, [r7, #128] @ 0x80 + 80058ee: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80058f2: b29a uxth r2, r3 + 80058f4: f8d7 3080 ldr.w r3, [r7, #128] @ 0x80 + 80058f8: 801a strh r2, [r3, #0] + pmabuffer = ep->pmaaddr0; + 80058fa: f507 7384 add.w r3, r7, #264 @ 0x108 + 80058fe: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005902: 681b ldr r3, [r3, #0] + 8005904: 891b ldrh r3, [r3, #8] + 8005906: f8a7 3076 strh.w r3, [r7, #118] @ 0x76 + + /* Write the user buffer to USB PMA */ + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + 800590a: f507 7384 add.w r3, r7, #264 @ 0x108 + 800590e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005912: 681b ldr r3, [r3, #0] + 8005914: 6959 ldr r1, [r3, #20] + 8005916: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800591a: b29b uxth r3, r3 + 800591c: f8b7 2076 ldrh.w r2, [r7, #118] @ 0x76 + 8005920: f507 7084 add.w r0, r7, #264 @ 0x108 + 8005924: f5a0 7082 sub.w r0, r0, #260 @ 0x104 + 8005928: 6800 ldr r0, [r0, #0] + 800592a: f000 fe58 bl 80065de + } + } + } +#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ + + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_VALID); + 800592e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005932: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005936: 681a ldr r2, [r3, #0] + 8005938: f507 7384 add.w r3, r7, #264 @ 0x108 + 800593c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005940: 681b ldr r3, [r3, #0] + 8005942: 781b ldrb r3, [r3, #0] + 8005944: 009b lsls r3, r3, #2 + 8005946: 4413 add r3, r2 + 8005948: 881b ldrh r3, [r3, #0] + 800594a: b29b uxth r3, r3 + 800594c: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8005950: f023 0340 bic.w r3, r3, #64 @ 0x40 + 8005954: 817b strh r3, [r7, #10] + 8005956: 897b ldrh r3, [r7, #10] + 8005958: f083 0310 eor.w r3, r3, #16 + 800595c: 817b strh r3, [r7, #10] + 800595e: 897b ldrh r3, [r7, #10] + 8005960: f083 0320 eor.w r3, r3, #32 + 8005964: 817b strh r3, [r7, #10] + 8005966: f507 7384 add.w r3, r7, #264 @ 0x108 + 800596a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 800596e: 681a ldr r2, [r3, #0] + 8005970: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005974: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005978: 681b ldr r3, [r3, #0] + 800597a: 781b ldrb r3, [r3, #0] + 800597c: 009b lsls r3, r3, #2 + 800597e: 441a add r2, r3 + 8005980: 897b ldrh r3, [r7, #10] + 8005982: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8005986: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800598a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800598e: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8005992: b29b uxth r3, r3 + 8005994: 8013 strh r3, [r2, #0] + 8005996: f000 bcde b.w 8006356 + } + else /* OUT endpoint */ + { + if (ep->doublebuffer == 0U) + 800599a: f507 7384 add.w r3, r7, #264 @ 0x108 + 800599e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80059a2: 681b ldr r3, [r3, #0] + 80059a4: 7b1b ldrb r3, [r3, #12] + 80059a6: 2b00 cmp r3, #0 + 80059a8: f040 80bb bne.w 8005b22 + { + /* Multi packet transfer */ + if (ep->xfer_len > ep->maxpacket) + 80059ac: f507 7384 add.w r3, r7, #264 @ 0x108 + 80059b0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80059b4: 681b ldr r3, [r3, #0] + 80059b6: 699a ldr r2, [r3, #24] + 80059b8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80059bc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80059c0: 681b ldr r3, [r3, #0] + 80059c2: 691b ldr r3, [r3, #16] + 80059c4: 429a cmp r2, r3 + 80059c6: d917 bls.n 80059f8 + { + len = ep->maxpacket; + 80059c8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80059cc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80059d0: 681b ldr r3, [r3, #0] + 80059d2: 691b ldr r3, [r3, #16] + 80059d4: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + ep->xfer_len -= len; + 80059d8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80059dc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80059e0: 681b ldr r3, [r3, #0] + 80059e2: 699a ldr r2, [r3, #24] + 80059e4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80059e8: 1ad2 subs r2, r2, r3 + 80059ea: f507 7384 add.w r3, r7, #264 @ 0x108 + 80059ee: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80059f2: 681b ldr r3, [r3, #0] + 80059f4: 619a str r2, [r3, #24] + 80059f6: e00e b.n 8005a16 + } + else + { + len = ep->xfer_len; + 80059f8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80059fc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005a00: 681b ldr r3, [r3, #0] + 8005a02: 699b ldr r3, [r3, #24] + 8005a04: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + ep->xfer_len = 0U; + 8005a08: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005a0c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005a10: 681b ldr r3, [r3, #0] + 8005a12: 2200 movs r2, #0 + 8005a14: 619a str r2, [r3, #24] + } + /* configure and validate Rx endpoint */ + PCD_SET_EP_RX_CNT(USBx, ep->num, len); + 8005a16: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005a1a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005a1e: 681b ldr r3, [r3, #0] + 8005a20: f8c7 3090 str.w r3, [r7, #144] @ 0x90 + 8005a24: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005a28: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005a2c: 681b ldr r3, [r3, #0] + 8005a2e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8005a32: b29b uxth r3, r3 + 8005a34: 461a mov r2, r3 + 8005a36: f8d7 3090 ldr.w r3, [r7, #144] @ 0x90 + 8005a3a: 4413 add r3, r2 + 8005a3c: f8c7 3090 str.w r3, [r7, #144] @ 0x90 + 8005a40: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005a44: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005a48: 681b ldr r3, [r3, #0] + 8005a4a: 781b ldrb r3, [r3, #0] + 8005a4c: 011a lsls r2, r3, #4 + 8005a4e: f8d7 3090 ldr.w r3, [r7, #144] @ 0x90 + 8005a52: 4413 add r3, r2 + 8005a54: f203 430c addw r3, r3, #1036 @ 0x40c + 8005a58: f8c7 308c str.w r3, [r7, #140] @ 0x8c + 8005a5c: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8005a60: 881b ldrh r3, [r3, #0] + 8005a62: b29b uxth r3, r3 + 8005a64: f3c3 0309 ubfx r3, r3, #0, #10 + 8005a68: b29a uxth r2, r3 + 8005a6a: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8005a6e: 801a strh r2, [r3, #0] + 8005a70: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005a74: 2b3e cmp r3, #62 @ 0x3e + 8005a76: d924 bls.n 8005ac2 + 8005a78: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005a7c: 095b lsrs r3, r3, #5 + 8005a7e: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 + 8005a82: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005a86: f003 031f and.w r3, r3, #31 + 8005a8a: 2b00 cmp r3, #0 + 8005a8c: d104 bne.n 8005a98 + 8005a8e: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 + 8005a92: 3b01 subs r3, #1 + 8005a94: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 + 8005a98: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8005a9c: 881b ldrh r3, [r3, #0] + 8005a9e: b29a uxth r2, r3 + 8005aa0: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 + 8005aa4: b29b uxth r3, r3 + 8005aa6: 029b lsls r3, r3, #10 + 8005aa8: b29b uxth r3, r3 + 8005aaa: 4313 orrs r3, r2 + 8005aac: b29b uxth r3, r3 + 8005aae: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005ab2: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005ab6: b29a uxth r2, r3 + 8005ab8: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8005abc: 801a strh r2, [r3, #0] + 8005abe: f000 bc10 b.w 80062e2 + 8005ac2: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005ac6: 2b00 cmp r3, #0 + 8005ac8: d10c bne.n 8005ae4 + 8005aca: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8005ace: 881b ldrh r3, [r3, #0] + 8005ad0: b29b uxth r3, r3 + 8005ad2: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005ad6: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005ada: b29a uxth r2, r3 + 8005adc: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8005ae0: 801a strh r2, [r3, #0] + 8005ae2: e3fe b.n 80062e2 + 8005ae4: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005ae8: 085b lsrs r3, r3, #1 + 8005aea: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 + 8005aee: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005af2: f003 0301 and.w r3, r3, #1 + 8005af6: 2b00 cmp r3, #0 + 8005af8: d004 beq.n 8005b04 + 8005afa: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 + 8005afe: 3301 adds r3, #1 + 8005b00: f8c7 30e8 str.w r3, [r7, #232] @ 0xe8 + 8005b04: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8005b08: 881b ldrh r3, [r3, #0] + 8005b0a: b29a uxth r2, r3 + 8005b0c: f8d7 30e8 ldr.w r3, [r7, #232] @ 0xe8 + 8005b10: b29b uxth r3, r3 + 8005b12: 029b lsls r3, r3, #10 + 8005b14: b29b uxth r3, r3 + 8005b16: 4313 orrs r3, r2 + 8005b18: b29a uxth r2, r3 + 8005b1a: f8d7 308c ldr.w r3, [r7, #140] @ 0x8c + 8005b1e: 801a strh r2, [r3, #0] + 8005b20: e3df b.n 80062e2 +#if (USE_USB_DOUBLE_BUFFER == 1U) + else + { + /* First Transfer Coming From HAL_PCD_EP_Receive & From ISR */ + /* Set the Double buffer counter */ + if (ep->type == EP_TYPE_BULK) + 8005b22: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005b26: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005b2a: 681b ldr r3, [r3, #0] + 8005b2c: 78db ldrb r3, [r3, #3] + 8005b2e: 2b02 cmp r3, #2 + 8005b30: f040 8218 bne.w 8005f64 + { + PCD_SET_EP_DBUF_CNT(USBx, ep->num, ep->is_in, ep->maxpacket); + 8005b34: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005b38: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005b3c: 681b ldr r3, [r3, #0] + 8005b3e: 785b ldrb r3, [r3, #1] + 8005b40: 2b00 cmp r3, #0 + 8005b42: f040 809d bne.w 8005c80 + 8005b46: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005b4a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005b4e: 681b ldr r3, [r3, #0] + 8005b50: f8c7 30ac str.w r3, [r7, #172] @ 0xac + 8005b54: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005b58: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005b5c: 681b ldr r3, [r3, #0] + 8005b5e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8005b62: b29b uxth r3, r3 + 8005b64: 461a mov r2, r3 + 8005b66: f8d7 30ac ldr.w r3, [r7, #172] @ 0xac + 8005b6a: 4413 add r3, r2 + 8005b6c: f8c7 30ac str.w r3, [r7, #172] @ 0xac + 8005b70: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005b74: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005b78: 681b ldr r3, [r3, #0] + 8005b7a: 781b ldrb r3, [r3, #0] + 8005b7c: 011a lsls r2, r3, #4 + 8005b7e: f8d7 30ac ldr.w r3, [r7, #172] @ 0xac + 8005b82: 4413 add r3, r2 + 8005b84: f203 4304 addw r3, r3, #1028 @ 0x404 + 8005b88: f8c7 30a8 str.w r3, [r7, #168] @ 0xa8 + 8005b8c: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 8005b90: 881b ldrh r3, [r3, #0] + 8005b92: b29b uxth r3, r3 + 8005b94: f3c3 0309 ubfx r3, r3, #0, #10 + 8005b98: b29a uxth r2, r3 + 8005b9a: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 8005b9e: 801a strh r2, [r3, #0] + 8005ba0: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005ba4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005ba8: 681b ldr r3, [r3, #0] + 8005baa: 691b ldr r3, [r3, #16] + 8005bac: 2b3e cmp r3, #62 @ 0x3e + 8005bae: d92b bls.n 8005c08 + 8005bb0: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005bb4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005bb8: 681b ldr r3, [r3, #0] + 8005bba: 691b ldr r3, [r3, #16] + 8005bbc: 095b lsrs r3, r3, #5 + 8005bbe: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 + 8005bc2: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005bc6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005bca: 681b ldr r3, [r3, #0] + 8005bcc: 691b ldr r3, [r3, #16] + 8005bce: f003 031f and.w r3, r3, #31 + 8005bd2: 2b00 cmp r3, #0 + 8005bd4: d104 bne.n 8005be0 + 8005bd6: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 8005bda: 3b01 subs r3, #1 + 8005bdc: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 + 8005be0: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 8005be4: 881b ldrh r3, [r3, #0] + 8005be6: b29a uxth r2, r3 + 8005be8: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 8005bec: b29b uxth r3, r3 + 8005bee: 029b lsls r3, r3, #10 + 8005bf0: b29b uxth r3, r3 + 8005bf2: 4313 orrs r3, r2 + 8005bf4: b29b uxth r3, r3 + 8005bf6: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005bfa: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005bfe: b29a uxth r2, r3 + 8005c00: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 8005c04: 801a strh r2, [r3, #0] + 8005c06: e070 b.n 8005cea + 8005c08: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005c0c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005c10: 681b ldr r3, [r3, #0] + 8005c12: 691b ldr r3, [r3, #16] + 8005c14: 2b00 cmp r3, #0 + 8005c16: d10c bne.n 8005c32 + 8005c18: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 8005c1c: 881b ldrh r3, [r3, #0] + 8005c1e: b29b uxth r3, r3 + 8005c20: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005c24: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005c28: b29a uxth r2, r3 + 8005c2a: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 8005c2e: 801a strh r2, [r3, #0] + 8005c30: e05b b.n 8005cea + 8005c32: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005c36: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005c3a: 681b ldr r3, [r3, #0] + 8005c3c: 691b ldr r3, [r3, #16] + 8005c3e: 085b lsrs r3, r3, #1 + 8005c40: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 + 8005c44: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005c48: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005c4c: 681b ldr r3, [r3, #0] + 8005c4e: 691b ldr r3, [r3, #16] + 8005c50: f003 0301 and.w r3, r3, #1 + 8005c54: 2b00 cmp r3, #0 + 8005c56: d004 beq.n 8005c62 + 8005c58: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 8005c5c: 3301 adds r3, #1 + 8005c5e: f8c7 30e4 str.w r3, [r7, #228] @ 0xe4 + 8005c62: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 8005c66: 881b ldrh r3, [r3, #0] + 8005c68: b29a uxth r2, r3 + 8005c6a: f8d7 30e4 ldr.w r3, [r7, #228] @ 0xe4 + 8005c6e: b29b uxth r3, r3 + 8005c70: 029b lsls r3, r3, #10 + 8005c72: b29b uxth r3, r3 + 8005c74: 4313 orrs r3, r2 + 8005c76: b29a uxth r2, r3 + 8005c78: f8d7 30a8 ldr.w r3, [r7, #168] @ 0xa8 + 8005c7c: 801a strh r2, [r3, #0] + 8005c7e: e034 b.n 8005cea + 8005c80: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005c84: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005c88: 681b ldr r3, [r3, #0] + 8005c8a: 785b ldrb r3, [r3, #1] + 8005c8c: 2b01 cmp r3, #1 + 8005c8e: d12c bne.n 8005cea + 8005c90: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005c94: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005c98: 681b ldr r3, [r3, #0] + 8005c9a: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 + 8005c9e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005ca2: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005ca6: 681b ldr r3, [r3, #0] + 8005ca8: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8005cac: b29b uxth r3, r3 + 8005cae: 461a mov r2, r3 + 8005cb0: f8d7 30b4 ldr.w r3, [r7, #180] @ 0xb4 + 8005cb4: 4413 add r3, r2 + 8005cb6: f8c7 30b4 str.w r3, [r7, #180] @ 0xb4 + 8005cba: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005cbe: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005cc2: 681b ldr r3, [r3, #0] + 8005cc4: 781b ldrb r3, [r3, #0] + 8005cc6: 011a lsls r2, r3, #4 + 8005cc8: f8d7 30b4 ldr.w r3, [r7, #180] @ 0xb4 + 8005ccc: 4413 add r3, r2 + 8005cce: f203 4304 addw r3, r3, #1028 @ 0x404 + 8005cd2: f8c7 30b0 str.w r3, [r7, #176] @ 0xb0 + 8005cd6: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005cda: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005cde: 681b ldr r3, [r3, #0] + 8005ce0: 691b ldr r3, [r3, #16] + 8005ce2: b29a uxth r2, r3 + 8005ce4: f8d7 30b0 ldr.w r3, [r7, #176] @ 0xb0 + 8005ce8: 801a strh r2, [r3, #0] + 8005cea: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005cee: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005cf2: 681b ldr r3, [r3, #0] + 8005cf4: f8c7 30a4 str.w r3, [r7, #164] @ 0xa4 + 8005cf8: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005cfc: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005d00: 681b ldr r3, [r3, #0] + 8005d02: 785b ldrb r3, [r3, #1] + 8005d04: 2b00 cmp r3, #0 + 8005d06: f040 809d bne.w 8005e44 + 8005d0a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005d0e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005d12: 681b ldr r3, [r3, #0] + 8005d14: f8c7 309c str.w r3, [r7, #156] @ 0x9c + 8005d18: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005d1c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005d20: 681b ldr r3, [r3, #0] + 8005d22: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8005d26: b29b uxth r3, r3 + 8005d28: 461a mov r2, r3 + 8005d2a: f8d7 309c ldr.w r3, [r7, #156] @ 0x9c + 8005d2e: 4413 add r3, r2 + 8005d30: f8c7 309c str.w r3, [r7, #156] @ 0x9c + 8005d34: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005d38: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005d3c: 681b ldr r3, [r3, #0] + 8005d3e: 781b ldrb r3, [r3, #0] + 8005d40: 011a lsls r2, r3, #4 + 8005d42: f8d7 309c ldr.w r3, [r7, #156] @ 0x9c + 8005d46: 4413 add r3, r2 + 8005d48: f203 430c addw r3, r3, #1036 @ 0x40c + 8005d4c: f8c7 3098 str.w r3, [r7, #152] @ 0x98 + 8005d50: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 8005d54: 881b ldrh r3, [r3, #0] + 8005d56: b29b uxth r3, r3 + 8005d58: f3c3 0309 ubfx r3, r3, #0, #10 + 8005d5c: b29a uxth r2, r3 + 8005d5e: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 8005d62: 801a strh r2, [r3, #0] + 8005d64: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005d68: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005d6c: 681b ldr r3, [r3, #0] + 8005d6e: 691b ldr r3, [r3, #16] + 8005d70: 2b3e cmp r3, #62 @ 0x3e + 8005d72: d92b bls.n 8005dcc + 8005d74: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005d78: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005d7c: 681b ldr r3, [r3, #0] + 8005d7e: 691b ldr r3, [r3, #16] + 8005d80: 095b lsrs r3, r3, #5 + 8005d82: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 + 8005d86: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005d8a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005d8e: 681b ldr r3, [r3, #0] + 8005d90: 691b ldr r3, [r3, #16] + 8005d92: f003 031f and.w r3, r3, #31 + 8005d96: 2b00 cmp r3, #0 + 8005d98: d104 bne.n 8005da4 + 8005d9a: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 8005d9e: 3b01 subs r3, #1 + 8005da0: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 + 8005da4: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 8005da8: 881b ldrh r3, [r3, #0] + 8005daa: b29a uxth r2, r3 + 8005dac: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 8005db0: b29b uxth r3, r3 + 8005db2: 029b lsls r3, r3, #10 + 8005db4: b29b uxth r3, r3 + 8005db6: 4313 orrs r3, r2 + 8005db8: b29b uxth r3, r3 + 8005dba: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005dbe: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005dc2: b29a uxth r2, r3 + 8005dc4: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 8005dc8: 801a strh r2, [r3, #0] + 8005dca: e069 b.n 8005ea0 + 8005dcc: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005dd0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005dd4: 681b ldr r3, [r3, #0] + 8005dd6: 691b ldr r3, [r3, #16] + 8005dd8: 2b00 cmp r3, #0 + 8005dda: d10c bne.n 8005df6 + 8005ddc: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 8005de0: 881b ldrh r3, [r3, #0] + 8005de2: b29b uxth r3, r3 + 8005de4: ea6f 4343 mvn.w r3, r3, lsl #17 + 8005de8: ea6f 4353 mvn.w r3, r3, lsr #17 + 8005dec: b29a uxth r2, r3 + 8005dee: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 8005df2: 801a strh r2, [r3, #0] + 8005df4: e054 b.n 8005ea0 + 8005df6: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005dfa: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005dfe: 681b ldr r3, [r3, #0] + 8005e00: 691b ldr r3, [r3, #16] + 8005e02: 085b lsrs r3, r3, #1 + 8005e04: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 + 8005e08: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005e0c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005e10: 681b ldr r3, [r3, #0] + 8005e12: 691b ldr r3, [r3, #16] + 8005e14: f003 0301 and.w r3, r3, #1 + 8005e18: 2b00 cmp r3, #0 + 8005e1a: d004 beq.n 8005e26 + 8005e1c: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 8005e20: 3301 adds r3, #1 + 8005e22: f8c7 30e0 str.w r3, [r7, #224] @ 0xe0 + 8005e26: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 8005e2a: 881b ldrh r3, [r3, #0] + 8005e2c: b29a uxth r2, r3 + 8005e2e: f8d7 30e0 ldr.w r3, [r7, #224] @ 0xe0 + 8005e32: b29b uxth r3, r3 + 8005e34: 029b lsls r3, r3, #10 + 8005e36: b29b uxth r3, r3 + 8005e38: 4313 orrs r3, r2 + 8005e3a: b29a uxth r2, r3 + 8005e3c: f8d7 3098 ldr.w r3, [r7, #152] @ 0x98 + 8005e40: 801a strh r2, [r3, #0] + 8005e42: e02d b.n 8005ea0 + 8005e44: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005e48: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005e4c: 681b ldr r3, [r3, #0] + 8005e4e: 785b ldrb r3, [r3, #1] + 8005e50: 2b01 cmp r3, #1 + 8005e52: d125 bne.n 8005ea0 + 8005e54: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005e58: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005e5c: 681b ldr r3, [r3, #0] + 8005e5e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8005e62: b29b uxth r3, r3 + 8005e64: 461a mov r2, r3 + 8005e66: f8d7 30a4 ldr.w r3, [r7, #164] @ 0xa4 + 8005e6a: 4413 add r3, r2 + 8005e6c: f8c7 30a4 str.w r3, [r7, #164] @ 0xa4 + 8005e70: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005e74: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005e78: 681b ldr r3, [r3, #0] + 8005e7a: 781b ldrb r3, [r3, #0] + 8005e7c: 011a lsls r2, r3, #4 + 8005e7e: f8d7 30a4 ldr.w r3, [r7, #164] @ 0xa4 + 8005e82: 4413 add r3, r2 + 8005e84: f203 430c addw r3, r3, #1036 @ 0x40c + 8005e88: f8c7 30a0 str.w r3, [r7, #160] @ 0xa0 + 8005e8c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005e90: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005e94: 681b ldr r3, [r3, #0] + 8005e96: 691b ldr r3, [r3, #16] + 8005e98: b29a uxth r2, r3 + 8005e9a: f8d7 30a0 ldr.w r3, [r7, #160] @ 0xa0 + 8005e9e: 801a strh r2, [r3, #0] + + /* Coming from ISR */ + if (ep->xfer_count != 0U) + 8005ea0: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005ea4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005ea8: 681b ldr r3, [r3, #0] + 8005eaa: 69db ldr r3, [r3, #28] + 8005eac: 2b00 cmp r3, #0 + 8005eae: f000 8218 beq.w 80062e2 + { + /* update last value to check if there is blocking state */ + wEPVal = PCD_GET_ENDPOINT(USBx, ep->num); + 8005eb2: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005eb6: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005eba: 681a ldr r2, [r3, #0] + 8005ebc: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005ec0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005ec4: 681b ldr r3, [r3, #0] + 8005ec6: 781b ldrb r3, [r3, #0] + 8005ec8: 009b lsls r3, r3, #2 + 8005eca: 4413 add r3, r2 + 8005ecc: 881b ldrh r3, [r3, #0] + 8005ece: f8a7 3096 strh.w r3, [r7, #150] @ 0x96 + + /*Blocking State */ + if ((((wEPVal & USB_EP_DTOG_RX) != 0U) && ((wEPVal & USB_EP_DTOG_TX) != 0U)) || + 8005ed2: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 + 8005ed6: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8005eda: 2b00 cmp r3, #0 + 8005edc: d005 beq.n 8005eea + 8005ede: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 + 8005ee2: f003 0340 and.w r3, r3, #64 @ 0x40 + 8005ee6: 2b00 cmp r3, #0 + 8005ee8: d10d bne.n 8005f06 + (((wEPVal & USB_EP_DTOG_RX) == 0U) && ((wEPVal & USB_EP_DTOG_TX) == 0U))) + 8005eea: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 + 8005eee: f403 4380 and.w r3, r3, #16384 @ 0x4000 + if ((((wEPVal & USB_EP_DTOG_RX) != 0U) && ((wEPVal & USB_EP_DTOG_TX) != 0U)) || + 8005ef2: 2b00 cmp r3, #0 + 8005ef4: f040 81f5 bne.w 80062e2 + (((wEPVal & USB_EP_DTOG_RX) == 0U) && ((wEPVal & USB_EP_DTOG_TX) == 0U))) + 8005ef8: f8b7 3096 ldrh.w r3, [r7, #150] @ 0x96 + 8005efc: f003 0340 and.w r3, r3, #64 @ 0x40 + 8005f00: 2b00 cmp r3, #0 + 8005f02: f040 81ee bne.w 80062e2 + { + PCD_FREE_USER_BUFFER(USBx, ep->num, 0U); + 8005f06: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005f0a: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005f0e: 681a ldr r2, [r3, #0] + 8005f10: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005f14: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005f18: 681b ldr r3, [r3, #0] + 8005f1a: 781b ldrb r3, [r3, #0] + 8005f1c: 009b lsls r3, r3, #2 + 8005f1e: 4413 add r3, r2 + 8005f20: 881b ldrh r3, [r3, #0] + 8005f22: b29b uxth r3, r3 + 8005f24: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8005f28: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8005f2c: f8a7 3094 strh.w r3, [r7, #148] @ 0x94 + 8005f30: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005f34: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005f38: 681a ldr r2, [r3, #0] + 8005f3a: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005f3e: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005f42: 681b ldr r3, [r3, #0] + 8005f44: 781b ldrb r3, [r3, #0] + 8005f46: 009b lsls r3, r3, #2 + 8005f48: 441a add r2, r3 + 8005f4a: f8b7 3094 ldrh.w r3, [r7, #148] @ 0x94 + 8005f4e: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8005f52: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8005f56: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8005f5a: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 8005f5e: b29b uxth r3, r3 + 8005f60: 8013 strh r3, [r2, #0] + 8005f62: e1be b.n 80062e2 + } + } + } + /* iso out double */ + else if (ep->type == EP_TYPE_ISOC) + 8005f64: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005f68: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005f6c: 681b ldr r3, [r3, #0] + 8005f6e: 78db ldrb r3, [r3, #3] + 8005f70: 2b01 cmp r3, #1 + 8005f72: f040 81b4 bne.w 80062de + { + /* Multi packet transfer */ + if (ep->xfer_len > ep->maxpacket) + 8005f76: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005f7a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005f7e: 681b ldr r3, [r3, #0] + 8005f80: 699a ldr r2, [r3, #24] + 8005f82: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005f86: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005f8a: 681b ldr r3, [r3, #0] + 8005f8c: 691b ldr r3, [r3, #16] + 8005f8e: 429a cmp r2, r3 + 8005f90: d917 bls.n 8005fc2 + { + len = ep->maxpacket; + 8005f92: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005f96: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005f9a: 681b ldr r3, [r3, #0] + 8005f9c: 691b ldr r3, [r3, #16] + 8005f9e: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + ep->xfer_len -= len; + 8005fa2: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005fa6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005faa: 681b ldr r3, [r3, #0] + 8005fac: 699a ldr r2, [r3, #24] + 8005fae: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8005fb2: 1ad2 subs r2, r2, r3 + 8005fb4: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005fb8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005fbc: 681b ldr r3, [r3, #0] + 8005fbe: 619a str r2, [r3, #24] + 8005fc0: e00e b.n 8005fe0 + } + else + { + len = ep->xfer_len; + 8005fc2: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005fc6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005fca: 681b ldr r3, [r3, #0] + 8005fcc: 699b ldr r3, [r3, #24] + 8005fce: f8c7 3104 str.w r3, [r7, #260] @ 0x104 + ep->xfer_len = 0U; + 8005fd2: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005fd6: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005fda: 681b ldr r3, [r3, #0] + 8005fdc: 2200 movs r2, #0 + 8005fde: 619a str r2, [r3, #24] + } + PCD_SET_EP_DBUF_CNT(USBx, ep->num, ep->is_in, len); + 8005fe0: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005fe4: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8005fe8: 681b ldr r3, [r3, #0] + 8005fea: 785b ldrb r3, [r3, #1] + 8005fec: 2b00 cmp r3, #0 + 8005fee: f040 8085 bne.w 80060fc + 8005ff2: f507 7384 add.w r3, r7, #264 @ 0x108 + 8005ff6: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8005ffa: 681b ldr r3, [r3, #0] + 8005ffc: f8c7 30cc str.w r3, [r7, #204] @ 0xcc + 8006000: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006004: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006008: 681b ldr r3, [r3, #0] + 800600a: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800600e: b29b uxth r3, r3 + 8006010: 461a mov r2, r3 + 8006012: f8d7 30cc ldr.w r3, [r7, #204] @ 0xcc + 8006016: 4413 add r3, r2 + 8006018: f8c7 30cc str.w r3, [r7, #204] @ 0xcc + 800601c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006020: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006024: 681b ldr r3, [r3, #0] + 8006026: 781b ldrb r3, [r3, #0] + 8006028: 011a lsls r2, r3, #4 + 800602a: f8d7 30cc ldr.w r3, [r7, #204] @ 0xcc + 800602e: 4413 add r3, r2 + 8006030: f203 4304 addw r3, r3, #1028 @ 0x404 + 8006034: f8c7 30c8 str.w r3, [r7, #200] @ 0xc8 + 8006038: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 800603c: 881b ldrh r3, [r3, #0] + 800603e: b29b uxth r3, r3 + 8006040: f3c3 0309 ubfx r3, r3, #0, #10 + 8006044: b29a uxth r2, r3 + 8006046: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 800604a: 801a strh r2, [r3, #0] + 800604c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006050: 2b3e cmp r3, #62 @ 0x3e + 8006052: d923 bls.n 800609c + 8006054: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006058: 095b lsrs r3, r3, #5 + 800605a: f8c7 30dc str.w r3, [r7, #220] @ 0xdc + 800605e: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006062: f003 031f and.w r3, r3, #31 + 8006066: 2b00 cmp r3, #0 + 8006068: d104 bne.n 8006074 + 800606a: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 800606e: 3b01 subs r3, #1 + 8006070: f8c7 30dc str.w r3, [r7, #220] @ 0xdc + 8006074: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 8006078: 881b ldrh r3, [r3, #0] + 800607a: b29a uxth r2, r3 + 800607c: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 8006080: b29b uxth r3, r3 + 8006082: 029b lsls r3, r3, #10 + 8006084: b29b uxth r3, r3 + 8006086: 4313 orrs r3, r2 + 8006088: b29b uxth r3, r3 + 800608a: ea6f 4343 mvn.w r3, r3, lsl #17 + 800608e: ea6f 4353 mvn.w r3, r3, lsr #17 + 8006092: b29a uxth r2, r3 + 8006094: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 8006098: 801a strh r2, [r3, #0] + 800609a: e060 b.n 800615e + 800609c: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80060a0: 2b00 cmp r3, #0 + 80060a2: d10c bne.n 80060be + 80060a4: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 80060a8: 881b ldrh r3, [r3, #0] + 80060aa: b29b uxth r3, r3 + 80060ac: ea6f 4343 mvn.w r3, r3, lsl #17 + 80060b0: ea6f 4353 mvn.w r3, r3, lsr #17 + 80060b4: b29a uxth r2, r3 + 80060b6: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 80060ba: 801a strh r2, [r3, #0] + 80060bc: e04f b.n 800615e + 80060be: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80060c2: 085b lsrs r3, r3, #1 + 80060c4: f8c7 30dc str.w r3, [r7, #220] @ 0xdc + 80060c8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80060cc: f003 0301 and.w r3, r3, #1 + 80060d0: 2b00 cmp r3, #0 + 80060d2: d004 beq.n 80060de + 80060d4: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 80060d8: 3301 adds r3, #1 + 80060da: f8c7 30dc str.w r3, [r7, #220] @ 0xdc + 80060de: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 80060e2: 881b ldrh r3, [r3, #0] + 80060e4: b29a uxth r2, r3 + 80060e6: f8d7 30dc ldr.w r3, [r7, #220] @ 0xdc + 80060ea: b29b uxth r3, r3 + 80060ec: 029b lsls r3, r3, #10 + 80060ee: b29b uxth r3, r3 + 80060f0: 4313 orrs r3, r2 + 80060f2: b29a uxth r2, r3 + 80060f4: f8d7 30c8 ldr.w r3, [r7, #200] @ 0xc8 + 80060f8: 801a strh r2, [r3, #0] + 80060fa: e030 b.n 800615e + 80060fc: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006100: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006104: 681b ldr r3, [r3, #0] + 8006106: 785b ldrb r3, [r3, #1] + 8006108: 2b01 cmp r3, #1 + 800610a: d128 bne.n 800615e + 800610c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006110: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006114: 681b ldr r3, [r3, #0] + 8006116: f8c7 30d4 str.w r3, [r7, #212] @ 0xd4 + 800611a: f507 7384 add.w r3, r7, #264 @ 0x108 + 800611e: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006122: 681b ldr r3, [r3, #0] + 8006124: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 8006128: b29b uxth r3, r3 + 800612a: 461a mov r2, r3 + 800612c: f8d7 30d4 ldr.w r3, [r7, #212] @ 0xd4 + 8006130: 4413 add r3, r2 + 8006132: f8c7 30d4 str.w r3, [r7, #212] @ 0xd4 + 8006136: f507 7384 add.w r3, r7, #264 @ 0x108 + 800613a: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 800613e: 681b ldr r3, [r3, #0] + 8006140: 781b ldrb r3, [r3, #0] + 8006142: 011a lsls r2, r3, #4 + 8006144: f8d7 30d4 ldr.w r3, [r7, #212] @ 0xd4 + 8006148: 4413 add r3, r2 + 800614a: f203 4304 addw r3, r3, #1028 @ 0x404 + 800614e: f8c7 30d0 str.w r3, [r7, #208] @ 0xd0 + 8006152: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006156: b29a uxth r2, r3 + 8006158: f8d7 30d0 ldr.w r3, [r7, #208] @ 0xd0 + 800615c: 801a strh r2, [r3, #0] + 800615e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006162: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006166: 681b ldr r3, [r3, #0] + 8006168: f8c7 30c4 str.w r3, [r7, #196] @ 0xc4 + 800616c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006170: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006174: 681b ldr r3, [r3, #0] + 8006176: 785b ldrb r3, [r3, #1] + 8006178: 2b00 cmp r3, #0 + 800617a: f040 8085 bne.w 8006288 + 800617e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006182: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006186: 681b ldr r3, [r3, #0] + 8006188: f8c7 30bc str.w r3, [r7, #188] @ 0xbc + 800618c: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006190: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 8006194: 681b ldr r3, [r3, #0] + 8006196: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 800619a: b29b uxth r3, r3 + 800619c: 461a mov r2, r3 + 800619e: f8d7 30bc ldr.w r3, [r7, #188] @ 0xbc + 80061a2: 4413 add r3, r2 + 80061a4: f8c7 30bc str.w r3, [r7, #188] @ 0xbc + 80061a8: f507 7384 add.w r3, r7, #264 @ 0x108 + 80061ac: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80061b0: 681b ldr r3, [r3, #0] + 80061b2: 781b ldrb r3, [r3, #0] + 80061b4: 011a lsls r2, r3, #4 + 80061b6: f8d7 30bc ldr.w r3, [r7, #188] @ 0xbc + 80061ba: 4413 add r3, r2 + 80061bc: f203 430c addw r3, r3, #1036 @ 0x40c + 80061c0: f8c7 30b8 str.w r3, [r7, #184] @ 0xb8 + 80061c4: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 80061c8: 881b ldrh r3, [r3, #0] + 80061ca: b29b uxth r3, r3 + 80061cc: f3c3 0309 ubfx r3, r3, #0, #10 + 80061d0: b29a uxth r2, r3 + 80061d2: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 80061d6: 801a strh r2, [r3, #0] + 80061d8: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80061dc: 2b3e cmp r3, #62 @ 0x3e + 80061de: d923 bls.n 8006228 + 80061e0: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80061e4: 095b lsrs r3, r3, #5 + 80061e6: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 + 80061ea: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80061ee: f003 031f and.w r3, r3, #31 + 80061f2: 2b00 cmp r3, #0 + 80061f4: d104 bne.n 8006200 + 80061f6: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 + 80061fa: 3b01 subs r3, #1 + 80061fc: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 + 8006200: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 8006204: 881b ldrh r3, [r3, #0] + 8006206: b29a uxth r2, r3 + 8006208: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 + 800620c: b29b uxth r3, r3 + 800620e: 029b lsls r3, r3, #10 + 8006210: b29b uxth r3, r3 + 8006212: 4313 orrs r3, r2 + 8006214: b29b uxth r3, r3 + 8006216: ea6f 4343 mvn.w r3, r3, lsl #17 + 800621a: ea6f 4353 mvn.w r3, r3, lsr #17 + 800621e: b29a uxth r2, r3 + 8006220: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 8006224: 801a strh r2, [r3, #0] + 8006226: e05c b.n 80062e2 + 8006228: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800622c: 2b00 cmp r3, #0 + 800622e: d10c bne.n 800624a + 8006230: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 8006234: 881b ldrh r3, [r3, #0] + 8006236: b29b uxth r3, r3 + 8006238: ea6f 4343 mvn.w r3, r3, lsl #17 + 800623c: ea6f 4353 mvn.w r3, r3, lsr #17 + 8006240: b29a uxth r2, r3 + 8006242: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 8006246: 801a strh r2, [r3, #0] + 8006248: e04b b.n 80062e2 + 800624a: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 800624e: 085b lsrs r3, r3, #1 + 8006250: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 + 8006254: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 8006258: f003 0301 and.w r3, r3, #1 + 800625c: 2b00 cmp r3, #0 + 800625e: d004 beq.n 800626a + 8006260: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 + 8006264: 3301 adds r3, #1 + 8006266: f8c7 30d8 str.w r3, [r7, #216] @ 0xd8 + 800626a: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 800626e: 881b ldrh r3, [r3, #0] + 8006270: b29a uxth r2, r3 + 8006272: f8d7 30d8 ldr.w r3, [r7, #216] @ 0xd8 + 8006276: b29b uxth r3, r3 + 8006278: 029b lsls r3, r3, #10 + 800627a: b29b uxth r3, r3 + 800627c: 4313 orrs r3, r2 + 800627e: b29a uxth r2, r3 + 8006280: f8d7 30b8 ldr.w r3, [r7, #184] @ 0xb8 + 8006284: 801a strh r2, [r3, #0] + 8006286: e02c b.n 80062e2 + 8006288: f507 7384 add.w r3, r7, #264 @ 0x108 + 800628c: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006290: 681b ldr r3, [r3, #0] + 8006292: 785b ldrb r3, [r3, #1] + 8006294: 2b01 cmp r3, #1 + 8006296: d124 bne.n 80062e2 + 8006298: f507 7384 add.w r3, r7, #264 @ 0x108 + 800629c: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80062a0: 681b ldr r3, [r3, #0] + 80062a2: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50 + 80062a6: b29b uxth r3, r3 + 80062a8: 461a mov r2, r3 + 80062aa: f8d7 30c4 ldr.w r3, [r7, #196] @ 0xc4 + 80062ae: 4413 add r3, r2 + 80062b0: f8c7 30c4 str.w r3, [r7, #196] @ 0xc4 + 80062b4: f507 7384 add.w r3, r7, #264 @ 0x108 + 80062b8: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80062bc: 681b ldr r3, [r3, #0] + 80062be: 781b ldrb r3, [r3, #0] + 80062c0: 011a lsls r2, r3, #4 + 80062c2: f8d7 30c4 ldr.w r3, [r7, #196] @ 0xc4 + 80062c6: 4413 add r3, r2 + 80062c8: f203 430c addw r3, r3, #1036 @ 0x40c + 80062cc: f8c7 30c0 str.w r3, [r7, #192] @ 0xc0 + 80062d0: f8d7 3104 ldr.w r3, [r7, #260] @ 0x104 + 80062d4: b29a uxth r2, r3 + 80062d6: f8d7 30c0 ldr.w r3, [r7, #192] @ 0xc0 + 80062da: 801a strh r2, [r3, #0] + 80062dc: e001 b.n 80062e2 + } + else + { + return HAL_ERROR; + 80062de: 2301 movs r3, #1 + 80062e0: e03a b.n 8006358 + } + } +#endif /* (USE_USB_DOUBLE_BUFFER == 1U) */ + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + 80062e2: f507 7384 add.w r3, r7, #264 @ 0x108 + 80062e6: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 80062ea: 681a ldr r2, [r3, #0] + 80062ec: f507 7384 add.w r3, r7, #264 @ 0x108 + 80062f0: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 80062f4: 681b ldr r3, [r3, #0] + 80062f6: 781b ldrb r3, [r3, #0] + 80062f8: 009b lsls r3, r3, #2 + 80062fa: 4413 add r3, r2 + 80062fc: 881b ldrh r3, [r3, #0] + 80062fe: b29b uxth r3, r3 + 8006300: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 8006304: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8006308: f8a7 308a strh.w r3, [r7, #138] @ 0x8a + 800630c: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a + 8006310: f483 5380 eor.w r3, r3, #4096 @ 0x1000 + 8006314: f8a7 308a strh.w r3, [r7, #138] @ 0x8a + 8006318: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a + 800631c: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 8006320: f8a7 308a strh.w r3, [r7, #138] @ 0x8a + 8006324: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006328: f5a3 7382 sub.w r3, r3, #260 @ 0x104 + 800632c: 681a ldr r2, [r3, #0] + 800632e: f507 7384 add.w r3, r7, #264 @ 0x108 + 8006332: f5a3 7384 sub.w r3, r3, #264 @ 0x108 + 8006336: 681b ldr r3, [r3, #0] + 8006338: 781b ldrb r3, [r3, #0] + 800633a: 009b lsls r3, r3, #2 + 800633c: 441a add r2, r3 + 800633e: f8b7 308a ldrh.w r3, [r7, #138] @ 0x8a + 8006342: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8006346: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 800634a: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 800634e: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8006352: b29b uxth r3, r3 + 8006354: 8013 strh r3, [r2, #0] + } + + return HAL_OK; + 8006356: 2300 movs r3, #0 +} + 8006358: 4618 mov r0, r3 + 800635a: f507 7784 add.w r7, r7, #264 @ 0x108 + 800635e: 46bd mov sp, r7 + 8006360: bd80 pop {r7, pc} + +08006362 : + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPSetStall(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + 8006362: b480 push {r7} + 8006364: b085 sub sp, #20 + 8006366: af00 add r7, sp, #0 + 8006368: 6078 str r0, [r7, #4] + 800636a: 6039 str r1, [r7, #0] + if (ep->is_in != 0U) + 800636c: 683b ldr r3, [r7, #0] + 800636e: 785b ldrb r3, [r3, #1] + 8006370: 2b00 cmp r3, #0 + 8006372: d020 beq.n 80063b6 + { + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_STALL); + 8006374: 687a ldr r2, [r7, #4] + 8006376: 683b ldr r3, [r7, #0] + 8006378: 781b ldrb r3, [r3, #0] + 800637a: 009b lsls r3, r3, #2 + 800637c: 4413 add r3, r2 + 800637e: 881b ldrh r3, [r3, #0] + 8006380: b29b uxth r3, r3 + 8006382: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8006386: f023 0340 bic.w r3, r3, #64 @ 0x40 + 800638a: 81bb strh r3, [r7, #12] + 800638c: 89bb ldrh r3, [r7, #12] + 800638e: f083 0310 eor.w r3, r3, #16 + 8006392: 81bb strh r3, [r7, #12] + 8006394: 687a ldr r2, [r7, #4] + 8006396: 683b ldr r3, [r7, #0] + 8006398: 781b ldrb r3, [r3, #0] + 800639a: 009b lsls r3, r3, #2 + 800639c: 441a add r2, r3 + 800639e: 89bb ldrh r3, [r7, #12] + 80063a0: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80063a4: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80063a8: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 80063ac: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80063b0: b29b uxth r3, r3 + 80063b2: 8013 strh r3, [r2, #0] + 80063b4: e01f b.n 80063f6 + } + else + { + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_STALL); + 80063b6: 687a ldr r2, [r7, #4] + 80063b8: 683b ldr r3, [r7, #0] + 80063ba: 781b ldrb r3, [r3, #0] + 80063bc: 009b lsls r3, r3, #2 + 80063be: 4413 add r3, r2 + 80063c0: 881b ldrh r3, [r3, #0] + 80063c2: b29b uxth r3, r3 + 80063c4: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 80063c8: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80063cc: 81fb strh r3, [r7, #14] + 80063ce: 89fb ldrh r3, [r7, #14] + 80063d0: f483 5380 eor.w r3, r3, #4096 @ 0x1000 + 80063d4: 81fb strh r3, [r7, #14] + 80063d6: 687a ldr r2, [r7, #4] + 80063d8: 683b ldr r3, [r7, #0] + 80063da: 781b ldrb r3, [r3, #0] + 80063dc: 009b lsls r3, r3, #2 + 80063de: 441a add r2, r3 + 80063e0: 89fb ldrh r3, [r7, #14] + 80063e2: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80063e6: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80063ea: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 80063ee: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80063f2: b29b uxth r3, r3 + 80063f4: 8013 strh r3, [r2, #0] + } + + return HAL_OK; + 80063f6: 2300 movs r3, #0 +} + 80063f8: 4618 mov r0, r3 + 80063fa: 3714 adds r7, #20 + 80063fc: 46bd mov sp, r7 + 80063fe: bc80 pop {r7} + 8006400: 4770 bx lr + +08006402 : + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPClearStall(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + 8006402: b480 push {r7} + 8006404: b087 sub sp, #28 + 8006406: af00 add r7, sp, #0 + 8006408: 6078 str r0, [r7, #4] + 800640a: 6039 str r1, [r7, #0] + if (ep->doublebuffer == 0U) + 800640c: 683b ldr r3, [r7, #0] + 800640e: 7b1b ldrb r3, [r3, #12] + 8006410: 2b00 cmp r3, #0 + 8006412: f040 809d bne.w 8006550 + { + if (ep->is_in != 0U) + 8006416: 683b ldr r3, [r7, #0] + 8006418: 785b ldrb r3, [r3, #1] + 800641a: 2b00 cmp r3, #0 + 800641c: d04c beq.n 80064b8 + { + PCD_CLEAR_TX_DTOG(USBx, ep->num); + 800641e: 687a ldr r2, [r7, #4] + 8006420: 683b ldr r3, [r7, #0] + 8006422: 781b ldrb r3, [r3, #0] + 8006424: 009b lsls r3, r3, #2 + 8006426: 4413 add r3, r2 + 8006428: 881b ldrh r3, [r3, #0] + 800642a: 823b strh r3, [r7, #16] + 800642c: 8a3b ldrh r3, [r7, #16] + 800642e: f003 0340 and.w r3, r3, #64 @ 0x40 + 8006432: 2b00 cmp r3, #0 + 8006434: d01b beq.n 800646e + 8006436: 687a ldr r2, [r7, #4] + 8006438: 683b ldr r3, [r7, #0] + 800643a: 781b ldrb r3, [r3, #0] + 800643c: 009b lsls r3, r3, #2 + 800643e: 4413 add r3, r2 + 8006440: 881b ldrh r3, [r3, #0] + 8006442: b29b uxth r3, r3 + 8006444: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8006448: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800644c: 81fb strh r3, [r7, #14] + 800644e: 687a ldr r2, [r7, #4] + 8006450: 683b ldr r3, [r7, #0] + 8006452: 781b ldrb r3, [r3, #0] + 8006454: 009b lsls r3, r3, #2 + 8006456: 441a add r2, r3 + 8006458: 89fb ldrh r3, [r7, #14] + 800645a: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 800645e: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8006462: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8006466: f043 03c0 orr.w r3, r3, #192 @ 0xc0 + 800646a: b29b uxth r3, r3 + 800646c: 8013 strh r3, [r2, #0] + + if (ep->type != EP_TYPE_ISOC) + 800646e: 683b ldr r3, [r7, #0] + 8006470: 78db ldrb r3, [r3, #3] + 8006472: 2b01 cmp r3, #1 + 8006474: d06c beq.n 8006550 + { + /* Configure NAK status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); + 8006476: 687a ldr r2, [r7, #4] + 8006478: 683b ldr r3, [r7, #0] + 800647a: 781b ldrb r3, [r3, #0] + 800647c: 009b lsls r3, r3, #2 + 800647e: 4413 add r3, r2 + 8006480: 881b ldrh r3, [r3, #0] + 8006482: b29b uxth r3, r3 + 8006484: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 8006488: f023 0340 bic.w r3, r3, #64 @ 0x40 + 800648c: 81bb strh r3, [r7, #12] + 800648e: 89bb ldrh r3, [r7, #12] + 8006490: f083 0320 eor.w r3, r3, #32 + 8006494: 81bb strh r3, [r7, #12] + 8006496: 687a ldr r2, [r7, #4] + 8006498: 683b ldr r3, [r7, #0] + 800649a: 781b ldrb r3, [r3, #0] + 800649c: 009b lsls r3, r3, #2 + 800649e: 441a add r2, r3 + 80064a0: 89bb ldrh r3, [r7, #12] + 80064a2: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80064a6: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80064aa: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 80064ae: f043 0380 orr.w r3, r3, #128 @ 0x80 + 80064b2: b29b uxth r3, r3 + 80064b4: 8013 strh r3, [r2, #0] + 80064b6: e04b b.n 8006550 + } + } + else + { + PCD_CLEAR_RX_DTOG(USBx, ep->num); + 80064b8: 687a ldr r2, [r7, #4] + 80064ba: 683b ldr r3, [r7, #0] + 80064bc: 781b ldrb r3, [r3, #0] + 80064be: 009b lsls r3, r3, #2 + 80064c0: 4413 add r3, r2 + 80064c2: 881b ldrh r3, [r3, #0] + 80064c4: 82fb strh r3, [r7, #22] + 80064c6: 8afb ldrh r3, [r7, #22] + 80064c8: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 80064cc: 2b00 cmp r3, #0 + 80064ce: d01b beq.n 8006508 + 80064d0: 687a ldr r2, [r7, #4] + 80064d2: 683b ldr r3, [r7, #0] + 80064d4: 781b ldrb r3, [r3, #0] + 80064d6: 009b lsls r3, r3, #2 + 80064d8: 4413 add r3, r2 + 80064da: 881b ldrh r3, [r3, #0] + 80064dc: b29b uxth r3, r3 + 80064de: f423 43e0 bic.w r3, r3, #28672 @ 0x7000 + 80064e2: f023 0370 bic.w r3, r3, #112 @ 0x70 + 80064e6: 82bb strh r3, [r7, #20] + 80064e8: 687a ldr r2, [r7, #4] + 80064ea: 683b ldr r3, [r7, #0] + 80064ec: 781b ldrb r3, [r3, #0] + 80064ee: 009b lsls r3, r3, #2 + 80064f0: 441a add r2, r3 + 80064f2: 8abb ldrh r3, [r7, #20] + 80064f4: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 80064f8: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 80064fc: f443 4340 orr.w r3, r3, #49152 @ 0xc000 + 8006500: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8006504: b29b uxth r3, r3 + 8006506: 8013 strh r3, [r2, #0] + + /* Configure VALID status for the Endpoint */ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + 8006508: 687a ldr r2, [r7, #4] + 800650a: 683b ldr r3, [r7, #0] + 800650c: 781b ldrb r3, [r3, #0] + 800650e: 009b lsls r3, r3, #2 + 8006510: 4413 add r3, r2 + 8006512: 881b ldrh r3, [r3, #0] + 8006514: b29b uxth r3, r3 + 8006516: f423 4380 bic.w r3, r3, #16384 @ 0x4000 + 800651a: f023 0370 bic.w r3, r3, #112 @ 0x70 + 800651e: 827b strh r3, [r7, #18] + 8006520: 8a7b ldrh r3, [r7, #18] + 8006522: f483 5380 eor.w r3, r3, #4096 @ 0x1000 + 8006526: 827b strh r3, [r7, #18] + 8006528: 8a7b ldrh r3, [r7, #18] + 800652a: f483 5300 eor.w r3, r3, #8192 @ 0x2000 + 800652e: 827b strh r3, [r7, #18] + 8006530: 687a ldr r2, [r7, #4] + 8006532: 683b ldr r3, [r7, #0] + 8006534: 781b ldrb r3, [r3, #0] + 8006536: 009b lsls r3, r3, #2 + 8006538: 441a add r2, r3 + 800653a: 8a7b ldrh r3, [r7, #18] + 800653c: f043 437f orr.w r3, r3, #4278190080 @ 0xff000000 + 8006540: f443 037f orr.w r3, r3, #16711680 @ 0xff0000 + 8006544: f443 4300 orr.w r3, r3, #32768 @ 0x8000 + 8006548: f043 0380 orr.w r3, r3, #128 @ 0x80 + 800654c: b29b uxth r3, r3 + 800654e: 8013 strh r3, [r2, #0] + } + } + + return HAL_OK; + 8006550: 2300 movs r3, #0 +} + 8006552: 4618 mov r0, r3 + 8006554: 371c adds r7, #28 + 8006556: 46bd mov sp, r7 + 8006558: bc80 pop {r7} + 800655a: 4770 bx lr + +0800655c : + * @param address new device address to be assigned + * This parameter can be a value from 0 to 255 + * @retval HAL status + */ +HAL_StatusTypeDef USB_SetDevAddress(USB_TypeDef *USBx, uint8_t address) +{ + 800655c: b480 push {r7} + 800655e: b083 sub sp, #12 + 8006560: af00 add r7, sp, #0 + 8006562: 6078 str r0, [r7, #4] + 8006564: 460b mov r3, r1 + 8006566: 70fb strb r3, [r7, #3] + if (address == 0U) + 8006568: 78fb ldrb r3, [r7, #3] + 800656a: 2b00 cmp r3, #0 + 800656c: d103 bne.n 8006576 + { + /* set device address and enable function */ + USBx->DADDR = (uint16_t)USB_DADDR_EF; + 800656e: 687b ldr r3, [r7, #4] + 8006570: 2280 movs r2, #128 @ 0x80 + 8006572: f8a3 204c strh.w r2, [r3, #76] @ 0x4c + } + + return HAL_OK; + 8006576: 2300 movs r3, #0 +} + 8006578: 4618 mov r0, r3 + 800657a: 370c adds r7, #12 + 800657c: 46bd mov sp, r7 + 800657e: bc80 pop {r7} + 8006580: 4770 bx lr + +08006582 : + * @brief USB_DevConnect Connect the USB device by enabling the pull-up/pull-down + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevConnect(USB_TypeDef *USBx) +{ + 8006582: b480 push {r7} + 8006584: b083 sub sp, #12 + 8006586: af00 add r7, sp, #0 + 8006588: 6078 str r0, [r7, #4] + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; + 800658a: 2300 movs r3, #0 +} + 800658c: 4618 mov r0, r3 + 800658e: 370c adds r7, #12 + 8006590: 46bd mov sp, r7 + 8006592: bc80 pop {r7} + 8006594: 4770 bx lr + +08006596 : + * @brief USB_DevDisconnect Disconnect the USB device by disabling the pull-up/pull-down + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevDisconnect(USB_TypeDef *USBx) +{ + 8006596: b480 push {r7} + 8006598: b083 sub sp, #12 + 800659a: af00 add r7, sp, #0 + 800659c: 6078 str r0, [r7, #4] + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; + 800659e: 2300 movs r3, #0 +} + 80065a0: 4618 mov r0, r3 + 80065a2: 370c adds r7, #12 + 80065a4: 46bd mov sp, r7 + 80065a6: bc80 pop {r7} + 80065a8: 4770 bx lr + +080065aa : + * @brief USB_ReadInterrupts return the global USB interrupt status + * @param USBx Selected device + * @retval USB Global Interrupt status + */ +uint32_t USB_ReadInterrupts(USB_TypeDef const *USBx) +{ + 80065aa: b480 push {r7} + 80065ac: b085 sub sp, #20 + 80065ae: af00 add r7, sp, #0 + 80065b0: 6078 str r0, [r7, #4] + uint32_t tmpreg; + + tmpreg = USBx->ISTR; + 80065b2: 687b ldr r3, [r7, #4] + 80065b4: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44 + 80065b8: b29b uxth r3, r3 + 80065ba: 60fb str r3, [r7, #12] + return tmpreg; + 80065bc: 68fb ldr r3, [r7, #12] +} + 80065be: 4618 mov r0, r3 + 80065c0: 3714 adds r7, #20 + 80065c2: 46bd mov sp, r7 + 80065c4: bc80 pop {r7} + 80065c6: 4770 bx lr + +080065c8 : + * @param USBx Selected device + * @param psetup pointer to setup packet + * @retval HAL status + */ +HAL_StatusTypeDef USB_EP0_OutStart(USB_TypeDef *USBx, uint8_t *psetup) +{ + 80065c8: b480 push {r7} + 80065ca: b083 sub sp, #12 + 80065cc: af00 add r7, sp, #0 + 80065ce: 6078 str r0, [r7, #4] + 80065d0: 6039 str r1, [r7, #0] + UNUSED(psetup); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return HAL_OK; + 80065d2: 2300 movs r3, #0 +} + 80065d4: 4618 mov r0, r3 + 80065d6: 370c adds r7, #12 + 80065d8: 46bd mov sp, r7 + 80065da: bc80 pop {r7} + 80065dc: 4770 bx lr + +080065de : + * @param wPMABufAddr address into PMA. + * @param wNBytes no. of bytes to be copied. + * @retval None + */ +void USB_WritePMA(USB_TypeDef const *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) +{ + 80065de: b480 push {r7} + 80065e0: b08b sub sp, #44 @ 0x2c + 80065e2: af00 add r7, sp, #0 + 80065e4: 60f8 str r0, [r7, #12] + 80065e6: 60b9 str r1, [r7, #8] + 80065e8: 4611 mov r1, r2 + 80065ea: 461a mov r2, r3 + 80065ec: 460b mov r3, r1 + 80065ee: 80fb strh r3, [r7, #6] + 80065f0: 4613 mov r3, r2 + 80065f2: 80bb strh r3, [r7, #4] + uint32_t n = ((uint32_t)wNBytes + 1U) >> 1; + 80065f4: 88bb ldrh r3, [r7, #4] + 80065f6: 3301 adds r3, #1 + 80065f8: 085b lsrs r3, r3, #1 + 80065fa: 61bb str r3, [r7, #24] + uint32_t BaseAddr = (uint32_t)USBx; + 80065fc: 68fb ldr r3, [r7, #12] + 80065fe: 617b str r3, [r7, #20] + uint32_t count; + uint16_t WrVal; + __IO uint16_t *pdwVal; + uint8_t *pBuf = pbUsrBuf; + 8006600: 68bb ldr r3, [r7, #8] + 8006602: 61fb str r3, [r7, #28] + + pdwVal = (__IO uint16_t *)(BaseAddr + 0x400U + ((uint32_t)wPMABufAddr * PMA_ACCESS)); + 8006604: 88fb ldrh r3, [r7, #6] + 8006606: 005a lsls r2, r3, #1 + 8006608: 697b ldr r3, [r7, #20] + 800660a: 4413 add r3, r2 + 800660c: f503 6380 add.w r3, r3, #1024 @ 0x400 + 8006610: 623b str r3, [r7, #32] + + for (count = n; count != 0U; count--) + 8006612: 69bb ldr r3, [r7, #24] + 8006614: 627b str r3, [r7, #36] @ 0x24 + 8006616: e01f b.n 8006658 + { + WrVal = pBuf[0]; + 8006618: 69fb ldr r3, [r7, #28] + 800661a: 781b ldrb r3, [r3, #0] + 800661c: 827b strh r3, [r7, #18] + WrVal |= (uint16_t)pBuf[1] << 8; + 800661e: 69fb ldr r3, [r7, #28] + 8006620: 3301 adds r3, #1 + 8006622: 781b ldrb r3, [r3, #0] + 8006624: b21b sxth r3, r3 + 8006626: 021b lsls r3, r3, #8 + 8006628: b21a sxth r2, r3 + 800662a: f9b7 3012 ldrsh.w r3, [r7, #18] + 800662e: 4313 orrs r3, r2 + 8006630: b21b sxth r3, r3 + 8006632: 827b strh r3, [r7, #18] + *pdwVal = (WrVal & 0xFFFFU); + 8006634: 6a3b ldr r3, [r7, #32] + 8006636: 8a7a ldrh r2, [r7, #18] + 8006638: 801a strh r2, [r3, #0] + pdwVal++; + 800663a: 6a3b ldr r3, [r7, #32] + 800663c: 3302 adds r3, #2 + 800663e: 623b str r3, [r7, #32] + +#if PMA_ACCESS > 1U + pdwVal++; + 8006640: 6a3b ldr r3, [r7, #32] + 8006642: 3302 adds r3, #2 + 8006644: 623b str r3, [r7, #32] +#endif /* PMA_ACCESS */ + + pBuf++; + 8006646: 69fb ldr r3, [r7, #28] + 8006648: 3301 adds r3, #1 + 800664a: 61fb str r3, [r7, #28] + pBuf++; + 800664c: 69fb ldr r3, [r7, #28] + 800664e: 3301 adds r3, #1 + 8006650: 61fb str r3, [r7, #28] + for (count = n; count != 0U; count--) + 8006652: 6a7b ldr r3, [r7, #36] @ 0x24 + 8006654: 3b01 subs r3, #1 + 8006656: 627b str r3, [r7, #36] @ 0x24 + 8006658: 6a7b ldr r3, [r7, #36] @ 0x24 + 800665a: 2b00 cmp r3, #0 + 800665c: d1dc bne.n 8006618 + } +} + 800665e: bf00 nop + 8006660: bf00 nop + 8006662: 372c adds r7, #44 @ 0x2c + 8006664: 46bd mov sp, r7 + 8006666: bc80 pop {r7} + 8006668: 4770 bx lr + +0800666a : + * @param wPMABufAddr address into PMA. + * @param wNBytes no. of bytes to be copied. + * @retval None + */ +void USB_ReadPMA(USB_TypeDef const *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) +{ + 800666a: b480 push {r7} + 800666c: b08b sub sp, #44 @ 0x2c + 800666e: af00 add r7, sp, #0 + 8006670: 60f8 str r0, [r7, #12] + 8006672: 60b9 str r1, [r7, #8] + 8006674: 4611 mov r1, r2 + 8006676: 461a mov r2, r3 + 8006678: 460b mov r3, r1 + 800667a: 80fb strh r3, [r7, #6] + 800667c: 4613 mov r3, r2 + 800667e: 80bb strh r3, [r7, #4] + uint32_t n = (uint32_t)wNBytes >> 1; + 8006680: 88bb ldrh r3, [r7, #4] + 8006682: 085b lsrs r3, r3, #1 + 8006684: b29b uxth r3, r3 + 8006686: 61bb str r3, [r7, #24] + uint32_t BaseAddr = (uint32_t)USBx; + 8006688: 68fb ldr r3, [r7, #12] + 800668a: 617b str r3, [r7, #20] + uint32_t count; + uint32_t RdVal; + __IO uint16_t *pdwVal; + uint8_t *pBuf = pbUsrBuf; + 800668c: 68bb ldr r3, [r7, #8] + 800668e: 61fb str r3, [r7, #28] + + pdwVal = (__IO uint16_t *)(BaseAddr + 0x400U + ((uint32_t)wPMABufAddr * PMA_ACCESS)); + 8006690: 88fb ldrh r3, [r7, #6] + 8006692: 005a lsls r2, r3, #1 + 8006694: 697b ldr r3, [r7, #20] + 8006696: 4413 add r3, r2 + 8006698: f503 6380 add.w r3, r3, #1024 @ 0x400 + 800669c: 623b str r3, [r7, #32] + + for (count = n; count != 0U; count--) + 800669e: 69bb ldr r3, [r7, #24] + 80066a0: 627b str r3, [r7, #36] @ 0x24 + 80066a2: e01b b.n 80066dc + { + RdVal = *(__IO uint16_t *)pdwVal; + 80066a4: 6a3b ldr r3, [r7, #32] + 80066a6: 881b ldrh r3, [r3, #0] + 80066a8: b29b uxth r3, r3 + 80066aa: 613b str r3, [r7, #16] + pdwVal++; + 80066ac: 6a3b ldr r3, [r7, #32] + 80066ae: 3302 adds r3, #2 + 80066b0: 623b str r3, [r7, #32] + *pBuf = (uint8_t)((RdVal >> 0) & 0xFFU); + 80066b2: 693b ldr r3, [r7, #16] + 80066b4: b2da uxtb r2, r3 + 80066b6: 69fb ldr r3, [r7, #28] + 80066b8: 701a strb r2, [r3, #0] + pBuf++; + 80066ba: 69fb ldr r3, [r7, #28] + 80066bc: 3301 adds r3, #1 + 80066be: 61fb str r3, [r7, #28] + *pBuf = (uint8_t)((RdVal >> 8) & 0xFFU); + 80066c0: 693b ldr r3, [r7, #16] + 80066c2: 0a1b lsrs r3, r3, #8 + 80066c4: b2da uxtb r2, r3 + 80066c6: 69fb ldr r3, [r7, #28] + 80066c8: 701a strb r2, [r3, #0] + pBuf++; + 80066ca: 69fb ldr r3, [r7, #28] + 80066cc: 3301 adds r3, #1 + 80066ce: 61fb str r3, [r7, #28] + +#if PMA_ACCESS > 1U + pdwVal++; + 80066d0: 6a3b ldr r3, [r7, #32] + 80066d2: 3302 adds r3, #2 + 80066d4: 623b str r3, [r7, #32] + for (count = n; count != 0U; count--) + 80066d6: 6a7b ldr r3, [r7, #36] @ 0x24 + 80066d8: 3b01 subs r3, #1 + 80066da: 627b str r3, [r7, #36] @ 0x24 + 80066dc: 6a7b ldr r3, [r7, #36] @ 0x24 + 80066de: 2b00 cmp r3, #0 + 80066e0: d1e0 bne.n 80066a4 +#endif /* PMA_ACCESS */ + } + + if ((wNBytes % 2U) != 0U) + 80066e2: 88bb ldrh r3, [r7, #4] + 80066e4: f003 0301 and.w r3, r3, #1 + 80066e8: b29b uxth r3, r3 + 80066ea: 2b00 cmp r3, #0 + 80066ec: d007 beq.n 80066fe + { + RdVal = *pdwVal; + 80066ee: 6a3b ldr r3, [r7, #32] + 80066f0: 881b ldrh r3, [r3, #0] + 80066f2: b29b uxth r3, r3 + 80066f4: 613b str r3, [r7, #16] + *pBuf = (uint8_t)((RdVal >> 0) & 0xFFU); + 80066f6: 693b ldr r3, [r7, #16] + 80066f8: b2da uxtb r2, r3 + 80066fa: 69fb ldr r3, [r7, #28] + 80066fc: 701a strb r2, [r3, #0] + } +} + 80066fe: bf00 nop + 8006700: 372c adds r7, #44 @ 0x2c + 8006702: 46bd mov sp, r7 + 8006704: bc80 pop {r7} + 8006706: 4770 bx lr + +08006708 : + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_CDC_Init(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + 8006708: b580 push {r7, lr} + 800670a: b084 sub sp, #16 + 800670c: af00 add r7, sp, #0 + 800670e: 6078 str r0, [r7, #4] + 8006710: 460b mov r3, r1 + 8006712: 70fb strb r3, [r7, #3] + uint8_t ret = 0U; + 8006714: 2300 movs r3, #0 + 8006716: 73fb strb r3, [r7, #15] + USBD_CDC_HandleTypeDef *hcdc; + + if (pdev->dev_speed == USBD_SPEED_HIGH) + 8006718: 687b ldr r3, [r7, #4] + 800671a: 7c1b ldrb r3, [r3, #16] + 800671c: 2b00 cmp r3, #0 + 800671e: d115 bne.n 800674c + { + /* Open EP IN */ + USBD_LL_OpenEP(pdev, CDC_IN_EP, USBD_EP_TYPE_BULK, + 8006720: f44f 7300 mov.w r3, #512 @ 0x200 + 8006724: 2202 movs r2, #2 + 8006726: 2181 movs r1, #129 @ 0x81 + 8006728: 6878 ldr r0, [r7, #4] + 800672a: f001 ff00 bl 800852e + CDC_DATA_HS_IN_PACKET_SIZE); + + pdev->ep_in[CDC_IN_EP & 0xFU].is_used = 1U; + 800672e: 687b ldr r3, [r7, #4] + 8006730: 2201 movs r2, #1 + 8006732: 62da str r2, [r3, #44] @ 0x2c + + /* Open EP OUT */ + USBD_LL_OpenEP(pdev, CDC_OUT_EP, USBD_EP_TYPE_BULK, + 8006734: f44f 7300 mov.w r3, #512 @ 0x200 + 8006738: 2202 movs r2, #2 + 800673a: 2101 movs r1, #1 + 800673c: 6878 ldr r0, [r7, #4] + 800673e: f001 fef6 bl 800852e + CDC_DATA_HS_OUT_PACKET_SIZE); + + pdev->ep_out[CDC_OUT_EP & 0xFU].is_used = 1U; + 8006742: 687b ldr r3, [r7, #4] + 8006744: 2201 movs r2, #1 + 8006746: f8c3 216c str.w r2, [r3, #364] @ 0x16c + 800674a: e012 b.n 8006772 + + } + else + { + /* Open EP IN */ + USBD_LL_OpenEP(pdev, CDC_IN_EP, USBD_EP_TYPE_BULK, + 800674c: 2340 movs r3, #64 @ 0x40 + 800674e: 2202 movs r2, #2 + 8006750: 2181 movs r1, #129 @ 0x81 + 8006752: 6878 ldr r0, [r7, #4] + 8006754: f001 feeb bl 800852e + CDC_DATA_FS_IN_PACKET_SIZE); + + pdev->ep_in[CDC_IN_EP & 0xFU].is_used = 1U; + 8006758: 687b ldr r3, [r7, #4] + 800675a: 2201 movs r2, #1 + 800675c: 62da str r2, [r3, #44] @ 0x2c + + /* Open EP OUT */ + USBD_LL_OpenEP(pdev, CDC_OUT_EP, USBD_EP_TYPE_BULK, + 800675e: 2340 movs r3, #64 @ 0x40 + 8006760: 2202 movs r2, #2 + 8006762: 2101 movs r1, #1 + 8006764: 6878 ldr r0, [r7, #4] + 8006766: f001 fee2 bl 800852e + CDC_DATA_FS_OUT_PACKET_SIZE); + + pdev->ep_out[CDC_OUT_EP & 0xFU].is_used = 1U; + 800676a: 687b ldr r3, [r7, #4] + 800676c: 2201 movs r2, #1 + 800676e: f8c3 216c str.w r2, [r3, #364] @ 0x16c + } + /* Open Command IN EP */ + USBD_LL_OpenEP(pdev, CDC_CMD_EP, USBD_EP_TYPE_INTR, CDC_CMD_PACKET_SIZE); + 8006772: 2308 movs r3, #8 + 8006774: 2203 movs r2, #3 + 8006776: 2182 movs r1, #130 @ 0x82 + 8006778: 6878 ldr r0, [r7, #4] + 800677a: f001 fed8 bl 800852e + pdev->ep_in[CDC_CMD_EP & 0xFU].is_used = 1U; + 800677e: 687b ldr r3, [r7, #4] + 8006780: 2201 movs r2, #1 + 8006782: 641a str r2, [r3, #64] @ 0x40 + + pdev->pClassData = USBD_malloc(sizeof(USBD_CDC_HandleTypeDef)); + 8006784: f44f 7007 mov.w r0, #540 @ 0x21c + 8006788: f001 fff8 bl 800877c + 800678c: 4602 mov r2, r0 + 800678e: 687b ldr r3, [r7, #4] + 8006790: f8c3 22b8 str.w r2, [r3, #696] @ 0x2b8 + + if (pdev->pClassData == NULL) + 8006794: 687b ldr r3, [r7, #4] + 8006796: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 800679a: 2b00 cmp r3, #0 + 800679c: d102 bne.n 80067a4 + { + ret = 1U; + 800679e: 2301 movs r3, #1 + 80067a0: 73fb strb r3, [r7, #15] + 80067a2: e026 b.n 80067f2 + } + else + { + hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 80067a4: 687b ldr r3, [r7, #4] + 80067a6: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 80067aa: 60bb str r3, [r7, #8] + + /* Init physical Interface components */ + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Init(); + 80067ac: 687b ldr r3, [r7, #4] + 80067ae: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc + 80067b2: 681b ldr r3, [r3, #0] + 80067b4: 4798 blx r3 + + /* Init Xfer states */ + hcdc->TxState = 0U; + 80067b6: 68bb ldr r3, [r7, #8] + 80067b8: 2200 movs r2, #0 + 80067ba: f8c3 2214 str.w r2, [r3, #532] @ 0x214 + hcdc->RxState = 0U; + 80067be: 68bb ldr r3, [r7, #8] + 80067c0: 2200 movs r2, #0 + 80067c2: f8c3 2218 str.w r2, [r3, #536] @ 0x218 + + if (pdev->dev_speed == USBD_SPEED_HIGH) + 80067c6: 687b ldr r3, [r7, #4] + 80067c8: 7c1b ldrb r3, [r3, #16] + 80067ca: 2b00 cmp r3, #0 + 80067cc: d109 bne.n 80067e2 + { + /* Prepare Out endpoint to receive next packet */ + USBD_LL_PrepareReceive(pdev, CDC_OUT_EP, hcdc->RxBuffer, + 80067ce: 68bb ldr r3, [r7, #8] + 80067d0: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 + 80067d4: f44f 7300 mov.w r3, #512 @ 0x200 + 80067d8: 2101 movs r1, #1 + 80067da: 6878 ldr r0, [r7, #4] + 80067dc: f001 ff97 bl 800870e + 80067e0: e007 b.n 80067f2 + CDC_DATA_HS_OUT_PACKET_SIZE); + } + else + { + /* Prepare Out endpoint to receive next packet */ + USBD_LL_PrepareReceive(pdev, CDC_OUT_EP, hcdc->RxBuffer, + 80067e2: 68bb ldr r3, [r7, #8] + 80067e4: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 + 80067e8: 2340 movs r3, #64 @ 0x40 + 80067ea: 2101 movs r1, #1 + 80067ec: 6878 ldr r0, [r7, #4] + 80067ee: f001 ff8e bl 800870e + CDC_DATA_FS_OUT_PACKET_SIZE); + } + } + return ret; + 80067f2: 7bfb ldrb r3, [r7, #15] +} + 80067f4: 4618 mov r0, r3 + 80067f6: 3710 adds r7, #16 + 80067f8: 46bd mov sp, r7 + 80067fa: bd80 pop {r7, pc} + +080067fc : + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_CDC_DeInit(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + 80067fc: b580 push {r7, lr} + 80067fe: b084 sub sp, #16 + 8006800: af00 add r7, sp, #0 + 8006802: 6078 str r0, [r7, #4] + 8006804: 460b mov r3, r1 + 8006806: 70fb strb r3, [r7, #3] + uint8_t ret = 0U; + 8006808: 2300 movs r3, #0 + 800680a: 73fb strb r3, [r7, #15] + + /* Close EP IN */ + USBD_LL_CloseEP(pdev, CDC_IN_EP); + 800680c: 2181 movs r1, #129 @ 0x81 + 800680e: 6878 ldr r0, [r7, #4] + 8006810: f001 feb3 bl 800857a + pdev->ep_in[CDC_IN_EP & 0xFU].is_used = 0U; + 8006814: 687b ldr r3, [r7, #4] + 8006816: 2200 movs r2, #0 + 8006818: 62da str r2, [r3, #44] @ 0x2c + + /* Close EP OUT */ + USBD_LL_CloseEP(pdev, CDC_OUT_EP); + 800681a: 2101 movs r1, #1 + 800681c: 6878 ldr r0, [r7, #4] + 800681e: f001 feac bl 800857a + pdev->ep_out[CDC_OUT_EP & 0xFU].is_used = 0U; + 8006822: 687b ldr r3, [r7, #4] + 8006824: 2200 movs r2, #0 + 8006826: f8c3 216c str.w r2, [r3, #364] @ 0x16c + + /* Close Command IN EP */ + USBD_LL_CloseEP(pdev, CDC_CMD_EP); + 800682a: 2182 movs r1, #130 @ 0x82 + 800682c: 6878 ldr r0, [r7, #4] + 800682e: f001 fea4 bl 800857a + pdev->ep_in[CDC_CMD_EP & 0xFU].is_used = 0U; + 8006832: 687b ldr r3, [r7, #4] + 8006834: 2200 movs r2, #0 + 8006836: 641a str r2, [r3, #64] @ 0x40 + + /* DeInit physical Interface components */ + if (pdev->pClassData != NULL) + 8006838: 687b ldr r3, [r7, #4] + 800683a: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 800683e: 2b00 cmp r3, #0 + 8006840: d00e beq.n 8006860 + { + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->DeInit(); + 8006842: 687b ldr r3, [r7, #4] + 8006844: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc + 8006848: 685b ldr r3, [r3, #4] + 800684a: 4798 blx r3 + USBD_free(pdev->pClassData); + 800684c: 687b ldr r3, [r7, #4] + 800684e: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8006852: 4618 mov r0, r3 + 8006854: f001 ff9e bl 8008794 + pdev->pClassData = NULL; + 8006858: 687b ldr r3, [r7, #4] + 800685a: 2200 movs r2, #0 + 800685c: f8c3 22b8 str.w r2, [r3, #696] @ 0x2b8 + } + + return ret; + 8006860: 7bfb ldrb r3, [r7, #15] +} + 8006862: 4618 mov r0, r3 + 8006864: 3710 adds r7, #16 + 8006866: 46bd mov sp, r7 + 8006868: bd80 pop {r7, pc} + +0800686a : + * @param req: usb requests + * @retval status + */ +static uint8_t USBD_CDC_Setup(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 800686a: b580 push {r7, lr} + 800686c: b086 sub sp, #24 + 800686e: af00 add r7, sp, #0 + 8006870: 6078 str r0, [r7, #4] + 8006872: 6039 str r1, [r7, #0] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 8006874: 687b ldr r3, [r7, #4] + 8006876: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 800687a: 613b str r3, [r7, #16] + uint8_t ifalt = 0U; + 800687c: 2300 movs r3, #0 + 800687e: 73fb strb r3, [r7, #15] + uint16_t status_info = 0U; + 8006880: 2300 movs r3, #0 + 8006882: 81bb strh r3, [r7, #12] + uint8_t ret = USBD_OK; + 8006884: 2300 movs r3, #0 + 8006886: 75fb strb r3, [r7, #23] + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + 8006888: 683b ldr r3, [r7, #0] + 800688a: 781b ldrb r3, [r3, #0] + 800688c: f003 0360 and.w r3, r3, #96 @ 0x60 + 8006890: 2b00 cmp r3, #0 + 8006892: d039 beq.n 8006908 + 8006894: 2b20 cmp r3, #32 + 8006896: d17f bne.n 8006998 + { + case USB_REQ_TYPE_CLASS : + if (req->wLength) + 8006898: 683b ldr r3, [r7, #0] + 800689a: 88db ldrh r3, [r3, #6] + 800689c: 2b00 cmp r3, #0 + 800689e: d029 beq.n 80068f4 + { + if (req->bmRequest & 0x80U) + 80068a0: 683b ldr r3, [r7, #0] + 80068a2: 781b ldrb r3, [r3, #0] + 80068a4: b25b sxtb r3, r3 + 80068a6: 2b00 cmp r3, #0 + 80068a8: da11 bge.n 80068ce + { + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, + 80068aa: 687b ldr r3, [r7, #4] + 80068ac: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc + 80068b0: 689b ldr r3, [r3, #8] + 80068b2: 683a ldr r2, [r7, #0] + 80068b4: 7850 ldrb r0, [r2, #1] + (uint8_t *)(void *)hcdc->data, + 80068b6: 6939 ldr r1, [r7, #16] + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, + 80068b8: 683a ldr r2, [r7, #0] + 80068ba: 88d2 ldrh r2, [r2, #6] + 80068bc: 4798 blx r3 + req->wLength); + + USBD_CtlSendData(pdev, (uint8_t *)(void *)hcdc->data, req->wLength); + 80068be: 6939 ldr r1, [r7, #16] + 80068c0: 683b ldr r3, [r7, #0] + 80068c2: 88db ldrh r3, [r3, #6] + 80068c4: 461a mov r2, r3 + 80068c6: 6878 ldr r0, [r7, #4] + 80068c8: f001 fa06 bl 8007cd8 + else + { + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, + (uint8_t *)(void *)req, 0U); + } + break; + 80068cc: e06b b.n 80069a6 + hcdc->CmdOpCode = req->bRequest; + 80068ce: 683b ldr r3, [r7, #0] + 80068d0: 785a ldrb r2, [r3, #1] + 80068d2: 693b ldr r3, [r7, #16] + 80068d4: f883 2200 strb.w r2, [r3, #512] @ 0x200 + hcdc->CmdLength = (uint8_t)req->wLength; + 80068d8: 683b ldr r3, [r7, #0] + 80068da: 88db ldrh r3, [r3, #6] + 80068dc: b2da uxtb r2, r3 + 80068de: 693b ldr r3, [r7, #16] + 80068e0: f883 2201 strb.w r2, [r3, #513] @ 0x201 + USBD_CtlPrepareRx(pdev, (uint8_t *)(void *)hcdc->data, req->wLength); + 80068e4: 6939 ldr r1, [r7, #16] + 80068e6: 683b ldr r3, [r7, #0] + 80068e8: 88db ldrh r3, [r3, #6] + 80068ea: 461a mov r2, r3 + 80068ec: 6878 ldr r0, [r7, #4] + 80068ee: f001 fa21 bl 8007d34 + break; + 80068f2: e058 b.n 80069a6 + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest, + 80068f4: 687b ldr r3, [r7, #4] + 80068f6: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc + 80068fa: 689b ldr r3, [r3, #8] + 80068fc: 683a ldr r2, [r7, #0] + 80068fe: 7850 ldrb r0, [r2, #1] + 8006900: 2200 movs r2, #0 + 8006902: 6839 ldr r1, [r7, #0] + 8006904: 4798 blx r3 + break; + 8006906: e04e b.n 80069a6 + + case USB_REQ_TYPE_STANDARD: + switch (req->bRequest) + 8006908: 683b ldr r3, [r7, #0] + 800690a: 785b ldrb r3, [r3, #1] + 800690c: 2b0b cmp r3, #11 + 800690e: d02e beq.n 800696e + 8006910: 2b0b cmp r3, #11 + 8006912: dc38 bgt.n 8006986 + 8006914: 2b00 cmp r3, #0 + 8006916: d002 beq.n 800691e + 8006918: 2b0a cmp r3, #10 + 800691a: d014 beq.n 8006946 + 800691c: e033 b.n 8006986 + { + case USB_REQ_GET_STATUS: + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 800691e: 687b ldr r3, [r7, #4] + 8006920: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8006924: 2b03 cmp r3, #3 + 8006926: d107 bne.n 8006938 + { + USBD_CtlSendData(pdev, (uint8_t *)(void *)&status_info, 2U); + 8006928: f107 030c add.w r3, r7, #12 + 800692c: 2202 movs r2, #2 + 800692e: 4619 mov r1, r3 + 8006930: 6878 ldr r0, [r7, #4] + 8006932: f001 f9d1 bl 8007cd8 + else + { + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + } + break; + 8006936: e02e b.n 8006996 + USBD_CtlError(pdev, req); + 8006938: 6839 ldr r1, [r7, #0] + 800693a: 6878 ldr r0, [r7, #4] + 800693c: f001 f962 bl 8007c04 + ret = USBD_FAIL; + 8006940: 2302 movs r3, #2 + 8006942: 75fb strb r3, [r7, #23] + break; + 8006944: e027 b.n 8006996 + + case USB_REQ_GET_INTERFACE: + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 8006946: 687b ldr r3, [r7, #4] + 8006948: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 800694c: 2b03 cmp r3, #3 + 800694e: d107 bne.n 8006960 + { + USBD_CtlSendData(pdev, &ifalt, 1U); + 8006950: f107 030f add.w r3, r7, #15 + 8006954: 2201 movs r2, #1 + 8006956: 4619 mov r1, r3 + 8006958: 6878 ldr r0, [r7, #4] + 800695a: f001 f9bd bl 8007cd8 + else + { + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + } + break; + 800695e: e01a b.n 8006996 + USBD_CtlError(pdev, req); + 8006960: 6839 ldr r1, [r7, #0] + 8006962: 6878 ldr r0, [r7, #4] + 8006964: f001 f94e bl 8007c04 + ret = USBD_FAIL; + 8006968: 2302 movs r3, #2 + 800696a: 75fb strb r3, [r7, #23] + break; + 800696c: e013 b.n 8006996 + + case USB_REQ_SET_INTERFACE: + if (pdev->dev_state != USBD_STATE_CONFIGURED) + 800696e: 687b ldr r3, [r7, #4] + 8006970: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8006974: 2b03 cmp r3, #3 + 8006976: d00d beq.n 8006994 + { + USBD_CtlError(pdev, req); + 8006978: 6839 ldr r1, [r7, #0] + 800697a: 6878 ldr r0, [r7, #4] + 800697c: f001 f942 bl 8007c04 + ret = USBD_FAIL; + 8006980: 2302 movs r3, #2 + 8006982: 75fb strb r3, [r7, #23] + } + break; + 8006984: e006 b.n 8006994 + + default: + USBD_CtlError(pdev, req); + 8006986: 6839 ldr r1, [r7, #0] + 8006988: 6878 ldr r0, [r7, #4] + 800698a: f001 f93b bl 8007c04 + ret = USBD_FAIL; + 800698e: 2302 movs r3, #2 + 8006990: 75fb strb r3, [r7, #23] + break; + 8006992: e000 b.n 8006996 + break; + 8006994: bf00 nop + } + break; + 8006996: e006 b.n 80069a6 + + default: + USBD_CtlError(pdev, req); + 8006998: 6839 ldr r1, [r7, #0] + 800699a: 6878 ldr r0, [r7, #4] + 800699c: f001 f932 bl 8007c04 + ret = USBD_FAIL; + 80069a0: 2302 movs r3, #2 + 80069a2: 75fb strb r3, [r7, #23] + break; + 80069a4: bf00 nop + } + + return ret; + 80069a6: 7dfb ldrb r3, [r7, #23] +} + 80069a8: 4618 mov r0, r3 + 80069aa: 3718 adds r7, #24 + 80069ac: 46bd mov sp, r7 + 80069ae: bd80 pop {r7, pc} + +080069b0 : + * @param pdev: device instance + * @param epnum: endpoint number + * @retval status + */ +static uint8_t USBD_CDC_DataIn(USBD_HandleTypeDef *pdev, uint8_t epnum) +{ + 80069b0: b580 push {r7, lr} + 80069b2: b084 sub sp, #16 + 80069b4: af00 add r7, sp, #0 + 80069b6: 6078 str r0, [r7, #4] + 80069b8: 460b mov r3, r1 + 80069ba: 70fb strb r3, [r7, #3] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *)pdev->pClassData; + 80069bc: 687b ldr r3, [r7, #4] + 80069be: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 80069c2: 60fb str r3, [r7, #12] + PCD_HandleTypeDef *hpcd = pdev->pData; + 80069c4: 687b ldr r3, [r7, #4] + 80069c6: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 80069ca: 60bb str r3, [r7, #8] + + if (pdev->pClassData != NULL) + 80069cc: 687b ldr r3, [r7, #4] + 80069ce: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 80069d2: 2b00 cmp r3, #0 + 80069d4: d03a beq.n 8006a4c + { + if ((pdev->ep_in[epnum].total_length > 0U) && ((pdev->ep_in[epnum].total_length % hpcd->IN_ep[epnum].maxpacket) == 0U)) + 80069d6: 78fa ldrb r2, [r7, #3] + 80069d8: 6879 ldr r1, [r7, #4] + 80069da: 4613 mov r3, r2 + 80069dc: 009b lsls r3, r3, #2 + 80069de: 4413 add r3, r2 + 80069e0: 009b lsls r3, r3, #2 + 80069e2: 440b add r3, r1 + 80069e4: 331c adds r3, #28 + 80069e6: 681b ldr r3, [r3, #0] + 80069e8: 2b00 cmp r3, #0 + 80069ea: d029 beq.n 8006a40 + 80069ec: 78fa ldrb r2, [r7, #3] + 80069ee: 6879 ldr r1, [r7, #4] + 80069f0: 4613 mov r3, r2 + 80069f2: 009b lsls r3, r3, #2 + 80069f4: 4413 add r3, r2 + 80069f6: 009b lsls r3, r3, #2 + 80069f8: 440b add r3, r1 + 80069fa: 331c adds r3, #28 + 80069fc: 681a ldr r2, [r3, #0] + 80069fe: 78f9 ldrb r1, [r7, #3] + 8006a00: 68b8 ldr r0, [r7, #8] + 8006a02: 460b mov r3, r1 + 8006a04: 009b lsls r3, r3, #2 + 8006a06: 440b add r3, r1 + 8006a08: 00db lsls r3, r3, #3 + 8006a0a: 4403 add r3, r0 + 8006a0c: 3320 adds r3, #32 + 8006a0e: 681b ldr r3, [r3, #0] + 8006a10: fbb2 f1f3 udiv r1, r2, r3 + 8006a14: fb01 f303 mul.w r3, r1, r3 + 8006a18: 1ad3 subs r3, r2, r3 + 8006a1a: 2b00 cmp r3, #0 + 8006a1c: d110 bne.n 8006a40 + { + /* Update the packet total length */ + pdev->ep_in[epnum].total_length = 0U; + 8006a1e: 78fa ldrb r2, [r7, #3] + 8006a20: 6879 ldr r1, [r7, #4] + 8006a22: 4613 mov r3, r2 + 8006a24: 009b lsls r3, r3, #2 + 8006a26: 4413 add r3, r2 + 8006a28: 009b lsls r3, r3, #2 + 8006a2a: 440b add r3, r1 + 8006a2c: 331c adds r3, #28 + 8006a2e: 2200 movs r2, #0 + 8006a30: 601a str r2, [r3, #0] + + /* Send ZLP */ + USBD_LL_Transmit(pdev, epnum, NULL, 0U); + 8006a32: 78f9 ldrb r1, [r7, #3] + 8006a34: 2300 movs r3, #0 + 8006a36: 2200 movs r2, #0 + 8006a38: 6878 ldr r0, [r7, #4] + 8006a3a: f001 fe45 bl 80086c8 + 8006a3e: e003 b.n 8006a48 + } + else + { + hcdc->TxState = 0U; + 8006a40: 68fb ldr r3, [r7, #12] + 8006a42: 2200 movs r2, #0 + 8006a44: f8c3 2214 str.w r2, [r3, #532] @ 0x214 + } + return USBD_OK; + 8006a48: 2300 movs r3, #0 + 8006a4a: e000 b.n 8006a4e + } + else + { + return USBD_FAIL; + 8006a4c: 2302 movs r3, #2 + } +} + 8006a4e: 4618 mov r0, r3 + 8006a50: 3710 adds r7, #16 + 8006a52: 46bd mov sp, r7 + 8006a54: bd80 pop {r7, pc} + +08006a56 : + * @param pdev: device instance + * @param epnum: endpoint number + * @retval status + */ +static uint8_t USBD_CDC_DataOut(USBD_HandleTypeDef *pdev, uint8_t epnum) +{ + 8006a56: b580 push {r7, lr} + 8006a58: b084 sub sp, #16 + 8006a5a: af00 add r7, sp, #0 + 8006a5c: 6078 str r0, [r7, #4] + 8006a5e: 460b mov r3, r1 + 8006a60: 70fb strb r3, [r7, #3] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 8006a62: 687b ldr r3, [r7, #4] + 8006a64: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8006a68: 60fb str r3, [r7, #12] + + /* Get the received data length */ + hcdc->RxLength = USBD_LL_GetRxDataSize(pdev, epnum); + 8006a6a: 78fb ldrb r3, [r7, #3] + 8006a6c: 4619 mov r1, r3 + 8006a6e: 6878 ldr r0, [r7, #4] + 8006a70: f001 fe70 bl 8008754 + 8006a74: 4602 mov r2, r0 + 8006a76: 68fb ldr r3, [r7, #12] + 8006a78: f8c3 220c str.w r2, [r3, #524] @ 0x20c + + /* USB data will be immediately processed, this allow next USB traffic being + NAKed till the end of the application Xfer */ + if (pdev->pClassData != NULL) + 8006a7c: 687b ldr r3, [r7, #4] + 8006a7e: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8006a82: 2b00 cmp r3, #0 + 8006a84: d00d beq.n 8006aa2 + { + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Receive(hcdc->RxBuffer, &hcdc->RxLength); + 8006a86: 687b ldr r3, [r7, #4] + 8006a88: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc + 8006a8c: 68db ldr r3, [r3, #12] + 8006a8e: 68fa ldr r2, [r7, #12] + 8006a90: f8d2 0204 ldr.w r0, [r2, #516] @ 0x204 + 8006a94: 68fa ldr r2, [r7, #12] + 8006a96: f502 7203 add.w r2, r2, #524 @ 0x20c + 8006a9a: 4611 mov r1, r2 + 8006a9c: 4798 blx r3 + + return USBD_OK; + 8006a9e: 2300 movs r3, #0 + 8006aa0: e000 b.n 8006aa4 + } + else + { + return USBD_FAIL; + 8006aa2: 2302 movs r3, #2 + } +} + 8006aa4: 4618 mov r0, r3 + 8006aa6: 3710 adds r7, #16 + 8006aa8: 46bd mov sp, r7 + 8006aaa: bd80 pop {r7, pc} + +08006aac : + * Handle EP0 Rx Ready event + * @param pdev: device instance + * @retval status + */ +static uint8_t USBD_CDC_EP0_RxReady(USBD_HandleTypeDef *pdev) +{ + 8006aac: b580 push {r7, lr} + 8006aae: b084 sub sp, #16 + 8006ab0: af00 add r7, sp, #0 + 8006ab2: 6078 str r0, [r7, #4] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 8006ab4: 687b ldr r3, [r7, #4] + 8006ab6: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8006aba: 60fb str r3, [r7, #12] + + if ((pdev->pUserData != NULL) && (hcdc->CmdOpCode != 0xFFU)) + 8006abc: 687b ldr r3, [r7, #4] + 8006abe: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc + 8006ac2: 2b00 cmp r3, #0 + 8006ac4: d014 beq.n 8006af0 + 8006ac6: 68fb ldr r3, [r7, #12] + 8006ac8: f893 3200 ldrb.w r3, [r3, #512] @ 0x200 + 8006acc: 2bff cmp r3, #255 @ 0xff + 8006ace: d00f beq.n 8006af0 + { + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(hcdc->CmdOpCode, + 8006ad0: 687b ldr r3, [r7, #4] + 8006ad2: f8d3 32bc ldr.w r3, [r3, #700] @ 0x2bc + 8006ad6: 689b ldr r3, [r3, #8] + 8006ad8: 68fa ldr r2, [r7, #12] + 8006ada: f892 0200 ldrb.w r0, [r2, #512] @ 0x200 + (uint8_t *)(void *)hcdc->data, + 8006ade: 68f9 ldr r1, [r7, #12] + (uint16_t)hcdc->CmdLength); + 8006ae0: 68fa ldr r2, [r7, #12] + 8006ae2: f892 2201 ldrb.w r2, [r2, #513] @ 0x201 + ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(hcdc->CmdOpCode, + 8006ae6: 4798 blx r3 + hcdc->CmdOpCode = 0xFFU; + 8006ae8: 68fb ldr r3, [r7, #12] + 8006aea: 22ff movs r2, #255 @ 0xff + 8006aec: f883 2200 strb.w r2, [r3, #512] @ 0x200 + + } + return USBD_OK; + 8006af0: 2300 movs r3, #0 +} + 8006af2: 4618 mov r0, r3 + 8006af4: 3710 adds r7, #16 + 8006af6: 46bd mov sp, r7 + 8006af8: bd80 pop {r7, pc} + ... + +08006afc : + * @param speed : current device speed + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +static uint8_t *USBD_CDC_GetFSCfgDesc(uint16_t *length) +{ + 8006afc: b480 push {r7} + 8006afe: b083 sub sp, #12 + 8006b00: af00 add r7, sp, #0 + 8006b02: 6078 str r0, [r7, #4] + *length = sizeof(USBD_CDC_CfgFSDesc); + 8006b04: 687b ldr r3, [r7, #4] + 8006b06: 2243 movs r2, #67 @ 0x43 + 8006b08: 801a strh r2, [r3, #0] + return USBD_CDC_CfgFSDesc; + 8006b0a: 4b03 ldr r3, [pc, #12] @ (8006b18 ) +} + 8006b0c: 4618 mov r0, r3 + 8006b0e: 370c adds r7, #12 + 8006b10: 46bd mov sp, r7 + 8006b12: bc80 pop {r7} + 8006b14: 4770 bx lr + 8006b16: bf00 nop + 8006b18: 20000094 .word 0x20000094 + +08006b1c : + * @param speed : current device speed + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +static uint8_t *USBD_CDC_GetHSCfgDesc(uint16_t *length) +{ + 8006b1c: b480 push {r7} + 8006b1e: b083 sub sp, #12 + 8006b20: af00 add r7, sp, #0 + 8006b22: 6078 str r0, [r7, #4] + *length = sizeof(USBD_CDC_CfgHSDesc); + 8006b24: 687b ldr r3, [r7, #4] + 8006b26: 2243 movs r2, #67 @ 0x43 + 8006b28: 801a strh r2, [r3, #0] + return USBD_CDC_CfgHSDesc; + 8006b2a: 4b03 ldr r3, [pc, #12] @ (8006b38 ) +} + 8006b2c: 4618 mov r0, r3 + 8006b2e: 370c adds r7, #12 + 8006b30: 46bd mov sp, r7 + 8006b32: bc80 pop {r7} + 8006b34: 4770 bx lr + 8006b36: bf00 nop + 8006b38: 20000050 .word 0x20000050 + +08006b3c : + * @param speed : current device speed + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +static uint8_t *USBD_CDC_GetOtherSpeedCfgDesc(uint16_t *length) +{ + 8006b3c: b480 push {r7} + 8006b3e: b083 sub sp, #12 + 8006b40: af00 add r7, sp, #0 + 8006b42: 6078 str r0, [r7, #4] + *length = sizeof(USBD_CDC_OtherSpeedCfgDesc); + 8006b44: 687b ldr r3, [r7, #4] + 8006b46: 2243 movs r2, #67 @ 0x43 + 8006b48: 801a strh r2, [r3, #0] + return USBD_CDC_OtherSpeedCfgDesc; + 8006b4a: 4b03 ldr r3, [pc, #12] @ (8006b58 ) +} + 8006b4c: 4618 mov r0, r3 + 8006b4e: 370c adds r7, #12 + 8006b50: 46bd mov sp, r7 + 8006b52: bc80 pop {r7} + 8006b54: 4770 bx lr + 8006b56: bf00 nop + 8006b58: 200000d8 .word 0x200000d8 + +08006b5c : +* return Device Qualifier descriptor +* @param length : pointer data length +* @retval pointer to descriptor buffer +*/ +uint8_t *USBD_CDC_GetDeviceQualifierDescriptor(uint16_t *length) +{ + 8006b5c: b480 push {r7} + 8006b5e: b083 sub sp, #12 + 8006b60: af00 add r7, sp, #0 + 8006b62: 6078 str r0, [r7, #4] + *length = sizeof(USBD_CDC_DeviceQualifierDesc); + 8006b64: 687b ldr r3, [r7, #4] + 8006b66: 220a movs r2, #10 + 8006b68: 801a strh r2, [r3, #0] + return USBD_CDC_DeviceQualifierDesc; + 8006b6a: 4b03 ldr r3, [pc, #12] @ (8006b78 ) +} + 8006b6c: 4618 mov r0, r3 + 8006b6e: 370c adds r7, #12 + 8006b70: 46bd mov sp, r7 + 8006b72: bc80 pop {r7} + 8006b74: 4770 bx lr + 8006b76: bf00 nop + 8006b78: 2000000c .word 0x2000000c + +08006b7c : + * @param fops: CD Interface callback + * @retval status + */ +uint8_t USBD_CDC_RegisterInterface(USBD_HandleTypeDef *pdev, + USBD_CDC_ItfTypeDef *fops) +{ + 8006b7c: b480 push {r7} + 8006b7e: b085 sub sp, #20 + 8006b80: af00 add r7, sp, #0 + 8006b82: 6078 str r0, [r7, #4] + 8006b84: 6039 str r1, [r7, #0] + uint8_t ret = USBD_FAIL; + 8006b86: 2302 movs r3, #2 + 8006b88: 73fb strb r3, [r7, #15] + + if (fops != NULL) + 8006b8a: 683b ldr r3, [r7, #0] + 8006b8c: 2b00 cmp r3, #0 + 8006b8e: d005 beq.n 8006b9c + { + pdev->pUserData = fops; + 8006b90: 687b ldr r3, [r7, #4] + 8006b92: 683a ldr r2, [r7, #0] + 8006b94: f8c3 22bc str.w r2, [r3, #700] @ 0x2bc + ret = USBD_OK; + 8006b98: 2300 movs r3, #0 + 8006b9a: 73fb strb r3, [r7, #15] + } + + return ret; + 8006b9c: 7bfb ldrb r3, [r7, #15] +} + 8006b9e: 4618 mov r0, r3 + 8006ba0: 3714 adds r7, #20 + 8006ba2: 46bd mov sp, r7 + 8006ba4: bc80 pop {r7} + 8006ba6: 4770 bx lr + +08006ba8 : + * @retval status + */ +uint8_t USBD_CDC_SetTxBuffer(USBD_HandleTypeDef *pdev, + uint8_t *pbuff, + uint16_t length) +{ + 8006ba8: b480 push {r7} + 8006baa: b087 sub sp, #28 + 8006bac: af00 add r7, sp, #0 + 8006bae: 60f8 str r0, [r7, #12] + 8006bb0: 60b9 str r1, [r7, #8] + 8006bb2: 4613 mov r3, r2 + 8006bb4: 80fb strh r3, [r7, #6] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 8006bb6: 68fb ldr r3, [r7, #12] + 8006bb8: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8006bbc: 617b str r3, [r7, #20] + + hcdc->TxBuffer = pbuff; + 8006bbe: 697b ldr r3, [r7, #20] + 8006bc0: 68ba ldr r2, [r7, #8] + 8006bc2: f8c3 2208 str.w r2, [r3, #520] @ 0x208 + hcdc->TxLength = length; + 8006bc6: 88fa ldrh r2, [r7, #6] + 8006bc8: 697b ldr r3, [r7, #20] + 8006bca: f8c3 2210 str.w r2, [r3, #528] @ 0x210 + + return USBD_OK; + 8006bce: 2300 movs r3, #0 +} + 8006bd0: 4618 mov r0, r3 + 8006bd2: 371c adds r7, #28 + 8006bd4: 46bd mov sp, r7 + 8006bd6: bc80 pop {r7} + 8006bd8: 4770 bx lr + +08006bda : + * @param pbuff: Rx Buffer + * @retval status + */ +uint8_t USBD_CDC_SetRxBuffer(USBD_HandleTypeDef *pdev, + uint8_t *pbuff) +{ + 8006bda: b480 push {r7} + 8006bdc: b085 sub sp, #20 + 8006bde: af00 add r7, sp, #0 + 8006be0: 6078 str r0, [r7, #4] + 8006be2: 6039 str r1, [r7, #0] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 8006be4: 687b ldr r3, [r7, #4] + 8006be6: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8006bea: 60fb str r3, [r7, #12] + + hcdc->RxBuffer = pbuff; + 8006bec: 68fb ldr r3, [r7, #12] + 8006bee: 683a ldr r2, [r7, #0] + 8006bf0: f8c3 2204 str.w r2, [r3, #516] @ 0x204 + + return USBD_OK; + 8006bf4: 2300 movs r3, #0 +} + 8006bf6: 4618 mov r0, r3 + 8006bf8: 3714 adds r7, #20 + 8006bfa: 46bd mov sp, r7 + 8006bfc: bc80 pop {r7} + 8006bfe: 4770 bx lr + +08006c00 : + * Transmit packet on IN endpoint + * @param pdev: device instance + * @retval status + */ +uint8_t USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev) +{ + 8006c00: b580 push {r7, lr} + 8006c02: b084 sub sp, #16 + 8006c04: af00 add r7, sp, #0 + 8006c06: 6078 str r0, [r7, #4] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 8006c08: 687b ldr r3, [r7, #4] + 8006c0a: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8006c0e: 60fb str r3, [r7, #12] + + if (pdev->pClassData != NULL) + 8006c10: 687b ldr r3, [r7, #4] + 8006c12: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8006c16: 2b00 cmp r3, #0 + 8006c18: d01c beq.n 8006c54 + { + if (hcdc->TxState == 0U) + 8006c1a: 68fb ldr r3, [r7, #12] + 8006c1c: f8d3 3214 ldr.w r3, [r3, #532] @ 0x214 + 8006c20: 2b00 cmp r3, #0 + 8006c22: d115 bne.n 8006c50 + { + /* Tx Transfer in progress */ + hcdc->TxState = 1U; + 8006c24: 68fb ldr r3, [r7, #12] + 8006c26: 2201 movs r2, #1 + 8006c28: f8c3 2214 str.w r2, [r3, #532] @ 0x214 + + /* Update the packet total length */ + pdev->ep_in[CDC_IN_EP & 0xFU].total_length = hcdc->TxLength; + 8006c2c: 68fb ldr r3, [r7, #12] + 8006c2e: f8d3 2210 ldr.w r2, [r3, #528] @ 0x210 + 8006c32: 687b ldr r3, [r7, #4] + 8006c34: 631a str r2, [r3, #48] @ 0x30 + + /* Transmit next packet */ + USBD_LL_Transmit(pdev, CDC_IN_EP, hcdc->TxBuffer, + 8006c36: 68fb ldr r3, [r7, #12] + 8006c38: f8d3 2208 ldr.w r2, [r3, #520] @ 0x208 + (uint16_t)hcdc->TxLength); + 8006c3c: 68fb ldr r3, [r7, #12] + 8006c3e: f8d3 3210 ldr.w r3, [r3, #528] @ 0x210 + USBD_LL_Transmit(pdev, CDC_IN_EP, hcdc->TxBuffer, + 8006c42: b29b uxth r3, r3 + 8006c44: 2181 movs r1, #129 @ 0x81 + 8006c46: 6878 ldr r0, [r7, #4] + 8006c48: f001 fd3e bl 80086c8 + + return USBD_OK; + 8006c4c: 2300 movs r3, #0 + 8006c4e: e002 b.n 8006c56 + } + else + { + return USBD_BUSY; + 8006c50: 2301 movs r3, #1 + 8006c52: e000 b.n 8006c56 + } + } + else + { + return USBD_FAIL; + 8006c54: 2302 movs r3, #2 + } +} + 8006c56: 4618 mov r0, r3 + 8006c58: 3710 adds r7, #16 + 8006c5a: 46bd mov sp, r7 + 8006c5c: bd80 pop {r7, pc} + +08006c5e : + * prepare OUT Endpoint for reception + * @param pdev: device instance + * @retval status + */ +uint8_t USBD_CDC_ReceivePacket(USBD_HandleTypeDef *pdev) +{ + 8006c5e: b580 push {r7, lr} + 8006c60: b084 sub sp, #16 + 8006c62: af00 add r7, sp, #0 + 8006c64: 6078 str r0, [r7, #4] + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *) pdev->pClassData; + 8006c66: 687b ldr r3, [r7, #4] + 8006c68: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8006c6c: 60fb str r3, [r7, #12] + + /* Suspend or Resume USB Out process */ + if (pdev->pClassData != NULL) + 8006c6e: 687b ldr r3, [r7, #4] + 8006c70: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 8006c74: 2b00 cmp r3, #0 + 8006c76: d017 beq.n 8006ca8 + { + if (pdev->dev_speed == USBD_SPEED_HIGH) + 8006c78: 687b ldr r3, [r7, #4] + 8006c7a: 7c1b ldrb r3, [r3, #16] + 8006c7c: 2b00 cmp r3, #0 + 8006c7e: d109 bne.n 8006c94 + { + /* Prepare Out endpoint to receive next packet */ + USBD_LL_PrepareReceive(pdev, + 8006c80: 68fb ldr r3, [r7, #12] + 8006c82: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 + 8006c86: f44f 7300 mov.w r3, #512 @ 0x200 + 8006c8a: 2101 movs r1, #1 + 8006c8c: 6878 ldr r0, [r7, #4] + 8006c8e: f001 fd3e bl 800870e + 8006c92: e007 b.n 8006ca4 + CDC_DATA_HS_OUT_PACKET_SIZE); + } + else + { + /* Prepare Out endpoint to receive next packet */ + USBD_LL_PrepareReceive(pdev, + 8006c94: 68fb ldr r3, [r7, #12] + 8006c96: f8d3 2204 ldr.w r2, [r3, #516] @ 0x204 + 8006c9a: 2340 movs r3, #64 @ 0x40 + 8006c9c: 2101 movs r1, #1 + 8006c9e: 6878 ldr r0, [r7, #4] + 8006ca0: f001 fd35 bl 800870e + CDC_OUT_EP, + hcdc->RxBuffer, + CDC_DATA_FS_OUT_PACKET_SIZE); + } + return USBD_OK; + 8006ca4: 2300 movs r3, #0 + 8006ca6: e000 b.n 8006caa + } + else + { + return USBD_FAIL; + 8006ca8: 2302 movs r3, #2 + } +} + 8006caa: 4618 mov r0, r3 + 8006cac: 3710 adds r7, #16 + 8006cae: 46bd mov sp, r7 + 8006cb0: bd80 pop {r7, pc} + +08006cb2 : +* @param id: Low level core index +* @retval None +*/ +USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, + USBD_DescriptorsTypeDef *pdesc, uint8_t id) +{ + 8006cb2: b580 push {r7, lr} + 8006cb4: b084 sub sp, #16 + 8006cb6: af00 add r7, sp, #0 + 8006cb8: 60f8 str r0, [r7, #12] + 8006cba: 60b9 str r1, [r7, #8] + 8006cbc: 4613 mov r3, r2 + 8006cbe: 71fb strb r3, [r7, #7] + /* Check whether the USB Host handle is valid */ + if (pdev == NULL) + 8006cc0: 68fb ldr r3, [r7, #12] + 8006cc2: 2b00 cmp r3, #0 + 8006cc4: d101 bne.n 8006cca + { +#if (USBD_DEBUG_LEVEL > 1U) + USBD_ErrLog("Invalid Device handle"); +#endif + return USBD_FAIL; + 8006cc6: 2302 movs r3, #2 + 8006cc8: e01a b.n 8006d00 + } + + /* Unlink previous class*/ + if (pdev->pClass != NULL) + 8006cca: 68fb ldr r3, [r7, #12] + 8006ccc: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8006cd0: 2b00 cmp r3, #0 + 8006cd2: d003 beq.n 8006cdc + { + pdev->pClass = NULL; + 8006cd4: 68fb ldr r3, [r7, #12] + 8006cd6: 2200 movs r2, #0 + 8006cd8: f8c3 22b4 str.w r2, [r3, #692] @ 0x2b4 + } + + /* Assign USBD Descriptors */ + if (pdesc != NULL) + 8006cdc: 68bb ldr r3, [r7, #8] + 8006cde: 2b00 cmp r3, #0 + 8006ce0: d003 beq.n 8006cea + { + pdev->pDesc = pdesc; + 8006ce2: 68fb ldr r3, [r7, #12] + 8006ce4: 68ba ldr r2, [r7, #8] + 8006ce6: f8c3 22b0 str.w r2, [r3, #688] @ 0x2b0 + } + + /* Set Device initial State */ + pdev->dev_state = USBD_STATE_DEFAULT; + 8006cea: 68fb ldr r3, [r7, #12] + 8006cec: 2201 movs r2, #1 + 8006cee: f883 229c strb.w r2, [r3, #668] @ 0x29c + pdev->id = id; + 8006cf2: 68fb ldr r3, [r7, #12] + 8006cf4: 79fa ldrb r2, [r7, #7] + 8006cf6: 701a strb r2, [r3, #0] + /* Initialize low level driver */ + USBD_LL_Init(pdev); + 8006cf8: 68f8 ldr r0, [r7, #12] + 8006cfa: f001 fba3 bl 8008444 + + return USBD_OK; + 8006cfe: 2300 movs r3, #0 +} + 8006d00: 4618 mov r0, r3 + 8006d02: 3710 adds r7, #16 + 8006d04: 46bd mov sp, r7 + 8006d06: bd80 pop {r7, pc} + +08006d08 : + * @param pDevice : Device Handle + * @param pclass: Class handle + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass) +{ + 8006d08: b480 push {r7} + 8006d0a: b085 sub sp, #20 + 8006d0c: af00 add r7, sp, #0 + 8006d0e: 6078 str r0, [r7, #4] + 8006d10: 6039 str r1, [r7, #0] + USBD_StatusTypeDef status = USBD_OK; + 8006d12: 2300 movs r3, #0 + 8006d14: 73fb strb r3, [r7, #15] + if (pclass != NULL) + 8006d16: 683b ldr r3, [r7, #0] + 8006d18: 2b00 cmp r3, #0 + 8006d1a: d006 beq.n 8006d2a + { + /* link the class to the USB Device handle */ + pdev->pClass = pclass; + 8006d1c: 687b ldr r3, [r7, #4] + 8006d1e: 683a ldr r2, [r7, #0] + 8006d20: f8c3 22b4 str.w r2, [r3, #692] @ 0x2b4 + status = USBD_OK; + 8006d24: 2300 movs r3, #0 + 8006d26: 73fb strb r3, [r7, #15] + 8006d28: e001 b.n 8006d2e + else + { +#if (USBD_DEBUG_LEVEL > 1U) + USBD_ErrLog("Invalid Class handle"); +#endif + status = USBD_FAIL; + 8006d2a: 2302 movs r3, #2 + 8006d2c: 73fb strb r3, [r7, #15] + } + + return status; + 8006d2e: 7bfb ldrb r3, [r7, #15] +} + 8006d30: 4618 mov r0, r3 + 8006d32: 3714 adds r7, #20 + 8006d34: 46bd mov sp, r7 + 8006d36: bc80 pop {r7} + 8006d38: 4770 bx lr + +08006d3a : + * Start the USB Device Core. + * @param pdev: Device Handle + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev) +{ + 8006d3a: b580 push {r7, lr} + 8006d3c: b082 sub sp, #8 + 8006d3e: af00 add r7, sp, #0 + 8006d40: 6078 str r0, [r7, #4] + /* Start the low level driver */ + USBD_LL_Start(pdev); + 8006d42: 6878 ldr r0, [r7, #4] + 8006d44: f001 fbd8 bl 80084f8 + + return USBD_OK; + 8006d48: 2300 movs r3, #0 +} + 8006d4a: 4618 mov r0, r3 + 8006d4c: 3708 adds r7, #8 + 8006d4e: 46bd mov sp, r7 + 8006d50: bd80 pop {r7, pc} + +08006d52 : +* Launch test mode process +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev) +{ + 8006d52: b480 push {r7} + 8006d54: b083 sub sp, #12 + 8006d56: af00 add r7, sp, #0 + 8006d58: 6078 str r0, [r7, #4] + /* Prevent unused argument compilation warning */ + UNUSED(pdev); + + return USBD_OK; + 8006d5a: 2300 movs r3, #0 +} + 8006d5c: 4618 mov r0, r3 + 8006d5e: 370c adds r7, #12 + 8006d60: 46bd mov sp, r7 + 8006d62: bc80 pop {r7} + 8006d64: 4770 bx lr + +08006d66 : +* @param cfgidx: configuration index +* @retval status +*/ + +USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + 8006d66: b580 push {r7, lr} + 8006d68: b084 sub sp, #16 + 8006d6a: af00 add r7, sp, #0 + 8006d6c: 6078 str r0, [r7, #4] + 8006d6e: 460b mov r3, r1 + 8006d70: 70fb strb r3, [r7, #3] + USBD_StatusTypeDef ret = USBD_FAIL; + 8006d72: 2302 movs r3, #2 + 8006d74: 73fb strb r3, [r7, #15] + + if (pdev->pClass != NULL) + 8006d76: 687b ldr r3, [r7, #4] + 8006d78: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8006d7c: 2b00 cmp r3, #0 + 8006d7e: d00c beq.n 8006d9a + { + /* Set configuration and Start the Class*/ + if (pdev->pClass->Init(pdev, cfgidx) == 0U) + 8006d80: 687b ldr r3, [r7, #4] + 8006d82: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8006d86: 681b ldr r3, [r3, #0] + 8006d88: 78fa ldrb r2, [r7, #3] + 8006d8a: 4611 mov r1, r2 + 8006d8c: 6878 ldr r0, [r7, #4] + 8006d8e: 4798 blx r3 + 8006d90: 4603 mov r3, r0 + 8006d92: 2b00 cmp r3, #0 + 8006d94: d101 bne.n 8006d9a + { + ret = USBD_OK; + 8006d96: 2300 movs r3, #0 + 8006d98: 73fb strb r3, [r7, #15] + } + } + + return ret; + 8006d9a: 7bfb ldrb r3, [r7, #15] +} + 8006d9c: 4618 mov r0, r3 + 8006d9e: 3710 adds r7, #16 + 8006da0: 46bd mov sp, r7 + 8006da2: bd80 pop {r7, pc} + +08006da4 : +* @param pdev: device instance +* @param cfgidx: configuration index +* @retval status: USBD_StatusTypeDef +*/ +USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + 8006da4: b580 push {r7, lr} + 8006da6: b082 sub sp, #8 + 8006da8: af00 add r7, sp, #0 + 8006daa: 6078 str r0, [r7, #4] + 8006dac: 460b mov r3, r1 + 8006dae: 70fb strb r3, [r7, #3] + /* Clear configuration and De-initialize the Class process*/ + pdev->pClass->DeInit(pdev, cfgidx); + 8006db0: 687b ldr r3, [r7, #4] + 8006db2: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8006db6: 685b ldr r3, [r3, #4] + 8006db8: 78fa ldrb r2, [r7, #3] + 8006dba: 4611 mov r1, r2 + 8006dbc: 6878 ldr r0, [r7, #4] + 8006dbe: 4798 blx r3 + + return USBD_OK; + 8006dc0: 2300 movs r3, #0 +} + 8006dc2: 4618 mov r0, r3 + 8006dc4: 3708 adds r7, #8 + 8006dc6: 46bd mov sp, r7 + 8006dc8: bd80 pop {r7, pc} + +08006dca : +* Handle the setup stage +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup) +{ + 8006dca: b580 push {r7, lr} + 8006dcc: b082 sub sp, #8 + 8006dce: af00 add r7, sp, #0 + 8006dd0: 6078 str r0, [r7, #4] + 8006dd2: 6039 str r1, [r7, #0] + USBD_ParseSetupRequest(&pdev->request, psetup); + 8006dd4: 687b ldr r3, [r7, #4] + 8006dd6: f503 732a add.w r3, r3, #680 @ 0x2a8 + 8006dda: 6839 ldr r1, [r7, #0] + 8006ddc: 4618 mov r0, r3 + 8006dde: f000 fed8 bl 8007b92 + + pdev->ep0_state = USBD_EP0_SETUP; + 8006de2: 687b ldr r3, [r7, #4] + 8006de4: 2201 movs r2, #1 + 8006de6: f8c3 2294 str.w r2, [r3, #660] @ 0x294 + + pdev->ep0_data_len = pdev->request.wLength; + 8006dea: 687b ldr r3, [r7, #4] + 8006dec: f8b3 32ae ldrh.w r3, [r3, #686] @ 0x2ae + 8006df0: 461a mov r2, r3 + 8006df2: 687b ldr r3, [r7, #4] + 8006df4: f8c3 2298 str.w r2, [r3, #664] @ 0x298 + + switch (pdev->request.bmRequest & 0x1FU) + 8006df8: 687b ldr r3, [r7, #4] + 8006dfa: f893 32a8 ldrb.w r3, [r3, #680] @ 0x2a8 + 8006dfe: f003 031f and.w r3, r3, #31 + 8006e02: 2b02 cmp r3, #2 + 8006e04: d016 beq.n 8006e34 + 8006e06: 2b02 cmp r3, #2 + 8006e08: d81c bhi.n 8006e44 + 8006e0a: 2b00 cmp r3, #0 + 8006e0c: d002 beq.n 8006e14 + 8006e0e: 2b01 cmp r3, #1 + 8006e10: d008 beq.n 8006e24 + 8006e12: e017 b.n 8006e44 + { + case USB_REQ_RECIPIENT_DEVICE: + USBD_StdDevReq(pdev, &pdev->request); + 8006e14: 687b ldr r3, [r7, #4] + 8006e16: f503 732a add.w r3, r3, #680 @ 0x2a8 + 8006e1a: 4619 mov r1, r3 + 8006e1c: 6878 ldr r0, [r7, #4] + 8006e1e: f000 f9cb bl 80071b8 + break; + 8006e22: e01a b.n 8006e5a + + case USB_REQ_RECIPIENT_INTERFACE: + USBD_StdItfReq(pdev, &pdev->request); + 8006e24: 687b ldr r3, [r7, #4] + 8006e26: f503 732a add.w r3, r3, #680 @ 0x2a8 + 8006e2a: 4619 mov r1, r3 + 8006e2c: 6878 ldr r0, [r7, #4] + 8006e2e: f000 fa2d bl 800728c + break; + 8006e32: e012 b.n 8006e5a + + case USB_REQ_RECIPIENT_ENDPOINT: + USBD_StdEPReq(pdev, &pdev->request); + 8006e34: 687b ldr r3, [r7, #4] + 8006e36: f503 732a add.w r3, r3, #680 @ 0x2a8 + 8006e3a: 4619 mov r1, r3 + 8006e3c: 6878 ldr r0, [r7, #4] + 8006e3e: f000 fa6d bl 800731c + break; + 8006e42: e00a b.n 8006e5a + + default: + USBD_LL_StallEP(pdev, (pdev->request.bmRequest & 0x80U)); + 8006e44: 687b ldr r3, [r7, #4] + 8006e46: f893 32a8 ldrb.w r3, [r3, #680] @ 0x2a8 + 8006e4a: f023 037f bic.w r3, r3, #127 @ 0x7f + 8006e4e: b2db uxtb r3, r3 + 8006e50: 4619 mov r1, r3 + 8006e52: 6878 ldr r0, [r7, #4] + 8006e54: f001 fbb0 bl 80085b8 + break; + 8006e58: bf00 nop + } + + return USBD_OK; + 8006e5a: 2300 movs r3, #0 +} + 8006e5c: 4618 mov r0, r3 + 8006e5e: 3708 adds r7, #8 + 8006e60: 46bd mov sp, r7 + 8006e62: bd80 pop {r7, pc} + +08006e64 : +* @param epnum: endpoint index +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, + uint8_t epnum, uint8_t *pdata) +{ + 8006e64: b580 push {r7, lr} + 8006e66: b086 sub sp, #24 + 8006e68: af00 add r7, sp, #0 + 8006e6a: 60f8 str r0, [r7, #12] + 8006e6c: 460b mov r3, r1 + 8006e6e: 607a str r2, [r7, #4] + 8006e70: 72fb strb r3, [r7, #11] + USBD_EndpointTypeDef *pep; + + if (epnum == 0U) + 8006e72: 7afb ldrb r3, [r7, #11] + 8006e74: 2b00 cmp r3, #0 + 8006e76: d14b bne.n 8006f10 + { + pep = &pdev->ep_out[0]; + 8006e78: 68fb ldr r3, [r7, #12] + 8006e7a: f503 73aa add.w r3, r3, #340 @ 0x154 + 8006e7e: 617b str r3, [r7, #20] + + if (pdev->ep0_state == USBD_EP0_DATA_OUT) + 8006e80: 68fb ldr r3, [r7, #12] + 8006e82: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 + 8006e86: 2b03 cmp r3, #3 + 8006e88: d134 bne.n 8006ef4 + { + if (pep->rem_length > pep->maxpacket) + 8006e8a: 697b ldr r3, [r7, #20] + 8006e8c: 68da ldr r2, [r3, #12] + 8006e8e: 697b ldr r3, [r7, #20] + 8006e90: 691b ldr r3, [r3, #16] + 8006e92: 429a cmp r2, r3 + 8006e94: d919 bls.n 8006eca + { + pep->rem_length -= pep->maxpacket; + 8006e96: 697b ldr r3, [r7, #20] + 8006e98: 68da ldr r2, [r3, #12] + 8006e9a: 697b ldr r3, [r7, #20] + 8006e9c: 691b ldr r3, [r3, #16] + 8006e9e: 1ad2 subs r2, r2, r3 + 8006ea0: 697b ldr r3, [r7, #20] + 8006ea2: 60da str r2, [r3, #12] + + USBD_CtlContinueRx(pdev, pdata, + (uint16_t)MIN(pep->rem_length, pep->maxpacket)); + 8006ea4: 697b ldr r3, [r7, #20] + 8006ea6: 68da ldr r2, [r3, #12] + 8006ea8: 697b ldr r3, [r7, #20] + 8006eaa: 691b ldr r3, [r3, #16] + USBD_CtlContinueRx(pdev, pdata, + 8006eac: 429a cmp r2, r3 + 8006eae: d203 bcs.n 8006eb8 + (uint16_t)MIN(pep->rem_length, pep->maxpacket)); + 8006eb0: 697b ldr r3, [r7, #20] + 8006eb2: 68db ldr r3, [r3, #12] + USBD_CtlContinueRx(pdev, pdata, + 8006eb4: b29b uxth r3, r3 + 8006eb6: e002 b.n 8006ebe + (uint16_t)MIN(pep->rem_length, pep->maxpacket)); + 8006eb8: 697b ldr r3, [r7, #20] + 8006eba: 691b ldr r3, [r3, #16] + USBD_CtlContinueRx(pdev, pdata, + 8006ebc: b29b uxth r3, r3 + 8006ebe: 461a mov r2, r3 + 8006ec0: 6879 ldr r1, [r7, #4] + 8006ec2: 68f8 ldr r0, [r7, #12] + 8006ec4: f000 ff54 bl 8007d70 + 8006ec8: e038 b.n 8006f3c + } + else + { + if ((pdev->pClass->EP0_RxReady != NULL) && + 8006eca: 68fb ldr r3, [r7, #12] + 8006ecc: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8006ed0: 691b ldr r3, [r3, #16] + 8006ed2: 2b00 cmp r3, #0 + 8006ed4: d00a beq.n 8006eec + (pdev->dev_state == USBD_STATE_CONFIGURED)) + 8006ed6: 68fb ldr r3, [r7, #12] + 8006ed8: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + if ((pdev->pClass->EP0_RxReady != NULL) && + 8006edc: 2b03 cmp r3, #3 + 8006ede: d105 bne.n 8006eec + { + pdev->pClass->EP0_RxReady(pdev); + 8006ee0: 68fb ldr r3, [r7, #12] + 8006ee2: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8006ee6: 691b ldr r3, [r3, #16] + 8006ee8: 68f8 ldr r0, [r7, #12] + 8006eea: 4798 blx r3 + } + USBD_CtlSendStatus(pdev); + 8006eec: 68f8 ldr r0, [r7, #12] + 8006eee: f000 ff51 bl 8007d94 + 8006ef2: e023 b.n 8006f3c + } + } + else + { + if (pdev->ep0_state == USBD_EP0_STATUS_OUT) + 8006ef4: 68fb ldr r3, [r7, #12] + 8006ef6: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 + 8006efa: 2b05 cmp r3, #5 + 8006efc: d11e bne.n 8006f3c + { + /* + * STATUS PHASE completed, update ep0_state to idle + */ + pdev->ep0_state = USBD_EP0_IDLE; + 8006efe: 68fb ldr r3, [r7, #12] + 8006f00: 2200 movs r2, #0 + 8006f02: f8c3 2294 str.w r2, [r3, #660] @ 0x294 + USBD_LL_StallEP(pdev, 0U); + 8006f06: 2100 movs r1, #0 + 8006f08: 68f8 ldr r0, [r7, #12] + 8006f0a: f001 fb55 bl 80085b8 + 8006f0e: e015 b.n 8006f3c + } + } + } + else if ((pdev->pClass->DataOut != NULL) && + 8006f10: 68fb ldr r3, [r7, #12] + 8006f12: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8006f16: 699b ldr r3, [r3, #24] + 8006f18: 2b00 cmp r3, #0 + 8006f1a: d00d beq.n 8006f38 + (pdev->dev_state == USBD_STATE_CONFIGURED)) + 8006f1c: 68fb ldr r3, [r7, #12] + 8006f1e: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + else if ((pdev->pClass->DataOut != NULL) && + 8006f22: 2b03 cmp r3, #3 + 8006f24: d108 bne.n 8006f38 + { + pdev->pClass->DataOut(pdev, epnum); + 8006f26: 68fb ldr r3, [r7, #12] + 8006f28: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8006f2c: 699b ldr r3, [r3, #24] + 8006f2e: 7afa ldrb r2, [r7, #11] + 8006f30: 4611 mov r1, r2 + 8006f32: 68f8 ldr r0, [r7, #12] + 8006f34: 4798 blx r3 + 8006f36: e001 b.n 8006f3c + } + else + { + /* should never be in this condition */ + return USBD_FAIL; + 8006f38: 2302 movs r3, #2 + 8006f3a: e000 b.n 8006f3e + } + + return USBD_OK; + 8006f3c: 2300 movs r3, #0 +} + 8006f3e: 4618 mov r0, r3 + 8006f40: 3718 adds r7, #24 + 8006f42: 46bd mov sp, r7 + 8006f44: bd80 pop {r7, pc} + +08006f46 : +* @param epnum: endpoint index +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, + uint8_t epnum, uint8_t *pdata) +{ + 8006f46: b580 push {r7, lr} + 8006f48: b086 sub sp, #24 + 8006f4a: af00 add r7, sp, #0 + 8006f4c: 60f8 str r0, [r7, #12] + 8006f4e: 460b mov r3, r1 + 8006f50: 607a str r2, [r7, #4] + 8006f52: 72fb strb r3, [r7, #11] + USBD_EndpointTypeDef *pep; + + if (epnum == 0U) + 8006f54: 7afb ldrb r3, [r7, #11] + 8006f56: 2b00 cmp r3, #0 + 8006f58: d17f bne.n 800705a + { + pep = &pdev->ep_in[0]; + 8006f5a: 68fb ldr r3, [r7, #12] + 8006f5c: 3314 adds r3, #20 + 8006f5e: 617b str r3, [r7, #20] + + if (pdev->ep0_state == USBD_EP0_DATA_IN) + 8006f60: 68fb ldr r3, [r7, #12] + 8006f62: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 + 8006f66: 2b02 cmp r3, #2 + 8006f68: d15c bne.n 8007024 + { + if (pep->rem_length > pep->maxpacket) + 8006f6a: 697b ldr r3, [r7, #20] + 8006f6c: 68da ldr r2, [r3, #12] + 8006f6e: 697b ldr r3, [r7, #20] + 8006f70: 691b ldr r3, [r3, #16] + 8006f72: 429a cmp r2, r3 + 8006f74: d915 bls.n 8006fa2 + { + pep->rem_length -= pep->maxpacket; + 8006f76: 697b ldr r3, [r7, #20] + 8006f78: 68da ldr r2, [r3, #12] + 8006f7a: 697b ldr r3, [r7, #20] + 8006f7c: 691b ldr r3, [r3, #16] + 8006f7e: 1ad2 subs r2, r2, r3 + 8006f80: 697b ldr r3, [r7, #20] + 8006f82: 60da str r2, [r3, #12] + + USBD_CtlContinueSendData(pdev, pdata, (uint16_t)pep->rem_length); + 8006f84: 697b ldr r3, [r7, #20] + 8006f86: 68db ldr r3, [r3, #12] + 8006f88: b29b uxth r3, r3 + 8006f8a: 461a mov r2, r3 + 8006f8c: 6879 ldr r1, [r7, #4] + 8006f8e: 68f8 ldr r0, [r7, #12] + 8006f90: f000 febe bl 8007d10 + + /* Prepare endpoint for premature end of transfer */ + USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); + 8006f94: 2300 movs r3, #0 + 8006f96: 2200 movs r2, #0 + 8006f98: 2100 movs r1, #0 + 8006f9a: 68f8 ldr r0, [r7, #12] + 8006f9c: f001 fbb7 bl 800870e + 8006fa0: e04e b.n 8007040 + } + else + { + /* last packet is MPS multiple, so send ZLP packet */ + if ((pep->total_length % pep->maxpacket == 0U) && + 8006fa2: 697b ldr r3, [r7, #20] + 8006fa4: 689b ldr r3, [r3, #8] + 8006fa6: 697a ldr r2, [r7, #20] + 8006fa8: 6912 ldr r2, [r2, #16] + 8006faa: fbb3 f1f2 udiv r1, r3, r2 + 8006fae: fb01 f202 mul.w r2, r1, r2 + 8006fb2: 1a9b subs r3, r3, r2 + 8006fb4: 2b00 cmp r3, #0 + 8006fb6: d11c bne.n 8006ff2 + (pep->total_length >= pep->maxpacket) && + 8006fb8: 697b ldr r3, [r7, #20] + 8006fba: 689a ldr r2, [r3, #8] + 8006fbc: 697b ldr r3, [r7, #20] + 8006fbe: 691b ldr r3, [r3, #16] + if ((pep->total_length % pep->maxpacket == 0U) && + 8006fc0: 429a cmp r2, r3 + 8006fc2: d316 bcc.n 8006ff2 + (pep->total_length < pdev->ep0_data_len)) + 8006fc4: 697b ldr r3, [r7, #20] + 8006fc6: 689a ldr r2, [r3, #8] + 8006fc8: 68fb ldr r3, [r7, #12] + 8006fca: f8d3 3298 ldr.w r3, [r3, #664] @ 0x298 + (pep->total_length >= pep->maxpacket) && + 8006fce: 429a cmp r2, r3 + 8006fd0: d20f bcs.n 8006ff2 + { + USBD_CtlContinueSendData(pdev, NULL, 0U); + 8006fd2: 2200 movs r2, #0 + 8006fd4: 2100 movs r1, #0 + 8006fd6: 68f8 ldr r0, [r7, #12] + 8006fd8: f000 fe9a bl 8007d10 + pdev->ep0_data_len = 0U; + 8006fdc: 68fb ldr r3, [r7, #12] + 8006fde: 2200 movs r2, #0 + 8006fe0: f8c3 2298 str.w r2, [r3, #664] @ 0x298 + + /* Prepare endpoint for premature end of transfer */ + USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); + 8006fe4: 2300 movs r3, #0 + 8006fe6: 2200 movs r2, #0 + 8006fe8: 2100 movs r1, #0 + 8006fea: 68f8 ldr r0, [r7, #12] + 8006fec: f001 fb8f bl 800870e + 8006ff0: e026 b.n 8007040 + } + else + { + if ((pdev->pClass->EP0_TxSent != NULL) && + 8006ff2: 68fb ldr r3, [r7, #12] + 8006ff4: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8006ff8: 68db ldr r3, [r3, #12] + 8006ffa: 2b00 cmp r3, #0 + 8006ffc: d00a beq.n 8007014 + (pdev->dev_state == USBD_STATE_CONFIGURED)) + 8006ffe: 68fb ldr r3, [r7, #12] + 8007000: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + if ((pdev->pClass->EP0_TxSent != NULL) && + 8007004: 2b03 cmp r3, #3 + 8007006: d105 bne.n 8007014 + { + pdev->pClass->EP0_TxSent(pdev); + 8007008: 68fb ldr r3, [r7, #12] + 800700a: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 800700e: 68db ldr r3, [r3, #12] + 8007010: 68f8 ldr r0, [r7, #12] + 8007012: 4798 blx r3 + } + USBD_LL_StallEP(pdev, 0x80U); + 8007014: 2180 movs r1, #128 @ 0x80 + 8007016: 68f8 ldr r0, [r7, #12] + 8007018: f001 face bl 80085b8 + USBD_CtlReceiveStatus(pdev); + 800701c: 68f8 ldr r0, [r7, #12] + 800701e: f000 fecc bl 8007dba + 8007022: e00d b.n 8007040 + } + } + } + else + { + if ((pdev->ep0_state == USBD_EP0_STATUS_IN) || + 8007024: 68fb ldr r3, [r7, #12] + 8007026: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 + 800702a: 2b04 cmp r3, #4 + 800702c: d004 beq.n 8007038 + (pdev->ep0_state == USBD_EP0_IDLE)) + 800702e: 68fb ldr r3, [r7, #12] + 8007030: f8d3 3294 ldr.w r3, [r3, #660] @ 0x294 + if ((pdev->ep0_state == USBD_EP0_STATUS_IN) || + 8007034: 2b00 cmp r3, #0 + 8007036: d103 bne.n 8007040 + { + USBD_LL_StallEP(pdev, 0x80U); + 8007038: 2180 movs r1, #128 @ 0x80 + 800703a: 68f8 ldr r0, [r7, #12] + 800703c: f001 fabc bl 80085b8 + } + } + + if (pdev->dev_test_mode == 1U) + 8007040: 68fb ldr r3, [r7, #12] + 8007042: f893 32a0 ldrb.w r3, [r3, #672] @ 0x2a0 + 8007046: 2b01 cmp r3, #1 + 8007048: d11d bne.n 8007086 + { + USBD_RunTestMode(pdev); + 800704a: 68f8 ldr r0, [r7, #12] + 800704c: f7ff fe81 bl 8006d52 + pdev->dev_test_mode = 0U; + 8007050: 68fb ldr r3, [r7, #12] + 8007052: 2200 movs r2, #0 + 8007054: f883 22a0 strb.w r2, [r3, #672] @ 0x2a0 + 8007058: e015 b.n 8007086 + } + } + else if ((pdev->pClass->DataIn != NULL) && + 800705a: 68fb ldr r3, [r7, #12] + 800705c: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007060: 695b ldr r3, [r3, #20] + 8007062: 2b00 cmp r3, #0 + 8007064: d00d beq.n 8007082 + (pdev->dev_state == USBD_STATE_CONFIGURED)) + 8007066: 68fb ldr r3, [r7, #12] + 8007068: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + else if ((pdev->pClass->DataIn != NULL) && + 800706c: 2b03 cmp r3, #3 + 800706e: d108 bne.n 8007082 + { + pdev->pClass->DataIn(pdev, epnum); + 8007070: 68fb ldr r3, [r7, #12] + 8007072: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007076: 695b ldr r3, [r3, #20] + 8007078: 7afa ldrb r2, [r7, #11] + 800707a: 4611 mov r1, r2 + 800707c: 68f8 ldr r0, [r7, #12] + 800707e: 4798 blx r3 + 8007080: e001 b.n 8007086 + } + else + { + /* should never be in this condition */ + return USBD_FAIL; + 8007082: 2302 movs r3, #2 + 8007084: e000 b.n 8007088 + } + + return USBD_OK; + 8007086: 2300 movs r3, #0 +} + 8007088: 4618 mov r0, r3 + 800708a: 3718 adds r7, #24 + 800708c: 46bd mov sp, r7 + 800708e: bd80 pop {r7, pc} + +08007090 : +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev) +{ + 8007090: b580 push {r7, lr} + 8007092: b082 sub sp, #8 + 8007094: af00 add r7, sp, #0 + 8007096: 6078 str r0, [r7, #4] + /* Open EP0 OUT */ + USBD_LL_OpenEP(pdev, 0x00U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); + 8007098: 2340 movs r3, #64 @ 0x40 + 800709a: 2200 movs r2, #0 + 800709c: 2100 movs r1, #0 + 800709e: 6878 ldr r0, [r7, #4] + 80070a0: f001 fa45 bl 800852e + pdev->ep_out[0x00U & 0xFU].is_used = 1U; + 80070a4: 687b ldr r3, [r7, #4] + 80070a6: 2201 movs r2, #1 + 80070a8: f8c3 2158 str.w r2, [r3, #344] @ 0x158 + + pdev->ep_out[0].maxpacket = USB_MAX_EP0_SIZE; + 80070ac: 687b ldr r3, [r7, #4] + 80070ae: 2240 movs r2, #64 @ 0x40 + 80070b0: f8c3 2164 str.w r2, [r3, #356] @ 0x164 + + /* Open EP0 IN */ + USBD_LL_OpenEP(pdev, 0x80U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); + 80070b4: 2340 movs r3, #64 @ 0x40 + 80070b6: 2200 movs r2, #0 + 80070b8: 2180 movs r1, #128 @ 0x80 + 80070ba: 6878 ldr r0, [r7, #4] + 80070bc: f001 fa37 bl 800852e + pdev->ep_in[0x80U & 0xFU].is_used = 1U; + 80070c0: 687b ldr r3, [r7, #4] + 80070c2: 2201 movs r2, #1 + 80070c4: 619a str r2, [r3, #24] + + pdev->ep_in[0].maxpacket = USB_MAX_EP0_SIZE; + 80070c6: 687b ldr r3, [r7, #4] + 80070c8: 2240 movs r2, #64 @ 0x40 + 80070ca: 625a str r2, [r3, #36] @ 0x24 + + /* Upon Reset call user call back */ + pdev->dev_state = USBD_STATE_DEFAULT; + 80070cc: 687b ldr r3, [r7, #4] + 80070ce: 2201 movs r2, #1 + 80070d0: f883 229c strb.w r2, [r3, #668] @ 0x29c + pdev->ep0_state = USBD_EP0_IDLE; + 80070d4: 687b ldr r3, [r7, #4] + 80070d6: 2200 movs r2, #0 + 80070d8: f8c3 2294 str.w r2, [r3, #660] @ 0x294 + pdev->dev_config = 0U; + 80070dc: 687b ldr r3, [r7, #4] + 80070de: 2200 movs r2, #0 + 80070e0: 605a str r2, [r3, #4] + pdev->dev_remote_wakeup = 0U; + 80070e2: 687b ldr r3, [r7, #4] + 80070e4: 2200 movs r2, #0 + 80070e6: f8c3 22a4 str.w r2, [r3, #676] @ 0x2a4 + + if (pdev->pClassData) + 80070ea: 687b ldr r3, [r7, #4] + 80070ec: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 80070f0: 2b00 cmp r3, #0 + 80070f2: d009 beq.n 8007108 + { + pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config); + 80070f4: 687b ldr r3, [r7, #4] + 80070f6: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 80070fa: 685b ldr r3, [r3, #4] + 80070fc: 687a ldr r2, [r7, #4] + 80070fe: 6852 ldr r2, [r2, #4] + 8007100: b2d2 uxtb r2, r2 + 8007102: 4611 mov r1, r2 + 8007104: 6878 ldr r0, [r7, #4] + 8007106: 4798 blx r3 + } + + return USBD_OK; + 8007108: 2300 movs r3, #0 +} + 800710a: 4618 mov r0, r3 + 800710c: 3708 adds r7, #8 + 800710e: 46bd mov sp, r7 + 8007110: bd80 pop {r7, pc} + +08007112 : +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, + USBD_SpeedTypeDef speed) +{ + 8007112: b480 push {r7} + 8007114: b083 sub sp, #12 + 8007116: af00 add r7, sp, #0 + 8007118: 6078 str r0, [r7, #4] + 800711a: 460b mov r3, r1 + 800711c: 70fb strb r3, [r7, #3] + pdev->dev_speed = speed; + 800711e: 687b ldr r3, [r7, #4] + 8007120: 78fa ldrb r2, [r7, #3] + 8007122: 741a strb r2, [r3, #16] + + return USBD_OK; + 8007124: 2300 movs r3, #0 +} + 8007126: 4618 mov r0, r3 + 8007128: 370c adds r7, #12 + 800712a: 46bd mov sp, r7 + 800712c: bc80 pop {r7} + 800712e: 4770 bx lr + +08007130 : +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev) +{ + 8007130: b480 push {r7} + 8007132: b083 sub sp, #12 + 8007134: af00 add r7, sp, #0 + 8007136: 6078 str r0, [r7, #4] + pdev->dev_old_state = pdev->dev_state; + 8007138: 687b ldr r3, [r7, #4] + 800713a: f893 229c ldrb.w r2, [r3, #668] @ 0x29c + 800713e: 687b ldr r3, [r7, #4] + 8007140: f883 229d strb.w r2, [r3, #669] @ 0x29d + pdev->dev_state = USBD_STATE_SUSPENDED; + 8007144: 687b ldr r3, [r7, #4] + 8007146: 2204 movs r2, #4 + 8007148: f883 229c strb.w r2, [r3, #668] @ 0x29c + + return USBD_OK; + 800714c: 2300 movs r3, #0 +} + 800714e: 4618 mov r0, r3 + 8007150: 370c adds r7, #12 + 8007152: 46bd mov sp, r7 + 8007154: bc80 pop {r7} + 8007156: 4770 bx lr + +08007158 : +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev) +{ + 8007158: b480 push {r7} + 800715a: b083 sub sp, #12 + 800715c: af00 add r7, sp, #0 + 800715e: 6078 str r0, [r7, #4] + if (pdev->dev_state == USBD_STATE_SUSPENDED) + 8007160: 687b ldr r3, [r7, #4] + 8007162: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007166: 2b04 cmp r3, #4 + 8007168: d105 bne.n 8007176 + { + pdev->dev_state = pdev->dev_old_state; + 800716a: 687b ldr r3, [r7, #4] + 800716c: f893 229d ldrb.w r2, [r3, #669] @ 0x29d + 8007170: 687b ldr r3, [r7, #4] + 8007172: f883 229c strb.w r2, [r3, #668] @ 0x29c + } + + return USBD_OK; + 8007176: 2300 movs r3, #0 +} + 8007178: 4618 mov r0, r3 + 800717a: 370c adds r7, #12 + 800717c: 46bd mov sp, r7 + 800717e: bc80 pop {r7} + 8007180: 4770 bx lr + +08007182 : +* @param pdev: device instance +* @retval status +*/ + +USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev) +{ + 8007182: b580 push {r7, lr} + 8007184: b082 sub sp, #8 + 8007186: af00 add r7, sp, #0 + 8007188: 6078 str r0, [r7, #4] + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 800718a: 687b ldr r3, [r7, #4] + 800718c: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007190: 2b03 cmp r3, #3 + 8007192: d10b bne.n 80071ac + { + if (pdev->pClass->SOF != NULL) + 8007194: 687b ldr r3, [r7, #4] + 8007196: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 800719a: 69db ldr r3, [r3, #28] + 800719c: 2b00 cmp r3, #0 + 800719e: d005 beq.n 80071ac + { + pdev->pClass->SOF(pdev); + 80071a0: 687b ldr r3, [r7, #4] + 80071a2: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 80071a6: 69db ldr r3, [r3, #28] + 80071a8: 6878 ldr r0, [r7, #4] + 80071aa: 4798 blx r3 + } + } + + return USBD_OK; + 80071ac: 2300 movs r3, #0 +} + 80071ae: 4618 mov r0, r3 + 80071b0: 3708 adds r7, #8 + 80071b2: 46bd mov sp, r7 + 80071b4: bd80 pop {r7, pc} + ... + +080071b8 : +* @param req: usb request +* @retval status +*/ +USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 80071b8: b580 push {r7, lr} + 80071ba: b084 sub sp, #16 + 80071bc: af00 add r7, sp, #0 + 80071be: 6078 str r0, [r7, #4] + 80071c0: 6039 str r1, [r7, #0] + USBD_StatusTypeDef ret = USBD_OK; + 80071c2: 2300 movs r3, #0 + 80071c4: 73fb strb r3, [r7, #15] + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + 80071c6: 683b ldr r3, [r7, #0] + 80071c8: 781b ldrb r3, [r3, #0] + 80071ca: f003 0360 and.w r3, r3, #96 @ 0x60 + 80071ce: 2b40 cmp r3, #64 @ 0x40 + 80071d0: d005 beq.n 80071de + 80071d2: 2b40 cmp r3, #64 @ 0x40 + 80071d4: d84f bhi.n 8007276 + 80071d6: 2b00 cmp r3, #0 + 80071d8: d009 beq.n 80071ee + 80071da: 2b20 cmp r3, #32 + 80071dc: d14b bne.n 8007276 + { + case USB_REQ_TYPE_CLASS: + case USB_REQ_TYPE_VENDOR: + pdev->pClass->Setup(pdev, req); + 80071de: 687b ldr r3, [r7, #4] + 80071e0: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 80071e4: 689b ldr r3, [r3, #8] + 80071e6: 6839 ldr r1, [r7, #0] + 80071e8: 6878 ldr r0, [r7, #4] + 80071ea: 4798 blx r3 + break; + 80071ec: e048 b.n 8007280 + + case USB_REQ_TYPE_STANDARD: + switch (req->bRequest) + 80071ee: 683b ldr r3, [r7, #0] + 80071f0: 785b ldrb r3, [r3, #1] + 80071f2: 2b09 cmp r3, #9 + 80071f4: d839 bhi.n 800726a + 80071f6: a201 add r2, pc, #4 @ (adr r2, 80071fc ) + 80071f8: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 80071fc: 0800724d .word 0x0800724d + 8007200: 08007261 .word 0x08007261 + 8007204: 0800726b .word 0x0800726b + 8007208: 08007257 .word 0x08007257 + 800720c: 0800726b .word 0x0800726b + 8007210: 0800722f .word 0x0800722f + 8007214: 08007225 .word 0x08007225 + 8007218: 0800726b .word 0x0800726b + 800721c: 08007243 .word 0x08007243 + 8007220: 08007239 .word 0x08007239 + { + case USB_REQ_GET_DESCRIPTOR: + USBD_GetDescriptor(pdev, req); + 8007224: 6839 ldr r1, [r7, #0] + 8007226: 6878 ldr r0, [r7, #4] + 8007228: f000 f9dc bl 80075e4 + break; + 800722c: e022 b.n 8007274 + + case USB_REQ_SET_ADDRESS: + USBD_SetAddress(pdev, req); + 800722e: 6839 ldr r1, [r7, #0] + 8007230: 6878 ldr r0, [r7, #4] + 8007232: f000 fb3f bl 80078b4 + break; + 8007236: e01d b.n 8007274 + + case USB_REQ_SET_CONFIGURATION: + USBD_SetConfig(pdev, req); + 8007238: 6839 ldr r1, [r7, #0] + 800723a: 6878 ldr r0, [r7, #4] + 800723c: f000 fb7e bl 800793c + break; + 8007240: e018 b.n 8007274 + + case USB_REQ_GET_CONFIGURATION: + USBD_GetConfig(pdev, req); + 8007242: 6839 ldr r1, [r7, #0] + 8007244: 6878 ldr r0, [r7, #4] + 8007246: f000 fc07 bl 8007a58 + break; + 800724a: e013 b.n 8007274 + + case USB_REQ_GET_STATUS: + USBD_GetStatus(pdev, req); + 800724c: 6839 ldr r1, [r7, #0] + 800724e: 6878 ldr r0, [r7, #4] + 8007250: f000 fc37 bl 8007ac2 + break; + 8007254: e00e b.n 8007274 + + case USB_REQ_SET_FEATURE: + USBD_SetFeature(pdev, req); + 8007256: 6839 ldr r1, [r7, #0] + 8007258: 6878 ldr r0, [r7, #4] + 800725a: f000 fc65 bl 8007b28 + break; + 800725e: e009 b.n 8007274 + + case USB_REQ_CLEAR_FEATURE: + USBD_ClrFeature(pdev, req); + 8007260: 6839 ldr r1, [r7, #0] + 8007262: 6878 ldr r0, [r7, #4] + 8007264: f000 fc74 bl 8007b50 + break; + 8007268: e004 b.n 8007274 + + default: + USBD_CtlError(pdev, req); + 800726a: 6839 ldr r1, [r7, #0] + 800726c: 6878 ldr r0, [r7, #4] + 800726e: f000 fcc9 bl 8007c04 + break; + 8007272: bf00 nop + } + break; + 8007274: e004 b.n 8007280 + + default: + USBD_CtlError(pdev, req); + 8007276: 6839 ldr r1, [r7, #0] + 8007278: 6878 ldr r0, [r7, #4] + 800727a: f000 fcc3 bl 8007c04 + break; + 800727e: bf00 nop + } + + return ret; + 8007280: 7bfb ldrb r3, [r7, #15] +} + 8007282: 4618 mov r0, r3 + 8007284: 3710 adds r7, #16 + 8007286: 46bd mov sp, r7 + 8007288: bd80 pop {r7, pc} + 800728a: bf00 nop + +0800728c : +* @param req: usb request +* @retval status +*/ +USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 800728c: b580 push {r7, lr} + 800728e: b084 sub sp, #16 + 8007290: af00 add r7, sp, #0 + 8007292: 6078 str r0, [r7, #4] + 8007294: 6039 str r1, [r7, #0] + USBD_StatusTypeDef ret = USBD_OK; + 8007296: 2300 movs r3, #0 + 8007298: 73fb strb r3, [r7, #15] + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + 800729a: 683b ldr r3, [r7, #0] + 800729c: 781b ldrb r3, [r3, #0] + 800729e: f003 0360 and.w r3, r3, #96 @ 0x60 + 80072a2: 2b40 cmp r3, #64 @ 0x40 + 80072a4: d005 beq.n 80072b2 + 80072a6: 2b40 cmp r3, #64 @ 0x40 + 80072a8: d82e bhi.n 8007308 + 80072aa: 2b00 cmp r3, #0 + 80072ac: d001 beq.n 80072b2 + 80072ae: 2b20 cmp r3, #32 + 80072b0: d12a bne.n 8007308 + { + case USB_REQ_TYPE_CLASS: + case USB_REQ_TYPE_VENDOR: + case USB_REQ_TYPE_STANDARD: + switch (pdev->dev_state) + 80072b2: 687b ldr r3, [r7, #4] + 80072b4: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 80072b8: 3b01 subs r3, #1 + 80072ba: 2b02 cmp r3, #2 + 80072bc: d81d bhi.n 80072fa + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + case USBD_STATE_CONFIGURED: + + if (LOBYTE(req->wIndex) <= USBD_MAX_NUM_INTERFACES) + 80072be: 683b ldr r3, [r7, #0] + 80072c0: 889b ldrh r3, [r3, #4] + 80072c2: b2db uxtb r3, r3 + 80072c4: 2b01 cmp r3, #1 + 80072c6: d813 bhi.n 80072f0 + { + ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req); + 80072c8: 687b ldr r3, [r7, #4] + 80072ca: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 80072ce: 689b ldr r3, [r3, #8] + 80072d0: 6839 ldr r1, [r7, #0] + 80072d2: 6878 ldr r0, [r7, #4] + 80072d4: 4798 blx r3 + 80072d6: 4603 mov r3, r0 + 80072d8: 73fb strb r3, [r7, #15] + + if ((req->wLength == 0U) && (ret == USBD_OK)) + 80072da: 683b ldr r3, [r7, #0] + 80072dc: 88db ldrh r3, [r3, #6] + 80072de: 2b00 cmp r3, #0 + 80072e0: d110 bne.n 8007304 + 80072e2: 7bfb ldrb r3, [r7, #15] + 80072e4: 2b00 cmp r3, #0 + 80072e6: d10d bne.n 8007304 + { + USBD_CtlSendStatus(pdev); + 80072e8: 6878 ldr r0, [r7, #4] + 80072ea: f000 fd53 bl 8007d94 + } + else + { + USBD_CtlError(pdev, req); + } + break; + 80072ee: e009 b.n 8007304 + USBD_CtlError(pdev, req); + 80072f0: 6839 ldr r1, [r7, #0] + 80072f2: 6878 ldr r0, [r7, #4] + 80072f4: f000 fc86 bl 8007c04 + break; + 80072f8: e004 b.n 8007304 + + default: + USBD_CtlError(pdev, req); + 80072fa: 6839 ldr r1, [r7, #0] + 80072fc: 6878 ldr r0, [r7, #4] + 80072fe: f000 fc81 bl 8007c04 + break; + 8007302: e000 b.n 8007306 + break; + 8007304: bf00 nop + } + break; + 8007306: e004 b.n 8007312 + + default: + USBD_CtlError(pdev, req); + 8007308: 6839 ldr r1, [r7, #0] + 800730a: 6878 ldr r0, [r7, #4] + 800730c: f000 fc7a bl 8007c04 + break; + 8007310: bf00 nop + } + + return USBD_OK; + 8007312: 2300 movs r3, #0 +} + 8007314: 4618 mov r0, r3 + 8007316: 3710 adds r7, #16 + 8007318: 46bd mov sp, r7 + 800731a: bd80 pop {r7, pc} + +0800731c : +* @param req: usb request +* @retval status +*/ +USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 800731c: b580 push {r7, lr} + 800731e: b084 sub sp, #16 + 8007320: af00 add r7, sp, #0 + 8007322: 6078 str r0, [r7, #4] + 8007324: 6039 str r1, [r7, #0] + USBD_EndpointTypeDef *pep; + uint8_t ep_addr; + USBD_StatusTypeDef ret = USBD_OK; + 8007326: 2300 movs r3, #0 + 8007328: 73fb strb r3, [r7, #15] + ep_addr = LOBYTE(req->wIndex); + 800732a: 683b ldr r3, [r7, #0] + 800732c: 889b ldrh r3, [r3, #4] + 800732e: 73bb strb r3, [r7, #14] + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + 8007330: 683b ldr r3, [r7, #0] + 8007332: 781b ldrb r3, [r3, #0] + 8007334: f003 0360 and.w r3, r3, #96 @ 0x60 + 8007338: 2b40 cmp r3, #64 @ 0x40 + 800733a: d007 beq.n 800734c + 800733c: 2b40 cmp r3, #64 @ 0x40 + 800733e: f200 8146 bhi.w 80075ce + 8007342: 2b00 cmp r3, #0 + 8007344: d00a beq.n 800735c + 8007346: 2b20 cmp r3, #32 + 8007348: f040 8141 bne.w 80075ce + { + case USB_REQ_TYPE_CLASS: + case USB_REQ_TYPE_VENDOR: + pdev->pClass->Setup(pdev, req); + 800734c: 687b ldr r3, [r7, #4] + 800734e: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007352: 689b ldr r3, [r3, #8] + 8007354: 6839 ldr r1, [r7, #0] + 8007356: 6878 ldr r0, [r7, #4] + 8007358: 4798 blx r3 + break; + 800735a: e13d b.n 80075d8 + + case USB_REQ_TYPE_STANDARD: + /* Check if it is a class request */ + if ((req->bmRequest & 0x60U) == 0x20U) + 800735c: 683b ldr r3, [r7, #0] + 800735e: 781b ldrb r3, [r3, #0] + 8007360: f003 0360 and.w r3, r3, #96 @ 0x60 + 8007364: 2b20 cmp r3, #32 + 8007366: d10a bne.n 800737e + { + ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req); + 8007368: 687b ldr r3, [r7, #4] + 800736a: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 800736e: 689b ldr r3, [r3, #8] + 8007370: 6839 ldr r1, [r7, #0] + 8007372: 6878 ldr r0, [r7, #4] + 8007374: 4798 blx r3 + 8007376: 4603 mov r3, r0 + 8007378: 73fb strb r3, [r7, #15] + + return ret; + 800737a: 7bfb ldrb r3, [r7, #15] + 800737c: e12d b.n 80075da + } + + switch (req->bRequest) + 800737e: 683b ldr r3, [r7, #0] + 8007380: 785b ldrb r3, [r3, #1] + 8007382: 2b03 cmp r3, #3 + 8007384: d007 beq.n 8007396 + 8007386: 2b03 cmp r3, #3 + 8007388: f300 811b bgt.w 80075c2 + 800738c: 2b00 cmp r3, #0 + 800738e: d072 beq.n 8007476 + 8007390: 2b01 cmp r3, #1 + 8007392: d03a beq.n 800740a + 8007394: e115 b.n 80075c2 + { + case USB_REQ_SET_FEATURE: + switch (pdev->dev_state) + 8007396: 687b ldr r3, [r7, #4] + 8007398: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 800739c: 2b02 cmp r3, #2 + 800739e: d002 beq.n 80073a6 + 80073a0: 2b03 cmp r3, #3 + 80073a2: d015 beq.n 80073d0 + 80073a4: e02b b.n 80073fe + { + case USBD_STATE_ADDRESSED: + if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) + 80073a6: 7bbb ldrb r3, [r7, #14] + 80073a8: 2b00 cmp r3, #0 + 80073aa: d00c beq.n 80073c6 + 80073ac: 7bbb ldrb r3, [r7, #14] + 80073ae: 2b80 cmp r3, #128 @ 0x80 + 80073b0: d009 beq.n 80073c6 + { + USBD_LL_StallEP(pdev, ep_addr); + 80073b2: 7bbb ldrb r3, [r7, #14] + 80073b4: 4619 mov r1, r3 + 80073b6: 6878 ldr r0, [r7, #4] + 80073b8: f001 f8fe bl 80085b8 + USBD_LL_StallEP(pdev, 0x80U); + 80073bc: 2180 movs r1, #128 @ 0x80 + 80073be: 6878 ldr r0, [r7, #4] + 80073c0: f001 f8fa bl 80085b8 + } + else + { + USBD_CtlError(pdev, req); + } + break; + 80073c4: e020 b.n 8007408 + USBD_CtlError(pdev, req); + 80073c6: 6839 ldr r1, [r7, #0] + 80073c8: 6878 ldr r0, [r7, #4] + 80073ca: f000 fc1b bl 8007c04 + break; + 80073ce: e01b b.n 8007408 + + case USBD_STATE_CONFIGURED: + if (req->wValue == USB_FEATURE_EP_HALT) + 80073d0: 683b ldr r3, [r7, #0] + 80073d2: 885b ldrh r3, [r3, #2] + 80073d4: 2b00 cmp r3, #0 + 80073d6: d10e bne.n 80073f6 + { + if ((ep_addr != 0x00U) && + 80073d8: 7bbb ldrb r3, [r7, #14] + 80073da: 2b00 cmp r3, #0 + 80073dc: d00b beq.n 80073f6 + 80073de: 7bbb ldrb r3, [r7, #14] + 80073e0: 2b80 cmp r3, #128 @ 0x80 + 80073e2: d008 beq.n 80073f6 + (ep_addr != 0x80U) && (req->wLength == 0x00U)) + 80073e4: 683b ldr r3, [r7, #0] + 80073e6: 88db ldrh r3, [r3, #6] + 80073e8: 2b00 cmp r3, #0 + 80073ea: d104 bne.n 80073f6 + { + USBD_LL_StallEP(pdev, ep_addr); + 80073ec: 7bbb ldrb r3, [r7, #14] + 80073ee: 4619 mov r1, r3 + 80073f0: 6878 ldr r0, [r7, #4] + 80073f2: f001 f8e1 bl 80085b8 + } + } + USBD_CtlSendStatus(pdev); + 80073f6: 6878 ldr r0, [r7, #4] + 80073f8: f000 fccc bl 8007d94 + + break; + 80073fc: e004 b.n 8007408 + + default: + USBD_CtlError(pdev, req); + 80073fe: 6839 ldr r1, [r7, #0] + 8007400: 6878 ldr r0, [r7, #4] + 8007402: f000 fbff bl 8007c04 + break; + 8007406: bf00 nop + } + break; + 8007408: e0e0 b.n 80075cc + + case USB_REQ_CLEAR_FEATURE: + + switch (pdev->dev_state) + 800740a: 687b ldr r3, [r7, #4] + 800740c: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007410: 2b02 cmp r3, #2 + 8007412: d002 beq.n 800741a + 8007414: 2b03 cmp r3, #3 + 8007416: d015 beq.n 8007444 + 8007418: e026 b.n 8007468 + { + case USBD_STATE_ADDRESSED: + if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) + 800741a: 7bbb ldrb r3, [r7, #14] + 800741c: 2b00 cmp r3, #0 + 800741e: d00c beq.n 800743a + 8007420: 7bbb ldrb r3, [r7, #14] + 8007422: 2b80 cmp r3, #128 @ 0x80 + 8007424: d009 beq.n 800743a + { + USBD_LL_StallEP(pdev, ep_addr); + 8007426: 7bbb ldrb r3, [r7, #14] + 8007428: 4619 mov r1, r3 + 800742a: 6878 ldr r0, [r7, #4] + 800742c: f001 f8c4 bl 80085b8 + USBD_LL_StallEP(pdev, 0x80U); + 8007430: 2180 movs r1, #128 @ 0x80 + 8007432: 6878 ldr r0, [r7, #4] + 8007434: f001 f8c0 bl 80085b8 + } + else + { + USBD_CtlError(pdev, req); + } + break; + 8007438: e01c b.n 8007474 + USBD_CtlError(pdev, req); + 800743a: 6839 ldr r1, [r7, #0] + 800743c: 6878 ldr r0, [r7, #4] + 800743e: f000 fbe1 bl 8007c04 + break; + 8007442: e017 b.n 8007474 + + case USBD_STATE_CONFIGURED: + if (req->wValue == USB_FEATURE_EP_HALT) + 8007444: 683b ldr r3, [r7, #0] + 8007446: 885b ldrh r3, [r3, #2] + 8007448: 2b00 cmp r3, #0 + 800744a: d112 bne.n 8007472 + { + if ((ep_addr & 0x7FU) != 0x00U) + 800744c: 7bbb ldrb r3, [r7, #14] + 800744e: f003 037f and.w r3, r3, #127 @ 0x7f + 8007452: 2b00 cmp r3, #0 + 8007454: d004 beq.n 8007460 + { + USBD_LL_ClearStallEP(pdev, ep_addr); + 8007456: 7bbb ldrb r3, [r7, #14] + 8007458: 4619 mov r1, r3 + 800745a: 6878 ldr r0, [r7, #4] + 800745c: f001 f8cb bl 80085f6 + } + USBD_CtlSendStatus(pdev); + 8007460: 6878 ldr r0, [r7, #4] + 8007462: f000 fc97 bl 8007d94 + } + break; + 8007466: e004 b.n 8007472 + + default: + USBD_CtlError(pdev, req); + 8007468: 6839 ldr r1, [r7, #0] + 800746a: 6878 ldr r0, [r7, #4] + 800746c: f000 fbca bl 8007c04 + break; + 8007470: e000 b.n 8007474 + break; + 8007472: bf00 nop + } + break; + 8007474: e0aa b.n 80075cc + + case USB_REQ_GET_STATUS: + switch (pdev->dev_state) + 8007476: 687b ldr r3, [r7, #4] + 8007478: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 800747c: 2b02 cmp r3, #2 + 800747e: d002 beq.n 8007486 + 8007480: 2b03 cmp r3, #3 + 8007482: d032 beq.n 80074ea + 8007484: e097 b.n 80075b6 + { + case USBD_STATE_ADDRESSED: + if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) + 8007486: 7bbb ldrb r3, [r7, #14] + 8007488: 2b00 cmp r3, #0 + 800748a: d007 beq.n 800749c + 800748c: 7bbb ldrb r3, [r7, #14] + 800748e: 2b80 cmp r3, #128 @ 0x80 + 8007490: d004 beq.n 800749c + { + USBD_CtlError(pdev, req); + 8007492: 6839 ldr r1, [r7, #0] + 8007494: 6878 ldr r0, [r7, #4] + 8007496: f000 fbb5 bl 8007c04 + break; + 800749a: e091 b.n 80075c0 + } + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + 800749c: f997 300e ldrsb.w r3, [r7, #14] + 80074a0: 2b00 cmp r3, #0 + 80074a2: da0b bge.n 80074bc + 80074a4: 7bbb ldrb r3, [r7, #14] + 80074a6: f003 027f and.w r2, r3, #127 @ 0x7f + 80074aa: 4613 mov r3, r2 + 80074ac: 009b lsls r3, r3, #2 + 80074ae: 4413 add r3, r2 + 80074b0: 009b lsls r3, r3, #2 + 80074b2: 3310 adds r3, #16 + 80074b4: 687a ldr r2, [r7, #4] + 80074b6: 4413 add r3, r2 + 80074b8: 3304 adds r3, #4 + 80074ba: e00b b.n 80074d4 + &pdev->ep_out[ep_addr & 0x7FU]; + 80074bc: 7bbb ldrb r3, [r7, #14] + 80074be: f003 027f and.w r2, r3, #127 @ 0x7f + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + 80074c2: 4613 mov r3, r2 + 80074c4: 009b lsls r3, r3, #2 + 80074c6: 4413 add r3, r2 + 80074c8: 009b lsls r3, r3, #2 + 80074ca: f503 73a8 add.w r3, r3, #336 @ 0x150 + 80074ce: 687a ldr r2, [r7, #4] + 80074d0: 4413 add r3, r2 + 80074d2: 3304 adds r3, #4 + 80074d4: 60bb str r3, [r7, #8] + + pep->status = 0x0000U; + 80074d6: 68bb ldr r3, [r7, #8] + 80074d8: 2200 movs r2, #0 + 80074da: 601a str r2, [r3, #0] + + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pep->status, 2U); + 80074dc: 68bb ldr r3, [r7, #8] + 80074de: 2202 movs r2, #2 + 80074e0: 4619 mov r1, r3 + 80074e2: 6878 ldr r0, [r7, #4] + 80074e4: f000 fbf8 bl 8007cd8 + break; + 80074e8: e06a b.n 80075c0 + + case USBD_STATE_CONFIGURED: + if ((ep_addr & 0x80U) == 0x80U) + 80074ea: f997 300e ldrsb.w r3, [r7, #14] + 80074ee: 2b00 cmp r3, #0 + 80074f0: da11 bge.n 8007516 + { + if (pdev->ep_in[ep_addr & 0xFU].is_used == 0U) + 80074f2: 7bbb ldrb r3, [r7, #14] + 80074f4: f003 020f and.w r2, r3, #15 + 80074f8: 6879 ldr r1, [r7, #4] + 80074fa: 4613 mov r3, r2 + 80074fc: 009b lsls r3, r3, #2 + 80074fe: 4413 add r3, r2 + 8007500: 009b lsls r3, r3, #2 + 8007502: 440b add r3, r1 + 8007504: 3318 adds r3, #24 + 8007506: 681b ldr r3, [r3, #0] + 8007508: 2b00 cmp r3, #0 + 800750a: d117 bne.n 800753c + { + USBD_CtlError(pdev, req); + 800750c: 6839 ldr r1, [r7, #0] + 800750e: 6878 ldr r0, [r7, #4] + 8007510: f000 fb78 bl 8007c04 + break; + 8007514: e054 b.n 80075c0 + } + } + else + { + if (pdev->ep_out[ep_addr & 0xFU].is_used == 0U) + 8007516: 7bbb ldrb r3, [r7, #14] + 8007518: f003 020f and.w r2, r3, #15 + 800751c: 6879 ldr r1, [r7, #4] + 800751e: 4613 mov r3, r2 + 8007520: 009b lsls r3, r3, #2 + 8007522: 4413 add r3, r2 + 8007524: 009b lsls r3, r3, #2 + 8007526: 440b add r3, r1 + 8007528: f503 73ac add.w r3, r3, #344 @ 0x158 + 800752c: 681b ldr r3, [r3, #0] + 800752e: 2b00 cmp r3, #0 + 8007530: d104 bne.n 800753c + { + USBD_CtlError(pdev, req); + 8007532: 6839 ldr r1, [r7, #0] + 8007534: 6878 ldr r0, [r7, #4] + 8007536: f000 fb65 bl 8007c04 + break; + 800753a: e041 b.n 80075c0 + } + } + + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + 800753c: f997 300e ldrsb.w r3, [r7, #14] + 8007540: 2b00 cmp r3, #0 + 8007542: da0b bge.n 800755c + 8007544: 7bbb ldrb r3, [r7, #14] + 8007546: f003 027f and.w r2, r3, #127 @ 0x7f + 800754a: 4613 mov r3, r2 + 800754c: 009b lsls r3, r3, #2 + 800754e: 4413 add r3, r2 + 8007550: 009b lsls r3, r3, #2 + 8007552: 3310 adds r3, #16 + 8007554: 687a ldr r2, [r7, #4] + 8007556: 4413 add r3, r2 + 8007558: 3304 adds r3, #4 + 800755a: e00b b.n 8007574 + &pdev->ep_out[ep_addr & 0x7FU]; + 800755c: 7bbb ldrb r3, [r7, #14] + 800755e: f003 027f and.w r2, r3, #127 @ 0x7f + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + 8007562: 4613 mov r3, r2 + 8007564: 009b lsls r3, r3, #2 + 8007566: 4413 add r3, r2 + 8007568: 009b lsls r3, r3, #2 + 800756a: f503 73a8 add.w r3, r3, #336 @ 0x150 + 800756e: 687a ldr r2, [r7, #4] + 8007570: 4413 add r3, r2 + 8007572: 3304 adds r3, #4 + 8007574: 60bb str r3, [r7, #8] + + if ((ep_addr == 0x00U) || (ep_addr == 0x80U)) + 8007576: 7bbb ldrb r3, [r7, #14] + 8007578: 2b00 cmp r3, #0 + 800757a: d002 beq.n 8007582 + 800757c: 7bbb ldrb r3, [r7, #14] + 800757e: 2b80 cmp r3, #128 @ 0x80 + 8007580: d103 bne.n 800758a + { + pep->status = 0x0000U; + 8007582: 68bb ldr r3, [r7, #8] + 8007584: 2200 movs r2, #0 + 8007586: 601a str r2, [r3, #0] + 8007588: e00e b.n 80075a8 + } + else if (USBD_LL_IsStallEP(pdev, ep_addr)) + 800758a: 7bbb ldrb r3, [r7, #14] + 800758c: 4619 mov r1, r3 + 800758e: 6878 ldr r0, [r7, #4] + 8007590: f001 f850 bl 8008634 + 8007594: 4603 mov r3, r0 + 8007596: 2b00 cmp r3, #0 + 8007598: d003 beq.n 80075a2 + { + pep->status = 0x0001U; + 800759a: 68bb ldr r3, [r7, #8] + 800759c: 2201 movs r2, #1 + 800759e: 601a str r2, [r3, #0] + 80075a0: e002 b.n 80075a8 + } + else + { + pep->status = 0x0000U; + 80075a2: 68bb ldr r3, [r7, #8] + 80075a4: 2200 movs r2, #0 + 80075a6: 601a str r2, [r3, #0] + } + + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pep->status, 2U); + 80075a8: 68bb ldr r3, [r7, #8] + 80075aa: 2202 movs r2, #2 + 80075ac: 4619 mov r1, r3 + 80075ae: 6878 ldr r0, [r7, #4] + 80075b0: f000 fb92 bl 8007cd8 + break; + 80075b4: e004 b.n 80075c0 + + default: + USBD_CtlError(pdev, req); + 80075b6: 6839 ldr r1, [r7, #0] + 80075b8: 6878 ldr r0, [r7, #4] + 80075ba: f000 fb23 bl 8007c04 + break; + 80075be: bf00 nop + } + break; + 80075c0: e004 b.n 80075cc + + default: + USBD_CtlError(pdev, req); + 80075c2: 6839 ldr r1, [r7, #0] + 80075c4: 6878 ldr r0, [r7, #4] + 80075c6: f000 fb1d bl 8007c04 + break; + 80075ca: bf00 nop + } + break; + 80075cc: e004 b.n 80075d8 + + default: + USBD_CtlError(pdev, req); + 80075ce: 6839 ldr r1, [r7, #0] + 80075d0: 6878 ldr r0, [r7, #4] + 80075d2: f000 fb17 bl 8007c04 + break; + 80075d6: bf00 nop + } + + return ret; + 80075d8: 7bfb ldrb r3, [r7, #15] +} + 80075da: 4618 mov r0, r3 + 80075dc: 3710 adds r7, #16 + 80075de: 46bd mov sp, r7 + 80075e0: bd80 pop {r7, pc} + ... + +080075e4 : +* @param req: usb request +* @retval status +*/ +static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 80075e4: b580 push {r7, lr} + 80075e6: b084 sub sp, #16 + 80075e8: af00 add r7, sp, #0 + 80075ea: 6078 str r0, [r7, #4] + 80075ec: 6039 str r1, [r7, #0] + uint16_t len = 0U; + 80075ee: 2300 movs r3, #0 + 80075f0: 813b strh r3, [r7, #8] + uint8_t *pbuf = NULL; + 80075f2: 2300 movs r3, #0 + 80075f4: 60fb str r3, [r7, #12] + uint8_t err = 0U; + 80075f6: 2300 movs r3, #0 + 80075f8: 72fb strb r3, [r7, #11] + + switch (req->wValue >> 8) + 80075fa: 683b ldr r3, [r7, #0] + 80075fc: 885b ldrh r3, [r3, #2] + 80075fe: 0a1b lsrs r3, r3, #8 + 8007600: b29b uxth r3, r3 + 8007602: 3b01 subs r3, #1 + 8007604: 2b06 cmp r3, #6 + 8007606: f200 8128 bhi.w 800785a + 800760a: a201 add r2, pc, #4 @ (adr r2, 8007610 ) + 800760c: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8007610: 0800762d .word 0x0800762d + 8007614: 08007645 .word 0x08007645 + 8007618: 08007685 .word 0x08007685 + 800761c: 0800785b .word 0x0800785b + 8007620: 0800785b .word 0x0800785b + 8007624: 080077fb .word 0x080077fb + 8007628: 08007827 .word 0x08007827 + err++; + } + break; +#endif + case USB_DESC_TYPE_DEVICE: + pbuf = pdev->pDesc->GetDeviceDescriptor(pdev->dev_speed, &len); + 800762c: 687b ldr r3, [r7, #4] + 800762e: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 8007632: 681b ldr r3, [r3, #0] + 8007634: 687a ldr r2, [r7, #4] + 8007636: 7c12 ldrb r2, [r2, #16] + 8007638: f107 0108 add.w r1, r7, #8 + 800763c: 4610 mov r0, r2 + 800763e: 4798 blx r3 + 8007640: 60f8 str r0, [r7, #12] + break; + 8007642: e112 b.n 800786a + + case USB_DESC_TYPE_CONFIGURATION: + if (pdev->dev_speed == USBD_SPEED_HIGH) + 8007644: 687b ldr r3, [r7, #4] + 8007646: 7c1b ldrb r3, [r3, #16] + 8007648: 2b00 cmp r3, #0 + 800764a: d10d bne.n 8007668 + { + pbuf = pdev->pClass->GetHSConfigDescriptor(&len); + 800764c: 687b ldr r3, [r7, #4] + 800764e: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007652: 6a9b ldr r3, [r3, #40] @ 0x28 + 8007654: f107 0208 add.w r2, r7, #8 + 8007658: 4610 mov r0, r2 + 800765a: 4798 blx r3 + 800765c: 60f8 str r0, [r7, #12] + pbuf[1] = USB_DESC_TYPE_CONFIGURATION; + 800765e: 68fb ldr r3, [r7, #12] + 8007660: 3301 adds r3, #1 + 8007662: 2202 movs r2, #2 + 8007664: 701a strb r2, [r3, #0] + else + { + pbuf = pdev->pClass->GetFSConfigDescriptor(&len); + pbuf[1] = USB_DESC_TYPE_CONFIGURATION; + } + break; + 8007666: e100 b.n 800786a + pbuf = pdev->pClass->GetFSConfigDescriptor(&len); + 8007668: 687b ldr r3, [r7, #4] + 800766a: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 800766e: 6adb ldr r3, [r3, #44] @ 0x2c + 8007670: f107 0208 add.w r2, r7, #8 + 8007674: 4610 mov r0, r2 + 8007676: 4798 blx r3 + 8007678: 60f8 str r0, [r7, #12] + pbuf[1] = USB_DESC_TYPE_CONFIGURATION; + 800767a: 68fb ldr r3, [r7, #12] + 800767c: 3301 adds r3, #1 + 800767e: 2202 movs r2, #2 + 8007680: 701a strb r2, [r3, #0] + break; + 8007682: e0f2 b.n 800786a + + case USB_DESC_TYPE_STRING: + switch ((uint8_t)(req->wValue)) + 8007684: 683b ldr r3, [r7, #0] + 8007686: 885b ldrh r3, [r3, #2] + 8007688: b2db uxtb r3, r3 + 800768a: 2b05 cmp r3, #5 + 800768c: f200 80ac bhi.w 80077e8 + 8007690: a201 add r2, pc, #4 @ (adr r2, 8007698 ) + 8007692: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8007696: bf00 nop + 8007698: 080076b1 .word 0x080076b1 + 800769c: 080076e5 .word 0x080076e5 + 80076a0: 08007719 .word 0x08007719 + 80076a4: 0800774d .word 0x0800774d + 80076a8: 08007781 .word 0x08007781 + 80076ac: 080077b5 .word 0x080077b5 + { + case USBD_IDX_LANGID_STR: + if (pdev->pDesc->GetLangIDStrDescriptor != NULL) + 80076b0: 687b ldr r3, [r7, #4] + 80076b2: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 80076b6: 685b ldr r3, [r3, #4] + 80076b8: 2b00 cmp r3, #0 + 80076ba: d00b beq.n 80076d4 + { + pbuf = pdev->pDesc->GetLangIDStrDescriptor(pdev->dev_speed, &len); + 80076bc: 687b ldr r3, [r7, #4] + 80076be: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 80076c2: 685b ldr r3, [r3, #4] + 80076c4: 687a ldr r2, [r7, #4] + 80076c6: 7c12 ldrb r2, [r2, #16] + 80076c8: f107 0108 add.w r1, r7, #8 + 80076cc: 4610 mov r0, r2 + 80076ce: 4798 blx r3 + 80076d0: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 80076d2: e091 b.n 80077f8 + USBD_CtlError(pdev, req); + 80076d4: 6839 ldr r1, [r7, #0] + 80076d6: 6878 ldr r0, [r7, #4] + 80076d8: f000 fa94 bl 8007c04 + err++; + 80076dc: 7afb ldrb r3, [r7, #11] + 80076de: 3301 adds r3, #1 + 80076e0: 72fb strb r3, [r7, #11] + break; + 80076e2: e089 b.n 80077f8 + + case USBD_IDX_MFC_STR: + if (pdev->pDesc->GetManufacturerStrDescriptor != NULL) + 80076e4: 687b ldr r3, [r7, #4] + 80076e6: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 80076ea: 689b ldr r3, [r3, #8] + 80076ec: 2b00 cmp r3, #0 + 80076ee: d00b beq.n 8007708 + { + pbuf = pdev->pDesc->GetManufacturerStrDescriptor(pdev->dev_speed, &len); + 80076f0: 687b ldr r3, [r7, #4] + 80076f2: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 80076f6: 689b ldr r3, [r3, #8] + 80076f8: 687a ldr r2, [r7, #4] + 80076fa: 7c12 ldrb r2, [r2, #16] + 80076fc: f107 0108 add.w r1, r7, #8 + 8007700: 4610 mov r0, r2 + 8007702: 4798 blx r3 + 8007704: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 8007706: e077 b.n 80077f8 + USBD_CtlError(pdev, req); + 8007708: 6839 ldr r1, [r7, #0] + 800770a: 6878 ldr r0, [r7, #4] + 800770c: f000 fa7a bl 8007c04 + err++; + 8007710: 7afb ldrb r3, [r7, #11] + 8007712: 3301 adds r3, #1 + 8007714: 72fb strb r3, [r7, #11] + break; + 8007716: e06f b.n 80077f8 + + case USBD_IDX_PRODUCT_STR: + if (pdev->pDesc->GetProductStrDescriptor != NULL) + 8007718: 687b ldr r3, [r7, #4] + 800771a: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 800771e: 68db ldr r3, [r3, #12] + 8007720: 2b00 cmp r3, #0 + 8007722: d00b beq.n 800773c + { + pbuf = pdev->pDesc->GetProductStrDescriptor(pdev->dev_speed, &len); + 8007724: 687b ldr r3, [r7, #4] + 8007726: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 800772a: 68db ldr r3, [r3, #12] + 800772c: 687a ldr r2, [r7, #4] + 800772e: 7c12 ldrb r2, [r2, #16] + 8007730: f107 0108 add.w r1, r7, #8 + 8007734: 4610 mov r0, r2 + 8007736: 4798 blx r3 + 8007738: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 800773a: e05d b.n 80077f8 + USBD_CtlError(pdev, req); + 800773c: 6839 ldr r1, [r7, #0] + 800773e: 6878 ldr r0, [r7, #4] + 8007740: f000 fa60 bl 8007c04 + err++; + 8007744: 7afb ldrb r3, [r7, #11] + 8007746: 3301 adds r3, #1 + 8007748: 72fb strb r3, [r7, #11] + break; + 800774a: e055 b.n 80077f8 + + case USBD_IDX_SERIAL_STR: + if (pdev->pDesc->GetSerialStrDescriptor != NULL) + 800774c: 687b ldr r3, [r7, #4] + 800774e: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 8007752: 691b ldr r3, [r3, #16] + 8007754: 2b00 cmp r3, #0 + 8007756: d00b beq.n 8007770 + { + pbuf = pdev->pDesc->GetSerialStrDescriptor(pdev->dev_speed, &len); + 8007758: 687b ldr r3, [r7, #4] + 800775a: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 800775e: 691b ldr r3, [r3, #16] + 8007760: 687a ldr r2, [r7, #4] + 8007762: 7c12 ldrb r2, [r2, #16] + 8007764: f107 0108 add.w r1, r7, #8 + 8007768: 4610 mov r0, r2 + 800776a: 4798 blx r3 + 800776c: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 800776e: e043 b.n 80077f8 + USBD_CtlError(pdev, req); + 8007770: 6839 ldr r1, [r7, #0] + 8007772: 6878 ldr r0, [r7, #4] + 8007774: f000 fa46 bl 8007c04 + err++; + 8007778: 7afb ldrb r3, [r7, #11] + 800777a: 3301 adds r3, #1 + 800777c: 72fb strb r3, [r7, #11] + break; + 800777e: e03b b.n 80077f8 + + case USBD_IDX_CONFIG_STR: + if (pdev->pDesc->GetConfigurationStrDescriptor != NULL) + 8007780: 687b ldr r3, [r7, #4] + 8007782: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 8007786: 695b ldr r3, [r3, #20] + 8007788: 2b00 cmp r3, #0 + 800778a: d00b beq.n 80077a4 + { + pbuf = pdev->pDesc->GetConfigurationStrDescriptor(pdev->dev_speed, &len); + 800778c: 687b ldr r3, [r7, #4] + 800778e: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 8007792: 695b ldr r3, [r3, #20] + 8007794: 687a ldr r2, [r7, #4] + 8007796: 7c12 ldrb r2, [r2, #16] + 8007798: f107 0108 add.w r1, r7, #8 + 800779c: 4610 mov r0, r2 + 800779e: 4798 blx r3 + 80077a0: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 80077a2: e029 b.n 80077f8 + USBD_CtlError(pdev, req); + 80077a4: 6839 ldr r1, [r7, #0] + 80077a6: 6878 ldr r0, [r7, #4] + 80077a8: f000 fa2c bl 8007c04 + err++; + 80077ac: 7afb ldrb r3, [r7, #11] + 80077ae: 3301 adds r3, #1 + 80077b0: 72fb strb r3, [r7, #11] + break; + 80077b2: e021 b.n 80077f8 + + case USBD_IDX_INTERFACE_STR: + if (pdev->pDesc->GetInterfaceStrDescriptor != NULL) + 80077b4: 687b ldr r3, [r7, #4] + 80077b6: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 80077ba: 699b ldr r3, [r3, #24] + 80077bc: 2b00 cmp r3, #0 + 80077be: d00b beq.n 80077d8 + { + pbuf = pdev->pDesc->GetInterfaceStrDescriptor(pdev->dev_speed, &len); + 80077c0: 687b ldr r3, [r7, #4] + 80077c2: f8d3 32b0 ldr.w r3, [r3, #688] @ 0x2b0 + 80077c6: 699b ldr r3, [r3, #24] + 80077c8: 687a ldr r2, [r7, #4] + 80077ca: 7c12 ldrb r2, [r2, #16] + 80077cc: f107 0108 add.w r1, r7, #8 + 80077d0: 4610 mov r0, r2 + 80077d2: 4798 blx r3 + 80077d4: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 80077d6: e00f b.n 80077f8 + USBD_CtlError(pdev, req); + 80077d8: 6839 ldr r1, [r7, #0] + 80077da: 6878 ldr r0, [r7, #4] + 80077dc: f000 fa12 bl 8007c04 + err++; + 80077e0: 7afb ldrb r3, [r7, #11] + 80077e2: 3301 adds r3, #1 + 80077e4: 72fb strb r3, [r7, #11] + break; + 80077e6: e007 b.n 80077f8 + USBD_CtlError(pdev, req); + err++; + } + break; +#else + USBD_CtlError(pdev, req); + 80077e8: 6839 ldr r1, [r7, #0] + 80077ea: 6878 ldr r0, [r7, #4] + 80077ec: f000 fa0a bl 8007c04 + err++; + 80077f0: 7afb ldrb r3, [r7, #11] + 80077f2: 3301 adds r3, #1 + 80077f4: 72fb strb r3, [r7, #11] +#endif + } + break; + 80077f6: e038 b.n 800786a + 80077f8: e037 b.n 800786a + + case USB_DESC_TYPE_DEVICE_QUALIFIER: + if (pdev->dev_speed == USBD_SPEED_HIGH) + 80077fa: 687b ldr r3, [r7, #4] + 80077fc: 7c1b ldrb r3, [r3, #16] + 80077fe: 2b00 cmp r3, #0 + 8007800: d109 bne.n 8007816 + { + pbuf = pdev->pClass->GetDeviceQualifierDescriptor(&len); + 8007802: 687b ldr r3, [r7, #4] + 8007804: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007808: 6b5b ldr r3, [r3, #52] @ 0x34 + 800780a: f107 0208 add.w r2, r7, #8 + 800780e: 4610 mov r0, r2 + 8007810: 4798 blx r3 + 8007812: 60f8 str r0, [r7, #12] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 8007814: e029 b.n 800786a + USBD_CtlError(pdev, req); + 8007816: 6839 ldr r1, [r7, #0] + 8007818: 6878 ldr r0, [r7, #4] + 800781a: f000 f9f3 bl 8007c04 + err++; + 800781e: 7afb ldrb r3, [r7, #11] + 8007820: 3301 adds r3, #1 + 8007822: 72fb strb r3, [r7, #11] + break; + 8007824: e021 b.n 800786a + + case USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION: + if (pdev->dev_speed == USBD_SPEED_HIGH) + 8007826: 687b ldr r3, [r7, #4] + 8007828: 7c1b ldrb r3, [r3, #16] + 800782a: 2b00 cmp r3, #0 + 800782c: d10d bne.n 800784a + { + pbuf = pdev->pClass->GetOtherSpeedConfigDescriptor(&len); + 800782e: 687b ldr r3, [r7, #4] + 8007830: f8d3 32b4 ldr.w r3, [r3, #692] @ 0x2b4 + 8007834: 6b1b ldr r3, [r3, #48] @ 0x30 + 8007836: f107 0208 add.w r2, r7, #8 + 800783a: 4610 mov r0, r2 + 800783c: 4798 blx r3 + 800783e: 60f8 str r0, [r7, #12] + pbuf[1] = USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION; + 8007840: 68fb ldr r3, [r7, #12] + 8007842: 3301 adds r3, #1 + 8007844: 2207 movs r2, #7 + 8007846: 701a strb r2, [r3, #0] + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + 8007848: e00f b.n 800786a + USBD_CtlError(pdev, req); + 800784a: 6839 ldr r1, [r7, #0] + 800784c: 6878 ldr r0, [r7, #4] + 800784e: f000 f9d9 bl 8007c04 + err++; + 8007852: 7afb ldrb r3, [r7, #11] + 8007854: 3301 adds r3, #1 + 8007856: 72fb strb r3, [r7, #11] + break; + 8007858: e007 b.n 800786a + + default: + USBD_CtlError(pdev, req); + 800785a: 6839 ldr r1, [r7, #0] + 800785c: 6878 ldr r0, [r7, #4] + 800785e: f000 f9d1 bl 8007c04 + err++; + 8007862: 7afb ldrb r3, [r7, #11] + 8007864: 3301 adds r3, #1 + 8007866: 72fb strb r3, [r7, #11] + break; + 8007868: bf00 nop + } + + if (err != 0U) + 800786a: 7afb ldrb r3, [r7, #11] + 800786c: 2b00 cmp r3, #0 + 800786e: d11c bne.n 80078aa + { + return; + } + else + { + if ((len != 0U) && (req->wLength != 0U)) + 8007870: 893b ldrh r3, [r7, #8] + 8007872: 2b00 cmp r3, #0 + 8007874: d011 beq.n 800789a + 8007876: 683b ldr r3, [r7, #0] + 8007878: 88db ldrh r3, [r3, #6] + 800787a: 2b00 cmp r3, #0 + 800787c: d00d beq.n 800789a + { + len = MIN(len, req->wLength); + 800787e: 683b ldr r3, [r7, #0] + 8007880: 88da ldrh r2, [r3, #6] + 8007882: 893b ldrh r3, [r7, #8] + 8007884: 4293 cmp r3, r2 + 8007886: bf28 it cs + 8007888: 4613 movcs r3, r2 + 800788a: b29b uxth r3, r3 + 800788c: 813b strh r3, [r7, #8] + (void)USBD_CtlSendData(pdev, pbuf, len); + 800788e: 893b ldrh r3, [r7, #8] + 8007890: 461a mov r2, r3 + 8007892: 68f9 ldr r1, [r7, #12] + 8007894: 6878 ldr r0, [r7, #4] + 8007896: f000 fa1f bl 8007cd8 + } + + if (req->wLength == 0U) + 800789a: 683b ldr r3, [r7, #0] + 800789c: 88db ldrh r3, [r3, #6] + 800789e: 2b00 cmp r3, #0 + 80078a0: d104 bne.n 80078ac + { + (void)USBD_CtlSendStatus(pdev); + 80078a2: 6878 ldr r0, [r7, #4] + 80078a4: f000 fa76 bl 8007d94 + 80078a8: e000 b.n 80078ac + return; + 80078aa: bf00 nop + } + } +} + 80078ac: 3710 adds r7, #16 + 80078ae: 46bd mov sp, r7 + 80078b0: bd80 pop {r7, pc} + 80078b2: bf00 nop + +080078b4 : +* @param req: usb request +* @retval status +*/ +static void USBD_SetAddress(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 80078b4: b580 push {r7, lr} + 80078b6: b084 sub sp, #16 + 80078b8: af00 add r7, sp, #0 + 80078ba: 6078 str r0, [r7, #4] + 80078bc: 6039 str r1, [r7, #0] + uint8_t dev_addr; + + if ((req->wIndex == 0U) && (req->wLength == 0U) && (req->wValue < 128U)) + 80078be: 683b ldr r3, [r7, #0] + 80078c0: 889b ldrh r3, [r3, #4] + 80078c2: 2b00 cmp r3, #0 + 80078c4: d130 bne.n 8007928 + 80078c6: 683b ldr r3, [r7, #0] + 80078c8: 88db ldrh r3, [r3, #6] + 80078ca: 2b00 cmp r3, #0 + 80078cc: d12c bne.n 8007928 + 80078ce: 683b ldr r3, [r7, #0] + 80078d0: 885b ldrh r3, [r3, #2] + 80078d2: 2b7f cmp r3, #127 @ 0x7f + 80078d4: d828 bhi.n 8007928 + { + dev_addr = (uint8_t)(req->wValue) & 0x7FU; + 80078d6: 683b ldr r3, [r7, #0] + 80078d8: 885b ldrh r3, [r3, #2] + 80078da: b2db uxtb r3, r3 + 80078dc: f003 037f and.w r3, r3, #127 @ 0x7f + 80078e0: 73fb strb r3, [r7, #15] + + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 80078e2: 687b ldr r3, [r7, #4] + 80078e4: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 80078e8: 2b03 cmp r3, #3 + 80078ea: d104 bne.n 80078f6 + { + USBD_CtlError(pdev, req); + 80078ec: 6839 ldr r1, [r7, #0] + 80078ee: 6878 ldr r0, [r7, #4] + 80078f0: f000 f988 bl 8007c04 + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 80078f4: e01d b.n 8007932 + } + else + { + pdev->dev_address = dev_addr; + 80078f6: 687b ldr r3, [r7, #4] + 80078f8: 7bfa ldrb r2, [r7, #15] + 80078fa: f883 229e strb.w r2, [r3, #670] @ 0x29e + USBD_LL_SetUSBAddress(pdev, dev_addr); + 80078fe: 7bfb ldrb r3, [r7, #15] + 8007900: 4619 mov r1, r3 + 8007902: 6878 ldr r0, [r7, #4] + 8007904: f000 fec1 bl 800868a + USBD_CtlSendStatus(pdev); + 8007908: 6878 ldr r0, [r7, #4] + 800790a: f000 fa43 bl 8007d94 + + if (dev_addr != 0U) + 800790e: 7bfb ldrb r3, [r7, #15] + 8007910: 2b00 cmp r3, #0 + 8007912: d004 beq.n 800791e + { + pdev->dev_state = USBD_STATE_ADDRESSED; + 8007914: 687b ldr r3, [r7, #4] + 8007916: 2202 movs r2, #2 + 8007918: f883 229c strb.w r2, [r3, #668] @ 0x29c + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 800791c: e009 b.n 8007932 + } + else + { + pdev->dev_state = USBD_STATE_DEFAULT; + 800791e: 687b ldr r3, [r7, #4] + 8007920: 2201 movs r2, #1 + 8007922: f883 229c strb.w r2, [r3, #668] @ 0x29c + if (pdev->dev_state == USBD_STATE_CONFIGURED) + 8007926: e004 b.n 8007932 + } + } + } + else + { + USBD_CtlError(pdev, req); + 8007928: 6839 ldr r1, [r7, #0] + 800792a: 6878 ldr r0, [r7, #4] + 800792c: f000 f96a bl 8007c04 + } +} + 8007930: bf00 nop + 8007932: bf00 nop + 8007934: 3710 adds r7, #16 + 8007936: 46bd mov sp, r7 + 8007938: bd80 pop {r7, pc} + ... + +0800793c : +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + 800793c: b580 push {r7, lr} + 800793e: b082 sub sp, #8 + 8007940: af00 add r7, sp, #0 + 8007942: 6078 str r0, [r7, #4] + 8007944: 6039 str r1, [r7, #0] + static uint8_t cfgidx; + + cfgidx = (uint8_t)(req->wValue); + 8007946: 683b ldr r3, [r7, #0] + 8007948: 885b ldrh r3, [r3, #2] + 800794a: b2da uxtb r2, r3 + 800794c: 4b41 ldr r3, [pc, #260] @ (8007a54 ) + 800794e: 701a strb r2, [r3, #0] + + if (cfgidx > USBD_MAX_NUM_CONFIGURATION) + 8007950: 4b40 ldr r3, [pc, #256] @ (8007a54 ) + 8007952: 781b ldrb r3, [r3, #0] + 8007954: 2b01 cmp r3, #1 + 8007956: d904 bls.n 8007962 + { + USBD_CtlError(pdev, req); + 8007958: 6839 ldr r1, [r7, #0] + 800795a: 6878 ldr r0, [r7, #4] + 800795c: f000 f952 bl 8007c04 + 8007960: e075 b.n 8007a4e + } + else + { + switch (pdev->dev_state) + 8007962: 687b ldr r3, [r7, #4] + 8007964: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007968: 2b02 cmp r3, #2 + 800796a: d002 beq.n 8007972 + 800796c: 2b03 cmp r3, #3 + 800796e: d023 beq.n 80079b8 + 8007970: e062 b.n 8007a38 + { + case USBD_STATE_ADDRESSED: + if (cfgidx) + 8007972: 4b38 ldr r3, [pc, #224] @ (8007a54 ) + 8007974: 781b ldrb r3, [r3, #0] + 8007976: 2b00 cmp r3, #0 + 8007978: d01a beq.n 80079b0 + { + pdev->dev_config = cfgidx; + 800797a: 4b36 ldr r3, [pc, #216] @ (8007a54 ) + 800797c: 781b ldrb r3, [r3, #0] + 800797e: 461a mov r2, r3 + 8007980: 687b ldr r3, [r7, #4] + 8007982: 605a str r2, [r3, #4] + pdev->dev_state = USBD_STATE_CONFIGURED; + 8007984: 687b ldr r3, [r7, #4] + 8007986: 2203 movs r2, #3 + 8007988: f883 229c strb.w r2, [r3, #668] @ 0x29c + if (USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL) + 800798c: 4b31 ldr r3, [pc, #196] @ (8007a54 ) + 800798e: 781b ldrb r3, [r3, #0] + 8007990: 4619 mov r1, r3 + 8007992: 6878 ldr r0, [r7, #4] + 8007994: f7ff f9e7 bl 8006d66 + 8007998: 4603 mov r3, r0 + 800799a: 2b02 cmp r3, #2 + 800799c: d104 bne.n 80079a8 + { + USBD_CtlError(pdev, req); + 800799e: 6839 ldr r1, [r7, #0] + 80079a0: 6878 ldr r0, [r7, #4] + 80079a2: f000 f92f bl 8007c04 + return; + 80079a6: e052 b.n 8007a4e + } + USBD_CtlSendStatus(pdev); + 80079a8: 6878 ldr r0, [r7, #4] + 80079aa: f000 f9f3 bl 8007d94 + } + else + { + USBD_CtlSendStatus(pdev); + } + break; + 80079ae: e04e b.n 8007a4e + USBD_CtlSendStatus(pdev); + 80079b0: 6878 ldr r0, [r7, #4] + 80079b2: f000 f9ef bl 8007d94 + break; + 80079b6: e04a b.n 8007a4e + + case USBD_STATE_CONFIGURED: + if (cfgidx == 0U) + 80079b8: 4b26 ldr r3, [pc, #152] @ (8007a54 ) + 80079ba: 781b ldrb r3, [r3, #0] + 80079bc: 2b00 cmp r3, #0 + 80079be: d112 bne.n 80079e6 + { + pdev->dev_state = USBD_STATE_ADDRESSED; + 80079c0: 687b ldr r3, [r7, #4] + 80079c2: 2202 movs r2, #2 + 80079c4: f883 229c strb.w r2, [r3, #668] @ 0x29c + pdev->dev_config = cfgidx; + 80079c8: 4b22 ldr r3, [pc, #136] @ (8007a54 ) + 80079ca: 781b ldrb r3, [r3, #0] + 80079cc: 461a mov r2, r3 + 80079ce: 687b ldr r3, [r7, #4] + 80079d0: 605a str r2, [r3, #4] + USBD_ClrClassConfig(pdev, cfgidx); + 80079d2: 4b20 ldr r3, [pc, #128] @ (8007a54 ) + 80079d4: 781b ldrb r3, [r3, #0] + 80079d6: 4619 mov r1, r3 + 80079d8: 6878 ldr r0, [r7, #4] + 80079da: f7ff f9e3 bl 8006da4 + USBD_CtlSendStatus(pdev); + 80079de: 6878 ldr r0, [r7, #4] + 80079e0: f000 f9d8 bl 8007d94 + } + else + { + USBD_CtlSendStatus(pdev); + } + break; + 80079e4: e033 b.n 8007a4e + else if (cfgidx != pdev->dev_config) + 80079e6: 4b1b ldr r3, [pc, #108] @ (8007a54 ) + 80079e8: 781b ldrb r3, [r3, #0] + 80079ea: 461a mov r2, r3 + 80079ec: 687b ldr r3, [r7, #4] + 80079ee: 685b ldr r3, [r3, #4] + 80079f0: 429a cmp r2, r3 + 80079f2: d01d beq.n 8007a30 + USBD_ClrClassConfig(pdev, (uint8_t)pdev->dev_config); + 80079f4: 687b ldr r3, [r7, #4] + 80079f6: 685b ldr r3, [r3, #4] + 80079f8: b2db uxtb r3, r3 + 80079fa: 4619 mov r1, r3 + 80079fc: 6878 ldr r0, [r7, #4] + 80079fe: f7ff f9d1 bl 8006da4 + pdev->dev_config = cfgidx; + 8007a02: 4b14 ldr r3, [pc, #80] @ (8007a54 ) + 8007a04: 781b ldrb r3, [r3, #0] + 8007a06: 461a mov r2, r3 + 8007a08: 687b ldr r3, [r7, #4] + 8007a0a: 605a str r2, [r3, #4] + if (USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL) + 8007a0c: 4b11 ldr r3, [pc, #68] @ (8007a54 ) + 8007a0e: 781b ldrb r3, [r3, #0] + 8007a10: 4619 mov r1, r3 + 8007a12: 6878 ldr r0, [r7, #4] + 8007a14: f7ff f9a7 bl 8006d66 + 8007a18: 4603 mov r3, r0 + 8007a1a: 2b02 cmp r3, #2 + 8007a1c: d104 bne.n 8007a28 + USBD_CtlError(pdev, req); + 8007a1e: 6839 ldr r1, [r7, #0] + 8007a20: 6878 ldr r0, [r7, #4] + 8007a22: f000 f8ef bl 8007c04 + return; + 8007a26: e012 b.n 8007a4e + USBD_CtlSendStatus(pdev); + 8007a28: 6878 ldr r0, [r7, #4] + 8007a2a: f000 f9b3 bl 8007d94 + break; + 8007a2e: e00e b.n 8007a4e + USBD_CtlSendStatus(pdev); + 8007a30: 6878 ldr r0, [r7, #4] + 8007a32: f000 f9af bl 8007d94 + break; + 8007a36: e00a b.n 8007a4e + + default: + USBD_CtlError(pdev, req); + 8007a38: 6839 ldr r1, [r7, #0] + 8007a3a: 6878 ldr r0, [r7, #4] + 8007a3c: f000 f8e2 bl 8007c04 + USBD_ClrClassConfig(pdev, cfgidx); + 8007a40: 4b04 ldr r3, [pc, #16] @ (8007a54 ) + 8007a42: 781b ldrb r3, [r3, #0] + 8007a44: 4619 mov r1, r3 + 8007a46: 6878 ldr r0, [r7, #4] + 8007a48: f7ff f9ac bl 8006da4 + break; + 8007a4c: bf00 nop + } + } +} + 8007a4e: 3708 adds r7, #8 + 8007a50: 46bd mov sp, r7 + 8007a52: bd80 pop {r7, pc} + 8007a54: 200002c8 .word 0x200002c8 + +08007a58 : +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + 8007a58: b580 push {r7, lr} + 8007a5a: b082 sub sp, #8 + 8007a5c: af00 add r7, sp, #0 + 8007a5e: 6078 str r0, [r7, #4] + 8007a60: 6039 str r1, [r7, #0] + if (req->wLength != 1U) + 8007a62: 683b ldr r3, [r7, #0] + 8007a64: 88db ldrh r3, [r3, #6] + 8007a66: 2b01 cmp r3, #1 + 8007a68: d004 beq.n 8007a74 + { + USBD_CtlError(pdev, req); + 8007a6a: 6839 ldr r1, [r7, #0] + 8007a6c: 6878 ldr r0, [r7, #4] + 8007a6e: f000 f8c9 bl 8007c04 + default: + USBD_CtlError(pdev, req); + break; + } + } +} + 8007a72: e022 b.n 8007aba + switch (pdev->dev_state) + 8007a74: 687b ldr r3, [r7, #4] + 8007a76: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007a7a: 2b02 cmp r3, #2 + 8007a7c: dc02 bgt.n 8007a84 + 8007a7e: 2b00 cmp r3, #0 + 8007a80: dc03 bgt.n 8007a8a + 8007a82: e015 b.n 8007ab0 + 8007a84: 2b03 cmp r3, #3 + 8007a86: d00b beq.n 8007aa0 + 8007a88: e012 b.n 8007ab0 + pdev->dev_default_config = 0U; + 8007a8a: 687b ldr r3, [r7, #4] + 8007a8c: 2200 movs r2, #0 + 8007a8e: 609a str r2, [r3, #8] + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_default_config, 1U); + 8007a90: 687b ldr r3, [r7, #4] + 8007a92: 3308 adds r3, #8 + 8007a94: 2201 movs r2, #1 + 8007a96: 4619 mov r1, r3 + 8007a98: 6878 ldr r0, [r7, #4] + 8007a9a: f000 f91d bl 8007cd8 + break; + 8007a9e: e00c b.n 8007aba + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_config, 1U); + 8007aa0: 687b ldr r3, [r7, #4] + 8007aa2: 3304 adds r3, #4 + 8007aa4: 2201 movs r2, #1 + 8007aa6: 4619 mov r1, r3 + 8007aa8: 6878 ldr r0, [r7, #4] + 8007aaa: f000 f915 bl 8007cd8 + break; + 8007aae: e004 b.n 8007aba + USBD_CtlError(pdev, req); + 8007ab0: 6839 ldr r1, [r7, #0] + 8007ab2: 6878 ldr r0, [r7, #4] + 8007ab4: f000 f8a6 bl 8007c04 + break; + 8007ab8: bf00 nop +} + 8007aba: bf00 nop + 8007abc: 3708 adds r7, #8 + 8007abe: 46bd mov sp, r7 + 8007ac0: bd80 pop {r7, pc} + +08007ac2 : +* @param pdev: device instance +* @param req: usb request +* @retval status +*/ +static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + 8007ac2: b580 push {r7, lr} + 8007ac4: b082 sub sp, #8 + 8007ac6: af00 add r7, sp, #0 + 8007ac8: 6078 str r0, [r7, #4] + 8007aca: 6039 str r1, [r7, #0] + switch (pdev->dev_state) + 8007acc: 687b ldr r3, [r7, #4] + 8007ace: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007ad2: 3b01 subs r3, #1 + 8007ad4: 2b02 cmp r3, #2 + 8007ad6: d81e bhi.n 8007b16 + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + case USBD_STATE_CONFIGURED: + if (req->wLength != 0x2U) + 8007ad8: 683b ldr r3, [r7, #0] + 8007ada: 88db ldrh r3, [r3, #6] + 8007adc: 2b02 cmp r3, #2 + 8007ade: d004 beq.n 8007aea + { + USBD_CtlError(pdev, req); + 8007ae0: 6839 ldr r1, [r7, #0] + 8007ae2: 6878 ldr r0, [r7, #4] + 8007ae4: f000 f88e bl 8007c04 + break; + 8007ae8: e01a b.n 8007b20 + } + +#if (USBD_SELF_POWERED == 1U) + pdev->dev_config_status = USB_CONFIG_SELF_POWERED; + 8007aea: 687b ldr r3, [r7, #4] + 8007aec: 2201 movs r2, #1 + 8007aee: 60da str r2, [r3, #12] +#else + pdev->dev_config_status = 0U; +#endif + + if (pdev->dev_remote_wakeup) + 8007af0: 687b ldr r3, [r7, #4] + 8007af2: f8d3 32a4 ldr.w r3, [r3, #676] @ 0x2a4 + 8007af6: 2b00 cmp r3, #0 + 8007af8: d005 beq.n 8007b06 + { + pdev->dev_config_status |= USB_CONFIG_REMOTE_WAKEUP; + 8007afa: 687b ldr r3, [r7, #4] + 8007afc: 68db ldr r3, [r3, #12] + 8007afe: f043 0202 orr.w r2, r3, #2 + 8007b02: 687b ldr r3, [r7, #4] + 8007b04: 60da str r2, [r3, #12] + } + + USBD_CtlSendData(pdev, (uint8_t *)(void *)&pdev->dev_config_status, 2U); + 8007b06: 687b ldr r3, [r7, #4] + 8007b08: 330c adds r3, #12 + 8007b0a: 2202 movs r2, #2 + 8007b0c: 4619 mov r1, r3 + 8007b0e: 6878 ldr r0, [r7, #4] + 8007b10: f000 f8e2 bl 8007cd8 + break; + 8007b14: e004 b.n 8007b20 + + default: + USBD_CtlError(pdev, req); + 8007b16: 6839 ldr r1, [r7, #0] + 8007b18: 6878 ldr r0, [r7, #4] + 8007b1a: f000 f873 bl 8007c04 + break; + 8007b1e: bf00 nop + } +} + 8007b20: bf00 nop + 8007b22: 3708 adds r7, #8 + 8007b24: 46bd mov sp, r7 + 8007b26: bd80 pop {r7, pc} + +08007b28 : +* @param req: usb request +* @retval status +*/ +static void USBD_SetFeature(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8007b28: b580 push {r7, lr} + 8007b2a: b082 sub sp, #8 + 8007b2c: af00 add r7, sp, #0 + 8007b2e: 6078 str r0, [r7, #4] + 8007b30: 6039 str r1, [r7, #0] + if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) + 8007b32: 683b ldr r3, [r7, #0] + 8007b34: 885b ldrh r3, [r3, #2] + 8007b36: 2b01 cmp r3, #1 + 8007b38: d106 bne.n 8007b48 + { + pdev->dev_remote_wakeup = 1U; + 8007b3a: 687b ldr r3, [r7, #4] + 8007b3c: 2201 movs r2, #1 + 8007b3e: f8c3 22a4 str.w r2, [r3, #676] @ 0x2a4 + USBD_CtlSendStatus(pdev); + 8007b42: 6878 ldr r0, [r7, #4] + 8007b44: f000 f926 bl 8007d94 + } +} + 8007b48: bf00 nop + 8007b4a: 3708 adds r7, #8 + 8007b4c: 46bd mov sp, r7 + 8007b4e: bd80 pop {r7, pc} + +08007b50 : +* @param req: usb request +* @retval status +*/ +static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8007b50: b580 push {r7, lr} + 8007b52: b082 sub sp, #8 + 8007b54: af00 add r7, sp, #0 + 8007b56: 6078 str r0, [r7, #4] + 8007b58: 6039 str r1, [r7, #0] + switch (pdev->dev_state) + 8007b5a: 687b ldr r3, [r7, #4] + 8007b5c: f893 329c ldrb.w r3, [r3, #668] @ 0x29c + 8007b60: 3b01 subs r3, #1 + 8007b62: 2b02 cmp r3, #2 + 8007b64: d80b bhi.n 8007b7e + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + case USBD_STATE_CONFIGURED: + if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) + 8007b66: 683b ldr r3, [r7, #0] + 8007b68: 885b ldrh r3, [r3, #2] + 8007b6a: 2b01 cmp r3, #1 + 8007b6c: d10c bne.n 8007b88 + { + pdev->dev_remote_wakeup = 0U; + 8007b6e: 687b ldr r3, [r7, #4] + 8007b70: 2200 movs r2, #0 + 8007b72: f8c3 22a4 str.w r2, [r3, #676] @ 0x2a4 + USBD_CtlSendStatus(pdev); + 8007b76: 6878 ldr r0, [r7, #4] + 8007b78: f000 f90c bl 8007d94 + } + break; + 8007b7c: e004 b.n 8007b88 + + default: + USBD_CtlError(pdev, req); + 8007b7e: 6839 ldr r1, [r7, #0] + 8007b80: 6878 ldr r0, [r7, #4] + 8007b82: f000 f83f bl 8007c04 + break; + 8007b86: e000 b.n 8007b8a + break; + 8007b88: bf00 nop + } +} + 8007b8a: bf00 nop + 8007b8c: 3708 adds r7, #8 + 8007b8e: 46bd mov sp, r7 + 8007b90: bd80 pop {r7, pc} + +08007b92 : +* @param req: usb request +* @retval None +*/ + +void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata) +{ + 8007b92: b480 push {r7} + 8007b94: b083 sub sp, #12 + 8007b96: af00 add r7, sp, #0 + 8007b98: 6078 str r0, [r7, #4] + 8007b9a: 6039 str r1, [r7, #0] + req->bmRequest = *(uint8_t *)(pdata); + 8007b9c: 683b ldr r3, [r7, #0] + 8007b9e: 781a ldrb r2, [r3, #0] + 8007ba0: 687b ldr r3, [r7, #4] + 8007ba2: 701a strb r2, [r3, #0] + req->bRequest = *(uint8_t *)(pdata + 1U); + 8007ba4: 683b ldr r3, [r7, #0] + 8007ba6: 785a ldrb r2, [r3, #1] + 8007ba8: 687b ldr r3, [r7, #4] + 8007baa: 705a strb r2, [r3, #1] + req->wValue = SWAPBYTE(pdata + 2U); + 8007bac: 683b ldr r3, [r7, #0] + 8007bae: 3302 adds r3, #2 + 8007bb0: 781b ldrb r3, [r3, #0] + 8007bb2: 461a mov r2, r3 + 8007bb4: 683b ldr r3, [r7, #0] + 8007bb6: 3303 adds r3, #3 + 8007bb8: 781b ldrb r3, [r3, #0] + 8007bba: 021b lsls r3, r3, #8 + 8007bbc: b29b uxth r3, r3 + 8007bbe: 4413 add r3, r2 + 8007bc0: b29a uxth r2, r3 + 8007bc2: 687b ldr r3, [r7, #4] + 8007bc4: 805a strh r2, [r3, #2] + req->wIndex = SWAPBYTE(pdata + 4U); + 8007bc6: 683b ldr r3, [r7, #0] + 8007bc8: 3304 adds r3, #4 + 8007bca: 781b ldrb r3, [r3, #0] + 8007bcc: 461a mov r2, r3 + 8007bce: 683b ldr r3, [r7, #0] + 8007bd0: 3305 adds r3, #5 + 8007bd2: 781b ldrb r3, [r3, #0] + 8007bd4: 021b lsls r3, r3, #8 + 8007bd6: b29b uxth r3, r3 + 8007bd8: 4413 add r3, r2 + 8007bda: b29a uxth r2, r3 + 8007bdc: 687b ldr r3, [r7, #4] + 8007bde: 809a strh r2, [r3, #4] + req->wLength = SWAPBYTE(pdata + 6U); + 8007be0: 683b ldr r3, [r7, #0] + 8007be2: 3306 adds r3, #6 + 8007be4: 781b ldrb r3, [r3, #0] + 8007be6: 461a mov r2, r3 + 8007be8: 683b ldr r3, [r7, #0] + 8007bea: 3307 adds r3, #7 + 8007bec: 781b ldrb r3, [r3, #0] + 8007bee: 021b lsls r3, r3, #8 + 8007bf0: b29b uxth r3, r3 + 8007bf2: 4413 add r3, r2 + 8007bf4: b29a uxth r2, r3 + 8007bf6: 687b ldr r3, [r7, #4] + 8007bf8: 80da strh r2, [r3, #6] + +} + 8007bfa: bf00 nop + 8007bfc: 370c adds r7, #12 + 8007bfe: 46bd mov sp, r7 + 8007c00: bc80 pop {r7} + 8007c02: 4770 bx lr + +08007c04 : +* @retval None +*/ + +void USBD_CtlError(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + 8007c04: b580 push {r7, lr} + 8007c06: b082 sub sp, #8 + 8007c08: af00 add r7, sp, #0 + 8007c0a: 6078 str r0, [r7, #4] + 8007c0c: 6039 str r1, [r7, #0] + USBD_LL_StallEP(pdev, 0x80U); + 8007c0e: 2180 movs r1, #128 @ 0x80 + 8007c10: 6878 ldr r0, [r7, #4] + 8007c12: f000 fcd1 bl 80085b8 + USBD_LL_StallEP(pdev, 0U); + 8007c16: 2100 movs r1, #0 + 8007c18: 6878 ldr r0, [r7, #4] + 8007c1a: f000 fccd bl 80085b8 +} + 8007c1e: bf00 nop + 8007c20: 3708 adds r7, #8 + 8007c22: 46bd mov sp, r7 + 8007c24: bd80 pop {r7, pc} + +08007c26 : + * @param unicode : Formatted string buffer (unicode) + * @param len : descriptor length + * @retval None + */ +void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len) +{ + 8007c26: b580 push {r7, lr} + 8007c28: b086 sub sp, #24 + 8007c2a: af00 add r7, sp, #0 + 8007c2c: 60f8 str r0, [r7, #12] + 8007c2e: 60b9 str r1, [r7, #8] + 8007c30: 607a str r2, [r7, #4] + uint8_t idx = 0U; + 8007c32: 2300 movs r3, #0 + 8007c34: 75fb strb r3, [r7, #23] + + if (desc != NULL) + 8007c36: 68fb ldr r3, [r7, #12] + 8007c38: 2b00 cmp r3, #0 + 8007c3a: d032 beq.n 8007ca2 + { + *len = (uint16_t)USBD_GetLen(desc) * 2U + 2U; + 8007c3c: 68f8 ldr r0, [r7, #12] + 8007c3e: f000 f834 bl 8007caa + 8007c42: 4603 mov r3, r0 + 8007c44: 3301 adds r3, #1 + 8007c46: b29b uxth r3, r3 + 8007c48: 005b lsls r3, r3, #1 + 8007c4a: b29a uxth r2, r3 + 8007c4c: 687b ldr r3, [r7, #4] + 8007c4e: 801a strh r2, [r3, #0] + unicode[idx++] = *(uint8_t *)(void *)len; + 8007c50: 7dfb ldrb r3, [r7, #23] + 8007c52: 1c5a adds r2, r3, #1 + 8007c54: 75fa strb r2, [r7, #23] + 8007c56: 461a mov r2, r3 + 8007c58: 68bb ldr r3, [r7, #8] + 8007c5a: 4413 add r3, r2 + 8007c5c: 687a ldr r2, [r7, #4] + 8007c5e: 7812 ldrb r2, [r2, #0] + 8007c60: 701a strb r2, [r3, #0] + unicode[idx++] = USB_DESC_TYPE_STRING; + 8007c62: 7dfb ldrb r3, [r7, #23] + 8007c64: 1c5a adds r2, r3, #1 + 8007c66: 75fa strb r2, [r7, #23] + 8007c68: 461a mov r2, r3 + 8007c6a: 68bb ldr r3, [r7, #8] + 8007c6c: 4413 add r3, r2 + 8007c6e: 2203 movs r2, #3 + 8007c70: 701a strb r2, [r3, #0] + + while (*desc != '\0') + 8007c72: e012 b.n 8007c9a + { + unicode[idx++] = *desc++; + 8007c74: 68fb ldr r3, [r7, #12] + 8007c76: 1c5a adds r2, r3, #1 + 8007c78: 60fa str r2, [r7, #12] + 8007c7a: 7dfa ldrb r2, [r7, #23] + 8007c7c: 1c51 adds r1, r2, #1 + 8007c7e: 75f9 strb r1, [r7, #23] + 8007c80: 4611 mov r1, r2 + 8007c82: 68ba ldr r2, [r7, #8] + 8007c84: 440a add r2, r1 + 8007c86: 781b ldrb r3, [r3, #0] + 8007c88: 7013 strb r3, [r2, #0] + unicode[idx++] = 0U; + 8007c8a: 7dfb ldrb r3, [r7, #23] + 8007c8c: 1c5a adds r2, r3, #1 + 8007c8e: 75fa strb r2, [r7, #23] + 8007c90: 461a mov r2, r3 + 8007c92: 68bb ldr r3, [r7, #8] + 8007c94: 4413 add r3, r2 + 8007c96: 2200 movs r2, #0 + 8007c98: 701a strb r2, [r3, #0] + while (*desc != '\0') + 8007c9a: 68fb ldr r3, [r7, #12] + 8007c9c: 781b ldrb r3, [r3, #0] + 8007c9e: 2b00 cmp r3, #0 + 8007ca0: d1e8 bne.n 8007c74 + } + } +} + 8007ca2: bf00 nop + 8007ca4: 3718 adds r7, #24 + 8007ca6: 46bd mov sp, r7 + 8007ca8: bd80 pop {r7, pc} + +08007caa : + * return the string length + * @param buf : pointer to the ascii string buffer + * @retval string length + */ +static uint8_t USBD_GetLen(uint8_t *buf) +{ + 8007caa: b480 push {r7} + 8007cac: b085 sub sp, #20 + 8007cae: af00 add r7, sp, #0 + 8007cb0: 6078 str r0, [r7, #4] + uint8_t len = 0U; + 8007cb2: 2300 movs r3, #0 + 8007cb4: 73fb strb r3, [r7, #15] + + while (*buf != '\0') + 8007cb6: e005 b.n 8007cc4 + { + len++; + 8007cb8: 7bfb ldrb r3, [r7, #15] + 8007cba: 3301 adds r3, #1 + 8007cbc: 73fb strb r3, [r7, #15] + buf++; + 8007cbe: 687b ldr r3, [r7, #4] + 8007cc0: 3301 adds r3, #1 + 8007cc2: 607b str r3, [r7, #4] + while (*buf != '\0') + 8007cc4: 687b ldr r3, [r7, #4] + 8007cc6: 781b ldrb r3, [r3, #0] + 8007cc8: 2b00 cmp r3, #0 + 8007cca: d1f5 bne.n 8007cb8 + } + + return len; + 8007ccc: 7bfb ldrb r3, [r7, #15] +} + 8007cce: 4618 mov r0, r3 + 8007cd0: 3714 adds r7, #20 + 8007cd2: 46bd mov sp, r7 + 8007cd4: bc80 pop {r7} + 8007cd6: 4770 bx lr + +08007cd8 : +* @param len: length of data to be sent +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + 8007cd8: b580 push {r7, lr} + 8007cda: b084 sub sp, #16 + 8007cdc: af00 add r7, sp, #0 + 8007cde: 60f8 str r0, [r7, #12] + 8007ce0: 60b9 str r1, [r7, #8] + 8007ce2: 4613 mov r3, r2 + 8007ce4: 80fb strh r3, [r7, #6] + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_DATA_IN; + 8007ce6: 68fb ldr r3, [r7, #12] + 8007ce8: 2202 movs r2, #2 + 8007cea: f8c3 2294 str.w r2, [r3, #660] @ 0x294 + pdev->ep_in[0].total_length = len; + 8007cee: 88fa ldrh r2, [r7, #6] + 8007cf0: 68fb ldr r3, [r7, #12] + 8007cf2: 61da str r2, [r3, #28] + pdev->ep_in[0].rem_length = len; + 8007cf4: 88fa ldrh r2, [r7, #6] + 8007cf6: 68fb ldr r3, [r7, #12] + 8007cf8: 621a str r2, [r3, #32] + + /* Start the transfer */ + USBD_LL_Transmit(pdev, 0x00U, pbuf, len); + 8007cfa: 88fb ldrh r3, [r7, #6] + 8007cfc: 68ba ldr r2, [r7, #8] + 8007cfe: 2100 movs r1, #0 + 8007d00: 68f8 ldr r0, [r7, #12] + 8007d02: f000 fce1 bl 80086c8 + + return USBD_OK; + 8007d06: 2300 movs r3, #0 +} + 8007d08: 4618 mov r0, r3 + 8007d0a: 3710 adds r7, #16 + 8007d0c: 46bd mov sp, r7 + 8007d0e: bd80 pop {r7, pc} + +08007d10 : +* @param len: length of data to be sent +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + 8007d10: b580 push {r7, lr} + 8007d12: b084 sub sp, #16 + 8007d14: af00 add r7, sp, #0 + 8007d16: 60f8 str r0, [r7, #12] + 8007d18: 60b9 str r1, [r7, #8] + 8007d1a: 4613 mov r3, r2 + 8007d1c: 80fb strh r3, [r7, #6] + /* Start the next transfer */ + USBD_LL_Transmit(pdev, 0x00U, pbuf, len); + 8007d1e: 88fb ldrh r3, [r7, #6] + 8007d20: 68ba ldr r2, [r7, #8] + 8007d22: 2100 movs r1, #0 + 8007d24: 68f8 ldr r0, [r7, #12] + 8007d26: f000 fccf bl 80086c8 + + return USBD_OK; + 8007d2a: 2300 movs r3, #0 +} + 8007d2c: 4618 mov r0, r3 + 8007d2e: 3710 adds r7, #16 + 8007d30: 46bd mov sp, r7 + 8007d32: bd80 pop {r7, pc} + +08007d34 : +* @param len: length of data to be received +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + 8007d34: b580 push {r7, lr} + 8007d36: b084 sub sp, #16 + 8007d38: af00 add r7, sp, #0 + 8007d3a: 60f8 str r0, [r7, #12] + 8007d3c: 60b9 str r1, [r7, #8] + 8007d3e: 4613 mov r3, r2 + 8007d40: 80fb strh r3, [r7, #6] + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_DATA_OUT; + 8007d42: 68fb ldr r3, [r7, #12] + 8007d44: 2203 movs r2, #3 + 8007d46: f8c3 2294 str.w r2, [r3, #660] @ 0x294 + pdev->ep_out[0].total_length = len; + 8007d4a: 88fa ldrh r2, [r7, #6] + 8007d4c: 68fb ldr r3, [r7, #12] + 8007d4e: f8c3 215c str.w r2, [r3, #348] @ 0x15c + pdev->ep_out[0].rem_length = len; + 8007d52: 88fa ldrh r2, [r7, #6] + 8007d54: 68fb ldr r3, [r7, #12] + 8007d56: f8c3 2160 str.w r2, [r3, #352] @ 0x160 + + /* Start the transfer */ + USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); + 8007d5a: 88fb ldrh r3, [r7, #6] + 8007d5c: 68ba ldr r2, [r7, #8] + 8007d5e: 2100 movs r1, #0 + 8007d60: 68f8 ldr r0, [r7, #12] + 8007d62: f000 fcd4 bl 800870e + + return USBD_OK; + 8007d66: 2300 movs r3, #0 +} + 8007d68: 4618 mov r0, r3 + 8007d6a: 3710 adds r7, #16 + 8007d6c: 46bd mov sp, r7 + 8007d6e: bd80 pop {r7, pc} + +08007d70 : +* @param len: length of data to be received +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint16_t len) +{ + 8007d70: b580 push {r7, lr} + 8007d72: b084 sub sp, #16 + 8007d74: af00 add r7, sp, #0 + 8007d76: 60f8 str r0, [r7, #12] + 8007d78: 60b9 str r1, [r7, #8] + 8007d7a: 4613 mov r3, r2 + 8007d7c: 80fb strh r3, [r7, #6] + USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); + 8007d7e: 88fb ldrh r3, [r7, #6] + 8007d80: 68ba ldr r2, [r7, #8] + 8007d82: 2100 movs r1, #0 + 8007d84: 68f8 ldr r0, [r7, #12] + 8007d86: f000 fcc2 bl 800870e + + return USBD_OK; + 8007d8a: 2300 movs r3, #0 +} + 8007d8c: 4618 mov r0, r3 + 8007d8e: 3710 adds r7, #16 + 8007d90: 46bd mov sp, r7 + 8007d92: bd80 pop {r7, pc} + +08007d94 : +* send zero lzngth packet on the ctl pipe +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev) +{ + 8007d94: b580 push {r7, lr} + 8007d96: b082 sub sp, #8 + 8007d98: af00 add r7, sp, #0 + 8007d9a: 6078 str r0, [r7, #4] + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_STATUS_IN; + 8007d9c: 687b ldr r3, [r7, #4] + 8007d9e: 2204 movs r2, #4 + 8007da0: f8c3 2294 str.w r2, [r3, #660] @ 0x294 + + /* Start the transfer */ + USBD_LL_Transmit(pdev, 0x00U, NULL, 0U); + 8007da4: 2300 movs r3, #0 + 8007da6: 2200 movs r2, #0 + 8007da8: 2100 movs r1, #0 + 8007daa: 6878 ldr r0, [r7, #4] + 8007dac: f000 fc8c bl 80086c8 + + return USBD_OK; + 8007db0: 2300 movs r3, #0 +} + 8007db2: 4618 mov r0, r3 + 8007db4: 3708 adds r7, #8 + 8007db6: 46bd mov sp, r7 + 8007db8: bd80 pop {r7, pc} + +08007dba : +* receive zero lzngth packet on the ctl pipe +* @param pdev: device instance +* @retval status +*/ +USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev) +{ + 8007dba: b580 push {r7, lr} + 8007dbc: b082 sub sp, #8 + 8007dbe: af00 add r7, sp, #0 + 8007dc0: 6078 str r0, [r7, #4] + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_STATUS_OUT; + 8007dc2: 687b ldr r3, [r7, #4] + 8007dc4: 2205 movs r2, #5 + 8007dc6: f8c3 2294 str.w r2, [r3, #660] @ 0x294 + + /* Start the transfer */ + USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); + 8007dca: 2300 movs r3, #0 + 8007dcc: 2200 movs r2, #0 + 8007dce: 2100 movs r1, #0 + 8007dd0: 6878 ldr r0, [r7, #4] + 8007dd2: f000 fc9c bl 800870e + + return USBD_OK; + 8007dd6: 2300 movs r3, #0 +} + 8007dd8: 4618 mov r0, r3 + 8007dda: 3708 adds r7, #8 + 8007ddc: 46bd mov sp, r7 + 8007dde: bd80 pop {r7, pc} + +08007de0 : +/** + * Init USB device Library, add supported class and start the library + * @retval None + */ +void MX_USB_DEVICE_Init(void) +{ + 8007de0: b580 push {r7, lr} + 8007de2: af00 add r7, sp, #0 + /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ + + /* USER CODE END USB_DEVICE_Init_PreTreatment */ + + /* Init Device Library, add supported class and start the library. */ + if (USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK) + 8007de4: 2200 movs r2, #0 + 8007de6: 4912 ldr r1, [pc, #72] @ (8007e30 ) + 8007de8: 4812 ldr r0, [pc, #72] @ (8007e34 ) + 8007dea: f7fe ff62 bl 8006cb2 + 8007dee: 4603 mov r3, r0 + 8007df0: 2b00 cmp r3, #0 + 8007df2: d001 beq.n 8007df8 + { + Error_Handler(); + 8007df4: f7f8 fc8c bl 8000710 + } + if (USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC) != USBD_OK) + 8007df8: 490f ldr r1, [pc, #60] @ (8007e38 ) + 8007dfa: 480e ldr r0, [pc, #56] @ (8007e34 ) + 8007dfc: f7fe ff84 bl 8006d08 + 8007e00: 4603 mov r3, r0 + 8007e02: 2b00 cmp r3, #0 + 8007e04: d001 beq.n 8007e0a + { + Error_Handler(); + 8007e06: f7f8 fc83 bl 8000710 + } + if (USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS) != USBD_OK) + 8007e0a: 490c ldr r1, [pc, #48] @ (8007e3c ) + 8007e0c: 4809 ldr r0, [pc, #36] @ (8007e34 ) + 8007e0e: f7fe feb5 bl 8006b7c + 8007e12: 4603 mov r3, r0 + 8007e14: 2b00 cmp r3, #0 + 8007e16: d001 beq.n 8007e1c + { + Error_Handler(); + 8007e18: f7f8 fc7a bl 8000710 + } + if (USBD_Start(&hUsbDeviceFS) != USBD_OK) + 8007e1c: 4805 ldr r0, [pc, #20] @ (8007e34 ) + 8007e1e: f7fe ff8c bl 8006d3a + 8007e22: 4603 mov r3, r0 + 8007e24: 2b00 cmp r3, #0 + 8007e26: d001 beq.n 8007e2c + { + Error_Handler(); + 8007e28: f7f8 fc72 bl 8000710 + } + + /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */ + + /* USER CODE END USB_DEVICE_Init_PostTreatment */ +} + 8007e2c: bf00 nop + 8007e2e: bd80 pop {r7, pc} + 8007e30: 2000012c .word 0x2000012c + 8007e34: 200002cc .word 0x200002cc + 8007e38: 20000018 .word 0x20000018 + 8007e3c: 2000011c .word 0x2000011c + +08007e40 : +/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ +#define RX_FIFO_SZ 256 +static uint8_t rx_fifo[RX_FIFO_SZ]; +static volatile uint16_t rx_head = 0, rx_tail = 0; + +static void fifo_push(const uint8_t* data, uint32_t len) { + 8007e40: b480 push {r7} + 8007e42: b085 sub sp, #20 + 8007e44: af00 add r7, sp, #0 + 8007e46: 6078 str r0, [r7, #4] + 8007e48: 6039 str r1, [r7, #0] + while (len--) { + 8007e4a: e01e b.n 8007e8a + uint16_t next = (rx_head + 1u) & (RX_FIFO_SZ - 1u); + 8007e4c: 4b14 ldr r3, [pc, #80] @ (8007ea0 ) + 8007e4e: 881b ldrh r3, [r3, #0] + 8007e50: b29b uxth r3, r3 + 8007e52: 3301 adds r3, #1 + 8007e54: b29b uxth r3, r3 + 8007e56: b2db uxtb r3, r3 + 8007e58: 81fb strh r3, [r7, #14] + if (next == (rx_tail & (RX_FIFO_SZ - 1u))) { + 8007e5a: 89fa ldrh r2, [r7, #14] + 8007e5c: 4b11 ldr r3, [pc, #68] @ (8007ea4 ) + 8007e5e: 881b ldrh r3, [r3, #0] + 8007e60: b29b uxth r3, r3 + 8007e62: b2db uxtb r3, r3 + 8007e64: 429a cmp r2, r3 + 8007e66: d103 bne.n 8007e70 + /* overflow — drop byte (or set a flag) */ + data++; + 8007e68: 687b ldr r3, [r7, #4] + 8007e6a: 3301 adds r3, #1 + 8007e6c: 607b str r3, [r7, #4] + continue; + 8007e6e: e00c b.n 8007e8a + } + rx_fifo[rx_head & (RX_FIFO_SZ - 1u)] = *data++; + 8007e70: 687b ldr r3, [r7, #4] + 8007e72: 1c5a adds r2, r3, #1 + 8007e74: 607a str r2, [r7, #4] + 8007e76: 4a0a ldr r2, [pc, #40] @ (8007ea0 ) + 8007e78: 8812 ldrh r2, [r2, #0] + 8007e7a: b292 uxth r2, r2 + 8007e7c: b2d2 uxtb r2, r2 + 8007e7e: 7819 ldrb r1, [r3, #0] + 8007e80: 4b09 ldr r3, [pc, #36] @ (8007ea8 ) + 8007e82: 5499 strb r1, [r3, r2] + rx_head = next; + 8007e84: 4a06 ldr r2, [pc, #24] @ (8007ea0 ) + 8007e86: 89fb ldrh r3, [r7, #14] + 8007e88: 8013 strh r3, [r2, #0] + while (len--) { + 8007e8a: 683b ldr r3, [r7, #0] + 8007e8c: 1e5a subs r2, r3, #1 + 8007e8e: 603a str r2, [r7, #0] + 8007e90: 2b00 cmp r3, #0 + 8007e92: d1db bne.n 8007e4c + } +} + 8007e94: bf00 nop + 8007e96: bf00 nop + 8007e98: 3714 adds r7, #20 + 8007e9a: 46bd mov sp, r7 + 8007e9c: bc80 pop {r7} + 8007e9e: 4770 bx lr + 8007ea0: 20000e90 .word 0x20000e90 + 8007ea4: 20000e92 .word 0x20000e92 + 8007ea8: 20000d90 .word 0x20000d90 + +08007eac : + +uint32_t CDC_Available(void) { + 8007eac: b480 push {r7} + 8007eae: af00 add r7, sp, #0 + return (uint16_t)((rx_head - rx_tail) & (RX_FIFO_SZ - 1u)); + 8007eb0: 4b06 ldr r3, [pc, #24] @ (8007ecc ) + 8007eb2: 881b ldrh r3, [r3, #0] + 8007eb4: b29a uxth r2, r3 + 8007eb6: 4b06 ldr r3, [pc, #24] @ (8007ed0 ) + 8007eb8: 881b ldrh r3, [r3, #0] + 8007eba: b29b uxth r3, r3 + 8007ebc: 1ad3 subs r3, r2, r3 + 8007ebe: b29b uxth r3, r3 + 8007ec0: b2db uxtb r3, r3 +} + 8007ec2: 4618 mov r0, r3 + 8007ec4: 46bd mov sp, r7 + 8007ec6: bc80 pop {r7} + 8007ec8: 4770 bx lr + 8007eca: bf00 nop + 8007ecc: 20000e90 .word 0x20000e90 + 8007ed0: 20000e92 .word 0x20000e92 + +08007ed4 : + +int CDC_ReadByte(void) { + 8007ed4: b480 push {r7} + 8007ed6: b083 sub sp, #12 + 8007ed8: af00 add r7, sp, #0 + if (rx_tail == rx_head) return -1; + 8007eda: 4b10 ldr r3, [pc, #64] @ (8007f1c ) + 8007edc: 881b ldrh r3, [r3, #0] + 8007ede: b29a uxth r2, r3 + 8007ee0: 4b0f ldr r3, [pc, #60] @ (8007f20 ) + 8007ee2: 881b ldrh r3, [r3, #0] + 8007ee4: b29b uxth r3, r3 + 8007ee6: 429a cmp r2, r3 + 8007ee8: d102 bne.n 8007ef0 + 8007eea: f04f 33ff mov.w r3, #4294967295 + 8007eee: e010 b.n 8007f12 + int b = rx_fifo[rx_tail & (RX_FIFO_SZ - 1u)]; + 8007ef0: 4b0a ldr r3, [pc, #40] @ (8007f1c ) + 8007ef2: 881b ldrh r3, [r3, #0] + 8007ef4: b29b uxth r3, r3 + 8007ef6: b2db uxtb r3, r3 + 8007ef8: 4a0a ldr r2, [pc, #40] @ (8007f24 ) + 8007efa: 5cd3 ldrb r3, [r2, r3] + 8007efc: 607b str r3, [r7, #4] + rx_tail = (rx_tail + 1u) & (RX_FIFO_SZ - 1u); + 8007efe: 4b07 ldr r3, [pc, #28] @ (8007f1c ) + 8007f00: 881b ldrh r3, [r3, #0] + 8007f02: b29b uxth r3, r3 + 8007f04: 3301 adds r3, #1 + 8007f06: b29b uxth r3, r3 + 8007f08: b2db uxtb r3, r3 + 8007f0a: b29a uxth r2, r3 + 8007f0c: 4b03 ldr r3, [pc, #12] @ (8007f1c ) + 8007f0e: 801a strh r2, [r3, #0] + return b; + 8007f10: 687b ldr r3, [r7, #4] +} + 8007f12: 4618 mov r0, r3 + 8007f14: 370c adds r7, #12 + 8007f16: 46bd mov sp, r7 + 8007f18: bc80 pop {r7} + 8007f1a: 4770 bx lr + 8007f1c: 20000e92 .word 0x20000e92 + 8007f20: 20000e90 .word 0x20000e90 + 8007f24: 20000d90 .word 0x20000d90 + +08007f28 : +/** + * @brief Initializes the CDC media low layer over the FS USB IP + * @retval USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_Init_FS(void) +{ + 8007f28: b580 push {r7, lr} + 8007f2a: af00 add r7, sp, #0 + /* USER CODE BEGIN 3 */ + /* Set Application Buffers */ + USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); + 8007f2c: 2200 movs r2, #0 + 8007f2e: 4905 ldr r1, [pc, #20] @ (8007f44 ) + 8007f30: 4805 ldr r0, [pc, #20] @ (8007f48 ) + 8007f32: f7fe fe39 bl 8006ba8 + USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); + 8007f36: 4905 ldr r1, [pc, #20] @ (8007f4c ) + 8007f38: 4803 ldr r0, [pc, #12] @ (8007f48 ) + 8007f3a: f7fe fe4e bl 8006bda + return (USBD_OK); + 8007f3e: 2300 movs r3, #0 + /* USER CODE END 3 */ +} + 8007f40: 4618 mov r0, r3 + 8007f42: bd80 pop {r7, pc} + 8007f44: 20000990 .word 0x20000990 + 8007f48: 200002cc .word 0x200002cc + 8007f4c: 20000590 .word 0x20000590 + +08007f50 : +/** + * @brief DeInitializes the CDC media low layer + * @retval USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_DeInit_FS(void) +{ + 8007f50: b480 push {r7} + 8007f52: af00 add r7, sp, #0 + /* USER CODE BEGIN 4 */ + return (USBD_OK); + 8007f54: 2300 movs r3, #0 + /* USER CODE END 4 */ +} + 8007f56: 4618 mov r0, r3 + 8007f58: 46bd mov sp, r7 + 8007f5a: bc80 pop {r7} + 8007f5c: 4770 bx lr + ... + +08007f60 : + * @param pbuf: Buffer containing command data (request parameters) + * @param length: Number of data to be sent (in bytes) + * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) +{ + 8007f60: b480 push {r7} + 8007f62: b083 sub sp, #12 + 8007f64: af00 add r7, sp, #0 + 8007f66: 4603 mov r3, r0 + 8007f68: 6039 str r1, [r7, #0] + 8007f6a: 71fb strb r3, [r7, #7] + 8007f6c: 4613 mov r3, r2 + 8007f6e: 80bb strh r3, [r7, #4] + /* USER CODE BEGIN 5 */ + switch(cmd) + 8007f70: 79fb ldrb r3, [r7, #7] + 8007f72: 2b23 cmp r3, #35 @ 0x23 + 8007f74: d84a bhi.n 800800c + 8007f76: a201 add r2, pc, #4 @ (adr r2, 8007f7c ) + 8007f78: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8007f7c: 0800800d .word 0x0800800d + 8007f80: 0800800d .word 0x0800800d + 8007f84: 0800800d .word 0x0800800d + 8007f88: 0800800d .word 0x0800800d + 8007f8c: 0800800d .word 0x0800800d + 8007f90: 0800800d .word 0x0800800d + 8007f94: 0800800d .word 0x0800800d + 8007f98: 0800800d .word 0x0800800d + 8007f9c: 0800800d .word 0x0800800d + 8007fa0: 0800800d .word 0x0800800d + 8007fa4: 0800800d .word 0x0800800d + 8007fa8: 0800800d .word 0x0800800d + 8007fac: 0800800d .word 0x0800800d + 8007fb0: 0800800d .word 0x0800800d + 8007fb4: 0800800d .word 0x0800800d + 8007fb8: 0800800d .word 0x0800800d + 8007fbc: 0800800d .word 0x0800800d + 8007fc0: 0800800d .word 0x0800800d + 8007fc4: 0800800d .word 0x0800800d + 8007fc8: 0800800d .word 0x0800800d + 8007fcc: 0800800d .word 0x0800800d + 8007fd0: 0800800d .word 0x0800800d + 8007fd4: 0800800d .word 0x0800800d + 8007fd8: 0800800d .word 0x0800800d + 8007fdc: 0800800d .word 0x0800800d + 8007fe0: 0800800d .word 0x0800800d + 8007fe4: 0800800d .word 0x0800800d + 8007fe8: 0800800d .word 0x0800800d + 8007fec: 0800800d .word 0x0800800d + 8007ff0: 0800800d .word 0x0800800d + 8007ff4: 0800800d .word 0x0800800d + 8007ff8: 0800800d .word 0x0800800d + 8007ffc: 0800800d .word 0x0800800d + 8008000: 0800800d .word 0x0800800d + 8008004: 0800800d .word 0x0800800d + 8008008: 0800800d .word 0x0800800d + case CDC_SEND_BREAK: + + break; + + default: + break; + 800800c: bf00 nop + } + + return (USBD_OK); + 800800e: 2300 movs r3, #0 + /* USER CODE END 5 */ +} + 8008010: 4618 mov r0, r3 + 8008012: 370c adds r7, #12 + 8008014: 46bd mov sp, r7 + 8008016: bc80 pop {r7} + 8008018: 4770 bx lr + 800801a: bf00 nop + +0800801c : + * @param Buf: Buffer of data to be received + * @param Len: Number of data received (in bytes) + * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) +{ + 800801c: b580 push {r7, lr} + 800801e: b082 sub sp, #8 + 8008020: af00 add r7, sp, #0 + 8008022: 6078 str r0, [r7, #4] + 8008024: 6039 str r1, [r7, #0] + /* USER CODE BEGIN 6 */ + if (*Len) fifo_push(Buf, *Len); + 8008026: 683b ldr r3, [r7, #0] + 8008028: 681b ldr r3, [r3, #0] + 800802a: 2b00 cmp r3, #0 + 800802c: d005 beq.n 800803a + 800802e: 683b ldr r3, [r7, #0] + 8008030: 681b ldr r3, [r3, #0] + 8008032: 4619 mov r1, r3 + 8008034: 6878 ldr r0, [r7, #4] + 8008036: f7ff ff03 bl 8007e40 + USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); + 800803a: 6879 ldr r1, [r7, #4] + 800803c: 4805 ldr r0, [pc, #20] @ (8008054 ) + 800803e: f7fe fdcc bl 8006bda + USBD_CDC_ReceivePacket(&hUsbDeviceFS); + 8008042: 4804 ldr r0, [pc, #16] @ (8008054 ) + 8008044: f7fe fe0b bl 8006c5e + return (USBD_OK); + 8008048: 2300 movs r3, #0 + /* USER CODE END 6 */ +} + 800804a: 4618 mov r0, r3 + 800804c: 3708 adds r7, #8 + 800804e: 46bd mov sp, r7 + 8008050: bd80 pop {r7, pc} + 8008052: bf00 nop + 8008054: 200002cc .word 0x200002cc + +08008058 : + * @param Buf: Buffer of data to be sent + * @param Len: Number of data to be sent (in bytes) + * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY + */ +uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) +{ + 8008058: b580 push {r7, lr} + 800805a: b084 sub sp, #16 + 800805c: af00 add r7, sp, #0 + 800805e: 6078 str r0, [r7, #4] + 8008060: 460b mov r3, r1 + 8008062: 807b strh r3, [r7, #2] + uint8_t result = USBD_OK; + 8008064: 2300 movs r3, #0 + 8008066: 73fb strb r3, [r7, #15] + /* USER CODE BEGIN 7 */ + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; + 8008068: 4b0d ldr r3, [pc, #52] @ (80080a0 ) + 800806a: f8d3 32b8 ldr.w r3, [r3, #696] @ 0x2b8 + 800806e: 60bb str r3, [r7, #8] + if (hcdc->TxState != 0){ + 8008070: 68bb ldr r3, [r7, #8] + 8008072: f8d3 3214 ldr.w r3, [r3, #532] @ 0x214 + 8008076: 2b00 cmp r3, #0 + 8008078: d001 beq.n 800807e + return USBD_BUSY; + 800807a: 2301 movs r3, #1 + 800807c: e00b b.n 8008096 + } + USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); + 800807e: 887b ldrh r3, [r7, #2] + 8008080: 461a mov r2, r3 + 8008082: 6879 ldr r1, [r7, #4] + 8008084: 4806 ldr r0, [pc, #24] @ (80080a0 ) + 8008086: f7fe fd8f bl 8006ba8 + result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); + 800808a: 4805 ldr r0, [pc, #20] @ (80080a0 ) + 800808c: f7fe fdb8 bl 8006c00 + 8008090: 4603 mov r3, r0 + 8008092: 73fb strb r3, [r7, #15] + /* USER CODE END 7 */ + return result; + 8008094: 7bfb ldrb r3, [r7, #15] +} + 8008096: 4618 mov r0, r3 + 8008098: 3710 adds r7, #16 + 800809a: 46bd mov sp, r7 + 800809c: bd80 pop {r7, pc} + 800809e: bf00 nop + 80080a0: 200002cc .word 0x200002cc + +080080a4 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 80080a4: b480 push {r7} + 80080a6: b083 sub sp, #12 + 80080a8: af00 add r7, sp, #0 + 80080aa: 4603 mov r3, r0 + 80080ac: 6039 str r1, [r7, #0] + 80080ae: 71fb strb r3, [r7, #7] + UNUSED(speed); + *length = sizeof(USBD_FS_DeviceDesc); + 80080b0: 683b ldr r3, [r7, #0] + 80080b2: 2212 movs r2, #18 + 80080b4: 801a strh r2, [r3, #0] + return USBD_FS_DeviceDesc; + 80080b6: 4b03 ldr r3, [pc, #12] @ (80080c4 ) +} + 80080b8: 4618 mov r0, r3 + 80080ba: 370c adds r7, #12 + 80080bc: 46bd mov sp, r7 + 80080be: bc80 pop {r7} + 80080c0: 4770 bx lr + 80080c2: bf00 nop + 80080c4: 20000148 .word 0x20000148 + +080080c8 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 80080c8: b480 push {r7} + 80080ca: b083 sub sp, #12 + 80080cc: af00 add r7, sp, #0 + 80080ce: 4603 mov r3, r0 + 80080d0: 6039 str r1, [r7, #0] + 80080d2: 71fb strb r3, [r7, #7] + UNUSED(speed); + *length = sizeof(USBD_LangIDDesc); + 80080d4: 683b ldr r3, [r7, #0] + 80080d6: 2204 movs r2, #4 + 80080d8: 801a strh r2, [r3, #0] + return USBD_LangIDDesc; + 80080da: 4b03 ldr r3, [pc, #12] @ (80080e8 ) +} + 80080dc: 4618 mov r0, r3 + 80080de: 370c adds r7, #12 + 80080e0: 46bd mov sp, r7 + 80080e2: bc80 pop {r7} + 80080e4: 4770 bx lr + 80080e6: bf00 nop + 80080e8: 2000015c .word 0x2000015c + +080080ec : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 80080ec: b580 push {r7, lr} + 80080ee: b082 sub sp, #8 + 80080f0: af00 add r7, sp, #0 + 80080f2: 4603 mov r3, r0 + 80080f4: 6039 str r1, [r7, #0] + 80080f6: 71fb strb r3, [r7, #7] + if(speed == 0) + 80080f8: 79fb ldrb r3, [r7, #7] + 80080fa: 2b00 cmp r3, #0 + 80080fc: d105 bne.n 800810a + { + USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); + 80080fe: 683a ldr r2, [r7, #0] + 8008100: 4907 ldr r1, [pc, #28] @ (8008120 ) + 8008102: 4808 ldr r0, [pc, #32] @ (8008124 ) + 8008104: f7ff fd8f bl 8007c26 + 8008108: e004 b.n 8008114 + } + else + { + USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); + 800810a: 683a ldr r2, [r7, #0] + 800810c: 4904 ldr r1, [pc, #16] @ (8008120 ) + 800810e: 4805 ldr r0, [pc, #20] @ (8008124 ) + 8008110: f7ff fd89 bl 8007c26 + } + return USBD_StrDesc; + 8008114: 4b02 ldr r3, [pc, #8] @ (8008120 ) +} + 8008116: 4618 mov r0, r3 + 8008118: 3708 adds r7, #8 + 800811a: 46bd mov sp, r7 + 800811c: bd80 pop {r7, pc} + 800811e: bf00 nop + 8008120: 20000e94 .word 0x20000e94 + 8008124: 0800919c .word 0x0800919c + +08008128 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 8008128: b580 push {r7, lr} + 800812a: b082 sub sp, #8 + 800812c: af00 add r7, sp, #0 + 800812e: 4603 mov r3, r0 + 8008130: 6039 str r1, [r7, #0] + 8008132: 71fb strb r3, [r7, #7] + UNUSED(speed); + USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length); + 8008134: 683a ldr r2, [r7, #0] + 8008136: 4904 ldr r1, [pc, #16] @ (8008148 ) + 8008138: 4804 ldr r0, [pc, #16] @ (800814c ) + 800813a: f7ff fd74 bl 8007c26 + return USBD_StrDesc; + 800813e: 4b02 ldr r3, [pc, #8] @ (8008148 ) +} + 8008140: 4618 mov r0, r3 + 8008142: 3708 adds r7, #8 + 8008144: 46bd mov sp, r7 + 8008146: bd80 pop {r7, pc} + 8008148: 20000e94 .word 0x20000e94 + 800814c: 080091b4 .word 0x080091b4 + +08008150 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 8008150: b580 push {r7, lr} + 8008152: b082 sub sp, #8 + 8008154: af00 add r7, sp, #0 + 8008156: 4603 mov r3, r0 + 8008158: 6039 str r1, [r7, #0] + 800815a: 71fb strb r3, [r7, #7] + UNUSED(speed); + *length = USB_SIZ_STRING_SERIAL; + 800815c: 683b ldr r3, [r7, #0] + 800815e: 221a movs r2, #26 + 8008160: 801a strh r2, [r3, #0] + + /* Update the serial number string descriptor with the data from the unique + * ID */ + Get_SerialNum(); + 8008162: f000 f843 bl 80081ec + /* USER CODE BEGIN USBD_FS_SerialStrDescriptor */ + + /* USER CODE END USBD_FS_SerialStrDescriptor */ + return (uint8_t *) USBD_StringSerial; + 8008166: 4b02 ldr r3, [pc, #8] @ (8008170 ) +} + 8008168: 4618 mov r0, r3 + 800816a: 3708 adds r7, #8 + 800816c: 46bd mov sp, r7 + 800816e: bd80 pop {r7, pc} + 8008170: 20000160 .word 0x20000160 + +08008174 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 8008174: b580 push {r7, lr} + 8008176: b082 sub sp, #8 + 8008178: af00 add r7, sp, #0 + 800817a: 4603 mov r3, r0 + 800817c: 6039 str r1, [r7, #0] + 800817e: 71fb strb r3, [r7, #7] + if(speed == USBD_SPEED_HIGH) + 8008180: 79fb ldrb r3, [r7, #7] + 8008182: 2b00 cmp r3, #0 + 8008184: d105 bne.n 8008192 + { + USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); + 8008186: 683a ldr r2, [r7, #0] + 8008188: 4907 ldr r1, [pc, #28] @ (80081a8 ) + 800818a: 4808 ldr r0, [pc, #32] @ (80081ac ) + 800818c: f7ff fd4b bl 8007c26 + 8008190: e004 b.n 800819c + } + else + { + USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); + 8008192: 683a ldr r2, [r7, #0] + 8008194: 4904 ldr r1, [pc, #16] @ (80081a8 ) + 8008196: 4805 ldr r0, [pc, #20] @ (80081ac ) + 8008198: f7ff fd45 bl 8007c26 + } + return USBD_StrDesc; + 800819c: 4b02 ldr r3, [pc, #8] @ (80081a8 ) +} + 800819e: 4618 mov r0, r3 + 80081a0: 3708 adds r7, #8 + 80081a2: 46bd mov sp, r7 + 80081a4: bd80 pop {r7, pc} + 80081a6: bf00 nop + 80081a8: 20000e94 .word 0x20000e94 + 80081ac: 080091c8 .word 0x080091c8 + +080081b0 : + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + 80081b0: b580 push {r7, lr} + 80081b2: b082 sub sp, #8 + 80081b4: af00 add r7, sp, #0 + 80081b6: 4603 mov r3, r0 + 80081b8: 6039 str r1, [r7, #0] + 80081ba: 71fb strb r3, [r7, #7] + if(speed == 0) + 80081bc: 79fb ldrb r3, [r7, #7] + 80081be: 2b00 cmp r3, #0 + 80081c0: d105 bne.n 80081ce + { + USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); + 80081c2: 683a ldr r2, [r7, #0] + 80081c4: 4907 ldr r1, [pc, #28] @ (80081e4 ) + 80081c6: 4808 ldr r0, [pc, #32] @ (80081e8 ) + 80081c8: f7ff fd2d bl 8007c26 + 80081cc: e004 b.n 80081d8 + } + else + { + USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); + 80081ce: 683a ldr r2, [r7, #0] + 80081d0: 4904 ldr r1, [pc, #16] @ (80081e4 ) + 80081d2: 4805 ldr r0, [pc, #20] @ (80081e8 ) + 80081d4: f7ff fd27 bl 8007c26 + } + return USBD_StrDesc; + 80081d8: 4b02 ldr r3, [pc, #8] @ (80081e4 ) +} + 80081da: 4618 mov r0, r3 + 80081dc: 3708 adds r7, #8 + 80081de: 46bd mov sp, r7 + 80081e0: bd80 pop {r7, pc} + 80081e2: bf00 nop + 80081e4: 20000e94 .word 0x20000e94 + 80081e8: 080091d4 .word 0x080091d4 + +080081ec : + * @brief Create the serial number string descriptor + * @param None + * @retval None + */ +static void Get_SerialNum(void) +{ + 80081ec: b580 push {r7, lr} + 80081ee: b084 sub sp, #16 + 80081f0: af00 add r7, sp, #0 + uint32_t deviceserial0; + uint32_t deviceserial1; + uint32_t deviceserial2; + + deviceserial0 = *(uint32_t *) DEVICE_ID1; + 80081f2: 4b0f ldr r3, [pc, #60] @ (8008230 ) + 80081f4: 681b ldr r3, [r3, #0] + 80081f6: 60fb str r3, [r7, #12] + deviceserial1 = *(uint32_t *) DEVICE_ID2; + 80081f8: 4b0e ldr r3, [pc, #56] @ (8008234 ) + 80081fa: 681b ldr r3, [r3, #0] + 80081fc: 60bb str r3, [r7, #8] + deviceserial2 = *(uint32_t *) DEVICE_ID3; + 80081fe: 4b0e ldr r3, [pc, #56] @ (8008238 ) + 8008200: 681b ldr r3, [r3, #0] + 8008202: 607b str r3, [r7, #4] + + deviceserial0 += deviceserial2; + 8008204: 68fa ldr r2, [r7, #12] + 8008206: 687b ldr r3, [r7, #4] + 8008208: 4413 add r3, r2 + 800820a: 60fb str r3, [r7, #12] + + if (deviceserial0 != 0) + 800820c: 68fb ldr r3, [r7, #12] + 800820e: 2b00 cmp r3, #0 + 8008210: d009 beq.n 8008226 + { + IntToUnicode(deviceserial0, &USBD_StringSerial[2], 8); + 8008212: 2208 movs r2, #8 + 8008214: 4909 ldr r1, [pc, #36] @ (800823c ) + 8008216: 68f8 ldr r0, [r7, #12] + 8008218: f000 f814 bl 8008244 + IntToUnicode(deviceserial1, &USBD_StringSerial[18], 4); + 800821c: 2204 movs r2, #4 + 800821e: 4908 ldr r1, [pc, #32] @ (8008240 ) + 8008220: 68b8 ldr r0, [r7, #8] + 8008222: f000 f80f bl 8008244 + } +} + 8008226: bf00 nop + 8008228: 3710 adds r7, #16 + 800822a: 46bd mov sp, r7 + 800822c: bd80 pop {r7, pc} + 800822e: bf00 nop + 8008230: 1ffff7e8 .word 0x1ffff7e8 + 8008234: 1ffff7ec .word 0x1ffff7ec + 8008238: 1ffff7f0 .word 0x1ffff7f0 + 800823c: 20000162 .word 0x20000162 + 8008240: 20000172 .word 0x20000172 + +08008244 : + * @param pbuf: pointer to the buffer + * @param len: buffer length + * @retval None + */ +static void IntToUnicode(uint32_t value, uint8_t * pbuf, uint8_t len) +{ + 8008244: b480 push {r7} + 8008246: b087 sub sp, #28 + 8008248: af00 add r7, sp, #0 + 800824a: 60f8 str r0, [r7, #12] + 800824c: 60b9 str r1, [r7, #8] + 800824e: 4613 mov r3, r2 + 8008250: 71fb strb r3, [r7, #7] + uint8_t idx = 0; + 8008252: 2300 movs r3, #0 + 8008254: 75fb strb r3, [r7, #23] + + for (idx = 0; idx < len; idx++) + 8008256: 2300 movs r3, #0 + 8008258: 75fb strb r3, [r7, #23] + 800825a: e027 b.n 80082ac + { + if (((value >> 28)) < 0xA) + 800825c: 68fb ldr r3, [r7, #12] + 800825e: 0f1b lsrs r3, r3, #28 + 8008260: 2b09 cmp r3, #9 + 8008262: d80b bhi.n 800827c + { + pbuf[2 * idx] = (value >> 28) + '0'; + 8008264: 68fb ldr r3, [r7, #12] + 8008266: 0f1b lsrs r3, r3, #28 + 8008268: b2da uxtb r2, r3 + 800826a: 7dfb ldrb r3, [r7, #23] + 800826c: 005b lsls r3, r3, #1 + 800826e: 4619 mov r1, r3 + 8008270: 68bb ldr r3, [r7, #8] + 8008272: 440b add r3, r1 + 8008274: 3230 adds r2, #48 @ 0x30 + 8008276: b2d2 uxtb r2, r2 + 8008278: 701a strb r2, [r3, #0] + 800827a: e00a b.n 8008292 + } + else + { + pbuf[2 * idx] = (value >> 28) + 'A' - 10; + 800827c: 68fb ldr r3, [r7, #12] + 800827e: 0f1b lsrs r3, r3, #28 + 8008280: b2da uxtb r2, r3 + 8008282: 7dfb ldrb r3, [r7, #23] + 8008284: 005b lsls r3, r3, #1 + 8008286: 4619 mov r1, r3 + 8008288: 68bb ldr r3, [r7, #8] + 800828a: 440b add r3, r1 + 800828c: 3237 adds r2, #55 @ 0x37 + 800828e: b2d2 uxtb r2, r2 + 8008290: 701a strb r2, [r3, #0] + } + + value = value << 4; + 8008292: 68fb ldr r3, [r7, #12] + 8008294: 011b lsls r3, r3, #4 + 8008296: 60fb str r3, [r7, #12] + + pbuf[2 * idx + 1] = 0; + 8008298: 7dfb ldrb r3, [r7, #23] + 800829a: 005b lsls r3, r3, #1 + 800829c: 3301 adds r3, #1 + 800829e: 68ba ldr r2, [r7, #8] + 80082a0: 4413 add r3, r2 + 80082a2: 2200 movs r2, #0 + 80082a4: 701a strb r2, [r3, #0] + for (idx = 0; idx < len; idx++) + 80082a6: 7dfb ldrb r3, [r7, #23] + 80082a8: 3301 adds r3, #1 + 80082aa: 75fb strb r3, [r7, #23] + 80082ac: 7dfa ldrb r2, [r7, #23] + 80082ae: 79fb ldrb r3, [r7, #7] + 80082b0: 429a cmp r2, r3 + 80082b2: d3d3 bcc.n 800825c + } +} + 80082b4: bf00 nop + 80082b6: bf00 nop + 80082b8: 371c adds r7, #28 + 80082ba: 46bd mov sp, r7 + 80082bc: bc80 pop {r7} + 80082be: 4770 bx lr + +080082c0 : + LL Driver Callbacks (PCD -> USB Device Library) +*******************************************************************************/ +/* MSP Init */ + +void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle) +{ + 80082c0: b580 push {r7, lr} + 80082c2: b084 sub sp, #16 + 80082c4: af00 add r7, sp, #0 + 80082c6: 6078 str r0, [r7, #4] + if(pcdHandle->Instance==USB) + 80082c8: 687b ldr r3, [r7, #4] + 80082ca: 681b ldr r3, [r3, #0] + 80082cc: 4a0d ldr r2, [pc, #52] @ (8008304 ) + 80082ce: 4293 cmp r3, r2 + 80082d0: d113 bne.n 80082fa + { + /* USER CODE BEGIN USB_MspInit 0 */ + + /* USER CODE END USB_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_USB_CLK_ENABLE(); + 80082d2: 4b0d ldr r3, [pc, #52] @ (8008308 ) + 80082d4: 69db ldr r3, [r3, #28] + 80082d6: 4a0c ldr r2, [pc, #48] @ (8008308 ) + 80082d8: f443 0300 orr.w r3, r3, #8388608 @ 0x800000 + 80082dc: 61d3 str r3, [r2, #28] + 80082de: 4b0a ldr r3, [pc, #40] @ (8008308 ) + 80082e0: 69db ldr r3, [r3, #28] + 80082e2: f403 0300 and.w r3, r3, #8388608 @ 0x800000 + 80082e6: 60fb str r3, [r7, #12] + 80082e8: 68fb ldr r3, [r7, #12] + + /* Peripheral interrupt init */ + HAL_NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 0, 0); + 80082ea: 2200 movs r2, #0 + 80082ec: 2100 movs r1, #0 + 80082ee: 2014 movs r0, #20 + 80082f0: f7f8 fce3 bl 8000cba + HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn); + 80082f4: 2014 movs r0, #20 + 80082f6: f7f8 fcfc bl 8000cf2 + /* USER CODE BEGIN USB_MspInit 1 */ + + /* USER CODE END USB_MspInit 1 */ + } +} + 80082fa: bf00 nop + 80082fc: 3710 adds r7, #16 + 80082fe: 46bd mov sp, r7 + 8008300: bd80 pop {r7, pc} + 8008302: bf00 nop + 8008304: 40005c00 .word 0x40005c00 + 8008308: 40021000 .word 0x40021000 + +0800830c : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 800830c: b580 push {r7, lr} + 800830e: b082 sub sp, #8 + 8008310: af00 add r7, sp, #0 + 8008312: 6078 str r0, [r7, #4] + USBD_LL_SetupStage((USBD_HandleTypeDef*)hpcd->pData, (uint8_t *)hpcd->Setup); + 8008314: 687b ldr r3, [r7, #4] + 8008316: f8d3 22d4 ldr.w r2, [r3, #724] @ 0x2d4 + 800831a: 687b ldr r3, [r7, #4] + 800831c: f503 7326 add.w r3, r3, #664 @ 0x298 + 8008320: 4619 mov r1, r3 + 8008322: 4610 mov r0, r2 + 8008324: f7fe fd51 bl 8006dca +} + 8008328: bf00 nop + 800832a: 3708 adds r7, #8 + 800832c: 46bd mov sp, r7 + 800832e: bd80 pop {r7, pc} + +08008330 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#else +void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8008330: b580 push {r7, lr} + 8008332: b082 sub sp, #8 + 8008334: af00 add r7, sp, #0 + 8008336: 6078 str r0, [r7, #4] + 8008338: 460b mov r3, r1 + 800833a: 70fb strb r3, [r7, #3] + USBD_LL_DataOutStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->OUT_ep[epnum].xfer_buff); + 800833c: 687b ldr r3, [r7, #4] + 800833e: f8d3 02d4 ldr.w r0, [r3, #724] @ 0x2d4 + 8008342: 78fa ldrb r2, [r7, #3] + 8008344: 6879 ldr r1, [r7, #4] + 8008346: 4613 mov r3, r2 + 8008348: 009b lsls r3, r3, #2 + 800834a: 4413 add r3, r2 + 800834c: 00db lsls r3, r3, #3 + 800834e: 440b add r3, r1 + 8008350: f503 73b2 add.w r3, r3, #356 @ 0x164 + 8008354: 681a ldr r2, [r3, #0] + 8008356: 78fb ldrb r3, [r7, #3] + 8008358: 4619 mov r1, r3 + 800835a: f7fe fd83 bl 8006e64 +} + 800835e: bf00 nop + 8008360: 3708 adds r7, #8 + 8008362: 46bd mov sp, r7 + 8008364: bd80 pop {r7, pc} + +08008366 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#else +void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8008366: b580 push {r7, lr} + 8008368: b082 sub sp, #8 + 800836a: af00 add r7, sp, #0 + 800836c: 6078 str r0, [r7, #4] + 800836e: 460b mov r3, r1 + 8008370: 70fb strb r3, [r7, #3] + USBD_LL_DataInStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->IN_ep[epnum].xfer_buff); + 8008372: 687b ldr r3, [r7, #4] + 8008374: f8d3 02d4 ldr.w r0, [r3, #724] @ 0x2d4 + 8008378: 78fa ldrb r2, [r7, #3] + 800837a: 6879 ldr r1, [r7, #4] + 800837c: 4613 mov r3, r2 + 800837e: 009b lsls r3, r3, #2 + 8008380: 4413 add r3, r2 + 8008382: 00db lsls r3, r3, #3 + 8008384: 440b add r3, r1 + 8008386: 3324 adds r3, #36 @ 0x24 + 8008388: 681a ldr r2, [r3, #0] + 800838a: 78fb ldrb r3, [r7, #3] + 800838c: 4619 mov r1, r3 + 800838e: f7fe fdda bl 8006f46 +} + 8008392: bf00 nop + 8008394: 3708 adds r7, #8 + 8008396: 46bd mov sp, r7 + 8008398: bd80 pop {r7, pc} + +0800839a : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_SOFCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 800839a: b580 push {r7, lr} + 800839c: b082 sub sp, #8 + 800839e: af00 add r7, sp, #0 + 80083a0: 6078 str r0, [r7, #4] + USBD_LL_SOF((USBD_HandleTypeDef*)hpcd->pData); + 80083a2: 687b ldr r3, [r7, #4] + 80083a4: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 + 80083a8: 4618 mov r0, r3 + 80083aa: f7fe feea bl 8007182 +} + 80083ae: bf00 nop + 80083b0: 3708 adds r7, #8 + 80083b2: 46bd mov sp, r7 + 80083b4: bd80 pop {r7, pc} + +080083b6 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ResetCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 80083b6: b580 push {r7, lr} + 80083b8: b084 sub sp, #16 + 80083ba: af00 add r7, sp, #0 + 80083bc: 6078 str r0, [r7, #4] + USBD_SpeedTypeDef speed = USBD_SPEED_FULL; + 80083be: 2301 movs r3, #1 + 80083c0: 73fb strb r3, [r7, #15] + + if ( hpcd->Init.speed != PCD_SPEED_FULL) + 80083c2: 687b ldr r3, [r7, #4] + 80083c4: 799b ldrb r3, [r3, #6] + 80083c6: 2b02 cmp r3, #2 + 80083c8: d001 beq.n 80083ce + { + Error_Handler(); + 80083ca: f7f8 f9a1 bl 8000710 + } + /* Set Speed. */ + USBD_LL_SetSpeed((USBD_HandleTypeDef*)hpcd->pData, speed); + 80083ce: 687b ldr r3, [r7, #4] + 80083d0: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 + 80083d4: 7bfa ldrb r2, [r7, #15] + 80083d6: 4611 mov r1, r2 + 80083d8: 4618 mov r0, r3 + 80083da: f7fe fe9a bl 8007112 + + /* Reset Device. */ + USBD_LL_Reset((USBD_HandleTypeDef*)hpcd->pData); + 80083de: 687b ldr r3, [r7, #4] + 80083e0: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 + 80083e4: 4618 mov r0, r3 + 80083e6: f7fe fe53 bl 8007090 +} + 80083ea: bf00 nop + 80083ec: 3710 adds r7, #16 + 80083ee: 46bd mov sp, r7 + 80083f0: bd80 pop {r7, pc} + ... + +080083f4 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 80083f4: b580 push {r7, lr} + 80083f6: b082 sub sp, #8 + 80083f8: af00 add r7, sp, #0 + 80083fa: 6078 str r0, [r7, #4] + /* Inform USB library that core enters in suspend Mode. */ + USBD_LL_Suspend((USBD_HandleTypeDef*)hpcd->pData); + 80083fc: 687b ldr r3, [r7, #4] + 80083fe: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 + 8008402: 4618 mov r0, r3 + 8008404: f7fe fe94 bl 8007130 + /* Enter in STOP mode. */ + /* USER CODE BEGIN 2 */ + if (hpcd->Init.low_power_enable) + 8008408: 687b ldr r3, [r7, #4] + 800840a: 7a9b ldrb r3, [r3, #10] + 800840c: 2b00 cmp r3, #0 + 800840e: d005 beq.n 800841c + { + /* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register. */ + SCB->SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk)); + 8008410: 4b04 ldr r3, [pc, #16] @ (8008424 ) + 8008412: 691b ldr r3, [r3, #16] + 8008414: 4a03 ldr r2, [pc, #12] @ (8008424 ) + 8008416: f043 0306 orr.w r3, r3, #6 + 800841a: 6113 str r3, [r2, #16] + } + /* USER CODE END 2 */ +} + 800841c: bf00 nop + 800841e: 3708 adds r7, #8 + 8008420: 46bd mov sp, r7 + 8008422: bd80 pop {r7, pc} + 8008424: e000ed00 .word 0xe000ed00 + +08008428 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 8008428: b580 push {r7, lr} + 800842a: b082 sub sp, #8 + 800842c: af00 add r7, sp, #0 + 800842e: 6078 str r0, [r7, #4] + /* USER CODE BEGIN 3 */ + + /* USER CODE END 3 */ + USBD_LL_Resume((USBD_HandleTypeDef*)hpcd->pData); + 8008430: 687b ldr r3, [r7, #4] + 8008432: f8d3 32d4 ldr.w r3, [r3, #724] @ 0x2d4 + 8008436: 4618 mov r0, r3 + 8008438: f7fe fe8e bl 8007158 +} + 800843c: bf00 nop + 800843e: 3708 adds r7, #8 + 8008440: 46bd mov sp, r7 + 8008442: bd80 pop {r7, pc} + +08008444 : + * @brief Initializes the low level portion of the device driver. + * @param pdev: Device handle + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev) +{ + 8008444: b580 push {r7, lr} + 8008446: b082 sub sp, #8 + 8008448: af00 add r7, sp, #0 + 800844a: 6078 str r0, [r7, #4] + /* Init USB Ip. */ + /* Link the driver to the stack. */ + hpcd_USB_FS.pData = pdev; + 800844c: 4a28 ldr r2, [pc, #160] @ (80084f0 ) + 800844e: 687b ldr r3, [r7, #4] + 8008450: f8c2 32d4 str.w r3, [r2, #724] @ 0x2d4 + pdev->pData = &hpcd_USB_FS; + 8008454: 687b ldr r3, [r7, #4] + 8008456: 4a26 ldr r2, [pc, #152] @ (80084f0 ) + 8008458: f8c3 22c0 str.w r2, [r3, #704] @ 0x2c0 + + hpcd_USB_FS.Instance = USB; + 800845c: 4b24 ldr r3, [pc, #144] @ (80084f0 ) + 800845e: 4a25 ldr r2, [pc, #148] @ (80084f4 ) + 8008460: 601a str r2, [r3, #0] + hpcd_USB_FS.Init.dev_endpoints = 8; + 8008462: 4b23 ldr r3, [pc, #140] @ (80084f0 ) + 8008464: 2208 movs r2, #8 + 8008466: 711a strb r2, [r3, #4] + hpcd_USB_FS.Init.speed = PCD_SPEED_FULL; + 8008468: 4b21 ldr r3, [pc, #132] @ (80084f0 ) + 800846a: 2202 movs r2, #2 + 800846c: 719a strb r2, [r3, #6] + hpcd_USB_FS.Init.low_power_enable = DISABLE; + 800846e: 4b20 ldr r3, [pc, #128] @ (80084f0 ) + 8008470: 2200 movs r2, #0 + 8008472: 729a strb r2, [r3, #10] + hpcd_USB_FS.Init.lpm_enable = DISABLE; + 8008474: 4b1e ldr r3, [pc, #120] @ (80084f0 ) + 8008476: 2200 movs r2, #0 + 8008478: 72da strb r2, [r3, #11] + hpcd_USB_FS.Init.battery_charging_enable = DISABLE; + 800847a: 4b1d ldr r3, [pc, #116] @ (80084f0 ) + 800847c: 2200 movs r2, #0 + 800847e: 731a strb r2, [r3, #12] + if (HAL_PCD_Init(&hpcd_USB_FS) != HAL_OK) + 8008480: 481b ldr r0, [pc, #108] @ (80084f0 ) + 8008482: f7f8 fdd5 bl 8001030 + 8008486: 4603 mov r3, r0 + 8008488: 2b00 cmp r3, #0 + 800848a: d001 beq.n 8008490 + { + Error_Handler( ); + 800848c: f7f8 f940 bl 8000710 + HAL_PCD_RegisterDataInStageCallback(&hpcd_USB_FS, PCD_DataInStageCallback); + HAL_PCD_RegisterIsoOutIncpltCallback(&hpcd_USB_FS, PCD_ISOOUTIncompleteCallback); + HAL_PCD_RegisterIsoInIncpltCallback(&hpcd_USB_FS, PCD_ISOINIncompleteCallback); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + /* USER CODE BEGIN EndPoint_Configuration */ + HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x00 , PCD_SNG_BUF, 0x18); + 8008490: 687b ldr r3, [r7, #4] + 8008492: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 8008496: 2318 movs r3, #24 + 8008498: 2200 movs r2, #0 + 800849a: 2100 movs r1, #0 + 800849c: f7fa fae6 bl 8002a6c + HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x80 , PCD_SNG_BUF, 0x58); + 80084a0: 687b ldr r3, [r7, #4] + 80084a2: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 80084a6: 2358 movs r3, #88 @ 0x58 + 80084a8: 2200 movs r2, #0 + 80084aa: 2180 movs r1, #128 @ 0x80 + 80084ac: f7fa fade bl 8002a6c + /* USER CODE END EndPoint_Configuration */ + /* USER CODE BEGIN EndPoint_Configuration_CDC */ + HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x81 , PCD_SNG_BUF, 0xC0); + 80084b0: 687b ldr r3, [r7, #4] + 80084b2: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 80084b6: 23c0 movs r3, #192 @ 0xc0 + 80084b8: 2200 movs r2, #0 + 80084ba: 2181 movs r1, #129 @ 0x81 + 80084bc: f7fa fad6 bl 8002a6c + HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x01 , PCD_SNG_BUF, 0x110); + 80084c0: 687b ldr r3, [r7, #4] + 80084c2: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 80084c6: f44f 7388 mov.w r3, #272 @ 0x110 + 80084ca: 2200 movs r2, #0 + 80084cc: 2101 movs r1, #1 + 80084ce: f7fa facd bl 8002a6c + HAL_PCDEx_PMAConfig((PCD_HandleTypeDef*)pdev->pData , 0x82 , PCD_SNG_BUF, 0x100); + 80084d2: 687b ldr r3, [r7, #4] + 80084d4: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 80084d8: f44f 7380 mov.w r3, #256 @ 0x100 + 80084dc: 2200 movs r2, #0 + 80084de: 2182 movs r1, #130 @ 0x82 + 80084e0: f7fa fac4 bl 8002a6c + /* USER CODE END EndPoint_Configuration_CDC */ + return USBD_OK; + 80084e4: 2300 movs r3, #0 +} + 80084e6: 4618 mov r0, r3 + 80084e8: 3708 adds r7, #8 + 80084ea: 46bd mov sp, r7 + 80084ec: bd80 pop {r7, pc} + 80084ee: bf00 nop + 80084f0: 20001094 .word 0x20001094 + 80084f4: 40005c00 .word 0x40005c00 + +080084f8 : + * @brief Starts the low level portion of the device driver. + * @param pdev: Device handle + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev) +{ + 80084f8: b580 push {r7, lr} + 80084fa: b084 sub sp, #16 + 80084fc: af00 add r7, sp, #0 + 80084fe: 6078 str r0, [r7, #4] + HAL_StatusTypeDef hal_status = HAL_OK; + 8008500: 2300 movs r3, #0 + 8008502: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 8008504: 2300 movs r3, #0 + 8008506: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_Start(pdev->pData); + 8008508: 687b ldr r3, [r7, #4] + 800850a: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 800850e: 4618 mov r0, r3 + 8008510: f7f8 fe84 bl 800121c + 8008514: 4603 mov r3, r0 + 8008516: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 8008518: 7bfb ldrb r3, [r7, #15] + 800851a: 4618 mov r0, r3 + 800851c: f000 f94e bl 80087bc + 8008520: 4603 mov r3, r0 + 8008522: 73bb strb r3, [r7, #14] + + return usb_status; + 8008524: 7bbb ldrb r3, [r7, #14] +} + 8008526: 4618 mov r0, r3 + 8008528: 3710 adds r7, #16 + 800852a: 46bd mov sp, r7 + 800852c: bd80 pop {r7, pc} + +0800852e : + * @param ep_type: Endpoint type + * @param ep_mps: Endpoint max packet size + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps) +{ + 800852e: b580 push {r7, lr} + 8008530: b084 sub sp, #16 + 8008532: af00 add r7, sp, #0 + 8008534: 6078 str r0, [r7, #4] + 8008536: 4608 mov r0, r1 + 8008538: 4611 mov r1, r2 + 800853a: 461a mov r2, r3 + 800853c: 4603 mov r3, r0 + 800853e: 70fb strb r3, [r7, #3] + 8008540: 460b mov r3, r1 + 8008542: 70bb strb r3, [r7, #2] + 8008544: 4613 mov r3, r2 + 8008546: 803b strh r3, [r7, #0] + HAL_StatusTypeDef hal_status = HAL_OK; + 8008548: 2300 movs r3, #0 + 800854a: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 800854c: 2300 movs r3, #0 + 800854e: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_EP_Open(pdev->pData, ep_addr, ep_mps, ep_type); + 8008550: 687b ldr r3, [r7, #4] + 8008552: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 8008556: 78bb ldrb r3, [r7, #2] + 8008558: 883a ldrh r2, [r7, #0] + 800855a: 78f9 ldrb r1, [r7, #3] + 800855c: f7f8 ffd8 bl 8001510 + 8008560: 4603 mov r3, r0 + 8008562: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 8008564: 7bfb ldrb r3, [r7, #15] + 8008566: 4618 mov r0, r3 + 8008568: f000 f928 bl 80087bc + 800856c: 4603 mov r3, r0 + 800856e: 73bb strb r3, [r7, #14] + + return usb_status; + 8008570: 7bbb ldrb r3, [r7, #14] +} + 8008572: 4618 mov r0, r3 + 8008574: 3710 adds r7, #16 + 8008576: 46bd mov sp, r7 + 8008578: bd80 pop {r7, pc} + +0800857a : + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + 800857a: b580 push {r7, lr} + 800857c: b084 sub sp, #16 + 800857e: af00 add r7, sp, #0 + 8008580: 6078 str r0, [r7, #4] + 8008582: 460b mov r3, r1 + 8008584: 70fb strb r3, [r7, #3] + HAL_StatusTypeDef hal_status = HAL_OK; + 8008586: 2300 movs r3, #0 + 8008588: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 800858a: 2300 movs r3, #0 + 800858c: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_EP_Close(pdev->pData, ep_addr); + 800858e: 687b ldr r3, [r7, #4] + 8008590: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 8008594: 78fa ldrb r2, [r7, #3] + 8008596: 4611 mov r1, r2 + 8008598: 4618 mov r0, r3 + 800859a: f7f9 f816 bl 80015ca + 800859e: 4603 mov r3, r0 + 80085a0: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 80085a2: 7bfb ldrb r3, [r7, #15] + 80085a4: 4618 mov r0, r3 + 80085a6: f000 f909 bl 80087bc + 80085aa: 4603 mov r3, r0 + 80085ac: 73bb strb r3, [r7, #14] + + return usb_status; + 80085ae: 7bbb ldrb r3, [r7, #14] +} + 80085b0: 4618 mov r0, r3 + 80085b2: 3710 adds r7, #16 + 80085b4: 46bd mov sp, r7 + 80085b6: bd80 pop {r7, pc} + +080085b8 : + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + 80085b8: b580 push {r7, lr} + 80085ba: b084 sub sp, #16 + 80085bc: af00 add r7, sp, #0 + 80085be: 6078 str r0, [r7, #4] + 80085c0: 460b mov r3, r1 + 80085c2: 70fb strb r3, [r7, #3] + HAL_StatusTypeDef hal_status = HAL_OK; + 80085c4: 2300 movs r3, #0 + 80085c6: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 80085c8: 2300 movs r3, #0 + 80085ca: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_EP_SetStall(pdev->pData, ep_addr); + 80085cc: 687b ldr r3, [r7, #4] + 80085ce: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 80085d2: 78fa ldrb r2, [r7, #3] + 80085d4: 4611 mov r1, r2 + 80085d6: 4618 mov r0, r3 + 80085d8: f7f9 f8be bl 8001758 + 80085dc: 4603 mov r3, r0 + 80085de: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 80085e0: 7bfb ldrb r3, [r7, #15] + 80085e2: 4618 mov r0, r3 + 80085e4: f000 f8ea bl 80087bc + 80085e8: 4603 mov r3, r0 + 80085ea: 73bb strb r3, [r7, #14] + + return usb_status; + 80085ec: 7bbb ldrb r3, [r7, #14] +} + 80085ee: 4618 mov r0, r3 + 80085f0: 3710 adds r7, #16 + 80085f2: 46bd mov sp, r7 + 80085f4: bd80 pop {r7, pc} + +080085f6 : + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + 80085f6: b580 push {r7, lr} + 80085f8: b084 sub sp, #16 + 80085fa: af00 add r7, sp, #0 + 80085fc: 6078 str r0, [r7, #4] + 80085fe: 460b mov r3, r1 + 8008600: 70fb strb r3, [r7, #3] + HAL_StatusTypeDef hal_status = HAL_OK; + 8008602: 2300 movs r3, #0 + 8008604: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 8008606: 2300 movs r3, #0 + 8008608: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_EP_ClrStall(pdev->pData, ep_addr); + 800860a: 687b ldr r3, [r7, #4] + 800860c: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 8008610: 78fa ldrb r2, [r7, #3] + 8008612: 4611 mov r1, r2 + 8008614: 4618 mov r0, r3 + 8008616: f7f9 f8ff bl 8001818 + 800861a: 4603 mov r3, r0 + 800861c: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 800861e: 7bfb ldrb r3, [r7, #15] + 8008620: 4618 mov r0, r3 + 8008622: f000 f8cb bl 80087bc + 8008626: 4603 mov r3, r0 + 8008628: 73bb strb r3, [r7, #14] + + return usb_status; + 800862a: 7bbb ldrb r3, [r7, #14] +} + 800862c: 4618 mov r0, r3 + 800862e: 3710 adds r7, #16 + 8008630: 46bd mov sp, r7 + 8008632: bd80 pop {r7, pc} + +08008634 : + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval Stall (1: Yes, 0: No) + */ +uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + 8008634: b480 push {r7} + 8008636: b085 sub sp, #20 + 8008638: af00 add r7, sp, #0 + 800863a: 6078 str r0, [r7, #4] + 800863c: 460b mov r3, r1 + 800863e: 70fb strb r3, [r7, #3] + PCD_HandleTypeDef *hpcd = (PCD_HandleTypeDef*) pdev->pData; + 8008640: 687b ldr r3, [r7, #4] + 8008642: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 8008646: 60fb str r3, [r7, #12] + + if((ep_addr & 0x80) == 0x80) + 8008648: f997 3003 ldrsb.w r3, [r7, #3] + 800864c: 2b00 cmp r3, #0 + 800864e: da0b bge.n 8008668 + { + return hpcd->IN_ep[ep_addr & 0x7F].is_stall; + 8008650: 78fb ldrb r3, [r7, #3] + 8008652: f003 027f and.w r2, r3, #127 @ 0x7f + 8008656: 68f9 ldr r1, [r7, #12] + 8008658: 4613 mov r3, r2 + 800865a: 009b lsls r3, r3, #2 + 800865c: 4413 add r3, r2 + 800865e: 00db lsls r3, r3, #3 + 8008660: 440b add r3, r1 + 8008662: 3312 adds r3, #18 + 8008664: 781b ldrb r3, [r3, #0] + 8008666: e00b b.n 8008680 + } + else + { + return hpcd->OUT_ep[ep_addr & 0x7F].is_stall; + 8008668: 78fb ldrb r3, [r7, #3] + 800866a: f003 027f and.w r2, r3, #127 @ 0x7f + 800866e: 68f9 ldr r1, [r7, #12] + 8008670: 4613 mov r3, r2 + 8008672: 009b lsls r3, r3, #2 + 8008674: 4413 add r3, r2 + 8008676: 00db lsls r3, r3, #3 + 8008678: 440b add r3, r1 + 800867a: f503 73a9 add.w r3, r3, #338 @ 0x152 + 800867e: 781b ldrb r3, [r3, #0] + } +} + 8008680: 4618 mov r0, r3 + 8008682: 3714 adds r7, #20 + 8008684: 46bd mov sp, r7 + 8008686: bc80 pop {r7} + 8008688: 4770 bx lr + +0800868a : + * @param pdev: Device handle + * @param dev_addr: Device address + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr) +{ + 800868a: b580 push {r7, lr} + 800868c: b084 sub sp, #16 + 800868e: af00 add r7, sp, #0 + 8008690: 6078 str r0, [r7, #4] + 8008692: 460b mov r3, r1 + 8008694: 70fb strb r3, [r7, #3] + HAL_StatusTypeDef hal_status = HAL_OK; + 8008696: 2300 movs r3, #0 + 8008698: 73fb strb r3, [r7, #15] + USBD_StatusTypeDef usb_status = USBD_OK; + 800869a: 2300 movs r3, #0 + 800869c: 73bb strb r3, [r7, #14] + + hal_status = HAL_PCD_SetAddress(pdev->pData, dev_addr); + 800869e: 687b ldr r3, [r7, #4] + 80086a0: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 80086a4: 78fa ldrb r2, [r7, #3] + 80086a6: 4611 mov r1, r2 + 80086a8: 4618 mov r0, r3 + 80086aa: f7f8 ff0d bl 80014c8 + 80086ae: 4603 mov r3, r0 + 80086b0: 73fb strb r3, [r7, #15] + + usb_status = USBD_Get_USB_Status(hal_status); + 80086b2: 7bfb ldrb r3, [r7, #15] + 80086b4: 4618 mov r0, r3 + 80086b6: f000 f881 bl 80087bc + 80086ba: 4603 mov r3, r0 + 80086bc: 73bb strb r3, [r7, #14] + + return usb_status; + 80086be: 7bbb ldrb r3, [r7, #14] +} + 80086c0: 4618 mov r0, r3 + 80086c2: 3710 adds r7, #16 + 80086c4: 46bd mov sp, r7 + 80086c6: bd80 pop {r7, pc} + +080086c8 : + * @param pbuf: Pointer to data to be sent + * @param size: Data size + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) +{ + 80086c8: b580 push {r7, lr} + 80086ca: b086 sub sp, #24 + 80086cc: af00 add r7, sp, #0 + 80086ce: 60f8 str r0, [r7, #12] + 80086d0: 607a str r2, [r7, #4] + 80086d2: 461a mov r2, r3 + 80086d4: 460b mov r3, r1 + 80086d6: 72fb strb r3, [r7, #11] + 80086d8: 4613 mov r3, r2 + 80086da: 813b strh r3, [r7, #8] + HAL_StatusTypeDef hal_status = HAL_OK; + 80086dc: 2300 movs r3, #0 + 80086de: 75fb strb r3, [r7, #23] + USBD_StatusTypeDef usb_status = USBD_OK; + 80086e0: 2300 movs r3, #0 + 80086e2: 75bb strb r3, [r7, #22] + + hal_status = HAL_PCD_EP_Transmit(pdev->pData, ep_addr, pbuf, size); + 80086e4: 68fb ldr r3, [r7, #12] + 80086e6: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 80086ea: 893b ldrh r3, [r7, #8] + 80086ec: 7af9 ldrb r1, [r7, #11] + 80086ee: 687a ldr r2, [r7, #4] + 80086f0: f7f8 fffb bl 80016ea + 80086f4: 4603 mov r3, r0 + 80086f6: 75fb strb r3, [r7, #23] + + usb_status = USBD_Get_USB_Status(hal_status); + 80086f8: 7dfb ldrb r3, [r7, #23] + 80086fa: 4618 mov r0, r3 + 80086fc: f000 f85e bl 80087bc + 8008700: 4603 mov r3, r0 + 8008702: 75bb strb r3, [r7, #22] + + return usb_status; + 8008704: 7dbb ldrb r3, [r7, #22] +} + 8008706: 4618 mov r0, r3 + 8008708: 3718 adds r7, #24 + 800870a: 46bd mov sp, r7 + 800870c: bd80 pop {r7, pc} + +0800870e : + * @param pbuf: Pointer to data to be received + * @param size: Data size + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size) +{ + 800870e: b580 push {r7, lr} + 8008710: b086 sub sp, #24 + 8008712: af00 add r7, sp, #0 + 8008714: 60f8 str r0, [r7, #12] + 8008716: 607a str r2, [r7, #4] + 8008718: 461a mov r2, r3 + 800871a: 460b mov r3, r1 + 800871c: 72fb strb r3, [r7, #11] + 800871e: 4613 mov r3, r2 + 8008720: 813b strh r3, [r7, #8] + HAL_StatusTypeDef hal_status = HAL_OK; + 8008722: 2300 movs r3, #0 + 8008724: 75fb strb r3, [r7, #23] + USBD_StatusTypeDef usb_status = USBD_OK; + 8008726: 2300 movs r3, #0 + 8008728: 75bb strb r3, [r7, #22] + + hal_status = HAL_PCD_EP_Receive(pdev->pData, ep_addr, pbuf, size); + 800872a: 68fb ldr r3, [r7, #12] + 800872c: f8d3 02c0 ldr.w r0, [r3, #704] @ 0x2c0 + 8008730: 893b ldrh r3, [r7, #8] + 8008732: 7af9 ldrb r1, [r7, #11] + 8008734: 687a ldr r2, [r7, #4] + 8008736: f7f8 ff90 bl 800165a + 800873a: 4603 mov r3, r0 + 800873c: 75fb strb r3, [r7, #23] + + usb_status = USBD_Get_USB_Status(hal_status); + 800873e: 7dfb ldrb r3, [r7, #23] + 8008740: 4618 mov r0, r3 + 8008742: f000 f83b bl 80087bc + 8008746: 4603 mov r3, r0 + 8008748: 75bb strb r3, [r7, #22] + + return usb_status; + 800874a: 7dbb ldrb r3, [r7, #22] +} + 800874c: 4618 mov r0, r3 + 800874e: 3718 adds r7, #24 + 8008750: 46bd mov sp, r7 + 8008752: bd80 pop {r7, pc} + +08008754 : + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval Received Data Size + */ +uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + 8008754: b580 push {r7, lr} + 8008756: b082 sub sp, #8 + 8008758: af00 add r7, sp, #0 + 800875a: 6078 str r0, [r7, #4] + 800875c: 460b mov r3, r1 + 800875e: 70fb strb r3, [r7, #3] + return HAL_PCD_EP_GetRxCount((PCD_HandleTypeDef*) pdev->pData, ep_addr); + 8008760: 687b ldr r3, [r7, #4] + 8008762: f8d3 32c0 ldr.w r3, [r3, #704] @ 0x2c0 + 8008766: 78fa ldrb r2, [r7, #3] + 8008768: 4611 mov r1, r2 + 800876a: 4618 mov r0, r3 + 800876c: f7f8 ffa6 bl 80016bc + 8008770: 4603 mov r3, r0 +} + 8008772: 4618 mov r0, r3 + 8008774: 3708 adds r7, #8 + 8008776: 46bd mov sp, r7 + 8008778: bd80 pop {r7, pc} + ... + +0800877c : + * @brief Static single allocation. + * @param size: Size of allocated memory + * @retval None + */ +void *USBD_static_malloc(uint32_t size) +{ + 800877c: b480 push {r7} + 800877e: b083 sub sp, #12 + 8008780: af00 add r7, sp, #0 + 8008782: 6078 str r0, [r7, #4] + static uint32_t mem[(sizeof(USBD_CDC_HandleTypeDef)/4)+1];/* On 32-bit boundary */ + return mem; + 8008784: 4b02 ldr r3, [pc, #8] @ (8008790 ) +} + 8008786: 4618 mov r0, r3 + 8008788: 370c adds r7, #12 + 800878a: 46bd mov sp, r7 + 800878c: bc80 pop {r7} + 800878e: 4770 bx lr + 8008790: 2000136c .word 0x2000136c + +08008794 : + * @brief Dummy memory free + * @param p: Pointer to allocated memory address + * @retval None + */ +void USBD_static_free(void *p) +{ + 8008794: b480 push {r7} + 8008796: b083 sub sp, #12 + 8008798: af00 add r7, sp, #0 + 800879a: 6078 str r0, [r7, #4] + +} + 800879c: bf00 nop + 800879e: 370c adds r7, #12 + 80087a0: 46bd mov sp, r7 + 80087a2: bc80 pop {r7} + 80087a4: 4770 bx lr + +080087a6 : +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) +#else +void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + 80087a6: b480 push {r7} + 80087a8: b083 sub sp, #12 + 80087aa: af00 add r7, sp, #0 + 80087ac: 6078 str r0, [r7, #4] + 80087ae: 460b mov r3, r1 + 80087b0: 70fb strb r3, [r7, #3] + { + /* Configure High connection state. */ + + } + /* USER CODE END 6 */ +} + 80087b2: bf00 nop + 80087b4: 370c adds r7, #12 + 80087b6: 46bd mov sp, r7 + 80087b8: bc80 pop {r7} + 80087ba: 4770 bx lr + +080087bc : + * @brief Returns the USB status depending on the HAL status: + * @param hal_status: HAL status + * @retval USB status + */ +USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status) +{ + 80087bc: b480 push {r7} + 80087be: b085 sub sp, #20 + 80087c0: af00 add r7, sp, #0 + 80087c2: 4603 mov r3, r0 + 80087c4: 71fb strb r3, [r7, #7] + USBD_StatusTypeDef usb_status = USBD_OK; + 80087c6: 2300 movs r3, #0 + 80087c8: 73fb strb r3, [r7, #15] + + switch (hal_status) + 80087ca: 79fb ldrb r3, [r7, #7] + 80087cc: 2b03 cmp r3, #3 + 80087ce: d817 bhi.n 8008800 + 80087d0: a201 add r2, pc, #4 @ (adr r2, 80087d8 ) + 80087d2: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 80087d6: bf00 nop + 80087d8: 080087e9 .word 0x080087e9 + 80087dc: 080087ef .word 0x080087ef + 80087e0: 080087f5 .word 0x080087f5 + 80087e4: 080087fb .word 0x080087fb + { + case HAL_OK : + usb_status = USBD_OK; + 80087e8: 2300 movs r3, #0 + 80087ea: 73fb strb r3, [r7, #15] + break; + 80087ec: e00b b.n 8008806 + case HAL_ERROR : + usb_status = USBD_FAIL; + 80087ee: 2302 movs r3, #2 + 80087f0: 73fb strb r3, [r7, #15] + break; + 80087f2: e008 b.n 8008806 + case HAL_BUSY : + usb_status = USBD_BUSY; + 80087f4: 2301 movs r3, #1 + 80087f6: 73fb strb r3, [r7, #15] + break; + 80087f8: e005 b.n 8008806 + case HAL_TIMEOUT : + usb_status = USBD_FAIL; + 80087fa: 2302 movs r3, #2 + 80087fc: 73fb strb r3, [r7, #15] + break; + 80087fe: e002 b.n 8008806 + default : + usb_status = USBD_FAIL; + 8008800: 2302 movs r3, #2 + 8008802: 73fb strb r3, [r7, #15] + break; + 8008804: bf00 nop + } + return usb_status; + 8008806: 7bfb ldrb r3, [r7, #15] +} + 8008808: 4618 mov r0, r3 + 800880a: 3714 adds r7, #20 + 800880c: 46bd mov sp, r7 + 800880e: bc80 pop {r7} + 8008810: 4770 bx lr + 8008812: bf00 nop + +08008814 : + 8008814: b40e push {r1, r2, r3} + 8008816: f06f 4100 mvn.w r1, #2147483648 @ 0x80000000 + 800881a: b510 push {r4, lr} + 800881c: 2400 movs r4, #0 + 800881e: b09d sub sp, #116 @ 0x74 + 8008820: ab1f add r3, sp, #124 @ 0x7c + 8008822: 9002 str r0, [sp, #8] + 8008824: 9006 str r0, [sp, #24] + 8008826: 9107 str r1, [sp, #28] + 8008828: 9104 str r1, [sp, #16] + 800882a: 4809 ldr r0, [pc, #36] @ (8008850 ) + 800882c: 4909 ldr r1, [pc, #36] @ (8008854 ) + 800882e: f853 2b04 ldr.w r2, [r3], #4 + 8008832: 9105 str r1, [sp, #20] + 8008834: 6800 ldr r0, [r0, #0] + 8008836: a902 add r1, sp, #8 + 8008838: 9301 str r3, [sp, #4] + 800883a: 941b str r4, [sp, #108] @ 0x6c + 800883c: f000 f992 bl 8008b64 <_svfiprintf_r> + 8008840: 9b02 ldr r3, [sp, #8] + 8008842: 701c strb r4, [r3, #0] + 8008844: b01d add sp, #116 @ 0x74 + 8008846: e8bd 4010 ldmia.w sp!, {r4, lr} + 800884a: b003 add sp, #12 + 800884c: 4770 bx lr + 800884e: bf00 nop + 8008850: 2000017c .word 0x2000017c + 8008854: ffff0208 .word 0xffff0208 + +08008858 : + 8008858: 4603 mov r3, r0 + 800885a: 4402 add r2, r0 + 800885c: 4293 cmp r3, r2 + 800885e: d100 bne.n 8008862 + 8008860: 4770 bx lr + 8008862: f803 1b01 strb.w r1, [r3], #1 + 8008866: e7f9 b.n 800885c + +08008868 <__errno>: + 8008868: 4b01 ldr r3, [pc, #4] @ (8008870 <__errno+0x8>) + 800886a: 6818 ldr r0, [r3, #0] + 800886c: 4770 bx lr + 800886e: bf00 nop + 8008870: 2000017c .word 0x2000017c + +08008874 <__libc_init_array>: + 8008874: b570 push {r4, r5, r6, lr} + 8008876: 2600 movs r6, #0 + 8008878: 4d0c ldr r5, [pc, #48] @ (80088ac <__libc_init_array+0x38>) + 800887a: 4c0d ldr r4, [pc, #52] @ (80088b0 <__libc_init_array+0x3c>) + 800887c: 1b64 subs r4, r4, r5 + 800887e: 10a4 asrs r4, r4, #2 + 8008880: 42a6 cmp r6, r4 + 8008882: d109 bne.n 8008898 <__libc_init_array+0x24> + 8008884: f000 fc76 bl 8009174 <_init> + 8008888: 2600 movs r6, #0 + 800888a: 4d0a ldr r5, [pc, #40] @ (80088b4 <__libc_init_array+0x40>) + 800888c: 4c0a ldr r4, [pc, #40] @ (80088b8 <__libc_init_array+0x44>) + 800888e: 1b64 subs r4, r4, r5 + 8008890: 10a4 asrs r4, r4, #2 + 8008892: 42a6 cmp r6, r4 + 8008894: d105 bne.n 80088a2 <__libc_init_array+0x2e> + 8008896: bd70 pop {r4, r5, r6, pc} + 8008898: f855 3b04 ldr.w r3, [r5], #4 + 800889c: 4798 blx r3 + 800889e: 3601 adds r6, #1 + 80088a0: e7ee b.n 8008880 <__libc_init_array+0xc> + 80088a2: f855 3b04 ldr.w r3, [r5], #4 + 80088a6: 4798 blx r3 + 80088a8: 3601 adds r6, #1 + 80088aa: e7f2 b.n 8008892 <__libc_init_array+0x1e> + 80088ac: 0800923c .word 0x0800923c + 80088b0: 0800923c .word 0x0800923c + 80088b4: 0800923c .word 0x0800923c + 80088b8: 08009240 .word 0x08009240 + +080088bc <__retarget_lock_acquire_recursive>: + 80088bc: 4770 bx lr + +080088be <__retarget_lock_release_recursive>: + 80088be: 4770 bx lr + +080088c0 <_free_r>: + 80088c0: b538 push {r3, r4, r5, lr} + 80088c2: 4605 mov r5, r0 + 80088c4: 2900 cmp r1, #0 + 80088c6: d040 beq.n 800894a <_free_r+0x8a> + 80088c8: f851 3c04 ldr.w r3, [r1, #-4] + 80088cc: 1f0c subs r4, r1, #4 + 80088ce: 2b00 cmp r3, #0 + 80088d0: bfb8 it lt + 80088d2: 18e4 addlt r4, r4, r3 + 80088d4: f000 f8de bl 8008a94 <__malloc_lock> + 80088d8: 4a1c ldr r2, [pc, #112] @ (800894c <_free_r+0x8c>) + 80088da: 6813 ldr r3, [r2, #0] + 80088dc: b933 cbnz r3, 80088ec <_free_r+0x2c> + 80088de: 6063 str r3, [r4, #4] + 80088e0: 6014 str r4, [r2, #0] + 80088e2: 4628 mov r0, r5 + 80088e4: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 80088e8: f000 b8da b.w 8008aa0 <__malloc_unlock> + 80088ec: 42a3 cmp r3, r4 + 80088ee: d908 bls.n 8008902 <_free_r+0x42> + 80088f0: 6820 ldr r0, [r4, #0] + 80088f2: 1821 adds r1, r4, r0 + 80088f4: 428b cmp r3, r1 + 80088f6: bf01 itttt eq + 80088f8: 6819 ldreq r1, [r3, #0] + 80088fa: 685b ldreq r3, [r3, #4] + 80088fc: 1809 addeq r1, r1, r0 + 80088fe: 6021 streq r1, [r4, #0] + 8008900: e7ed b.n 80088de <_free_r+0x1e> + 8008902: 461a mov r2, r3 + 8008904: 685b ldr r3, [r3, #4] + 8008906: b10b cbz r3, 800890c <_free_r+0x4c> + 8008908: 42a3 cmp r3, r4 + 800890a: d9fa bls.n 8008902 <_free_r+0x42> + 800890c: 6811 ldr r1, [r2, #0] + 800890e: 1850 adds r0, r2, r1 + 8008910: 42a0 cmp r0, r4 + 8008912: d10b bne.n 800892c <_free_r+0x6c> + 8008914: 6820 ldr r0, [r4, #0] + 8008916: 4401 add r1, r0 + 8008918: 1850 adds r0, r2, r1 + 800891a: 4283 cmp r3, r0 + 800891c: 6011 str r1, [r2, #0] + 800891e: d1e0 bne.n 80088e2 <_free_r+0x22> + 8008920: 6818 ldr r0, [r3, #0] + 8008922: 685b ldr r3, [r3, #4] + 8008924: 4408 add r0, r1 + 8008926: 6010 str r0, [r2, #0] + 8008928: 6053 str r3, [r2, #4] + 800892a: e7da b.n 80088e2 <_free_r+0x22> + 800892c: d902 bls.n 8008934 <_free_r+0x74> + 800892e: 230c movs r3, #12 + 8008930: 602b str r3, [r5, #0] + 8008932: e7d6 b.n 80088e2 <_free_r+0x22> + 8008934: 6820 ldr r0, [r4, #0] + 8008936: 1821 adds r1, r4, r0 + 8008938: 428b cmp r3, r1 + 800893a: bf01 itttt eq + 800893c: 6819 ldreq r1, [r3, #0] + 800893e: 685b ldreq r3, [r3, #4] + 8008940: 1809 addeq r1, r1, r0 + 8008942: 6021 streq r1, [r4, #0] + 8008944: 6063 str r3, [r4, #4] + 8008946: 6054 str r4, [r2, #4] + 8008948: e7cb b.n 80088e2 <_free_r+0x22> + 800894a: bd38 pop {r3, r4, r5, pc} + 800894c: 200016d0 .word 0x200016d0 + +08008950 : + 8008950: b570 push {r4, r5, r6, lr} + 8008952: 4e0f ldr r6, [pc, #60] @ (8008990 ) + 8008954: 460c mov r4, r1 + 8008956: 6831 ldr r1, [r6, #0] + 8008958: 4605 mov r5, r0 + 800895a: b911 cbnz r1, 8008962 + 800895c: f000 fba8 bl 80090b0 <_sbrk_r> + 8008960: 6030 str r0, [r6, #0] + 8008962: 4621 mov r1, r4 + 8008964: 4628 mov r0, r5 + 8008966: f000 fba3 bl 80090b0 <_sbrk_r> + 800896a: 1c43 adds r3, r0, #1 + 800896c: d103 bne.n 8008976 + 800896e: f04f 34ff mov.w r4, #4294967295 + 8008972: 4620 mov r0, r4 + 8008974: bd70 pop {r4, r5, r6, pc} + 8008976: 1cc4 adds r4, r0, #3 + 8008978: f024 0403 bic.w r4, r4, #3 + 800897c: 42a0 cmp r0, r4 + 800897e: d0f8 beq.n 8008972 + 8008980: 1a21 subs r1, r4, r0 + 8008982: 4628 mov r0, r5 + 8008984: f000 fb94 bl 80090b0 <_sbrk_r> + 8008988: 3001 adds r0, #1 + 800898a: d1f2 bne.n 8008972 + 800898c: e7ef b.n 800896e + 800898e: bf00 nop + 8008990: 200016cc .word 0x200016cc + +08008994 <_malloc_r>: + 8008994: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 8008998: 1ccd adds r5, r1, #3 + 800899a: f025 0503 bic.w r5, r5, #3 + 800899e: 3508 adds r5, #8 + 80089a0: 2d0c cmp r5, #12 + 80089a2: bf38 it cc + 80089a4: 250c movcc r5, #12 + 80089a6: 2d00 cmp r5, #0 + 80089a8: 4606 mov r6, r0 + 80089aa: db01 blt.n 80089b0 <_malloc_r+0x1c> + 80089ac: 42a9 cmp r1, r5 + 80089ae: d904 bls.n 80089ba <_malloc_r+0x26> + 80089b0: 230c movs r3, #12 + 80089b2: 6033 str r3, [r6, #0] + 80089b4: 2000 movs r0, #0 + 80089b6: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 80089ba: f8df 80d4 ldr.w r8, [pc, #212] @ 8008a90 <_malloc_r+0xfc> + 80089be: f000 f869 bl 8008a94 <__malloc_lock> + 80089c2: f8d8 3000 ldr.w r3, [r8] + 80089c6: 461c mov r4, r3 + 80089c8: bb44 cbnz r4, 8008a1c <_malloc_r+0x88> + 80089ca: 4629 mov r1, r5 + 80089cc: 4630 mov r0, r6 + 80089ce: f7ff ffbf bl 8008950 + 80089d2: 1c43 adds r3, r0, #1 + 80089d4: 4604 mov r4, r0 + 80089d6: d158 bne.n 8008a8a <_malloc_r+0xf6> + 80089d8: f8d8 4000 ldr.w r4, [r8] + 80089dc: 4627 mov r7, r4 + 80089de: 2f00 cmp r7, #0 + 80089e0: d143 bne.n 8008a6a <_malloc_r+0xd6> + 80089e2: 2c00 cmp r4, #0 + 80089e4: d04b beq.n 8008a7e <_malloc_r+0xea> + 80089e6: 6823 ldr r3, [r4, #0] + 80089e8: 4639 mov r1, r7 + 80089ea: 4630 mov r0, r6 + 80089ec: eb04 0903 add.w r9, r4, r3 + 80089f0: f000 fb5e bl 80090b0 <_sbrk_r> + 80089f4: 4581 cmp r9, r0 + 80089f6: d142 bne.n 8008a7e <_malloc_r+0xea> + 80089f8: 6821 ldr r1, [r4, #0] + 80089fa: 4630 mov r0, r6 + 80089fc: 1a6d subs r5, r5, r1 + 80089fe: 4629 mov r1, r5 + 8008a00: f7ff ffa6 bl 8008950 + 8008a04: 3001 adds r0, #1 + 8008a06: d03a beq.n 8008a7e <_malloc_r+0xea> + 8008a08: 6823 ldr r3, [r4, #0] + 8008a0a: 442b add r3, r5 + 8008a0c: 6023 str r3, [r4, #0] + 8008a0e: f8d8 3000 ldr.w r3, [r8] + 8008a12: 685a ldr r2, [r3, #4] + 8008a14: bb62 cbnz r2, 8008a70 <_malloc_r+0xdc> + 8008a16: f8c8 7000 str.w r7, [r8] + 8008a1a: e00f b.n 8008a3c <_malloc_r+0xa8> + 8008a1c: 6822 ldr r2, [r4, #0] + 8008a1e: 1b52 subs r2, r2, r5 + 8008a20: d420 bmi.n 8008a64 <_malloc_r+0xd0> + 8008a22: 2a0b cmp r2, #11 + 8008a24: d917 bls.n 8008a56 <_malloc_r+0xc2> + 8008a26: 1961 adds r1, r4, r5 + 8008a28: 42a3 cmp r3, r4 + 8008a2a: 6025 str r5, [r4, #0] + 8008a2c: bf18 it ne + 8008a2e: 6059 strne r1, [r3, #4] + 8008a30: 6863 ldr r3, [r4, #4] + 8008a32: bf08 it eq + 8008a34: f8c8 1000 streq.w r1, [r8] + 8008a38: 5162 str r2, [r4, r5] + 8008a3a: 604b str r3, [r1, #4] + 8008a3c: 4630 mov r0, r6 + 8008a3e: f000 f82f bl 8008aa0 <__malloc_unlock> + 8008a42: f104 000b add.w r0, r4, #11 + 8008a46: 1d23 adds r3, r4, #4 + 8008a48: f020 0007 bic.w r0, r0, #7 + 8008a4c: 1ac2 subs r2, r0, r3 + 8008a4e: bf1c itt ne + 8008a50: 1a1b subne r3, r3, r0 + 8008a52: 50a3 strne r3, [r4, r2] + 8008a54: e7af b.n 80089b6 <_malloc_r+0x22> + 8008a56: 6862 ldr r2, [r4, #4] + 8008a58: 42a3 cmp r3, r4 + 8008a5a: bf0c ite eq + 8008a5c: f8c8 2000 streq.w r2, [r8] + 8008a60: 605a strne r2, [r3, #4] + 8008a62: e7eb b.n 8008a3c <_malloc_r+0xa8> + 8008a64: 4623 mov r3, r4 + 8008a66: 6864 ldr r4, [r4, #4] + 8008a68: e7ae b.n 80089c8 <_malloc_r+0x34> + 8008a6a: 463c mov r4, r7 + 8008a6c: 687f ldr r7, [r7, #4] + 8008a6e: e7b6 b.n 80089de <_malloc_r+0x4a> + 8008a70: 461a mov r2, r3 + 8008a72: 685b ldr r3, [r3, #4] + 8008a74: 42a3 cmp r3, r4 + 8008a76: d1fb bne.n 8008a70 <_malloc_r+0xdc> + 8008a78: 2300 movs r3, #0 + 8008a7a: 6053 str r3, [r2, #4] + 8008a7c: e7de b.n 8008a3c <_malloc_r+0xa8> + 8008a7e: 230c movs r3, #12 + 8008a80: 4630 mov r0, r6 + 8008a82: 6033 str r3, [r6, #0] + 8008a84: f000 f80c bl 8008aa0 <__malloc_unlock> + 8008a88: e794 b.n 80089b4 <_malloc_r+0x20> + 8008a8a: 6005 str r5, [r0, #0] + 8008a8c: e7d6 b.n 8008a3c <_malloc_r+0xa8> + 8008a8e: bf00 nop + 8008a90: 200016d0 .word 0x200016d0 + +08008a94 <__malloc_lock>: + 8008a94: 4801 ldr r0, [pc, #4] @ (8008a9c <__malloc_lock+0x8>) + 8008a96: f7ff bf11 b.w 80088bc <__retarget_lock_acquire_recursive> + 8008a9a: bf00 nop + 8008a9c: 200016c8 .word 0x200016c8 + +08008aa0 <__malloc_unlock>: + 8008aa0: 4801 ldr r0, [pc, #4] @ (8008aa8 <__malloc_unlock+0x8>) + 8008aa2: f7ff bf0c b.w 80088be <__retarget_lock_release_recursive> + 8008aa6: bf00 nop + 8008aa8: 200016c8 .word 0x200016c8 + +08008aac <__ssputs_r>: + 8008aac: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 8008ab0: 461f mov r7, r3 + 8008ab2: 688e ldr r6, [r1, #8] + 8008ab4: 4682 mov sl, r0 + 8008ab6: 42be cmp r6, r7 + 8008ab8: 460c mov r4, r1 + 8008aba: 4690 mov r8, r2 + 8008abc: 680b ldr r3, [r1, #0] + 8008abe: d82d bhi.n 8008b1c <__ssputs_r+0x70> + 8008ac0: f9b1 200c ldrsh.w r2, [r1, #12] + 8008ac4: f412 6f90 tst.w r2, #1152 @ 0x480 + 8008ac8: d026 beq.n 8008b18 <__ssputs_r+0x6c> + 8008aca: 6965 ldr r5, [r4, #20] + 8008acc: 6909 ldr r1, [r1, #16] + 8008ace: eb05 0545 add.w r5, r5, r5, lsl #1 + 8008ad2: eba3 0901 sub.w r9, r3, r1 + 8008ad6: eb05 75d5 add.w r5, r5, r5, lsr #31 + 8008ada: 1c7b adds r3, r7, #1 + 8008adc: 444b add r3, r9 + 8008ade: 106d asrs r5, r5, #1 + 8008ae0: 429d cmp r5, r3 + 8008ae2: bf38 it cc + 8008ae4: 461d movcc r5, r3 + 8008ae6: 0553 lsls r3, r2, #21 + 8008ae8: d527 bpl.n 8008b3a <__ssputs_r+0x8e> + 8008aea: 4629 mov r1, r5 + 8008aec: f7ff ff52 bl 8008994 <_malloc_r> + 8008af0: 4606 mov r6, r0 + 8008af2: b360 cbz r0, 8008b4e <__ssputs_r+0xa2> + 8008af4: 464a mov r2, r9 + 8008af6: 6921 ldr r1, [r4, #16] + 8008af8: f000 faf8 bl 80090ec + 8008afc: 89a3 ldrh r3, [r4, #12] + 8008afe: f423 6390 bic.w r3, r3, #1152 @ 0x480 + 8008b02: f043 0380 orr.w r3, r3, #128 @ 0x80 + 8008b06: 81a3 strh r3, [r4, #12] + 8008b08: 6126 str r6, [r4, #16] + 8008b0a: 444e add r6, r9 + 8008b0c: 6026 str r6, [r4, #0] + 8008b0e: 463e mov r6, r7 + 8008b10: 6165 str r5, [r4, #20] + 8008b12: eba5 0509 sub.w r5, r5, r9 + 8008b16: 60a5 str r5, [r4, #8] + 8008b18: 42be cmp r6, r7 + 8008b1a: d900 bls.n 8008b1e <__ssputs_r+0x72> + 8008b1c: 463e mov r6, r7 + 8008b1e: 4632 mov r2, r6 + 8008b20: 4641 mov r1, r8 + 8008b22: 6820 ldr r0, [r4, #0] + 8008b24: f000 faaa bl 800907c + 8008b28: 2000 movs r0, #0 + 8008b2a: 68a3 ldr r3, [r4, #8] + 8008b2c: 1b9b subs r3, r3, r6 + 8008b2e: 60a3 str r3, [r4, #8] + 8008b30: 6823 ldr r3, [r4, #0] + 8008b32: 4433 add r3, r6 + 8008b34: 6023 str r3, [r4, #0] + 8008b36: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8008b3a: 462a mov r2, r5 + 8008b3c: f000 fae4 bl 8009108 <_realloc_r> + 8008b40: 4606 mov r6, r0 + 8008b42: 2800 cmp r0, #0 + 8008b44: d1e0 bne.n 8008b08 <__ssputs_r+0x5c> + 8008b46: 4650 mov r0, sl + 8008b48: 6921 ldr r1, [r4, #16] + 8008b4a: f7ff feb9 bl 80088c0 <_free_r> + 8008b4e: 230c movs r3, #12 + 8008b50: f8ca 3000 str.w r3, [sl] + 8008b54: 89a3 ldrh r3, [r4, #12] + 8008b56: f04f 30ff mov.w r0, #4294967295 + 8008b5a: f043 0340 orr.w r3, r3, #64 @ 0x40 + 8008b5e: 81a3 strh r3, [r4, #12] + 8008b60: e7e9 b.n 8008b36 <__ssputs_r+0x8a> + ... + +08008b64 <_svfiprintf_r>: + 8008b64: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8008b68: 4698 mov r8, r3 + 8008b6a: 898b ldrh r3, [r1, #12] + 8008b6c: 4607 mov r7, r0 + 8008b6e: 061b lsls r3, r3, #24 + 8008b70: 460d mov r5, r1 + 8008b72: 4614 mov r4, r2 + 8008b74: b09d sub sp, #116 @ 0x74 + 8008b76: d510 bpl.n 8008b9a <_svfiprintf_r+0x36> + 8008b78: 690b ldr r3, [r1, #16] + 8008b7a: b973 cbnz r3, 8008b9a <_svfiprintf_r+0x36> + 8008b7c: 2140 movs r1, #64 @ 0x40 + 8008b7e: f7ff ff09 bl 8008994 <_malloc_r> + 8008b82: 6028 str r0, [r5, #0] + 8008b84: 6128 str r0, [r5, #16] + 8008b86: b930 cbnz r0, 8008b96 <_svfiprintf_r+0x32> + 8008b88: 230c movs r3, #12 + 8008b8a: 603b str r3, [r7, #0] + 8008b8c: f04f 30ff mov.w r0, #4294967295 + 8008b90: b01d add sp, #116 @ 0x74 + 8008b92: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8008b96: 2340 movs r3, #64 @ 0x40 + 8008b98: 616b str r3, [r5, #20] + 8008b9a: 2300 movs r3, #0 + 8008b9c: 9309 str r3, [sp, #36] @ 0x24 + 8008b9e: 2320 movs r3, #32 + 8008ba0: f88d 3029 strb.w r3, [sp, #41] @ 0x29 + 8008ba4: 2330 movs r3, #48 @ 0x30 + 8008ba6: f04f 0901 mov.w r9, #1 + 8008baa: f8cd 800c str.w r8, [sp, #12] + 8008bae: f8df 8198 ldr.w r8, [pc, #408] @ 8008d48 <_svfiprintf_r+0x1e4> + 8008bb2: f88d 302a strb.w r3, [sp, #42] @ 0x2a + 8008bb6: 4623 mov r3, r4 + 8008bb8: 469a mov sl, r3 + 8008bba: f813 2b01 ldrb.w r2, [r3], #1 + 8008bbe: b10a cbz r2, 8008bc4 <_svfiprintf_r+0x60> + 8008bc0: 2a25 cmp r2, #37 @ 0x25 + 8008bc2: d1f9 bne.n 8008bb8 <_svfiprintf_r+0x54> + 8008bc4: ebba 0b04 subs.w fp, sl, r4 + 8008bc8: d00b beq.n 8008be2 <_svfiprintf_r+0x7e> + 8008bca: 465b mov r3, fp + 8008bcc: 4622 mov r2, r4 + 8008bce: 4629 mov r1, r5 + 8008bd0: 4638 mov r0, r7 + 8008bd2: f7ff ff6b bl 8008aac <__ssputs_r> + 8008bd6: 3001 adds r0, #1 + 8008bd8: f000 80a7 beq.w 8008d2a <_svfiprintf_r+0x1c6> + 8008bdc: 9a09 ldr r2, [sp, #36] @ 0x24 + 8008bde: 445a add r2, fp + 8008be0: 9209 str r2, [sp, #36] @ 0x24 + 8008be2: f89a 3000 ldrb.w r3, [sl] + 8008be6: 2b00 cmp r3, #0 + 8008be8: f000 809f beq.w 8008d2a <_svfiprintf_r+0x1c6> + 8008bec: 2300 movs r3, #0 + 8008bee: f04f 32ff mov.w r2, #4294967295 + 8008bf2: e9cd 2305 strd r2, r3, [sp, #20] + 8008bf6: f10a 0a01 add.w sl, sl, #1 + 8008bfa: 9304 str r3, [sp, #16] + 8008bfc: 9307 str r3, [sp, #28] + 8008bfe: f88d 3053 strb.w r3, [sp, #83] @ 0x53 + 8008c02: 931a str r3, [sp, #104] @ 0x68 + 8008c04: 4654 mov r4, sl + 8008c06: 2205 movs r2, #5 + 8008c08: f814 1b01 ldrb.w r1, [r4], #1 + 8008c0c: 484e ldr r0, [pc, #312] @ (8008d48 <_svfiprintf_r+0x1e4>) + 8008c0e: f000 fa5f bl 80090d0 + 8008c12: 9a04 ldr r2, [sp, #16] + 8008c14: b9d8 cbnz r0, 8008c4e <_svfiprintf_r+0xea> + 8008c16: 06d0 lsls r0, r2, #27 + 8008c18: bf44 itt mi + 8008c1a: 2320 movmi r3, #32 + 8008c1c: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 + 8008c20: 0711 lsls r1, r2, #28 + 8008c22: bf44 itt mi + 8008c24: 232b movmi r3, #43 @ 0x2b + 8008c26: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 + 8008c2a: f89a 3000 ldrb.w r3, [sl] + 8008c2e: 2b2a cmp r3, #42 @ 0x2a + 8008c30: d015 beq.n 8008c5e <_svfiprintf_r+0xfa> + 8008c32: 4654 mov r4, sl + 8008c34: 2000 movs r0, #0 + 8008c36: f04f 0c0a mov.w ip, #10 + 8008c3a: 9a07 ldr r2, [sp, #28] + 8008c3c: 4621 mov r1, r4 + 8008c3e: f811 3b01 ldrb.w r3, [r1], #1 + 8008c42: 3b30 subs r3, #48 @ 0x30 + 8008c44: 2b09 cmp r3, #9 + 8008c46: d94b bls.n 8008ce0 <_svfiprintf_r+0x17c> + 8008c48: b1b0 cbz r0, 8008c78 <_svfiprintf_r+0x114> + 8008c4a: 9207 str r2, [sp, #28] + 8008c4c: e014 b.n 8008c78 <_svfiprintf_r+0x114> + 8008c4e: eba0 0308 sub.w r3, r0, r8 + 8008c52: fa09 f303 lsl.w r3, r9, r3 + 8008c56: 4313 orrs r3, r2 + 8008c58: 46a2 mov sl, r4 + 8008c5a: 9304 str r3, [sp, #16] + 8008c5c: e7d2 b.n 8008c04 <_svfiprintf_r+0xa0> + 8008c5e: 9b03 ldr r3, [sp, #12] + 8008c60: 1d19 adds r1, r3, #4 + 8008c62: 681b ldr r3, [r3, #0] + 8008c64: 9103 str r1, [sp, #12] + 8008c66: 2b00 cmp r3, #0 + 8008c68: bfbb ittet lt + 8008c6a: 425b neglt r3, r3 + 8008c6c: f042 0202 orrlt.w r2, r2, #2 + 8008c70: 9307 strge r3, [sp, #28] + 8008c72: 9307 strlt r3, [sp, #28] + 8008c74: bfb8 it lt + 8008c76: 9204 strlt r2, [sp, #16] + 8008c78: 7823 ldrb r3, [r4, #0] + 8008c7a: 2b2e cmp r3, #46 @ 0x2e + 8008c7c: d10a bne.n 8008c94 <_svfiprintf_r+0x130> + 8008c7e: 7863 ldrb r3, [r4, #1] + 8008c80: 2b2a cmp r3, #42 @ 0x2a + 8008c82: d132 bne.n 8008cea <_svfiprintf_r+0x186> + 8008c84: 9b03 ldr r3, [sp, #12] + 8008c86: 3402 adds r4, #2 + 8008c88: 1d1a adds r2, r3, #4 + 8008c8a: 681b ldr r3, [r3, #0] + 8008c8c: 9203 str r2, [sp, #12] + 8008c8e: ea43 73e3 orr.w r3, r3, r3, asr #31 + 8008c92: 9305 str r3, [sp, #20] + 8008c94: f8df a0b4 ldr.w sl, [pc, #180] @ 8008d4c <_svfiprintf_r+0x1e8> + 8008c98: 2203 movs r2, #3 + 8008c9a: 4650 mov r0, sl + 8008c9c: 7821 ldrb r1, [r4, #0] + 8008c9e: f000 fa17 bl 80090d0 + 8008ca2: b138 cbz r0, 8008cb4 <_svfiprintf_r+0x150> + 8008ca4: 2240 movs r2, #64 @ 0x40 + 8008ca6: 9b04 ldr r3, [sp, #16] + 8008ca8: eba0 000a sub.w r0, r0, sl + 8008cac: 4082 lsls r2, r0 + 8008cae: 4313 orrs r3, r2 + 8008cb0: 3401 adds r4, #1 + 8008cb2: 9304 str r3, [sp, #16] + 8008cb4: f814 1b01 ldrb.w r1, [r4], #1 + 8008cb8: 2206 movs r2, #6 + 8008cba: 4825 ldr r0, [pc, #148] @ (8008d50 <_svfiprintf_r+0x1ec>) + 8008cbc: f88d 1028 strb.w r1, [sp, #40] @ 0x28 + 8008cc0: f000 fa06 bl 80090d0 + 8008cc4: 2800 cmp r0, #0 + 8008cc6: d036 beq.n 8008d36 <_svfiprintf_r+0x1d2> + 8008cc8: 4b22 ldr r3, [pc, #136] @ (8008d54 <_svfiprintf_r+0x1f0>) + 8008cca: bb1b cbnz r3, 8008d14 <_svfiprintf_r+0x1b0> + 8008ccc: 9b03 ldr r3, [sp, #12] + 8008cce: 3307 adds r3, #7 + 8008cd0: f023 0307 bic.w r3, r3, #7 + 8008cd4: 3308 adds r3, #8 + 8008cd6: 9303 str r3, [sp, #12] + 8008cd8: 9b09 ldr r3, [sp, #36] @ 0x24 + 8008cda: 4433 add r3, r6 + 8008cdc: 9309 str r3, [sp, #36] @ 0x24 + 8008cde: e76a b.n 8008bb6 <_svfiprintf_r+0x52> + 8008ce0: 460c mov r4, r1 + 8008ce2: 2001 movs r0, #1 + 8008ce4: fb0c 3202 mla r2, ip, r2, r3 + 8008ce8: e7a8 b.n 8008c3c <_svfiprintf_r+0xd8> + 8008cea: 2300 movs r3, #0 + 8008cec: f04f 0c0a mov.w ip, #10 + 8008cf0: 4619 mov r1, r3 + 8008cf2: 3401 adds r4, #1 + 8008cf4: 9305 str r3, [sp, #20] + 8008cf6: 4620 mov r0, r4 + 8008cf8: f810 2b01 ldrb.w r2, [r0], #1 + 8008cfc: 3a30 subs r2, #48 @ 0x30 + 8008cfe: 2a09 cmp r2, #9 + 8008d00: d903 bls.n 8008d0a <_svfiprintf_r+0x1a6> + 8008d02: 2b00 cmp r3, #0 + 8008d04: d0c6 beq.n 8008c94 <_svfiprintf_r+0x130> + 8008d06: 9105 str r1, [sp, #20] + 8008d08: e7c4 b.n 8008c94 <_svfiprintf_r+0x130> + 8008d0a: 4604 mov r4, r0 + 8008d0c: 2301 movs r3, #1 + 8008d0e: fb0c 2101 mla r1, ip, r1, r2 + 8008d12: e7f0 b.n 8008cf6 <_svfiprintf_r+0x192> + 8008d14: ab03 add r3, sp, #12 + 8008d16: 9300 str r3, [sp, #0] + 8008d18: 462a mov r2, r5 + 8008d1a: 4638 mov r0, r7 + 8008d1c: 4b0e ldr r3, [pc, #56] @ (8008d58 <_svfiprintf_r+0x1f4>) + 8008d1e: a904 add r1, sp, #16 + 8008d20: f3af 8000 nop.w + 8008d24: 1c42 adds r2, r0, #1 + 8008d26: 4606 mov r6, r0 + 8008d28: d1d6 bne.n 8008cd8 <_svfiprintf_r+0x174> + 8008d2a: 89ab ldrh r3, [r5, #12] + 8008d2c: 065b lsls r3, r3, #25 + 8008d2e: f53f af2d bmi.w 8008b8c <_svfiprintf_r+0x28> + 8008d32: 9809 ldr r0, [sp, #36] @ 0x24 + 8008d34: e72c b.n 8008b90 <_svfiprintf_r+0x2c> + 8008d36: ab03 add r3, sp, #12 + 8008d38: 9300 str r3, [sp, #0] + 8008d3a: 462a mov r2, r5 + 8008d3c: 4638 mov r0, r7 + 8008d3e: 4b06 ldr r3, [pc, #24] @ (8008d58 <_svfiprintf_r+0x1f4>) + 8008d40: a904 add r1, sp, #16 + 8008d42: f000 f87d bl 8008e40 <_printf_i> + 8008d46: e7ed b.n 8008d24 <_svfiprintf_r+0x1c0> + 8008d48: 08009206 .word 0x08009206 + 8008d4c: 0800920c .word 0x0800920c + 8008d50: 08009210 .word 0x08009210 + 8008d54: 00000000 .word 0x00000000 + 8008d58: 08008aad .word 0x08008aad + +08008d5c <_printf_common>: + 8008d5c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 8008d60: 4616 mov r6, r2 + 8008d62: 4698 mov r8, r3 + 8008d64: 688a ldr r2, [r1, #8] + 8008d66: 690b ldr r3, [r1, #16] + 8008d68: 4607 mov r7, r0 + 8008d6a: 4293 cmp r3, r2 + 8008d6c: bfb8 it lt + 8008d6e: 4613 movlt r3, r2 + 8008d70: 6033 str r3, [r6, #0] + 8008d72: f891 2043 ldrb.w r2, [r1, #67] @ 0x43 + 8008d76: 460c mov r4, r1 + 8008d78: f8dd 9020 ldr.w r9, [sp, #32] + 8008d7c: b10a cbz r2, 8008d82 <_printf_common+0x26> + 8008d7e: 3301 adds r3, #1 + 8008d80: 6033 str r3, [r6, #0] + 8008d82: 6823 ldr r3, [r4, #0] + 8008d84: 0699 lsls r1, r3, #26 + 8008d86: bf42 ittt mi + 8008d88: 6833 ldrmi r3, [r6, #0] + 8008d8a: 3302 addmi r3, #2 + 8008d8c: 6033 strmi r3, [r6, #0] + 8008d8e: 6825 ldr r5, [r4, #0] + 8008d90: f015 0506 ands.w r5, r5, #6 + 8008d94: d106 bne.n 8008da4 <_printf_common+0x48> + 8008d96: f104 0a19 add.w sl, r4, #25 + 8008d9a: 68e3 ldr r3, [r4, #12] + 8008d9c: 6832 ldr r2, [r6, #0] + 8008d9e: 1a9b subs r3, r3, r2 + 8008da0: 42ab cmp r3, r5 + 8008da2: dc2b bgt.n 8008dfc <_printf_common+0xa0> + 8008da4: f894 3043 ldrb.w r3, [r4, #67] @ 0x43 + 8008da8: 6822 ldr r2, [r4, #0] + 8008daa: 3b00 subs r3, #0 + 8008dac: bf18 it ne + 8008dae: 2301 movne r3, #1 + 8008db0: 0692 lsls r2, r2, #26 + 8008db2: d430 bmi.n 8008e16 <_printf_common+0xba> + 8008db4: 4641 mov r1, r8 + 8008db6: 4638 mov r0, r7 + 8008db8: f104 0243 add.w r2, r4, #67 @ 0x43 + 8008dbc: 47c8 blx r9 + 8008dbe: 3001 adds r0, #1 + 8008dc0: d023 beq.n 8008e0a <_printf_common+0xae> + 8008dc2: 6823 ldr r3, [r4, #0] + 8008dc4: 6922 ldr r2, [r4, #16] + 8008dc6: f003 0306 and.w r3, r3, #6 + 8008dca: 2b04 cmp r3, #4 + 8008dcc: bf14 ite ne + 8008dce: 2500 movne r5, #0 + 8008dd0: 6833 ldreq r3, [r6, #0] + 8008dd2: f04f 0600 mov.w r6, #0 + 8008dd6: bf08 it eq + 8008dd8: 68e5 ldreq r5, [r4, #12] + 8008dda: f104 041a add.w r4, r4, #26 + 8008dde: bf08 it eq + 8008de0: 1aed subeq r5, r5, r3 + 8008de2: f854 3c12 ldr.w r3, [r4, #-18] + 8008de6: bf08 it eq + 8008de8: ea25 75e5 biceq.w r5, r5, r5, asr #31 + 8008dec: 4293 cmp r3, r2 + 8008dee: bfc4 itt gt + 8008df0: 1a9b subgt r3, r3, r2 + 8008df2: 18ed addgt r5, r5, r3 + 8008df4: 42b5 cmp r5, r6 + 8008df6: d11a bne.n 8008e2e <_printf_common+0xd2> + 8008df8: 2000 movs r0, #0 + 8008dfa: e008 b.n 8008e0e <_printf_common+0xb2> + 8008dfc: 2301 movs r3, #1 + 8008dfe: 4652 mov r2, sl + 8008e00: 4641 mov r1, r8 + 8008e02: 4638 mov r0, r7 + 8008e04: 47c8 blx r9 + 8008e06: 3001 adds r0, #1 + 8008e08: d103 bne.n 8008e12 <_printf_common+0xb6> + 8008e0a: f04f 30ff mov.w r0, #4294967295 + 8008e0e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8008e12: 3501 adds r5, #1 + 8008e14: e7c1 b.n 8008d9a <_printf_common+0x3e> + 8008e16: 2030 movs r0, #48 @ 0x30 + 8008e18: 18e1 adds r1, r4, r3 + 8008e1a: f881 0043 strb.w r0, [r1, #67] @ 0x43 + 8008e1e: 1c5a adds r2, r3, #1 + 8008e20: f894 1045 ldrb.w r1, [r4, #69] @ 0x45 + 8008e24: 4422 add r2, r4 + 8008e26: 3302 adds r3, #2 + 8008e28: f882 1043 strb.w r1, [r2, #67] @ 0x43 + 8008e2c: e7c2 b.n 8008db4 <_printf_common+0x58> + 8008e2e: 2301 movs r3, #1 + 8008e30: 4622 mov r2, r4 + 8008e32: 4641 mov r1, r8 + 8008e34: 4638 mov r0, r7 + 8008e36: 47c8 blx r9 + 8008e38: 3001 adds r0, #1 + 8008e3a: d0e6 beq.n 8008e0a <_printf_common+0xae> + 8008e3c: 3601 adds r6, #1 + 8008e3e: e7d9 b.n 8008df4 <_printf_common+0x98> + +08008e40 <_printf_i>: + 8008e40: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} + 8008e44: 7e0f ldrb r7, [r1, #24] + 8008e46: 4691 mov r9, r2 + 8008e48: 2f78 cmp r7, #120 @ 0x78 + 8008e4a: 4680 mov r8, r0 + 8008e4c: 460c mov r4, r1 + 8008e4e: 469a mov sl, r3 + 8008e50: 9e0c ldr r6, [sp, #48] @ 0x30 + 8008e52: f101 0243 add.w r2, r1, #67 @ 0x43 + 8008e56: d807 bhi.n 8008e68 <_printf_i+0x28> + 8008e58: 2f62 cmp r7, #98 @ 0x62 + 8008e5a: d80a bhi.n 8008e72 <_printf_i+0x32> + 8008e5c: 2f00 cmp r7, #0 + 8008e5e: f000 80d1 beq.w 8009004 <_printf_i+0x1c4> + 8008e62: 2f58 cmp r7, #88 @ 0x58 + 8008e64: f000 80b8 beq.w 8008fd8 <_printf_i+0x198> + 8008e68: f104 0642 add.w r6, r4, #66 @ 0x42 + 8008e6c: f884 7042 strb.w r7, [r4, #66] @ 0x42 + 8008e70: e03a b.n 8008ee8 <_printf_i+0xa8> + 8008e72: f1a7 0363 sub.w r3, r7, #99 @ 0x63 + 8008e76: 2b15 cmp r3, #21 + 8008e78: d8f6 bhi.n 8008e68 <_printf_i+0x28> + 8008e7a: a101 add r1, pc, #4 @ (adr r1, 8008e80 <_printf_i+0x40>) + 8008e7c: f851 f023 ldr.w pc, [r1, r3, lsl #2] + 8008e80: 08008ed9 .word 0x08008ed9 + 8008e84: 08008eed .word 0x08008eed + 8008e88: 08008e69 .word 0x08008e69 + 8008e8c: 08008e69 .word 0x08008e69 + 8008e90: 08008e69 .word 0x08008e69 + 8008e94: 08008e69 .word 0x08008e69 + 8008e98: 08008eed .word 0x08008eed + 8008e9c: 08008e69 .word 0x08008e69 + 8008ea0: 08008e69 .word 0x08008e69 + 8008ea4: 08008e69 .word 0x08008e69 + 8008ea8: 08008e69 .word 0x08008e69 + 8008eac: 08008feb .word 0x08008feb + 8008eb0: 08008f17 .word 0x08008f17 + 8008eb4: 08008fa5 .word 0x08008fa5 + 8008eb8: 08008e69 .word 0x08008e69 + 8008ebc: 08008e69 .word 0x08008e69 + 8008ec0: 0800900d .word 0x0800900d + 8008ec4: 08008e69 .word 0x08008e69 + 8008ec8: 08008f17 .word 0x08008f17 + 8008ecc: 08008e69 .word 0x08008e69 + 8008ed0: 08008e69 .word 0x08008e69 + 8008ed4: 08008fad .word 0x08008fad + 8008ed8: 6833 ldr r3, [r6, #0] + 8008eda: 1d1a adds r2, r3, #4 + 8008edc: 681b ldr r3, [r3, #0] + 8008ede: 6032 str r2, [r6, #0] + 8008ee0: f104 0642 add.w r6, r4, #66 @ 0x42 + 8008ee4: f884 3042 strb.w r3, [r4, #66] @ 0x42 + 8008ee8: 2301 movs r3, #1 + 8008eea: e09c b.n 8009026 <_printf_i+0x1e6> + 8008eec: 6833 ldr r3, [r6, #0] + 8008eee: 6820 ldr r0, [r4, #0] + 8008ef0: 1d19 adds r1, r3, #4 + 8008ef2: 6031 str r1, [r6, #0] + 8008ef4: 0606 lsls r6, r0, #24 + 8008ef6: d501 bpl.n 8008efc <_printf_i+0xbc> + 8008ef8: 681d ldr r5, [r3, #0] + 8008efa: e003 b.n 8008f04 <_printf_i+0xc4> + 8008efc: 0645 lsls r5, r0, #25 + 8008efe: d5fb bpl.n 8008ef8 <_printf_i+0xb8> + 8008f00: f9b3 5000 ldrsh.w r5, [r3] + 8008f04: 2d00 cmp r5, #0 + 8008f06: da03 bge.n 8008f10 <_printf_i+0xd0> + 8008f08: 232d movs r3, #45 @ 0x2d + 8008f0a: 426d negs r5, r5 + 8008f0c: f884 3043 strb.w r3, [r4, #67] @ 0x43 + 8008f10: 230a movs r3, #10 + 8008f12: 4858 ldr r0, [pc, #352] @ (8009074 <_printf_i+0x234>) + 8008f14: e011 b.n 8008f3a <_printf_i+0xfa> + 8008f16: 6821 ldr r1, [r4, #0] + 8008f18: 6833 ldr r3, [r6, #0] + 8008f1a: 0608 lsls r0, r1, #24 + 8008f1c: f853 5b04 ldr.w r5, [r3], #4 + 8008f20: d402 bmi.n 8008f28 <_printf_i+0xe8> + 8008f22: 0649 lsls r1, r1, #25 + 8008f24: bf48 it mi + 8008f26: b2ad uxthmi r5, r5 + 8008f28: 2f6f cmp r7, #111 @ 0x6f + 8008f2a: 6033 str r3, [r6, #0] + 8008f2c: bf14 ite ne + 8008f2e: 230a movne r3, #10 + 8008f30: 2308 moveq r3, #8 + 8008f32: 4850 ldr r0, [pc, #320] @ (8009074 <_printf_i+0x234>) + 8008f34: 2100 movs r1, #0 + 8008f36: f884 1043 strb.w r1, [r4, #67] @ 0x43 + 8008f3a: 6866 ldr r6, [r4, #4] + 8008f3c: 2e00 cmp r6, #0 + 8008f3e: 60a6 str r6, [r4, #8] + 8008f40: db05 blt.n 8008f4e <_printf_i+0x10e> + 8008f42: 6821 ldr r1, [r4, #0] + 8008f44: 432e orrs r6, r5 + 8008f46: f021 0104 bic.w r1, r1, #4 + 8008f4a: 6021 str r1, [r4, #0] + 8008f4c: d04b beq.n 8008fe6 <_printf_i+0x1a6> + 8008f4e: 4616 mov r6, r2 + 8008f50: fbb5 f1f3 udiv r1, r5, r3 + 8008f54: fb03 5711 mls r7, r3, r1, r5 + 8008f58: 5dc7 ldrb r7, [r0, r7] + 8008f5a: f806 7d01 strb.w r7, [r6, #-1]! + 8008f5e: 462f mov r7, r5 + 8008f60: 42bb cmp r3, r7 + 8008f62: 460d mov r5, r1 + 8008f64: d9f4 bls.n 8008f50 <_printf_i+0x110> + 8008f66: 2b08 cmp r3, #8 + 8008f68: d10b bne.n 8008f82 <_printf_i+0x142> + 8008f6a: 6823 ldr r3, [r4, #0] + 8008f6c: 07df lsls r7, r3, #31 + 8008f6e: d508 bpl.n 8008f82 <_printf_i+0x142> + 8008f70: 6923 ldr r3, [r4, #16] + 8008f72: 6861 ldr r1, [r4, #4] + 8008f74: 4299 cmp r1, r3 + 8008f76: bfde ittt le + 8008f78: 2330 movle r3, #48 @ 0x30 + 8008f7a: f806 3c01 strble.w r3, [r6, #-1] + 8008f7e: f106 36ff addle.w r6, r6, #4294967295 + 8008f82: 1b92 subs r2, r2, r6 + 8008f84: 6122 str r2, [r4, #16] + 8008f86: 464b mov r3, r9 + 8008f88: 4621 mov r1, r4 + 8008f8a: 4640 mov r0, r8 + 8008f8c: f8cd a000 str.w sl, [sp] + 8008f90: aa03 add r2, sp, #12 + 8008f92: f7ff fee3 bl 8008d5c <_printf_common> + 8008f96: 3001 adds r0, #1 + 8008f98: d14a bne.n 8009030 <_printf_i+0x1f0> + 8008f9a: f04f 30ff mov.w r0, #4294967295 + 8008f9e: b004 add sp, #16 + 8008fa0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8008fa4: 6823 ldr r3, [r4, #0] + 8008fa6: f043 0320 orr.w r3, r3, #32 + 8008faa: 6023 str r3, [r4, #0] + 8008fac: 2778 movs r7, #120 @ 0x78 + 8008fae: 4832 ldr r0, [pc, #200] @ (8009078 <_printf_i+0x238>) + 8008fb0: f884 7045 strb.w r7, [r4, #69] @ 0x45 + 8008fb4: 6823 ldr r3, [r4, #0] + 8008fb6: 6831 ldr r1, [r6, #0] + 8008fb8: 061f lsls r7, r3, #24 + 8008fba: f851 5b04 ldr.w r5, [r1], #4 + 8008fbe: d402 bmi.n 8008fc6 <_printf_i+0x186> + 8008fc0: 065f lsls r7, r3, #25 + 8008fc2: bf48 it mi + 8008fc4: b2ad uxthmi r5, r5 + 8008fc6: 6031 str r1, [r6, #0] + 8008fc8: 07d9 lsls r1, r3, #31 + 8008fca: bf44 itt mi + 8008fcc: f043 0320 orrmi.w r3, r3, #32 + 8008fd0: 6023 strmi r3, [r4, #0] + 8008fd2: b11d cbz r5, 8008fdc <_printf_i+0x19c> + 8008fd4: 2310 movs r3, #16 + 8008fd6: e7ad b.n 8008f34 <_printf_i+0xf4> + 8008fd8: 4826 ldr r0, [pc, #152] @ (8009074 <_printf_i+0x234>) + 8008fda: e7e9 b.n 8008fb0 <_printf_i+0x170> + 8008fdc: 6823 ldr r3, [r4, #0] + 8008fde: f023 0320 bic.w r3, r3, #32 + 8008fe2: 6023 str r3, [r4, #0] + 8008fe4: e7f6 b.n 8008fd4 <_printf_i+0x194> + 8008fe6: 4616 mov r6, r2 + 8008fe8: e7bd b.n 8008f66 <_printf_i+0x126> + 8008fea: 6833 ldr r3, [r6, #0] + 8008fec: 6825 ldr r5, [r4, #0] + 8008fee: 1d18 adds r0, r3, #4 + 8008ff0: 6961 ldr r1, [r4, #20] + 8008ff2: 6030 str r0, [r6, #0] + 8008ff4: 062e lsls r6, r5, #24 + 8008ff6: 681b ldr r3, [r3, #0] + 8008ff8: d501 bpl.n 8008ffe <_printf_i+0x1be> + 8008ffa: 6019 str r1, [r3, #0] + 8008ffc: e002 b.n 8009004 <_printf_i+0x1c4> + 8008ffe: 0668 lsls r0, r5, #25 + 8009000: d5fb bpl.n 8008ffa <_printf_i+0x1ba> + 8009002: 8019 strh r1, [r3, #0] + 8009004: 2300 movs r3, #0 + 8009006: 4616 mov r6, r2 + 8009008: 6123 str r3, [r4, #16] + 800900a: e7bc b.n 8008f86 <_printf_i+0x146> + 800900c: 6833 ldr r3, [r6, #0] + 800900e: 2100 movs r1, #0 + 8009010: 1d1a adds r2, r3, #4 + 8009012: 6032 str r2, [r6, #0] + 8009014: 681e ldr r6, [r3, #0] + 8009016: 6862 ldr r2, [r4, #4] + 8009018: 4630 mov r0, r6 + 800901a: f000 f859 bl 80090d0 + 800901e: b108 cbz r0, 8009024 <_printf_i+0x1e4> + 8009020: 1b80 subs r0, r0, r6 + 8009022: 6060 str r0, [r4, #4] + 8009024: 6863 ldr r3, [r4, #4] + 8009026: 6123 str r3, [r4, #16] + 8009028: 2300 movs r3, #0 + 800902a: f884 3043 strb.w r3, [r4, #67] @ 0x43 + 800902e: e7aa b.n 8008f86 <_printf_i+0x146> + 8009030: 4632 mov r2, r6 + 8009032: 4649 mov r1, r9 + 8009034: 4640 mov r0, r8 + 8009036: 6923 ldr r3, [r4, #16] + 8009038: 47d0 blx sl + 800903a: 3001 adds r0, #1 + 800903c: d0ad beq.n 8008f9a <_printf_i+0x15a> + 800903e: 6823 ldr r3, [r4, #0] + 8009040: 079b lsls r3, r3, #30 + 8009042: d413 bmi.n 800906c <_printf_i+0x22c> + 8009044: 68e0 ldr r0, [r4, #12] + 8009046: 9b03 ldr r3, [sp, #12] + 8009048: 4298 cmp r0, r3 + 800904a: bfb8 it lt + 800904c: 4618 movlt r0, r3 + 800904e: e7a6 b.n 8008f9e <_printf_i+0x15e> + 8009050: 2301 movs r3, #1 + 8009052: 4632 mov r2, r6 + 8009054: 4649 mov r1, r9 + 8009056: 4640 mov r0, r8 + 8009058: 47d0 blx sl + 800905a: 3001 adds r0, #1 + 800905c: d09d beq.n 8008f9a <_printf_i+0x15a> + 800905e: 3501 adds r5, #1 + 8009060: 68e3 ldr r3, [r4, #12] + 8009062: 9903 ldr r1, [sp, #12] + 8009064: 1a5b subs r3, r3, r1 + 8009066: 42ab cmp r3, r5 + 8009068: dcf2 bgt.n 8009050 <_printf_i+0x210> + 800906a: e7eb b.n 8009044 <_printf_i+0x204> + 800906c: 2500 movs r5, #0 + 800906e: f104 0619 add.w r6, r4, #25 + 8009072: e7f5 b.n 8009060 <_printf_i+0x220> + 8009074: 08009217 .word 0x08009217 + 8009078: 08009228 .word 0x08009228 + +0800907c : + 800907c: 4288 cmp r0, r1 + 800907e: b510 push {r4, lr} + 8009080: eb01 0402 add.w r4, r1, r2 + 8009084: d902 bls.n 800908c + 8009086: 4284 cmp r4, r0 + 8009088: 4623 mov r3, r4 + 800908a: d807 bhi.n 800909c + 800908c: 1e43 subs r3, r0, #1 + 800908e: 42a1 cmp r1, r4 + 8009090: d008 beq.n 80090a4 + 8009092: f811 2b01 ldrb.w r2, [r1], #1 + 8009096: f803 2f01 strb.w r2, [r3, #1]! + 800909a: e7f8 b.n 800908e + 800909c: 4601 mov r1, r0 + 800909e: 4402 add r2, r0 + 80090a0: 428a cmp r2, r1 + 80090a2: d100 bne.n 80090a6 + 80090a4: bd10 pop {r4, pc} + 80090a6: f813 4d01 ldrb.w r4, [r3, #-1]! + 80090aa: f802 4d01 strb.w r4, [r2, #-1]! + 80090ae: e7f7 b.n 80090a0 + +080090b0 <_sbrk_r>: + 80090b0: b538 push {r3, r4, r5, lr} + 80090b2: 2300 movs r3, #0 + 80090b4: 4d05 ldr r5, [pc, #20] @ (80090cc <_sbrk_r+0x1c>) + 80090b6: 4604 mov r4, r0 + 80090b8: 4608 mov r0, r1 + 80090ba: 602b str r3, [r5, #0] + 80090bc: f7f7 fc62 bl 8000984 <_sbrk> + 80090c0: 1c43 adds r3, r0, #1 + 80090c2: d102 bne.n 80090ca <_sbrk_r+0x1a> + 80090c4: 682b ldr r3, [r5, #0] + 80090c6: b103 cbz r3, 80090ca <_sbrk_r+0x1a> + 80090c8: 6023 str r3, [r4, #0] + 80090ca: bd38 pop {r3, r4, r5, pc} + 80090cc: 200016c4 .word 0x200016c4 + +080090d0 : + 80090d0: 4603 mov r3, r0 + 80090d2: b510 push {r4, lr} + 80090d4: b2c9 uxtb r1, r1 + 80090d6: 4402 add r2, r0 + 80090d8: 4293 cmp r3, r2 + 80090da: 4618 mov r0, r3 + 80090dc: d101 bne.n 80090e2 + 80090de: 2000 movs r0, #0 + 80090e0: e003 b.n 80090ea + 80090e2: 7804 ldrb r4, [r0, #0] + 80090e4: 3301 adds r3, #1 + 80090e6: 428c cmp r4, r1 + 80090e8: d1f6 bne.n 80090d8 + 80090ea: bd10 pop {r4, pc} + +080090ec : + 80090ec: 440a add r2, r1 + 80090ee: 4291 cmp r1, r2 + 80090f0: f100 33ff add.w r3, r0, #4294967295 + 80090f4: d100 bne.n 80090f8 + 80090f6: 4770 bx lr + 80090f8: b510 push {r4, lr} + 80090fa: f811 4b01 ldrb.w r4, [r1], #1 + 80090fe: 4291 cmp r1, r2 + 8009100: f803 4f01 strb.w r4, [r3, #1]! + 8009104: d1f9 bne.n 80090fa + 8009106: bd10 pop {r4, pc} + +08009108 <_realloc_r>: + 8009108: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800910c: 4607 mov r7, r0 + 800910e: 4614 mov r4, r2 + 8009110: 460d mov r5, r1 + 8009112: b921 cbnz r1, 800911e <_realloc_r+0x16> + 8009114: 4611 mov r1, r2 + 8009116: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800911a: f7ff bc3b b.w 8008994 <_malloc_r> + 800911e: b92a cbnz r2, 800912c <_realloc_r+0x24> + 8009120: f7ff fbce bl 80088c0 <_free_r> + 8009124: 4625 mov r5, r4 + 8009126: 4628 mov r0, r5 + 8009128: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800912c: f000 f81a bl 8009164 <_malloc_usable_size_r> + 8009130: 4284 cmp r4, r0 + 8009132: 4606 mov r6, r0 + 8009134: d802 bhi.n 800913c <_realloc_r+0x34> + 8009136: ebb4 0f50 cmp.w r4, r0, lsr #1 + 800913a: d8f4 bhi.n 8009126 <_realloc_r+0x1e> + 800913c: 4621 mov r1, r4 + 800913e: 4638 mov r0, r7 + 8009140: f7ff fc28 bl 8008994 <_malloc_r> + 8009144: 4680 mov r8, r0 + 8009146: b908 cbnz r0, 800914c <_realloc_r+0x44> + 8009148: 4645 mov r5, r8 + 800914a: e7ec b.n 8009126 <_realloc_r+0x1e> + 800914c: 42b4 cmp r4, r6 + 800914e: 4622 mov r2, r4 + 8009150: 4629 mov r1, r5 + 8009152: bf28 it cs + 8009154: 4632 movcs r2, r6 + 8009156: f7ff ffc9 bl 80090ec + 800915a: 4629 mov r1, r5 + 800915c: 4638 mov r0, r7 + 800915e: f7ff fbaf bl 80088c0 <_free_r> + 8009162: e7f1 b.n 8009148 <_realloc_r+0x40> + +08009164 <_malloc_usable_size_r>: + 8009164: f851 3c04 ldr.w r3, [r1, #-4] + 8009168: 1f18 subs r0, r3, #4 + 800916a: 2b00 cmp r3, #0 + 800916c: bfbc itt lt + 800916e: 580b ldrlt r3, [r1, r0] + 8009170: 18c0 addlt r0, r0, r3 + 8009172: 4770 bx lr + +08009174 <_init>: + 8009174: b5f8 push {r3, r4, r5, r6, r7, lr} + 8009176: bf00 nop + 8009178: bcf8 pop {r3, r4, r5, r6, r7} + 800917a: bc08 pop {r3} + 800917c: 469e mov lr, r3 + 800917e: 4770 bx lr + +08009180 <_fini>: + 8009180: b5f8 push {r3, r4, r5, r6, r7, lr} + 8009182: bf00 nop + 8009184: bcf8 pop {r3, r4, r5, r6, r7} + 8009186: bc08 pop {r3} + 8009188: 469e mov lr, r3 + 800918a: 4770 bx lr diff --git a/workspace/AUTOM7/Debug/AUTOM7.map b/workspace/AUTOM7/Debug/AUTOM7.map index 2c5b7d6..c0423c4 100644 --- a/workspace/AUTOM7/Debug/AUTOM7.map +++ b/workspace/AUTOM7/Debug/AUTOM7.map @@ -1,5184 +1,5184 @@ -Archive member included to satisfy reference by file (symbol) - -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (exit) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) (__stdio_exit_handler) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (_fwalk_sglue) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - ./Core/Src/main.o (sprintf) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (__sread) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (memset) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_close_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) (errno) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) (_impure_ptr) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_lseek_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_read_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_write_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - ./Core/Src/syscalls.o (__errno) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (__libc_init_array) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (__retarget_lock_init_recursive) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) (_free_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (_malloc_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) (__malloc_lock) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) (_svfprintf_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (_printf_i) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (_fflush_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (memmove) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) (_sbrk_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (memchr) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (memcpy) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (_realloc_r) -C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) - C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) (_malloc_usable_size_r) - -Discarded input sections - - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o - .data 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - .rodata 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - .text 0x00000000 0x7c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .ARM.extab 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .ARM.exidx 0x00000000 0x10 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .ARM.attributes - 0x00000000 0x1b C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/main.o - .text 0x00000000 0x0 ./Core/Src/main.o - .data 0x00000000 0x0 ./Core/Src/main.o - .bss 0x00000000 0x0 ./Core/Src/main.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o - .text 0x00000000 0x0 ./Core/Src/stm32f1xx_hal_msp.o - .data 0x00000000 0x0 ./Core/Src/stm32f1xx_hal_msp.o - .bss 0x00000000 0x0 ./Core/Src/stm32f1xx_hal_msp.o - .text.HAL_TIM_Base_MspDeInit - 0x00000000 0x64 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0xacc ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x21b ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x2e ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x8e ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x51 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x103 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x6a ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x1df ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x1c ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0xbd ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0xd23 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0xe09e ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x6d ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x34a2 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x190 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x5c ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x5bc ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x289 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x1cb ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x114 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x1b2 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x27 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x136 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x1bc ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x34 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x3c ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x57 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x87 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x240 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x140 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x8ed ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0xb7 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x242 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00000000 0x83 ./Core/Src/stm32f1xx_hal_msp.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o - .text 0x00000000 0x0 ./Core/Src/stm32f1xx_it.o - .data 0x00000000 0x0 ./Core/Src/stm32f1xx_it.o - .bss 0x00000000 0x0 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0xacc ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x21b ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x2e ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x8e ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x51 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x103 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x6a ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x1df ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x1c ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0xbd ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0xd23 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0xe09e ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x6d ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x34a2 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x190 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x5c ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x5bc ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x289 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x1cb ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x114 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x1b2 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x27 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x136 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x1bc ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x34 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x3c ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x57 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x87 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x240 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x140 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x8ed ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0xb7 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x242 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00000000 0x83 ./Core/Src/stm32f1xx_it.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/syscalls.o - .text 0x00000000 0x0 ./Core/Src/syscalls.o - .data 0x00000000 0x0 ./Core/Src/syscalls.o - .bss 0x00000000 0x0 ./Core/Src/syscalls.o - .bss.__env 0x00000000 0x4 ./Core/Src/syscalls.o - .data.environ 0x00000000 0x4 ./Core/Src/syscalls.o - .text.initialise_monitor_handles - 0x00000000 0xc ./Core/Src/syscalls.o - .text._getpid 0x00000000 0xe ./Core/Src/syscalls.o - .text._kill 0x00000000 0x20 ./Core/Src/syscalls.o - .text._exit 0x00000000 0x16 ./Core/Src/syscalls.o - .text._read 0x00000000 0x3a ./Core/Src/syscalls.o - .text._write 0x00000000 0x38 ./Core/Src/syscalls.o - .text._close 0x00000000 0x16 ./Core/Src/syscalls.o - .text._fstat 0x00000000 0x1e ./Core/Src/syscalls.o - .text._isatty 0x00000000 0x14 ./Core/Src/syscalls.o - .text._lseek 0x00000000 0x18 ./Core/Src/syscalls.o - .text._open 0x00000000 0x1a ./Core/Src/syscalls.o - .text._wait 0x00000000 0x1e ./Core/Src/syscalls.o - .text._unlink 0x00000000 0x1e ./Core/Src/syscalls.o - .text._times 0x00000000 0x16 ./Core/Src/syscalls.o - .text._stat 0x00000000 0x1e ./Core/Src/syscalls.o - .text._link 0x00000000 0x20 ./Core/Src/syscalls.o - .text._fork 0x00000000 0x16 ./Core/Src/syscalls.o - .text._execve 0x00000000 0x22 ./Core/Src/syscalls.o - .debug_info 0x00000000 0x6a3 ./Core/Src/syscalls.o - .debug_abbrev 0x00000000 0x1b6 ./Core/Src/syscalls.o - .debug_aranges - 0x00000000 0xa8 ./Core/Src/syscalls.o - .debug_rnglists - 0x00000000 0x79 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x274 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0xacc ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x5b ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x24 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x94 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x43 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x57 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x190 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x370 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x4a ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x58 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x8e ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x185 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x3c ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x6a ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0xcf ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x3d ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x35 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x12c ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x29 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x242 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x146 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x103 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x1df ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x18a ./Core/Src/syscalls.o - .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o - .debug_macro 0x00000000 0xce ./Core/Src/syscalls.o - .debug_line 0x00000000 0x8ac ./Core/Src/syscalls.o - .debug_str 0x00000000 0x9976 ./Core/Src/syscalls.o - .comment 0x00000000 0x44 ./Core/Src/syscalls.o - .debug_frame 0x00000000 0x2ac ./Core/Src/syscalls.o - .ARM.attributes - 0x00000000 0x2d ./Core/Src/syscalls.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/sysmem.o - .text 0x00000000 0x0 ./Core/Src/sysmem.o - .data 0x00000000 0x0 ./Core/Src/sysmem.o - .bss 0x00000000 0x0 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0xacc ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x22 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x5b ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x24 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x94 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x43 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x190 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x57 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x370 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x16 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x4a ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x58 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x8e ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x1c ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x185 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x103 ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x6a ./Core/Src/sysmem.o - .debug_macro 0x00000000 0x1df ./Core/Src/sysmem.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o - .text 0x00000000 0x0 ./Core/Src/system_stm32f1xx.o - .data 0x00000000 0x0 ./Core/Src/system_stm32f1xx.o - .bss 0x00000000 0x0 ./Core/Src/system_stm32f1xx.o - .rodata.APBPrescTable - 0x00000000 0x8 ./Core/Src/system_stm32f1xx.o - .text.SystemCoreClockUpdate - 0x00000000 0xe4 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0xacc ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x2e ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x8e ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x51 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x103 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x6a ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x1df ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x1c ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0xbd ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0xd23 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0xe09e ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x6d ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x21b ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x34a2 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x190 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x5c ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x5bc ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x289 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x1cb ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x114 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x1b2 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x27 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x136 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x1bc ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x34 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x3c ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x57 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x87 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x240 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x140 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x8ed ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0xb7 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x242 ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00000000 0x83 ./Core/Src/system_stm32f1xx.o - .text 0x00000000 0x14 ./Core/Startup/startup_stm32f103c8tx.o - .data 0x00000000 0x0 ./Core/Startup/startup_stm32f103c8tx.o - .bss 0x00000000 0x0 ./Core/Startup/startup_stm32f103c8tx.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_DeInit - 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_MspInit - 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_MspDeInit - 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetTickPrio - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_SetTickFreq - 0x00000000 0x50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetTickFreq - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_Delay - 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_SuspendTick - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_ResumeTick - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetHalVersion - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetREVID - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetDEVID - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetUIDw0 - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetUIDw1 - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_GetUIDw2 - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_DBGMCU_EnableDBGSleepMode - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_DBGMCU_DisableDBGSleepMode - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_DBGMCU_EnableDBGStopMode - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_DBGMCU_DisableDBGStopMode - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_DBGMCU_EnableDBGStandbyMode - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .text.HAL_DBGMCU_DisableDBGStandbyMode - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_DisableIRQ - 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_GetPendingIRQ - 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_SetPendingIRQ - 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_ClearPendingIRQ - 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_GetActive - 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_GetPriority - 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.NVIC_DecodePriority - 0x00000000 0x6c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_SystemReset - 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_DisableIRQ - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_SystemReset - 0x00000000 0x8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_GetPriorityGrouping - 0x00000000 0xe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_GetPriority - 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_SetPendingIRQ - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_GetPendingIRQ - 0x00000000 0x1e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_ClearPendingIRQ - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_GetActive - 0x00000000 0x1e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_SYSTICK_CLKSourceConfig - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_SYSTICK_IRQHandler - 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_SYSTICK_Callback - 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_Init - 0x00000000 0xb4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_DeInit - 0x00000000 0xb8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_Start - 0x00000000 0x86 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_Start_IT - 0x00000000 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_Abort - 0x00000000 0x76 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_Abort_IT - 0x00000000 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_PollForTransfer - 0x00000000 0x324 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_IRQHandler - 0x00000000 0x20c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_RegisterCallback - 0x00000000 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_UnRegisterCallback - 0x00000000 0xac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.HAL_DMA_GetError - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .text.DMA_SetConfig - 0x00000000 0x5a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_info 0x00000000 0x6d2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_abbrev 0x00000000 0x20b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_aranges - 0x00000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_rnglists - 0x00000000 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_line 0x00000000 0xde5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_str 0x00000000 0x848d6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .debug_frame 0x00000000 0x208 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .ARM.attributes - 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_SetConfigLine - 0x00000000 0x14c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_GetConfigLine - 0x00000000 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_ClearConfigLine - 0x00000000 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_RegisterCallback - 0x00000000 0x32 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_GetHandle - 0x00000000 0x26 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_IRQHandler - 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_GetPending - 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_ClearPending - 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .text.HAL_EXTI_GenerateSWI - 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_info 0x00000000 0x4ec ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_abbrev 0x00000000 0x1c5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_aranges - 0x00000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_rnglists - 0x00000000 0x46 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_line 0x00000000 0xa25 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_str 0x00000000 0x846af ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .debug_frame 0x00000000 0x174 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .ARM.attributes - 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .bss.pFlash 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_Program - 0x00000000 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_Program_IT - 0x00000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_IRQHandler - 0x00000000 0x1c0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_EndOfOperationCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_OperationErrorCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_Unlock - 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_Lock - 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_OB_Unlock - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_OB_Lock - 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_OB_Launch - 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.HAL_FLASH_GetError - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.FLASH_Program_HalfWord - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.FLASH_WaitForLastOperation - 0x00000000 0x8c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .text.FLASH_SetErrorCode - 0x00000000 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_info 0x00000000 0x4f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_abbrev 0x00000000 0x250 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_aranges - 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_rnglists - 0x00000000 0x66 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_line 0x00000000 0xa8f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_str 0x00000000 0x84808 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .debug_frame 0x00000000 0x20c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .ARM.attributes - 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.HAL_FLASHEx_Erase - 0x00000000 0xd8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.HAL_FLASHEx_Erase_IT - 0x00000000 0x74 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.HAL_FLASHEx_OBErase - 0x00000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.HAL_FLASHEx_OBProgram - 0x00000000 0xf8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.HAL_FLASHEx_OBGetConfig - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.HAL_FLASHEx_OBGetUserData - 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_MassErase - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_EnableWRP - 0x00000000 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_DisableWRP - 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_RDP_LevelConfig - 0x00000000 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_UserConfig - 0x00000000 0x6c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_ProgramData - 0x00000000 0x68 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_GetWRP - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_GetRDP - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_OB_GetUser - 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .text.FLASH_PageErase - 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_info 0x00000000 0x777 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_abbrev 0x00000000 0x247 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_aranges - 0x00000000 0x98 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_rnglists - 0x00000000 0x73 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x1cf ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_line 0x00000000 0xba2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_str 0x00000000 0x849b6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .debug_frame 0x00000000 0x258 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .ARM.attributes - 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .text.HAL_GPIO_DeInit - 0x00000000 0x178 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .text.HAL_GPIO_ReadPin - 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .text.HAL_GPIO_WritePin - 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .text.HAL_GPIO_TogglePin - 0x00000000 0x32 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .text.HAL_GPIO_LockPin - 0x00000000 0x4e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .text.HAL_GPIO_EXTI_IRQHandler - 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .text.HAL_GPIO_EXTI_Callback - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .text.HAL_GPIOEx_ConfigEventout - 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .text.HAL_GPIOEx_EnableEventout - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .text.HAL_GPIOEx_DisableEventout - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_info 0x00000000 0x152 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_abbrev 0x00000000 0xca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_aranges - 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_rnglists - 0x00000000 0x1f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_line 0x00000000 0x76d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_str 0x00000000 0x84530 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .debug_frame 0x00000000 0x78 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .ARM.attributes - 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_DeInit - 0x00000000 0x46 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_MspInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_Stop - 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_WKUP_IRQHandler - 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_DataOutStageCallback - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_DataInStageCallback - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_SetupStageCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_SOFCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_ResetCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_SuspendCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_ResumeCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_ISOOUTIncompleteCallback - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_ISOINIncompleteCallback - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_ConnectCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_DisconnectCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_DevConnect - 0x00000000 0x42 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_DevDisconnect - 0x00000000 0x42 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_EP_Abort - 0x00000000 0x5e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_EP_Flush - 0x00000000 0x5a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_ActivateRemoteWakeup - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_DeActivateRemoteWakeup - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .text.HAL_PCDEx_SetConnectionState - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .text.HAL_PCDEx_LPM_Callback - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .text.HAL_PCDEx_BCD_Callback - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.PWR_OverloadWfe - 0x00000000 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_DeInit - 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnableBkUpAccess - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_DisableBkUpAccess - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_ConfigPVD - 0x00000000 0xbc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnablePVD - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_DisablePVD - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnableWakeUpPin - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_DisableWakeUpPin - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnterSLEEPMode - 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnterSTOPMode - 0x00000000 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnterSTANDBYMode - 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnableSleepOnExit - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_DisableSleepOnExit - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_EnableSEVOnPend - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_DisableSEVOnPend - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_PVD_IRQHandler - 0x00000000 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .text.HAL_PWR_PVDCallback - 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_info 0x00000000 0x628 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_abbrev 0x00000000 0x1f6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_aranges - 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_rnglists - 0x00000000 0x7a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x21d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_line 0x00000000 0x97f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_str 0x00000000 0x84a64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .debug_frame 0x00000000 0x270 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .ARM.attributes - 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_DeInit - 0x00000000 0x134 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_MCOConfig - 0x00000000 0x70 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_EnableCSS - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_DisableCSS - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_GetHCLKFreq - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_GetPCLK1Freq - 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_GetPCLK2Freq - 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_GetOscConfig - 0x00000000 0x104 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_GetClockConfig - 0x00000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_NMI_IRQHandler - 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCC_CSSCallback - 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .text.HAL_RCCEx_GetPeriphCLKConfig - 0x00000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .text.HAL_RCCEx_GetPeriphCLKFreq - 0x00000000 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .rodata.aPLLMULFactorTable.1 - 0x00000000 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .rodata.aPredivFactorTable.0 - 0x00000000 0x2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_DeInit - 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_MspInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_Start - 0x00000000 0x94 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_Stop - 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_Start_IT - 0x00000000 0xa4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_Stop_IT - 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_Start_DMA - 0x00000000 0x10c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_Stop_DMA - 0x00000000 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_Init - 0x00000000 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_DeInit - 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_MspInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_Start - 0x00000000 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_Stop - 0x00000000 0xc8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_Start_IT - 0x00000000 0x1e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_Stop_IT - 0x00000000 0x164 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_Start_DMA - 0x00000000 0x344 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_Stop_DMA - 0x00000000 0x18c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_DeInit - 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_Stop - 0x00000000 0xc8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_Start_IT - 0x00000000 0x1e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_Stop_IT - 0x00000000 0x164 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_Start_DMA - 0x00000000 0x344 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_Stop_DMA - 0x00000000 0x18c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_Init - 0x00000000 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_DeInit - 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_MspInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_Start - 0x00000000 0x180 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_Stop - 0x00000000 0xc2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_Start_IT - 0x00000000 0x218 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_Stop_IT - 0x00000000 0x15c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_Start_DMA - 0x00000000 0x31c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_Stop_DMA - 0x00000000 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_Init - 0x00000000 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_DeInit - 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_MspInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_Start - 0x00000000 0xac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_Stop - 0x00000000 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_Start_IT - 0x00000000 0xcc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_Stop_IT - 0x00000000 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_Init - 0x00000000 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_DeInit - 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_MspInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_Start - 0x00000000 0x11c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_Stop - 0x00000000 0x12e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_Start_IT - 0x00000000 0x15c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_Stop_IT - 0x00000000 0x16a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_Start_DMA - 0x00000000 0x2d8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_Stop_DMA - 0x00000000 0x192 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IRQHandler - 0x00000000 0x1e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_ConfigChannel - 0x00000000 0xb8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_ConfigChannel - 0x00000000 0x138 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_ConfigChannel - 0x00000000 0x1a4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_DMABurst_WriteStart - 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_DMABurst_MultiWriteStart - 0x00000000 0x2a8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_DMABurst_WriteStop - 0x00000000 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_DMABurst_ReadStart - 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_DMABurst_MultiReadStart - 0x00000000 0x2a8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_DMABurst_ReadStop - 0x00000000 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_GenerateEvent - 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_ConfigOCrefClear - 0x00000000 0x198 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_ConfigTI1Input - 0x00000000 0x36 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_SlaveConfigSynchro - 0x00000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_SlaveConfigSynchro_IT - 0x00000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_ReadCapturedValue - 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PeriodElapsedCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PeriodElapsedHalfCpltCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_DelayElapsedCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_CaptureCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_CaptureHalfCpltCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_PulseFinishedCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_PulseFinishedHalfCpltCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_TriggerCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_TriggerHalfCpltCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_ErrorCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Base_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OC_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_PWM_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_IC_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_OnePulse_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_Encoder_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_GetActiveChannel - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_GetChannelState - 0x00000000 0x50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.HAL_TIM_DMABurstState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMAError - 0x00000000 0x92 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMADelayPulseCplt - 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMADelayPulseHalfCplt - 0x00000000 0x68 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMACaptureCplt - 0x00000000 0xc8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMACaptureHalfCplt - 0x00000000 0x68 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMAPeriodElapsedCplt - 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMAPeriodElapsedHalfCplt - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMATriggerCplt - 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_DMATriggerHalfCplt - 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_SlaveTimer_SetConfig - 0x00000000 0x122 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_TI1_SetConfig - 0x00000000 0xb4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_TI2_SetConfig - 0x00000000 0x78 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_TI3_SetConfig - 0x00000000 0x76 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_TI4_SetConfig - 0x00000000 0x78 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_Init - 0x00000000 0x152 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_DeInit - 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_MspInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_MspDeInit - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_Start - 0x00000000 0xe4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_Stop - 0x00000000 0x70 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_Start_IT - 0x00000000 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_Stop_IT - 0x00000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_Start_DMA - 0x00000000 0x134 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_Stop_DMA - 0x00000000 0x7a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OCN_Start - 0x00000000 0x13c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OCN_Stop - 0x00000000 0xba ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OCN_Start_IT - 0x00000000 0x1ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OCN_Stop_IT - 0x00000000 0x13e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OCN_Start_DMA - 0x00000000 0x2c8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OCN_Stop_DMA - 0x00000000 0x138 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_PWMN_Start - 0x00000000 0x13c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_PWMN_Stop - 0x00000000 0xba ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_PWMN_Start_IT - 0x00000000 0x1ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_PWMN_Stop_IT - 0x00000000 0x13e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_PWMN_Start_DMA - 0x00000000 0x2c8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_PWMN_Stop_DMA - 0x00000000 0x138 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OnePulseN_Start - 0x00000000 0xaa ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OnePulseN_Stop - 0x00000000 0xbe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OnePulseN_Start_IT - 0x00000000 0xca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_OnePulseN_Stop_IT - 0x00000000 0xde ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_ConfigCommutEvent - 0x00000000 0xbe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_ConfigCommutEvent_IT - 0x00000000 0xbe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_ConfigCommutEvent_DMA - 0x00000000 0xe4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_ConfigBreakDeadTime - 0x00000000 0xa2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_RemapConfig - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_CommutCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_CommutHalfCpltCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_BreakCallback - 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_HallSensor_GetState - 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.HAL_TIMEx_GetChannelNState - 0x00000000 0x50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.TIMEx_DMACommutationCplt - 0x00000000 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.TIMEx_DMACommutationHalfCplt - 0x00000000 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.TIM_DMADelayPulseNCplt - 0x00000000 0x86 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.TIM_DMAErrorCCxN - 0x00000000 0x6e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .text.TIM_CCxNChannelCmd - 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_FlushTxFifo - 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_FlushRxFifo - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_EPStopXfer - 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_StopDevice - 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_ReadDevAllOutEpInterrupt - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_ReadDevAllInEpInterrupt - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_ReadDevOutEPInterrupt - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_ReadDevInEPInterrupt - 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_ClearInterrupts - 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_ActivateRemoteWakeup - 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .text.USB_DeActivateRemoteWakeup - 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x21b ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x1c8 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00000000 0x8f ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .text.USBD_DeInit - 0x00000000 0x3a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .text.USBD_Stop - 0x00000000 0x2c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .text.USBD_LL_IsoINIncomplete - 0x00000000 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .text.USBD_LL_IsoOUTIncomplete - 0x00000000 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .text.USBD_LL_DevConnected - 0x00000000 0x14 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .text.USBD_LL_DevDisconnected - 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x21b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x21b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00000000 0x1c8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .text.USBD_GetRxCount - 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x21b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00000000 0x1c8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o - .text 0x00000000 0x0 ./USB_DEVICE/App/usb_device.o - .data 0x00000000 0x0 ./USB_DEVICE/App/usb_device.o - .bss 0x00000000 0x0 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0xacc ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x2e ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x51 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x103 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x6a ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x1df ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0xbd ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0xd23 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0xe09e ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x6d ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x21b ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x190 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x5c ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x5bc ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x289 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x1cb ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x114 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x27 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x136 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x1bc ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x87 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x240 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x140 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x8ed ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0xb7 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x242 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x83 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x61 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x24 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x43 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x370 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x4a ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x58 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x185 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x146 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x29 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x20 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x5f ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x1c8 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x00000000 0x8f ./USB_DEVICE/App/usb_device.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o - .text 0x00000000 0x0 ./USB_DEVICE/App/usbd_cdc_if.o - .data 0x00000000 0x0 ./USB_DEVICE/App/usbd_cdc_if.o - .bss 0x00000000 0x0 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0xacc ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x5b ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x24 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x94 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x43 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x9e ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x370 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x112 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x4a ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x58 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x185 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x146 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x29 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x20 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x21b ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x2e ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x103 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x6a ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x1df ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0xbd ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0xd23 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0xe09e ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x6d ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x56 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x5bc ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x289 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x1cb ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x114 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x27 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x136 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x1bc ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x87 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x240 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x140 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x8ed ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0xb7 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x242 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x83 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x5f ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x1c8 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x8f ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_cdc_if.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o - .text 0x00000000 0x0 ./USB_DEVICE/App/usbd_desc.o - .data 0x00000000 0x0 ./USB_DEVICE/App/usbd_desc.o - .bss 0x00000000 0x0 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0xacc ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x5b ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x24 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x94 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x43 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x9e ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x370 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x112 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x4a ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x58 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x185 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x146 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x29 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x20 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x21b ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x2e ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x103 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x6a ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x1df ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0xbd ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0xd23 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0xe09e ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x6d ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x56 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x5bc ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x289 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x1cb ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x114 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x27 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x136 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x1bc ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x87 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x240 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x140 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x8ed ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0xb7 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x242 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x83 ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x5f ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00000000 0x1ce ./USB_DEVICE/App/usbd_desc.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o - .text 0x00000000 0x0 ./USB_DEVICE/Target/usbd_conf.o - .data 0x00000000 0x0 ./USB_DEVICE/Target/usbd_conf.o - .bss 0x00000000 0x0 ./USB_DEVICE/Target/usbd_conf.o - .text.HAL_PCD_MspDeInit - 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o - .text.HAL_PCD_ISOOUTIncompleteCallback - 0x00000000 0x24 ./USB_DEVICE/Target/usbd_conf.o - .text.HAL_PCD_ISOINIncompleteCallback - 0x00000000 0x24 ./USB_DEVICE/Target/usbd_conf.o - .text.HAL_PCD_ConnectCallback - 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o - .text.HAL_PCD_DisconnectCallback - 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o - .text.USBD_LL_DeInit - 0x00000000 0x36 ./USB_DEVICE/Target/usbd_conf.o - .text.USBD_LL_Stop - 0x00000000 0x36 ./USB_DEVICE/Target/usbd_conf.o - .text.USBD_LL_FlushEP - 0x00000000 0x3e ./USB_DEVICE/Target/usbd_conf.o - .text.USBD_LL_Delay - 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0xacc ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x2e ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x8e ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x51 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x103 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x6a ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x1df ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x22 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0xbd ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0xd23 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0xe09e ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x6d ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x21b ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x190 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x5c ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x5bc ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x289 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x1cb ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x114 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x27 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x136 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x1bc ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x57 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x87 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x240 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x140 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x8ed ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0xb7 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x242 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x83 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x61 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x24 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x43 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x3c ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x370 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x4a ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x10 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x58 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x8e ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x185 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x146 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x29 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x20 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x5f ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x1c8 ./USB_DEVICE/Target/usbd_conf.o - .debug_macro 0x00000000 0x8f ./USB_DEVICE/Target/usbd_conf.o - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) - .text.exit 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) - .debug_frame 0x00000000 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.std 0x00000000 0x6c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.stdio_exit_handler - 0x00000000 0x18 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.cleanup_stdio - 0x00000000 0x40 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__fp_lock - 0x00000000 0x18 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__fp_unlock - 0x00000000 0x18 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.global_stdio_init.part.0 - 0x00000000 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__sfp_lock_acquire - 0x00000000 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__sfp_lock_release - 0x00000000 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__sfp 0x00000000 0xa4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__sinit 0x00000000 0x30 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__fp_lock_all - 0x00000000 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text.__fp_unlock_all - 0x00000000 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .data.__sglue 0x00000000 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .bss.__stdio_exit_handler - 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) - .text._fwalk_sglue - 0x00000000 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) - .debug_frame 0x00000000 0x34 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - .text._sprintf_r - 0x00000000 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .text.__sread 0x00000000 0x22 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .text.__seofread - 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .text.__swrite - 0x00000000 0x38 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .text.__sseek 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .text.__sclose - 0x00000000 0x8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .debug_frame 0x00000000 0x88 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) - .text._close_r - 0x00000000 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) - .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - .text._reclaim_reent - 0x00000000 0xbc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) - .text._lseek_r - 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) - .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) - .text._read_r 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) - .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) - .text._write_r - 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) - .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_init - 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_init_recursive - 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_close - 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_close_recursive - 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_acquire - 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_try_acquire - 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_try_acquire_recursive - 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text.__retarget_lock_release - 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss.__lock___arc4random_mutex - 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss.__lock___dd_hash_mutex - 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss.__lock___tz_mutex - 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss.__lock___env_recursive_mutex - 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss.__lock___at_quick_exit_mutex - 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss.__lock___atexit_recursive_mutex - 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .bss.__lock___sfp_recursive_mutex - 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - .text.__ssprint_r - 0x00000000 0xfa C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .text.__sflush_r - 0x00000000 0x100 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .text._fflush_r - 0x00000000 0x50 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .text.fflush 0x00000000 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .debug_frame 0x00000000 0x5c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o - .rodata 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o - .eh_frame 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o - .ARM.attributes - 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o - .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o - .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o - .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o - -Memory Configuration - -Name Origin Length Attributes -RAM 0x20000000 0x00005000 xrw -FLASH 0x08000000 0x00010000 xr -*default* 0x00000000 0xffffffff - -Linker script and memory map - -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o -LOAD ./Core/Src/main.o -LOAD ./Core/Src/stm32f1xx_hal_msp.o -LOAD ./Core/Src/stm32f1xx_it.o -LOAD ./Core/Src/syscalls.o -LOAD ./Core/Src/sysmem.o -LOAD ./Core/Src/system_stm32f1xx.o -LOAD ./Core/Startup/startup_stm32f103c8tx.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o -LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o -LOAD ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o -LOAD ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o -LOAD ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o -LOAD ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o -LOAD ./USB_DEVICE/App/usb_device.o -LOAD ./USB_DEVICE/App/usbd_cdc_if.o -LOAD ./USB_DEVICE/App/usbd_desc.o -LOAD ./USB_DEVICE/Target/usbd_conf.o -START GROUP -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a -END GROUP -START GROUP -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a -END GROUP -START GROUP -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libnosys.a -END GROUP -START GROUP -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libnosys.a -END GROUP -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o - 0x20005000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) - 0x00000200 _Min_Heap_Size = 0x200 - 0x00000400 _Min_Stack_Size = 0x400 - -.isr_vector 0x08000000 0x10c - 0x08000000 . = ALIGN (0x4) - *(.isr_vector) - .isr_vector 0x08000000 0x10c ./Core/Startup/startup_stm32f103c8tx.o - 0x08000000 g_pfnVectors - 0x0800010c . = ALIGN (0x4) - -.text 0x0800010c 0x9080 - 0x0800010c . = ALIGN (0x4) - *(.text) - .text 0x0800010c 0x40 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - *(.text*) - .text.main 0x0800014c 0xd0 ./Core/Src/main.o - 0x0800014c main - .text.SystemClock_Config - 0x0800021c 0xb4 ./Core/Src/main.o - 0x0800021c SystemClock_Config - .text.MX_TIM2_Init - 0x080002d0 0x138 ./Core/Src/main.o - .text.MX_TIM3_Init - 0x08000408 0x144 ./Core/Src/main.o - .text.MX_TIM4_Init - 0x0800054c 0x144 ./Core/Src/main.o - .text.MX_GPIO_Init - 0x08000690 0x80 ./Core/Src/main.o - .text.Error_Handler - 0x08000710 0xc ./Core/Src/main.o - 0x08000710 Error_Handler - .text.HAL_MspInit - 0x0800071c 0x64 ./Core/Src/stm32f1xx_hal_msp.o - 0x0800071c HAL_MspInit - .text.HAL_TIM_Base_MspInit - 0x08000780 0x88 ./Core/Src/stm32f1xx_hal_msp.o - 0x08000780 HAL_TIM_Base_MspInit - .text.HAL_TIM_MspPostInit - 0x08000808 0x110 ./Core/Src/stm32f1xx_hal_msp.o - 0x08000808 HAL_TIM_MspPostInit - .text.NMI_Handler - 0x08000918 0x8 ./Core/Src/stm32f1xx_it.o - 0x08000918 NMI_Handler - .text.HardFault_Handler - 0x08000920 0x8 ./Core/Src/stm32f1xx_it.o - 0x08000920 HardFault_Handler - .text.MemManage_Handler - 0x08000928 0x8 ./Core/Src/stm32f1xx_it.o - 0x08000928 MemManage_Handler - .text.BusFault_Handler - 0x08000930 0x8 ./Core/Src/stm32f1xx_it.o - 0x08000930 BusFault_Handler - .text.UsageFault_Handler - 0x08000938 0x8 ./Core/Src/stm32f1xx_it.o - 0x08000938 UsageFault_Handler - .text.SVC_Handler - 0x08000940 0xc ./Core/Src/stm32f1xx_it.o - 0x08000940 SVC_Handler - .text.DebugMon_Handler - 0x0800094c 0xc ./Core/Src/stm32f1xx_it.o - 0x0800094c DebugMon_Handler - .text.PendSV_Handler - 0x08000958 0xc ./Core/Src/stm32f1xx_it.o - 0x08000958 PendSV_Handler - .text.SysTick_Handler - 0x08000964 0xc ./Core/Src/stm32f1xx_it.o - 0x08000964 SysTick_Handler - .text.USB_LP_CAN1_RX0_IRQHandler - 0x08000970 0x14 ./Core/Src/stm32f1xx_it.o - 0x08000970 USB_LP_CAN1_RX0_IRQHandler - .text._sbrk 0x08000984 0x6c ./Core/Src/sysmem.o - 0x08000984 _sbrk - .text.SystemInit - 0x080009f0 0xc ./Core/Src/system_stm32f1xx.o - 0x080009f0 SystemInit - .text.Reset_Handler - 0x080009fc 0x48 ./Core/Startup/startup_stm32f103c8tx.o - 0x080009fc Reset_Handler - .text.Default_Handler - 0x08000a44 0x2 ./Core/Startup/startup_stm32f103c8tx.o - 0x08000a44 RTC_Alarm_IRQHandler - 0x08000a44 EXTI2_IRQHandler - 0x08000a44 TIM1_CC_IRQHandler - 0x08000a44 PVD_IRQHandler - 0x08000a44 EXTI3_IRQHandler - 0x08000a44 EXTI0_IRQHandler - 0x08000a44 I2C2_EV_IRQHandler - 0x08000a44 ADC1_2_IRQHandler - 0x08000a44 SPI1_IRQHandler - 0x08000a44 TAMPER_IRQHandler - 0x08000a44 DMA1_Channel4_IRQHandler - 0x08000a44 USART3_IRQHandler - 0x08000a44 RTC_IRQHandler - 0x08000a44 DMA1_Channel7_IRQHandler - 0x08000a44 CAN1_RX1_IRQHandler - 0x08000a44 TIM4_IRQHandler - 0x08000a44 I2C1_EV_IRQHandler - 0x08000a44 DMA1_Channel6_IRQHandler - 0x08000a44 TIM3_IRQHandler - 0x08000a44 RCC_IRQHandler - 0x08000a44 TIM1_TRG_COM_IRQHandler - 0x08000a44 DMA1_Channel1_IRQHandler - 0x08000a44 Default_Handler - 0x08000a44 EXTI15_10_IRQHandler - 0x08000a44 EXTI9_5_IRQHandler - 0x08000a44 SPI2_IRQHandler - 0x08000a44 DMA1_Channel5_IRQHandler - 0x08000a44 EXTI4_IRQHandler - 0x08000a44 USB_HP_CAN1_TX_IRQHandler - 0x08000a44 DMA1_Channel3_IRQHandler - 0x08000a44 TIM1_UP_IRQHandler - 0x08000a44 WWDG_IRQHandler - 0x08000a44 TIM2_IRQHandler - 0x08000a44 TIM1_BRK_IRQHandler - 0x08000a44 EXTI1_IRQHandler - 0x08000a44 USART2_IRQHandler - 0x08000a44 I2C2_ER_IRQHandler - 0x08000a44 DMA1_Channel2_IRQHandler - 0x08000a44 CAN1_SCE_IRQHandler - 0x08000a44 FLASH_IRQHandler - 0x08000a44 USART1_IRQHandler - 0x08000a44 I2C1_ER_IRQHandler - 0x08000a44 USBWakeUp_IRQHandler - *fill* 0x08000a46 0x2 - .text.HAL_Init - 0x08000a48 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x08000a48 HAL_Init - .text.HAL_InitTick - 0x08000a74 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x08000a74 HAL_InitTick - .text.HAL_IncTick - 0x08000ad4 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x08000ad4 HAL_IncTick - .text.HAL_GetTick - 0x08000af8 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x08000af8 HAL_GetTick - .text.__NVIC_SetPriorityGrouping - 0x08000b0c 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_GetPriorityGrouping - 0x08000b54 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_EnableIRQ - 0x08000b70 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.__NVIC_SetPriority - 0x08000ba8 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.NVIC_EncodePriority - 0x08000bfc 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.SysTick_Config - 0x08000c60 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .text.HAL_NVIC_SetPriorityGrouping - 0x08000ca4 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x08000ca4 HAL_NVIC_SetPriorityGrouping - .text.HAL_NVIC_SetPriority - 0x08000cba 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x08000cba HAL_NVIC_SetPriority - .text.HAL_NVIC_EnableIRQ - 0x08000cf2 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x08000cf2 HAL_NVIC_EnableIRQ - .text.HAL_SYSTICK_Config - 0x08000d0e 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - 0x08000d0e HAL_SYSTICK_Config - *fill* 0x08000d26 0x2 - .text.HAL_GPIO_Init - 0x08000d28 0x308 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - 0x08000d28 HAL_GPIO_Init - .text.HAL_PCD_Init - 0x08001030 0x1ec ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x08001030 HAL_PCD_Init - .text.HAL_PCD_Start - 0x0800121c 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x0800121c HAL_PCD_Start - .text.HAL_PCD_IRQHandler - 0x08001268 0x260 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x08001268 HAL_PCD_IRQHandler - .text.HAL_PCD_SetAddress - 0x080014c8 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x080014c8 HAL_PCD_SetAddress - .text.HAL_PCD_EP_Open - 0x08001510 0xba ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x08001510 HAL_PCD_EP_Open - .text.HAL_PCD_EP_Close - 0x080015ca 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x080015ca HAL_PCD_EP_Close - .text.HAL_PCD_EP_Receive - 0x0800165a 0x62 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x0800165a HAL_PCD_EP_Receive - .text.HAL_PCD_EP_GetRxCount - 0x080016bc 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x080016bc HAL_PCD_EP_GetRxCount - .text.HAL_PCD_EP_Transmit - 0x080016ea 0x6e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x080016ea HAL_PCD_EP_Transmit - .text.HAL_PCD_EP_SetStall - 0x08001758 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x08001758 HAL_PCD_EP_SetStall - .text.HAL_PCD_EP_ClrStall - 0x08001818 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - 0x08001818 HAL_PCD_EP_ClrStall - .text.PCD_EP_ISR_Handler - 0x080018c0 0x79e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_EP_DB_Receive - 0x0800205e 0x21a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCD_EP_DB_Transmit - 0x08002278 0x7f4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .text.HAL_PCDEx_PMAConfig - 0x08002a6c 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - 0x08002a6c HAL_PCDEx_PMAConfig - .text.HAL_RCC_OscConfig - 0x08002af0 0x504 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x08002af0 HAL_RCC_OscConfig - .text.HAL_RCC_ClockConfig - 0x08002ff4 0x1d4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x08002ff4 HAL_RCC_ClockConfig - .text.HAL_RCC_GetSysClockFreq - 0x080031c8 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - 0x080031c8 HAL_RCC_GetSysClockFreq - .text.RCC_Delay - 0x08003270 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .text.HAL_RCCEx_PeriphCLKConfig - 0x080032ac 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - 0x080032ac HAL_RCCEx_PeriphCLKConfig - .text.HAL_TIM_Base_Init - 0x08003418 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x08003418 HAL_TIM_Base_Init - .text.HAL_TIM_PWM_Init - 0x080034b6 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x080034b6 HAL_TIM_PWM_Init - .text.HAL_TIM_PWM_MspInit - 0x08003554 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x08003554 HAL_TIM_PWM_MspInit - *fill* 0x08003566 0x2 - .text.HAL_TIM_PWM_Start - 0x08003568 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x08003568 HAL_TIM_PWM_Start - .text.HAL_TIM_PWM_ConfigChannel - 0x080036ac 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x080036ac HAL_TIM_PWM_ConfigChannel - .text.HAL_TIM_ConfigClockSource - 0x08003830 0x18e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x08003830 HAL_TIM_ConfigClockSource - *fill* 0x080039be 0x2 - .text.TIM_Base_SetConfig - 0x080039c0 0xdc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x080039c0 TIM_Base_SetConfig - .text.TIM_OC1_SetConfig - 0x08003a9c 0xcc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_OC2_SetConfig - 0x08003b68 0xd4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x08003b68 TIM_OC2_SetConfig - .text.TIM_OC3_SetConfig - 0x08003c3c 0xd4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_OC4_SetConfig - 0x08003d10 0x9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_TI1_ConfigInputStage - 0x08003dac 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_TI2_ConfigInputStage - 0x08003e08 0x5e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_ITRx_SetConfig - 0x08003e66 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .text.TIM_ETR_SetConfig - 0x08003e9a 0x3e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x08003e9a TIM_ETR_SetConfig - .text.TIM_CCxChannelCmd - 0x08003ed8 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - 0x08003ed8 TIM_CCxChannelCmd - .text.HAL_TIMEx_MasterConfigSynchronization - 0x08003f20 0xbc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - 0x08003f20 HAL_TIMEx_MasterConfigSynchronization - .text.USB_CoreInit - 0x08003fdc 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08003fdc USB_CoreInit - .text.USB_EnableGlobalInt - 0x08003ff6 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08003ff6 USB_EnableGlobalInt - .text.USB_DisableGlobalInt - 0x08004022 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08004022 USB_DisableGlobalInt - .text.USB_SetCurrentMode - 0x08004056 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08004056 USB_SetCurrentMode - .text.USB_DevInit - 0x0800406e 0x3a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x0800406e USB_DevInit - .text.USB_ActivateEndpoint - 0x080040a8 0x780 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x080040a8 USB_ActivateEndpoint - .text.USB_DeactivateEndpoint - 0x08004828 0x3d8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08004828 USB_DeactivateEndpoint - .text.USB_EPStartXfer - 0x08004c00 0x1762 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08004c00 USB_EPStartXfer - .text.USB_EPSetStall - 0x08006362 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08006362 USB_EPSetStall - .text.USB_EPClearStall - 0x08006402 0x15a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08006402 USB_EPClearStall - .text.USB_SetDevAddress - 0x0800655c 0x26 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x0800655c USB_SetDevAddress - .text.USB_DevConnect - 0x08006582 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08006582 USB_DevConnect - .text.USB_DevDisconnect - 0x08006596 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x08006596 USB_DevDisconnect - .text.USB_ReadInterrupts - 0x080065aa 0x1e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x080065aa USB_ReadInterrupts - .text.USB_EP0_OutStart - 0x080065c8 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x080065c8 USB_EP0_OutStart - .text.USB_WritePMA - 0x080065de 0x8c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x080065de USB_WritePMA - .text.USB_ReadPMA - 0x0800666a 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - 0x0800666a USB_ReadPMA - .text.USBD_CDC_Init - 0x08006708 0xf4 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_DeInit - 0x080067fc 0x6e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_Setup - 0x0800686a 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_DataIn - 0x080069b0 0xa6 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_DataOut - 0x08006a56 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_EP0_RxReady - 0x08006aac 0x4e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - *fill* 0x08006afa 0x2 - .text.USBD_CDC_GetFSCfgDesc - 0x08006afc 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_GetHSCfgDesc - 0x08006b1c 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_GetOtherSpeedCfgDesc - 0x08006b3c 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .text.USBD_CDC_GetDeviceQualifierDescriptor - 0x08006b5c 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x08006b5c USBD_CDC_GetDeviceQualifierDescriptor - .text.USBD_CDC_RegisterInterface - 0x08006b7c 0x2c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x08006b7c USBD_CDC_RegisterInterface - .text.USBD_CDC_SetTxBuffer - 0x08006ba8 0x32 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x08006ba8 USBD_CDC_SetTxBuffer - .text.USBD_CDC_SetRxBuffer - 0x08006bda 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x08006bda USBD_CDC_SetRxBuffer - .text.USBD_CDC_TransmitPacket - 0x08006c00 0x5e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x08006c00 USBD_CDC_TransmitPacket - .text.USBD_CDC_ReceivePacket - 0x08006c5e 0x54 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x08006c5e USBD_CDC_ReceivePacket - .text.USBD_Init - 0x08006cb2 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08006cb2 USBD_Init - .text.USBD_RegisterClass - 0x08006d08 0x32 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08006d08 USBD_RegisterClass - .text.USBD_Start - 0x08006d3a 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08006d3a USBD_Start - .text.USBD_RunTestMode - 0x08006d52 0x14 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08006d52 USBD_RunTestMode - .text.USBD_SetClassConfig - 0x08006d66 0x3e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08006d66 USBD_SetClassConfig - .text.USBD_ClrClassConfig - 0x08006da4 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08006da4 USBD_ClrClassConfig - .text.USBD_LL_SetupStage - 0x08006dca 0x9a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08006dca USBD_LL_SetupStage - .text.USBD_LL_DataOutStage - 0x08006e64 0xe2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08006e64 USBD_LL_DataOutStage - .text.USBD_LL_DataInStage - 0x08006f46 0x14a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08006f46 USBD_LL_DataInStage - .text.USBD_LL_Reset - 0x08007090 0x82 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08007090 USBD_LL_Reset - .text.USBD_LL_SetSpeed - 0x08007112 0x1e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08007112 USBD_LL_SetSpeed - .text.USBD_LL_Suspend - 0x08007130 0x28 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08007130 USBD_LL_Suspend - .text.USBD_LL_Resume - 0x08007158 0x2a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08007158 USBD_LL_Resume - .text.USBD_LL_SOF - 0x08007182 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08007182 USBD_LL_SOF - *fill* 0x080071b6 0x2 - .text.USBD_StdDevReq - 0x080071b8 0xd4 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x080071b8 USBD_StdDevReq - .text.USBD_StdItfReq - 0x0800728c 0x90 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x0800728c USBD_StdItfReq - .text.USBD_StdEPReq - 0x0800731c 0x2c6 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x0800731c USBD_StdEPReq - *fill* 0x080075e2 0x2 - .text.USBD_GetDescriptor - 0x080075e4 0x2d0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text.USBD_SetAddress - 0x080078b4 0x86 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - *fill* 0x0800793a 0x2 - .text.USBD_SetConfig - 0x0800793c 0x11c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text.USBD_GetConfig - 0x08007a58 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text.USBD_GetStatus - 0x08007ac2 0x66 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text.USBD_SetFeature - 0x08007b28 0x28 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text.USBD_ClrFeature - 0x08007b50 0x42 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text.USBD_ParseSetupRequest - 0x08007b92 0x72 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x08007b92 USBD_ParseSetupRequest - .text.USBD_CtlError - 0x08007c04 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x08007c04 USBD_CtlError - .text.USBD_GetString - 0x08007c26 0x84 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x08007c26 USBD_GetString - .text.USBD_GetLen - 0x08007caa 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .text.USBD_CtlSendData - 0x08007cd8 0x38 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x08007cd8 USBD_CtlSendData - .text.USBD_CtlContinueSendData - 0x08007d10 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x08007d10 USBD_CtlContinueSendData - .text.USBD_CtlPrepareRx - 0x08007d34 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x08007d34 USBD_CtlPrepareRx - .text.USBD_CtlContinueRx - 0x08007d70 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x08007d70 USBD_CtlContinueRx - .text.USBD_CtlSendStatus - 0x08007d94 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x08007d94 USBD_CtlSendStatus - .text.USBD_CtlReceiveStatus - 0x08007dba 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x08007dba USBD_CtlReceiveStatus - .text.MX_USB_DEVICE_Init - 0x08007de0 0x60 ./USB_DEVICE/App/usb_device.o - 0x08007de0 MX_USB_DEVICE_Init - .text.fifo_push - 0x08007e40 0x6c ./USB_DEVICE/App/usbd_cdc_if.o - .text.CDC_Available - 0x08007eac 0x28 ./USB_DEVICE/App/usbd_cdc_if.o - 0x08007eac CDC_Available - .text.CDC_ReadByte - 0x08007ed4 0x54 ./USB_DEVICE/App/usbd_cdc_if.o - 0x08007ed4 CDC_ReadByte - .text.CDC_Init_FS - 0x08007f28 0x28 ./USB_DEVICE/App/usbd_cdc_if.o - .text.CDC_DeInit_FS - 0x08007f50 0xe ./USB_DEVICE/App/usbd_cdc_if.o - *fill* 0x08007f5e 0x2 - .text.CDC_Control_FS - 0x08007f60 0xbc ./USB_DEVICE/App/usbd_cdc_if.o - .text.CDC_Receive_FS - 0x0800801c 0x3c ./USB_DEVICE/App/usbd_cdc_if.o - .text.CDC_Transmit_FS - 0x08008058 0x4c ./USB_DEVICE/App/usbd_cdc_if.o - 0x08008058 CDC_Transmit_FS - .text.USBD_FS_DeviceDescriptor - 0x080080a4 0x24 ./USB_DEVICE/App/usbd_desc.o - 0x080080a4 USBD_FS_DeviceDescriptor - .text.USBD_FS_LangIDStrDescriptor - 0x080080c8 0x24 ./USB_DEVICE/App/usbd_desc.o - 0x080080c8 USBD_FS_LangIDStrDescriptor - .text.USBD_FS_ProductStrDescriptor - 0x080080ec 0x3c ./USB_DEVICE/App/usbd_desc.o - 0x080080ec USBD_FS_ProductStrDescriptor - .text.USBD_FS_ManufacturerStrDescriptor - 0x08008128 0x28 ./USB_DEVICE/App/usbd_desc.o - 0x08008128 USBD_FS_ManufacturerStrDescriptor - .text.USBD_FS_SerialStrDescriptor - 0x08008150 0x24 ./USB_DEVICE/App/usbd_desc.o - 0x08008150 USBD_FS_SerialStrDescriptor - .text.USBD_FS_ConfigStrDescriptor - 0x08008174 0x3c ./USB_DEVICE/App/usbd_desc.o - 0x08008174 USBD_FS_ConfigStrDescriptor - .text.USBD_FS_InterfaceStrDescriptor - 0x080081b0 0x3c ./USB_DEVICE/App/usbd_desc.o - 0x080081b0 USBD_FS_InterfaceStrDescriptor - .text.Get_SerialNum - 0x080081ec 0x58 ./USB_DEVICE/App/usbd_desc.o - .text.IntToUnicode - 0x08008244 0x7c ./USB_DEVICE/App/usbd_desc.o - .text.HAL_PCD_MspInit - 0x080082c0 0x4c ./USB_DEVICE/Target/usbd_conf.o - 0x080082c0 HAL_PCD_MspInit - .text.HAL_PCD_SetupStageCallback - 0x0800830c 0x24 ./USB_DEVICE/Target/usbd_conf.o - 0x0800830c HAL_PCD_SetupStageCallback - .text.HAL_PCD_DataOutStageCallback - 0x08008330 0x36 ./USB_DEVICE/Target/usbd_conf.o - 0x08008330 HAL_PCD_DataOutStageCallback - .text.HAL_PCD_DataInStageCallback - 0x08008366 0x34 ./USB_DEVICE/Target/usbd_conf.o - 0x08008366 HAL_PCD_DataInStageCallback - .text.HAL_PCD_SOFCallback - 0x0800839a 0x1c ./USB_DEVICE/Target/usbd_conf.o - 0x0800839a HAL_PCD_SOFCallback - .text.HAL_PCD_ResetCallback - 0x080083b6 0x3c ./USB_DEVICE/Target/usbd_conf.o - 0x080083b6 HAL_PCD_ResetCallback - *fill* 0x080083f2 0x2 - .text.HAL_PCD_SuspendCallback - 0x080083f4 0x34 ./USB_DEVICE/Target/usbd_conf.o - 0x080083f4 HAL_PCD_SuspendCallback - .text.HAL_PCD_ResumeCallback - 0x08008428 0x1c ./USB_DEVICE/Target/usbd_conf.o - 0x08008428 HAL_PCD_ResumeCallback - .text.USBD_LL_Init - 0x08008444 0xb4 ./USB_DEVICE/Target/usbd_conf.o - 0x08008444 USBD_LL_Init - .text.USBD_LL_Start - 0x080084f8 0x36 ./USB_DEVICE/Target/usbd_conf.o - 0x080084f8 USBD_LL_Start - .text.USBD_LL_OpenEP - 0x0800852e 0x4c ./USB_DEVICE/Target/usbd_conf.o - 0x0800852e USBD_LL_OpenEP - .text.USBD_LL_CloseEP - 0x0800857a 0x3e ./USB_DEVICE/Target/usbd_conf.o - 0x0800857a USBD_LL_CloseEP - .text.USBD_LL_StallEP - 0x080085b8 0x3e ./USB_DEVICE/Target/usbd_conf.o - 0x080085b8 USBD_LL_StallEP - .text.USBD_LL_ClearStallEP - 0x080085f6 0x3e ./USB_DEVICE/Target/usbd_conf.o - 0x080085f6 USBD_LL_ClearStallEP - .text.USBD_LL_IsStallEP - 0x08008634 0x56 ./USB_DEVICE/Target/usbd_conf.o - 0x08008634 USBD_LL_IsStallEP - .text.USBD_LL_SetUSBAddress - 0x0800868a 0x3e ./USB_DEVICE/Target/usbd_conf.o - 0x0800868a USBD_LL_SetUSBAddress - .text.USBD_LL_Transmit - 0x080086c8 0x46 ./USB_DEVICE/Target/usbd_conf.o - 0x080086c8 USBD_LL_Transmit - .text.USBD_LL_PrepareReceive - 0x0800870e 0x46 ./USB_DEVICE/Target/usbd_conf.o - 0x0800870e USBD_LL_PrepareReceive - .text.USBD_LL_GetRxDataSize - 0x08008754 0x26 ./USB_DEVICE/Target/usbd_conf.o - 0x08008754 USBD_LL_GetRxDataSize - *fill* 0x0800877a 0x2 - .text.USBD_static_malloc - 0x0800877c 0x18 ./USB_DEVICE/Target/usbd_conf.o - 0x0800877c USBD_static_malloc - .text.USBD_static_free - 0x08008794 0x12 ./USB_DEVICE/Target/usbd_conf.o - 0x08008794 USBD_static_free - .text.HAL_PCDEx_SetConnectionState - 0x080087a6 0x16 ./USB_DEVICE/Target/usbd_conf.o - 0x080087a6 HAL_PCDEx_SetConnectionState - .text.USBD_Get_USB_Status - 0x080087bc 0x58 ./USB_DEVICE/Target/usbd_conf.o - .text.sprintf 0x08008814 0x44 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - 0x08008814 siprintf - 0x08008814 sprintf - .text.memset 0x08008858 0x10 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - 0x08008858 memset - .text.__errno 0x08008868 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - 0x08008868 __errno - .text.__libc_init_array - 0x08008874 0x48 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - 0x08008874 __libc_init_array - .text.__retarget_lock_acquire_recursive - 0x080088bc 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - 0x080088bc __retarget_lock_acquire_recursive - .text.__retarget_lock_release_recursive - 0x080088be 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - 0x080088be __retarget_lock_release_recursive - .text._free_r 0x080088c0 0x90 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) - 0x080088c0 _free_r - .text.sbrk_aligned - 0x08008950 0x44 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - .text._malloc_r - 0x08008994 0x100 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - 0x08008994 _malloc_r - .text.__malloc_lock - 0x08008a94 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - 0x08008a94 __malloc_lock - .text.__malloc_unlock - 0x08008aa0 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - 0x08008aa0 __malloc_unlock - .text.__ssputs_r - 0x08008aac 0xb6 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - 0x08008aac __ssputs_r - *fill* 0x08008b62 0x2 - .text._svfprintf_r - 0x08008b64 0x1f8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - 0x08008b64 _svfiprintf_r - 0x08008b64 _svfprintf_r - .text._printf_common - 0x08008d5c 0xe4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - 0x08008d5c _printf_common - .text._printf_i - 0x08008e40 0x23c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - 0x08008e40 _printf_i - .text.memmove 0x0800907c 0x34 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) - 0x0800907c memmove - .text._sbrk_r 0x080090b0 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) - 0x080090b0 _sbrk_r - .text.memchr 0x080090d0 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - 0x080090d0 memchr - .text.memcpy 0x080090ec 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - 0x080090ec memcpy - .text._realloc_r - 0x08009108 0x5c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) - 0x08009108 _realloc_r - .text._malloc_usable_size_r - 0x08009164 0x10 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) - 0x08009164 _malloc_usable_size_r - *(.glue_7) - .glue_7 0x08009174 0x0 linker stubs - *(.glue_7t) - .glue_7t 0x08009174 0x0 linker stubs - *(.eh_frame) - .eh_frame 0x08009174 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - *(.init) - .init 0x08009174 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o - 0x08009174 _init - .init 0x08009178 0x8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o - *(.fini) - .fini 0x08009180 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o - 0x08009180 _fini - .fini 0x08009184 0x8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o - 0x0800918c . = ALIGN (0x4) - 0x0800918c _etext = . - -.vfp11_veneer 0x0800918c 0x0 - .vfp11_veneer 0x0800918c 0x0 linker stubs - -.v4_bx 0x0800918c 0x0 - .v4_bx 0x0800918c 0x0 linker stubs - -.iplt 0x0800918c 0x0 - .iplt 0x0800918c 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - -.rodata 0x0800918c 0xb0 - 0x0800918c . = ALIGN (0x4) - *(.rodata) - .rodata 0x0800918c 0x10 ./Core/Src/main.o - .rodata 0x0800919c 0x46 ./USB_DEVICE/App/usbd_desc.o - *(.rodata*) - *fill* 0x080091e2 0x2 - .rodata.AHBPrescTable - 0x080091e4 0x10 ./Core/Src/system_stm32f1xx.o - 0x080091e4 AHBPrescTable - .rodata.aPLLMULFactorTable.1 - 0x080091f4 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .rodata.aPredivFactorTable.0 - 0x08009204 0x2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .rodata._svfprintf_r.str1.1 - 0x08009206 0x33 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - 0x11 (size before relaxing) - .rodata._printf_i.str1.1 - 0x08009239 0x22 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - 0x0800925c . = ALIGN (0x4) - *fill* 0x08009239 0x3 - -.ARM.extab 0x0800923c 0x0 - 0x0800923c . = ALIGN (0x4) - *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x0800923c . = ALIGN (0x4) - -.ARM 0x0800923c 0x0 - 0x0800923c . = ALIGN (0x4) - 0x0800923c __exidx_start = . - *(.ARM.exidx*) - 0x0800923c __exidx_end = . - 0x0800923c . = ALIGN (0x4) - -.preinit_array 0x0800923c 0x0 - 0x0800923c . = ALIGN (0x4) - 0x0800923c PROVIDE (__preinit_array_start = .) - *(.preinit_array*) - 0x0800923c PROVIDE (__preinit_array_end = .) - 0x0800923c . = ALIGN (0x4) - -.init_array 0x0800923c 0x4 - 0x0800923c . = ALIGN (0x4) - 0x0800923c PROVIDE (__init_array_start = .) - *(SORT_BY_NAME(.init_array.*)) - *(.init_array*) - .init_array 0x0800923c 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - 0x08009240 PROVIDE (__init_array_end = .) - 0x08009240 . = ALIGN (0x4) - -.fini_array 0x08009240 0x4 - 0x08009240 . = ALIGN (0x4) - [!provide] PROVIDE (__fini_array_start = .) - *(SORT_BY_NAME(.fini_array.*)) - *(.fini_array*) - .fini_array 0x08009240 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - [!provide] PROVIDE (__fini_array_end = .) - 0x08009244 . = ALIGN (0x4) - 0x08009244 _sidata = LOADADDR (.data) - -.rel.dyn 0x08009244 0x0 - .rel.iplt 0x08009244 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - -.data 0x20000000 0x1cc load address 0x08009244 - 0x20000000 . = ALIGN (0x4) - 0x20000000 _sdata = . - *(.data) - *(.data*) - .data.SystemCoreClock - 0x20000000 0x4 ./Core/Src/system_stm32f1xx.o - 0x20000000 SystemCoreClock - .data.uwTickPrio - 0x20000004 0x4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x20000004 uwTickPrio - .data.uwTickFreq - 0x20000008 0x1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x20000008 uwTickFreq - *fill* 0x20000009 0x3 - .data.USBD_CDC_DeviceQualifierDesc - 0x2000000c 0xa ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - *fill* 0x20000016 0x2 - .data.USBD_CDC - 0x20000018 0x38 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x20000018 USBD_CDC - .data.USBD_CDC_CfgHSDesc - 0x20000050 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x20000050 USBD_CDC_CfgHSDesc - *fill* 0x20000093 0x1 - .data.USBD_CDC_CfgFSDesc - 0x20000094 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x20000094 USBD_CDC_CfgFSDesc - *fill* 0x200000d7 0x1 - .data.USBD_CDC_OtherSpeedCfgDesc - 0x200000d8 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - 0x200000d8 USBD_CDC_OtherSpeedCfgDesc - *fill* 0x2000011b 0x1 - .data.USBD_Interface_fops_FS - 0x2000011c 0x10 ./USB_DEVICE/App/usbd_cdc_if.o - 0x2000011c USBD_Interface_fops_FS - .data.FS_Desc 0x2000012c 0x1c ./USB_DEVICE/App/usbd_desc.o - 0x2000012c FS_Desc - .data.USBD_FS_DeviceDesc - 0x20000148 0x12 ./USB_DEVICE/App/usbd_desc.o - 0x20000148 USBD_FS_DeviceDesc - *fill* 0x2000015a 0x2 - .data.USBD_LangIDDesc - 0x2000015c 0x4 ./USB_DEVICE/App/usbd_desc.o - 0x2000015c USBD_LangIDDesc - .data.USBD_StringSerial - 0x20000160 0x1a ./USB_DEVICE/App/usbd_desc.o - 0x20000160 USBD_StringSerial - *fill* 0x2000017a 0x2 - .data._impure_ptr - 0x2000017c 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - 0x2000017c _impure_ptr - .data._impure_data - 0x20000180 0x4c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - 0x20000180 _impure_data - *(.RamFunc) - *(.RamFunc*) - 0x200001cc . = ALIGN (0x4) - 0x200001cc _edata = . - -.igot.plt 0x200001cc 0x0 load address 0x08009410 - .igot.plt 0x200001cc 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - 0x200001cc . = ALIGN (0x4) - -.bss 0x200001cc 0x1508 load address 0x08009410 - 0x200001cc _sbss = . - 0x200001cc __bss_start__ = _sbss - *(.bss) - .bss 0x200001cc 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - *(.bss*) - .bss.htim2 0x200001e8 0x48 ./Core/Src/main.o - 0x200001e8 htim2 - .bss.htim3 0x20000230 0x48 ./Core/Src/main.o - 0x20000230 htim3 - .bss.htim4 0x20000278 0x48 ./Core/Src/main.o - 0x20000278 htim4 - .bss.__sbrk_heap_end - 0x200002c0 0x4 ./Core/Src/sysmem.o - .bss.uwTick 0x200002c4 0x4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - 0x200002c4 uwTick - .bss.cfgidx.0 0x200002c8 0x1 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - *fill* 0x200002c9 0x3 - .bss.hUsbDeviceFS - 0x200002cc 0x2c4 ./USB_DEVICE/App/usb_device.o - 0x200002cc hUsbDeviceFS - .bss.UserRxBufferFS - 0x20000590 0x400 ./USB_DEVICE/App/usbd_cdc_if.o - 0x20000590 UserRxBufferFS - .bss.UserTxBufferFS - 0x20000990 0x400 ./USB_DEVICE/App/usbd_cdc_if.o - 0x20000990 UserTxBufferFS - .bss.rx_fifo 0x20000d90 0x100 ./USB_DEVICE/App/usbd_cdc_if.o - .bss.rx_head 0x20000e90 0x2 ./USB_DEVICE/App/usbd_cdc_if.o - .bss.rx_tail 0x20000e92 0x2 ./USB_DEVICE/App/usbd_cdc_if.o - .bss.USBD_StrDesc - 0x20000e94 0x200 ./USB_DEVICE/App/usbd_desc.o - 0x20000e94 USBD_StrDesc - .bss.hpcd_USB_FS - 0x20001094 0x2d8 ./USB_DEVICE/Target/usbd_conf.o - 0x20001094 hpcd_USB_FS - .bss.mem.0 0x2000136c 0x220 ./USB_DEVICE/Target/usbd_conf.o - .bss.__sf 0x2000158c 0x138 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - 0x2000158c __sf - .bss.errno 0x200016c4 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - 0x200016c4 errno - .bss.__lock___malloc_recursive_mutex - 0x200016c8 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - 0x200016c8 __lock___malloc_recursive_mutex - *fill* 0x200016c9 0x3 - .bss.__malloc_sbrk_start - 0x200016cc 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - 0x200016cc __malloc_sbrk_start - .bss.__malloc_free_list - 0x200016d0 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - 0x200016d0 __malloc_free_list - *(COMMON) - 0x200016d4 . = ALIGN (0x4) - 0x200016d4 _ebss = . - 0x200016d4 __bss_end__ = _ebss - -._user_heap_stack - 0x200016d4 0x604 load address 0x08009410 - 0x200016d8 . = ALIGN (0x8) - *fill* 0x200016d4 0x4 - [!provide] PROVIDE (end = .) - 0x200016d8 PROVIDE (_end = .) - 0x200018d8 . = (. + _Min_Heap_Size) - *fill* 0x200016d8 0x200 - 0x20001cd8 . = (. + _Min_Stack_Size) - *fill* 0x200018d8 0x400 - 0x20001cd8 . = ALIGN (0x8) - -/DISCARD/ - libc.a(*) - libm.a(*) - libgcc.a(*) - -.ARM.attributes - 0x00000000 0x29 - *(.ARM.attributes) - .ARM.attributes - 0x00000000 0x1d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o - .ARM.attributes - 0x0000001d 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o - .ARM.attributes - 0x0000004a 0x2d ./Core/Src/main.o - .ARM.attributes - 0x00000077 0x2d ./Core/Src/stm32f1xx_hal_msp.o - .ARM.attributes - 0x000000a4 0x2d ./Core/Src/stm32f1xx_it.o - .ARM.attributes - 0x000000d1 0x2d ./Core/Src/sysmem.o - .ARM.attributes - 0x000000fe 0x2d ./Core/Src/system_stm32f1xx.o - .ARM.attributes - 0x0000012b 0x21 ./Core/Startup/startup_stm32f103c8tx.o - .ARM.attributes - 0x0000014c 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .ARM.attributes - 0x00000179 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .ARM.attributes - 0x000001a6 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .ARM.attributes - 0x000001d3 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .ARM.attributes - 0x00000200 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .ARM.attributes - 0x0000022d 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .ARM.attributes - 0x0000025a 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .ARM.attributes - 0x00000287 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .ARM.attributes - 0x000002b4 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .ARM.attributes - 0x000002e1 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .ARM.attributes - 0x0000030e 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .ARM.attributes - 0x0000033b 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .ARM.attributes - 0x00000368 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .ARM.attributes - 0x00000395 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .ARM.attributes - 0x000003c2 0x2d ./USB_DEVICE/App/usb_device.o - .ARM.attributes - 0x000003ef 0x2d ./USB_DEVICE/App/usbd_cdc_if.o - .ARM.attributes - 0x0000041c 0x2d ./USB_DEVICE/App/usbd_desc.o - .ARM.attributes - 0x00000449 0x2d ./USB_DEVICE/Target/usbd_conf.o - .ARM.attributes - 0x00000476 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .ARM.attributes - 0x000004a3 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - .ARM.attributes - 0x000004d0 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - .ARM.attributes - 0x000004fd 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - .ARM.attributes - 0x0000052a 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) - .ARM.attributes - 0x00000557 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - .ARM.attributes - 0x00000584 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - .ARM.attributes - 0x000005b1 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .ARM.attributes - 0x000005de 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) - .ARM.attributes - 0x0000060b 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - .ARM.attributes - 0x00000638 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - .ARM.attributes - 0x00000665 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - .ARM.attributes - 0x00000692 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - .ARM.attributes - 0x000006bf 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) - .ARM.attributes - 0x000006ec 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) - .ARM.attributes - 0x00000719 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - .ARM.attributes - 0x00000746 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - .ARM.attributes - 0x00000773 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) - .ARM.attributes - 0x000007a0 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) - .ARM.attributes - 0x000007cd 0x1d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o -OUTPUT(AUTOM7.elf elf32-littlearm) -LOAD linker stubs -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a -LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a - -.debug_info 0x00000000 0x10d1f - .debug_info 0x00000000 0xde5 ./Core/Src/main.o - .debug_info 0x00000de5 0x970 ./Core/Src/stm32f1xx_hal_msp.o - .debug_info 0x00001755 0x602 ./Core/Src/stm32f1xx_it.o - .debug_info 0x00001d57 0x168 ./Core/Src/sysmem.o - .debug_info 0x00001ebf 0x222 ./Core/Src/system_stm32f1xx.o - .debug_info 0x000020e1 0x30 ./Core/Startup/startup_stm32f103c8tx.o - .debug_info 0x00002111 0x704 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_info 0x00002815 0xa87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_info 0x0000329c 0x5ab ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_info 0x00003847 0x16dc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_info 0x00004f23 0x6c3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_info 0x000055e6 0x7d5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_info 0x00005dbb 0x3c0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_info 0x0000617b 0x2959 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_info 0x00008ad4 0x149b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_info 0x00009f6f 0x17ae ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_info 0x0000b71d 0x1043 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_info 0x0000c760 0xa52 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_info 0x0000d1b2 0x91c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_info 0x0000dace 0x6a0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_info 0x0000e16e 0x63d ./USB_DEVICE/App/usb_device.o - .debug_info 0x0000e7ab 0x8c6 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_info 0x0000f071 0x44a ./USB_DEVICE/App/usbd_desc.o - .debug_info 0x0000f4bb 0x1864 ./USB_DEVICE/Target/usbd_conf.o - -.debug_abbrev 0x00000000 0x3119 - .debug_abbrev 0x00000000 0x2c7 ./Core/Src/main.o - .debug_abbrev 0x000002c7 0x1cf ./Core/Src/stm32f1xx_hal_msp.o - .debug_abbrev 0x00000496 0x192 ./Core/Src/stm32f1xx_it.o - .debug_abbrev 0x00000628 0xbc ./Core/Src/sysmem.o - .debug_abbrev 0x000006e4 0x13f ./Core/Src/system_stm32f1xx.o - .debug_abbrev 0x00000823 0x24 ./Core/Startup/startup_stm32f103c8tx.o - .debug_abbrev 0x00000847 0x201 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_abbrev 0x00000a48 0x2f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_abbrev 0x00000d40 0x1ca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_abbrev 0x00000f0a 0x2d6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_abbrev 0x000011e0 0x189 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_abbrev 0x00001369 0x2b3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_abbrev 0x0000161c 0x188 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_abbrev 0x000017a4 0x277 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_abbrev 0x00001a1b 0x282 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_abbrev 0x00001c9d 0x1de ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_abbrev 0x00001e7b 0x2d3 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_abbrev 0x0000214e 0x24a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_abbrev 0x00002398 0x26b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_abbrev 0x00002603 0x192 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_abbrev 0x00002795 0x18d ./USB_DEVICE/App/usb_device.o - .debug_abbrev 0x00002922 0x2e2 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_abbrev 0x00002c04 0x1ff ./USB_DEVICE/App/usbd_desc.o - .debug_abbrev 0x00002e03 0x316 ./USB_DEVICE/Target/usbd_conf.o - -.debug_aranges 0x00000000 0x1010 - .debug_aranges - 0x00000000 0x50 ./Core/Src/main.o - .debug_aranges - 0x00000050 0x38 ./Core/Src/stm32f1xx_hal_msp.o - .debug_aranges - 0x00000088 0x68 ./Core/Src/stm32f1xx_it.o - .debug_aranges - 0x000000f0 0x20 ./Core/Src/sysmem.o - .debug_aranges - 0x00000110 0x28 ./Core/Src/system_stm32f1xx.o - .debug_aranges - 0x00000138 0x28 ./Core/Startup/startup_stm32f103c8tx.o - .debug_aranges - 0x00000160 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_aranges - 0x00000240 0x100 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_aranges - 0x00000340 0x58 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_aranges - 0x00000398 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_aranges - 0x000004d8 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_aranges - 0x00000510 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_aranges - 0x000005a0 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_aranges - 0x000005d0 0x3d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_aranges - 0x000009a0 0x168 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_aranges - 0x00000b08 0xf8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_aranges - 0x00000c00 0x90 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_aranges - 0x00000c90 0xb8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_aranges - 0x00000d48 0x88 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_aranges - 0x00000dd0 0x50 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_aranges - 0x00000e20 0x20 ./USB_DEVICE/App/usb_device.o - .debug_aranges - 0x00000e40 0x58 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_aranges - 0x00000e98 0x60 ./USB_DEVICE/App/usbd_desc.o - .debug_aranges - 0x00000ef8 0x118 ./USB_DEVICE/Target/usbd_conf.o - -.debug_rnglists - 0x00000000 0xc27 - .debug_rnglists - 0x00000000 0x3d ./Core/Src/main.o - .debug_rnglists - 0x0000003d 0x27 ./Core/Src/stm32f1xx_hal_msp.o - .debug_rnglists - 0x00000064 0x49 ./Core/Src/stm32f1xx_it.o - .debug_rnglists - 0x000000ad 0x13 ./Core/Src/sysmem.o - .debug_rnglists - 0x000000c0 0x1a ./Core/Src/system_stm32f1xx.o - .debug_rnglists - 0x000000da 0x19 ./Core/Startup/startup_stm32f103c8tx.o - .debug_rnglists - 0x000000f3 0xa3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_rnglists - 0x00000196 0xbb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_rnglists - 0x00000251 0x3f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_rnglists - 0x00000290 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_rnglists - 0x00000384 0x26 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_rnglists - 0x000003aa 0x6c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_rnglists - 0x00000416 0x21 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_rnglists - 0x00000437 0x31a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_rnglists - 0x00000751 0x125 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_rnglists - 0x00000876 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_rnglists - 0x00000933 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_rnglists - 0x0000099d 0x89 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_rnglists - 0x00000a26 0x68 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_rnglists - 0x00000a8e 0x37 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_rnglists - 0x00000ac5 0x13 ./USB_DEVICE/App/usb_device.o - .debug_rnglists - 0x00000ad8 0x3e ./USB_DEVICE/App/usbd_cdc_if.o - .debug_rnglists - 0x00000b16 0x43 ./USB_DEVICE/App/usbd_desc.o - .debug_rnglists - 0x00000b59 0xce ./USB_DEVICE/Target/usbd_conf.o - -.debug_macro 0x00000000 0x1a248 - .debug_macro 0x00000000 0x375 ./Core/Src/main.o - .debug_macro 0x00000375 0xacc ./Core/Src/main.o - .debug_macro 0x00000e41 0x21b ./Core/Src/main.o - .debug_macro 0x0000105c 0x2e ./Core/Src/main.o - .debug_macro 0x0000108a 0x22 ./Core/Src/main.o - .debug_macro 0x000010ac 0x22 ./Core/Src/main.o - .debug_macro 0x000010ce 0x8e ./Core/Src/main.o - .debug_macro 0x0000115c 0x51 ./Core/Src/main.o - .debug_macro 0x000011ad 0x103 ./Core/Src/main.o - .debug_macro 0x000012b0 0x6a ./Core/Src/main.o - .debug_macro 0x0000131a 0x1df ./Core/Src/main.o - .debug_macro 0x000014f9 0x1c ./Core/Src/main.o - .debug_macro 0x00001515 0x22 ./Core/Src/main.o - .debug_macro 0x00001537 0xbd ./Core/Src/main.o - .debug_macro 0x000015f4 0xd23 ./Core/Src/main.o - .debug_macro 0x00002317 0xe09e ./Core/Src/main.o - .debug_macro 0x000103b5 0x6d ./Core/Src/main.o - .debug_macro 0x00010422 0x34a2 ./Core/Src/main.o - .debug_macro 0x000138c4 0x190 ./Core/Src/main.o - .debug_macro 0x00013a54 0x5c ./Core/Src/main.o - .debug_macro 0x00013ab0 0x5bc ./Core/Src/main.o - .debug_macro 0x0001406c 0x289 ./Core/Src/main.o - .debug_macro 0x000142f5 0x1cb ./Core/Src/main.o - .debug_macro 0x000144c0 0x114 ./Core/Src/main.o - .debug_macro 0x000145d4 0x1b2 ./Core/Src/main.o - .debug_macro 0x00014786 0x27 ./Core/Src/main.o - .debug_macro 0x000147ad 0x136 ./Core/Src/main.o - .debug_macro 0x000148e3 0x1bc ./Core/Src/main.o - .debug_macro 0x00014a9f 0x34 ./Core/Src/main.o - .debug_macro 0x00014ad3 0x3c ./Core/Src/main.o - .debug_macro 0x00014b0f 0x57 ./Core/Src/main.o - .debug_macro 0x00014b66 0x87 ./Core/Src/main.o - .debug_macro 0x00014bed 0x240 ./Core/Src/main.o - .debug_macro 0x00014e2d 0x140 ./Core/Src/main.o - .debug_macro 0x00014f6d 0x8ed ./Core/Src/main.o - .debug_macro 0x0001585a 0xb7 ./Core/Src/main.o - .debug_macro 0x00015911 0x242 ./Core/Src/main.o - .debug_macro 0x00015b53 0x83 ./Core/Src/main.o - .debug_macro 0x00015bd6 0x61 ./Core/Src/main.o - .debug_macro 0x00015c37 0x24 ./Core/Src/main.o - .debug_macro 0x00015c5b 0x43 ./Core/Src/main.o - .debug_macro 0x00015c9e 0x34 ./Core/Src/main.o - .debug_macro 0x00015cd2 0x16 ./Core/Src/main.o - .debug_macro 0x00015ce8 0x3c ./Core/Src/main.o - .debug_macro 0x00015d24 0x370 ./Core/Src/main.o - .debug_macro 0x00016094 0x10 ./Core/Src/main.o - .debug_macro 0x000160a4 0x16 ./Core/Src/main.o - .debug_macro 0x000160ba 0x4a ./Core/Src/main.o - .debug_macro 0x00016104 0x34 ./Core/Src/main.o - .debug_macro 0x00016138 0x10 ./Core/Src/main.o - .debug_macro 0x00016148 0x58 ./Core/Src/main.o - .debug_macro 0x000161a0 0x8e ./Core/Src/main.o - .debug_macro 0x0001622e 0x1c ./Core/Src/main.o - .debug_macro 0x0001624a 0x185 ./Core/Src/main.o - .debug_macro 0x000163cf 0x16 ./Core/Src/main.o - .debug_macro 0x000163e5 0x16 ./Core/Src/main.o - .debug_macro 0x000163fb 0x146 ./Core/Src/main.o - .debug_macro 0x00016541 0x16 ./Core/Src/main.o - .debug_macro 0x00016557 0x16 ./Core/Src/main.o - .debug_macro 0x0001656d 0x29 ./Core/Src/main.o - .debug_macro 0x00016596 0x16 ./Core/Src/main.o - .debug_macro 0x000165ac 0x20 ./Core/Src/main.o - .debug_macro 0x000165cc 0x5f ./Core/Src/main.o - .debug_macro 0x0001662b 0x1c8 ./Core/Src/main.o - .debug_macro 0x000167f3 0x8f ./Core/Src/main.o - .debug_macro 0x00016882 0x10 ./Core/Src/main.o - .debug_macro 0x00016892 0x1c7 ./Core/Src/stm32f1xx_hal_msp.o - .debug_macro 0x00016a59 0x1d1 ./Core/Src/stm32f1xx_it.o - .debug_macro 0x00016c2a 0x112 ./Core/Src/sysmem.o - .debug_macro 0x00016d3c 0x23c ./Core/Src/sysmem.o - .debug_macro 0x00016f78 0x1bd ./Core/Src/system_stm32f1xx.o - .debug_macro 0x00017135 0x1e1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_macro 0x00017316 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_macro 0x000174d3 0x228 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_macro 0x000176fb 0x1c9 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_macro 0x000178c4 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_macro 0x00017a81 0x1cf ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_macro 0x00017c50 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_macro 0x00017e0d 0x1be ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_macro 0x00017fcb 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_macro 0x00018188 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_macro 0x00018345 0x356 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x0001869b 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x00018739 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x0001884b 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_macro 0x000188a1 0x33d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00018bde 0x1ce ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00018dac 0x347 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x000190f3 0x343 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00019436 0x37c ./USB_DEVICE/App/usb_device.o - .debug_macro 0x000197b2 0x22 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x000197d4 0x16 ./USB_DEVICE/App/usb_device.o - .debug_macro 0x000197ea 0x368 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_macro 0x00019b52 0x37a ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00019ecc 0x1c ./USB_DEVICE/App/usbd_desc.o - .debug_macro 0x00019ee8 0x360 ./USB_DEVICE/Target/usbd_conf.o - -.debug_line 0x00000000 0x13e43 - .debug_line 0x00000000 0xceb ./Core/Src/main.o - .debug_line 0x00000ceb 0x809 ./Core/Src/stm32f1xx_hal_msp.o - .debug_line 0x000014f4 0x7f2 ./Core/Src/stm32f1xx_it.o - .debug_line 0x00001ce6 0x588 ./Core/Src/sysmem.o - .debug_line 0x0000226e 0x7aa ./Core/Src/system_stm32f1xx.o - .debug_line 0x00002a18 0x78 ./Core/Startup/startup_stm32f103c8tx.o - .debug_line 0x00002a90 0x9db ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_line 0x0000346b 0xba5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_line 0x00004010 0xa38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_line 0x00004a48 0x1360 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_line 0x00005da8 0x7a5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_line 0x0000654d 0xe94 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_line 0x000073e1 0x945 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_line 0x00007d26 0x34c9 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_line 0x0000b1ef 0x189f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_line 0x0000ca8e 0x114b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_line 0x0000dbd9 0xd34 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_line 0x0000e90d 0xd89 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_line 0x0000f696 0xfd3 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_line 0x00010669 0xa3f ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_line 0x000110a8 0xa0f ./USB_DEVICE/App/usb_device.o - .debug_line 0x00011ab7 0xae9 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_line 0x000125a0 0xab8 ./USB_DEVICE/App/usbd_desc.o - .debug_line 0x00013058 0xdeb ./USB_DEVICE/Target/usbd_conf.o - -.debug_str 0x00000000 0x8d17e - .debug_str 0x00000000 0x8d17e ./Core/Src/main.o - 0x8945f (size before relaxing) - .debug_str 0x0008d17e 0x84a6a ./Core/Src/stm32f1xx_hal_msp.o - .debug_str 0x0008d17e 0x848e1 ./Core/Src/stm32f1xx_it.o - .debug_str 0x0008d17e 0x7714 ./Core/Src/sysmem.o - .debug_str 0x0008d17e 0x8452d ./Core/Src/system_stm32f1xx.o - .debug_str 0x0008d17e 0x6e ./Core/Startup/startup_stm32f103c8tx.o - .debug_str 0x0008d17e 0x84c60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_str 0x0008d17e 0x84bac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_str 0x0008d17e 0x848b3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_str 0x0008d17e 0x84e4a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_str 0x0008d17e 0x849ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_str 0x0008d17e 0x8495c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_str 0x0008d17e 0x846ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_str 0x0008d17e 0x8595e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_str 0x0008d17e 0x8516a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_str 0x0008d17e 0x849fe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_str 0x0008d17e 0x89499 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_str 0x0008d17e 0x88dc9 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_str 0x0008d17e 0x88ce3 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_str 0x0008d17e 0x88c10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_str 0x0008d17e 0x88f9b ./USB_DEVICE/App/usb_device.o - .debug_str 0x0008d17e 0x89012 ./USB_DEVICE/App/usbd_cdc_if.o - .debug_str 0x0008d17e 0x88b4c ./USB_DEVICE/App/usbd_desc.o - .debug_str 0x0008d17e 0x89a26 ./USB_DEVICE/Target/usbd_conf.o - -.comment 0x00000000 0x43 - .comment 0x00000000 0x43 ./Core/Src/main.o - 0x44 (size before relaxing) - .comment 0x00000043 0x44 ./Core/Src/stm32f1xx_hal_msp.o - .comment 0x00000043 0x44 ./Core/Src/stm32f1xx_it.o - .comment 0x00000043 0x44 ./Core/Src/sysmem.o - .comment 0x00000043 0x44 ./Core/Src/system_stm32f1xx.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .comment 0x00000043 0x44 ./USB_DEVICE/App/usb_device.o - .comment 0x00000043 0x44 ./USB_DEVICE/App/usbd_cdc_if.o - .comment 0x00000043 0x44 ./USB_DEVICE/App/usbd_desc.o - .comment 0x00000043 0x44 ./USB_DEVICE/Target/usbd_conf.o - -.debug_frame 0x00000000 0x46b4 - .debug_frame 0x00000000 0xfc ./Core/Src/main.o - .debug_frame 0x000000fc 0xac ./Core/Src/stm32f1xx_hal_msp.o - .debug_frame 0x000001a8 0x120 ./Core/Src/stm32f1xx_it.o - .debug_frame 0x000002c8 0x34 ./Core/Src/sysmem.o - .debug_frame 0x000002fc 0x58 ./Core/Src/system_stm32f1xx.o - .debug_frame 0x00000354 0x334 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o - .debug_frame 0x00000688 0x428 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o - .debug_frame 0x00000ab0 0x14c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o - .debug_frame 0x00000bfc 0x594 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o - .debug_frame 0x00001190 0xb0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o - .debug_frame 0x00001240 0x218 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o - .debug_frame 0x00001458 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o - .debug_frame 0x000014d8 0x11b8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o - .debug_frame 0x00002690 0x638 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o - .debug_frame 0x00002cc8 0x470 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o - .debug_frame 0x00003138 0x248 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o - .debug_frame 0x00003380 0x300 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_frame 0x00003680 0x218 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_frame 0x00003898 0x10c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_frame 0x000039a4 0x2c ./USB_DEVICE/App/usb_device.o - .debug_frame 0x000039d0 0x12c ./USB_DEVICE/App/usbd_cdc_if.o - .debug_frame 0x00003afc 0x160 ./USB_DEVICE/App/usbd_desc.o - .debug_frame 0x00003c5c 0x4a4 ./USB_DEVICE/Target/usbd_conf.o - .debug_frame 0x00004100 0x144 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) - .debug_frame 0x00004244 0x74 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) - .debug_frame 0x000042b8 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) - .debug_frame 0x000042d8 0x38 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) - .debug_frame 0x00004310 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) - .debug_frame 0x00004330 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) - .debug_frame 0x0000435c 0xb0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) - .debug_frame 0x0000440c 0x38 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) - .debug_frame 0x00004444 0x50 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) - .debug_frame 0x00004494 0x30 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) - .debug_frame 0x000044c4 0x90 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) - .debug_frame 0x00004554 0x60 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - .debug_frame 0x000045b4 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) - .debug_frame 0x000045dc 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) - .debug_frame 0x00004608 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - .debug_frame 0x00004630 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) - .debug_frame 0x00004658 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) - .debug_frame 0x00004694 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) - -.debug_line_str - 0x00000000 0x52 - .debug_line_str - 0x00000000 0x52 ./Core/Startup/startup_stm32f103c8tx.o +Archive member included to satisfy reference by file (symbol) + +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (exit) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) (__stdio_exit_handler) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (_fwalk_sglue) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + ./Core/Src/main.o (sprintf) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (__sread) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (memset) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_close_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) (errno) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) (_impure_ptr) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_lseek_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_read_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) (_write_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + ./Core/Src/syscalls.o (__errno) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o (__libc_init_array) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (__retarget_lock_init_recursive) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) (_free_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (_malloc_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) (__malloc_lock) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) (_svfprintf_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (_printf_i) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) (_fflush_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (memmove) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) (_sbrk_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (memchr) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (memcpy) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) (_realloc_r) +C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) + C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) (_malloc_usable_size_r) + +Discarded input sections + + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .data 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .rodata 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .text 0x00000000 0x7c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.extab 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.exidx 0x00000000 0x10 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .ARM.attributes + 0x00000000 0x1b C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o + .text 0x00000000 0x0 ./Core/Src/main.o + .data 0x00000000 0x0 ./Core/Src/main.o + .bss 0x00000000 0x0 ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_hal_msp.o + .text 0x00000000 0x0 ./Core/Src/stm32f1xx_hal_msp.o + .data 0x00000000 0x0 ./Core/Src/stm32f1xx_hal_msp.o + .bss 0x00000000 0x0 ./Core/Src/stm32f1xx_hal_msp.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x64 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x21b ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0xd23 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0xe09e ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x34a2 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x5c ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x5bc ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x289 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x1cb ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x114 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x1b2 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x27 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x136 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x1bc ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x34 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x3c ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x57 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x87 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x240 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x140 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x8ed ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0xb7 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x242 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00000000 0x83 ./Core/Src/stm32f1xx_hal_msp.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/stm32f1xx_it.o + .text 0x00000000 0x0 ./Core/Src/stm32f1xx_it.o + .data 0x00000000 0x0 ./Core/Src/stm32f1xx_it.o + .bss 0x00000000 0x0 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0xacc ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x21b ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x2e ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x8e ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x51 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x103 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x6a ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x1df ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x1c ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x22 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0xbd ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0xd23 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0xe09e ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x6d ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x34a2 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x190 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x5c ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x5bc ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x289 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x1cb ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x114 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x1b2 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x27 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x136 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x1bc ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x34 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x3c ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x57 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x87 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x240 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x140 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x8ed ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0xb7 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x242 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00000000 0x83 ./Core/Src/stm32f1xx_it.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/syscalls.o + .text 0x00000000 0x0 ./Core/Src/syscalls.o + .data 0x00000000 0x0 ./Core/Src/syscalls.o + .bss 0x00000000 0x0 ./Core/Src/syscalls.o + .bss.__env 0x00000000 0x4 ./Core/Src/syscalls.o + .data.environ 0x00000000 0x4 ./Core/Src/syscalls.o + .text.initialise_monitor_handles + 0x00000000 0xc ./Core/Src/syscalls.o + .text._getpid 0x00000000 0xe ./Core/Src/syscalls.o + .text._kill 0x00000000 0x20 ./Core/Src/syscalls.o + .text._exit 0x00000000 0x16 ./Core/Src/syscalls.o + .text._read 0x00000000 0x3a ./Core/Src/syscalls.o + .text._write 0x00000000 0x38 ./Core/Src/syscalls.o + .text._close 0x00000000 0x16 ./Core/Src/syscalls.o + .text._fstat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._isatty 0x00000000 0x14 ./Core/Src/syscalls.o + .text._lseek 0x00000000 0x18 ./Core/Src/syscalls.o + .text._open 0x00000000 0x1a ./Core/Src/syscalls.o + .text._wait 0x00000000 0x1e ./Core/Src/syscalls.o + .text._unlink 0x00000000 0x1e ./Core/Src/syscalls.o + .text._times 0x00000000 0x16 ./Core/Src/syscalls.o + .text._stat 0x00000000 0x1e ./Core/Src/syscalls.o + .text._link 0x00000000 0x20 ./Core/Src/syscalls.o + .text._fork 0x00000000 0x16 ./Core/Src/syscalls.o + .text._execve 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_info 0x00000000 0x6a3 ./Core/Src/syscalls.o + .debug_abbrev 0x00000000 0x1b6 ./Core/Src/syscalls.o + .debug_aranges + 0x00000000 0xa8 ./Core/Src/syscalls.o + .debug_rnglists + 0x00000000 0x79 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x274 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xacc ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x5b ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x24 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x94 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x43 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x57 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x190 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x370 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x4a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x58 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x8e ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x185 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x6a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xcf ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x3d ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x35 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x12c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x29 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x242 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x146 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x103 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x1df ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x18a ./Core/Src/syscalls.o + .debug_macro 0x00000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00000000 0xce ./Core/Src/syscalls.o + .debug_line 0x00000000 0x8ac ./Core/Src/syscalls.o + .debug_str 0x00000000 0x9976 ./Core/Src/syscalls.o + .comment 0x00000000 0x44 ./Core/Src/syscalls.o + .debug_frame 0x00000000 0x2ac ./Core/Src/syscalls.o + .ARM.attributes + 0x00000000 0x2d ./Core/Src/syscalls.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/sysmem.o + .text 0x00000000 0x0 ./Core/Src/sysmem.o + .data 0x00000000 0x0 ./Core/Src/sysmem.o + .bss 0x00000000 0x0 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0xacc ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x22 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x5b ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x24 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x94 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x43 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x190 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x57 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x370 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x16 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x4a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x58 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x8e ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1c ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x185 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x103 ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x6a ./Core/Src/sysmem.o + .debug_macro 0x00000000 0x1df ./Core/Src/sysmem.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .group 0x00000000 0xc ./Core/Src/system_stm32f1xx.o + .text 0x00000000 0x0 ./Core/Src/system_stm32f1xx.o + .data 0x00000000 0x0 ./Core/Src/system_stm32f1xx.o + .bss 0x00000000 0x0 ./Core/Src/system_stm32f1xx.o + .rodata.APBPrescTable + 0x00000000 0x8 ./Core/Src/system_stm32f1xx.o + .text.SystemCoreClockUpdate + 0x00000000 0xe4 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0xacc ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x2e ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x8e ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x51 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x103 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x6a ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x1df ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x1c ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x22 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0xbd ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0xd23 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0xe09e ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x6d ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x21b ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x34a2 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x190 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x5c ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x5bc ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x289 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x1cb ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x114 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x1b2 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x27 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x136 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x1bc ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x34 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x3c ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x57 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x87 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x240 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x140 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x8ed ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0xb7 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x242 ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00000000 0x83 ./Core/Src/system_stm32f1xx.o + .text 0x00000000 0x14 ./Core/Startup/startup_stm32f103c8tx.o + .data 0x00000000 0x0 ./Core/Startup/startup_stm32f103c8tx.o + .bss 0x00000000 0x0 ./Core/Startup/startup_stm32f103c8tx.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_DeInit + 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_MspInit + 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_MspDeInit + 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetTickPrio + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_SetTickFreq + 0x00000000 0x50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetTickFreq + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_Delay + 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_SuspendTick + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_ResumeTick + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetHalVersion + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetREVID + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetDEVID + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetUIDw0 + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetUIDw1 + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_GetUIDw2 + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_DBGMCU_EnableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_DBGMCU_DisableDBGSleepMode + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStopMode + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_DBGMCU_EnableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .text.HAL_DBGMCU_DisableDBGStandbyMode + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_DisableIRQ + 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_GetPendingIRQ + 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_SetPendingIRQ + 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_ClearPendingIRQ + 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_GetActive + 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_GetPriority + 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.NVIC_DecodePriority + 0x00000000 0x6c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_SystemReset + 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_DisableIRQ + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_SystemReset + 0x00000000 0x8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_GetPriorityGrouping + 0x00000000 0xe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_GetPriority + 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_SetPendingIRQ + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_GetPendingIRQ + 0x00000000 0x1e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_ClearPendingIRQ + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_GetActive + 0x00000000 0x1e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_SYSTICK_CLKSourceConfig + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_SYSTICK_IRQHandler + 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_SYSTICK_Callback + 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_Init + 0x00000000 0xb4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_DeInit + 0x00000000 0xb8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_Start + 0x00000000 0x86 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_Start_IT + 0x00000000 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_Abort + 0x00000000 0x76 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_Abort_IT + 0x00000000 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_PollForTransfer + 0x00000000 0x324 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_IRQHandler + 0x00000000 0x20c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_RegisterCallback + 0x00000000 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_UnRegisterCallback + 0x00000000 0xac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.HAL_DMA_GetError + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .text.DMA_SetConfig + 0x00000000 0x5a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_info 0x00000000 0x6d2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_abbrev 0x00000000 0x20b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_aranges + 0x00000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_rnglists + 0x00000000 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_line 0x00000000 0xde5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_str 0x00000000 0x848d6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .debug_frame 0x00000000 0x208 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_SetConfigLine + 0x00000000 0x14c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_GetConfigLine + 0x00000000 0xf0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_ClearConfigLine + 0x00000000 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_RegisterCallback + 0x00000000 0x32 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_GetHandle + 0x00000000 0x26 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_IRQHandler + 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_GetPending + 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_ClearPending + 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .text.HAL_EXTI_GenerateSWI + 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_info 0x00000000 0x4ec ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_abbrev 0x00000000 0x1c5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_aranges + 0x00000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_rnglists + 0x00000000 0x46 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_line 0x00000000 0xa25 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_str 0x00000000 0x846af ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .debug_frame 0x00000000 0x174 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .bss.pFlash 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_Program + 0x00000000 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_Program_IT + 0x00000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_IRQHandler + 0x00000000 0x1c0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_EndOfOperationCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_OperationErrorCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_Unlock + 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_Lock + 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_OB_Unlock + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_OB_Lock + 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_OB_Launch + 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.HAL_FLASH_GetError + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.FLASH_Program_HalfWord + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.FLASH_WaitForLastOperation + 0x00000000 0x8c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .text.FLASH_SetErrorCode + 0x00000000 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_info 0x00000000 0x4f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_abbrev 0x00000000 0x250 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_aranges + 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_rnglists + 0x00000000 0x66 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_line 0x00000000 0xa8f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_str 0x00000000 0x84808 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .debug_frame 0x00000000 0x20c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase + 0x00000000 0xd8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase_IT + 0x00000000 0x74 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBErase + 0x00000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBProgram + 0x00000000 0xf8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBGetConfig + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBGetUserData + 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_MassErase + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_EnableWRP + 0x00000000 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_DisableWRP + 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_RDP_LevelConfig + 0x00000000 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_UserConfig + 0x00000000 0x6c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_ProgramData + 0x00000000 0x68 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_GetWRP + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_GetRDP + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_OB_GetUser + 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .text.FLASH_PageErase + 0x00000000 0x40 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_info 0x00000000 0x777 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_abbrev 0x00000000 0x247 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_aranges + 0x00000000 0x98 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_rnglists + 0x00000000 0x73 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1cf ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_line 0x00000000 0xba2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_str 0x00000000 0x849b6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .debug_frame 0x00000000 0x258 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .text.HAL_GPIO_DeInit + 0x00000000 0x178 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .text.HAL_GPIO_ReadPin + 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .text.HAL_GPIO_WritePin + 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .text.HAL_GPIO_TogglePin + 0x00000000 0x32 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .text.HAL_GPIO_LockPin + 0x00000000 0x4e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .text.HAL_GPIO_EXTI_IRQHandler + 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .text.HAL_GPIO_EXTI_Callback + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .text.HAL_GPIOEx_ConfigEventout + 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .text.HAL_GPIOEx_EnableEventout + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .text.HAL_GPIOEx_DisableEventout + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_info 0x00000000 0x152 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_abbrev 0x00000000 0xca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_aranges + 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_rnglists + 0x00000000 0x1f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_line 0x00000000 0x76d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_str 0x00000000 0x84530 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .debug_frame 0x00000000 0x78 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DeInit + 0x00000000 0x46 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_MspInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_Stop + 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_WKUP_IRQHandler + 0x00000000 0x20 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DataOutStageCallback + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DataInStageCallback + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_SetupStageCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_SOFCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ResetCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_SuspendCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ResumeCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ISOOUTIncompleteCallback + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ISOINIncompleteCallback + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ConnectCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DisconnectCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DevConnect + 0x00000000 0x42 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DevDisconnect + 0x00000000 0x42 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_EP_Abort + 0x00000000 0x5e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_EP_Flush + 0x00000000 0x5a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_ActivateRemoteWakeup + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_DeActivateRemoteWakeup + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .text.HAL_PCDEx_SetConnectionState + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .text.HAL_PCDEx_LPM_Callback + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .text.HAL_PCDEx_BCD_Callback + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.PWR_OverloadWfe + 0x00000000 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_DeInit + 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnableBkUpAccess + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_DisableBkUpAccess + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_ConfigPVD + 0x00000000 0xbc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnablePVD + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_DisablePVD + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_DisableWakeUpPin + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnterSLEEPMode + 0x00000000 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnterSTOPMode + 0x00000000 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnterSTANDBYMode + 0x00000000 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_DisableSleepOnExit + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_EnableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_DisableSEVOnPend + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_PVD_IRQHandler + 0x00000000 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .text.HAL_PWR_PVDCallback + 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_info 0x00000000 0x628 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_abbrev 0x00000000 0x1f6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_aranges + 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_rnglists + 0x00000000 0x7a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x21d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_line 0x00000000 0x97f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_str 0x00000000 0x84a64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .comment 0x00000000 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .debug_frame 0x00000000 0x270 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .ARM.attributes + 0x00000000 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_DeInit + 0x00000000 0x134 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_MCOConfig + 0x00000000 0x70 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_EnableCSS + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_DisableCSS + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_GetHCLKFreq + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK1Freq + 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_GetPCLK2Freq + 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_GetOscConfig + 0x00000000 0x104 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_GetClockConfig + 0x00000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_NMI_IRQHandler + 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCC_CSSCallback + 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKConfig + 0x00000000 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKFreq + 0x00000000 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .rodata.aPLLMULFactorTable.1 + 0x00000000 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .rodata.aPredivFactorTable.0 + 0x00000000 0x2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_DeInit + 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_MspInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_Start + 0x00000000 0x94 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_Stop + 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_Start_IT + 0x00000000 0xa4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_IT + 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_Start_DMA + 0x00000000 0x10c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_Stop_DMA + 0x00000000 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_Init + 0x00000000 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_DeInit + 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_MspInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_Start + 0x00000000 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_Stop + 0x00000000 0xc8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_Start_IT + 0x00000000 0x1e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_IT + 0x00000000 0x164 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_Start_DMA + 0x00000000 0x344 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_Stop_DMA + 0x00000000 0x18c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_DeInit + 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop + 0x00000000 0xc8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_IT + 0x00000000 0x1e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_IT + 0x00000000 0x164 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_Start_DMA + 0x00000000 0x344 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_DMA + 0x00000000 0x18c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_Init + 0x00000000 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_DeInit + 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_MspInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_Start + 0x00000000 0x180 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_Stop + 0x00000000 0xc2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_Start_IT + 0x00000000 0x218 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_IT + 0x00000000 0x15c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_Start_DMA + 0x00000000 0x31c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_Stop_DMA + 0x00000000 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Init + 0x00000000 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_DeInit + 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start + 0x00000000 0xac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop + 0x00000000 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start_IT + 0x00000000 0xcc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop_IT + 0x00000000 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_Init + 0x00000000 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_DeInit + 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start + 0x00000000 0x11c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop + 0x00000000 0x12e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_IT + 0x00000000 0x15c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_IT + 0x00000000 0x16a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_DMA + 0x00000000 0x2d8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_DMA + 0x00000000 0x192 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IRQHandler + 0x00000000 0x1e0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_ConfigChannel + 0x00000000 0xb8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_ConfigChannel + 0x00000000 0x138 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_ConfigChannel + 0x00000000 0x1a4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStart + 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiWriteStart + 0x00000000 0x2a8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStop + 0x00000000 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStart + 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiReadStart + 0x00000000 0x2a8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStop + 0x00000000 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_GenerateEvent + 0x00000000 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_ConfigOCrefClear + 0x00000000 0x198 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_ConfigTI1Input + 0x00000000 0x36 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro + 0x00000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro_IT + 0x00000000 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_ReadCapturedValue + 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_DelayElapsedCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_CaptureCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_CaptureHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_PulseFinishedCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_PulseFinishedHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_TriggerCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_TriggerHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_ErrorCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Base_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OC_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_PWM_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_IC_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_OnePulse_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_Encoder_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_GetActiveChannel + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_GetChannelState + 0x00000000 0x50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.HAL_TIM_DMABurstState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMAError + 0x00000000 0x92 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMADelayPulseCplt + 0x00000000 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMADelayPulseHalfCplt + 0x00000000 0x68 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMACaptureCplt + 0x00000000 0xc8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMACaptureHalfCplt + 0x00000000 0x68 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedCplt + 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMAPeriodElapsedHalfCplt + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMATriggerCplt + 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_DMATriggerHalfCplt + 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_SlaveTimer_SetConfig + 0x00000000 0x122 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_TI1_SetConfig + 0x00000000 0xb4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_TI2_SetConfig + 0x00000000 0x78 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_TI3_SetConfig + 0x00000000 0x76 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_TI4_SetConfig + 0x00000000 0x78 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Init + 0x00000000 0x152 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_DeInit + 0x00000000 0x88 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_MspInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_MspDeInit + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Start + 0x00000000 0xe4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Stop + 0x00000000 0x70 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Start_IT + 0x00000000 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Stop_IT + 0x00000000 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Start_DMA + 0x00000000 0x134 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Stop_DMA + 0x00000000 0x7a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Start + 0x00000000 0x13c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Stop + 0x00000000 0xba ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Start_IT + 0x00000000 0x1ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Stop_IT + 0x00000000 0x13e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Start_DMA + 0x00000000 0x2c8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Stop_DMA + 0x00000000 0x138 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Start + 0x00000000 0x13c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Stop + 0x00000000 0xba ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Start_IT + 0x00000000 0x1ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Stop_IT + 0x00000000 0x13e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Start_DMA + 0x00000000 0x2c8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Stop_DMA + 0x00000000 0x138 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OnePulseN_Start + 0x00000000 0xaa ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OnePulseN_Stop + 0x00000000 0xbe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OnePulseN_Start_IT + 0x00000000 0xca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_OnePulseN_Stop_IT + 0x00000000 0xde ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_ConfigCommutEvent + 0x00000000 0xbe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_ConfigCommutEvent_IT + 0x00000000 0xbe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_ConfigCommutEvent_DMA + 0x00000000 0xe4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_ConfigBreakDeadTime + 0x00000000 0xa2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_RemapConfig + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_CommutCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_CommutHalfCpltCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_BreakCallback + 0x00000000 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_GetState + 0x00000000 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.HAL_TIMEx_GetChannelNState + 0x00000000 0x50 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.TIMEx_DMACommutationCplt + 0x00000000 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.TIMEx_DMACommutationHalfCplt + 0x00000000 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.TIM_DMADelayPulseNCplt + 0x00000000 0x86 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.TIM_DMAErrorCCxN + 0x00000000 0x6e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .text.TIM_CCxNChannelCmd + 0x00000000 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .data 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .bss 0x00000000 0x0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_FlushTxFifo + 0x00000000 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_FlushRxFifo + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_EPStopXfer + 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_StopDevice + 0x00000000 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ReadDevAllOutEpInterrupt + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ReadDevAllInEpInterrupt + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ReadDevOutEPInterrupt + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ReadDevInEPInterrupt + 0x00000000 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ClearInterrupts + 0x00000000 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_ActivateRemoteWakeup + 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .text.USB_DeActivateRemoteWakeup + 0x00000000 0x28 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0xacc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x21b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x8e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x51 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x103 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x6a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x1df ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x22 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0xd23 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0xe09e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x6d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x34a2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x190 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x5bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x289 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x1cb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x114 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x1b2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x27 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x136 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x1bc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x57 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x240 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x8ed ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0xb7 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x242 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00000000 0x83 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x21b ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x1c8 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00000000 0x8f ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_DeInit + 0x00000000 0x3a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_Stop + 0x00000000 0x2c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_LL_IsoINIncomplete + 0x00000000 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_LL_IsoOUTIncomplete + 0x00000000 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_LL_DevConnected + 0x00000000 0x14 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .text.USBD_LL_DevDisconnected + 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x21b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x21b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00000000 0x1c8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .text 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .data 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .bss 0x00000000 0x0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .text.USBD_GetRxCount + 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0xacc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x5b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x94 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x370 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x4a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x58 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x8e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x185 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x29 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x16 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x21b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x103 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x1df ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x1c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0xbd ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0xd23 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0xe09e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x6d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x34a2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x5bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x289 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x1cb ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x114 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x1b2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x27 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x136 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x1bc ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x57 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x87 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x240 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x140 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x8ed ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0xb7 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x242 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x83 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x5f ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00000000 0x1c8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usb_device.o + .text 0x00000000 0x0 ./USB_DEVICE/App/usb_device.o + .data 0x00000000 0x0 ./USB_DEVICE/App/usb_device.o + .bss 0x00000000 0x0 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0xacc ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x2e ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x51 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x103 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x6a ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x1df ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0xbd ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0xd23 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0xe09e ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x6d ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x21b ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x190 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x5c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x5bc ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x289 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x1cb ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x114 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x27 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x136 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x1bc ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x87 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x240 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x140 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x8ed ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0xb7 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x242 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x83 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x61 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x24 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x43 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x370 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x4a ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x58 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x185 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x146 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x29 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x20 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x5f ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x1c8 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x00000000 0x8f ./USB_DEVICE/App/usb_device.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_cdc_if.o + .text 0x00000000 0x0 ./USB_DEVICE/App/usbd_cdc_if.o + .data 0x00000000 0x0 ./USB_DEVICE/App/usbd_cdc_if.o + .bss 0x00000000 0x0 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0xacc ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x5b ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x24 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x94 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x43 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x9e ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x370 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x112 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x4a ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x58 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x185 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x146 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x29 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x20 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x21b ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x2e ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x103 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x6a ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x1df ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0xbd ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0xd23 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0xe09e ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x6d ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x56 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x5bc ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x289 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x1cb ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x114 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x27 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x136 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x1bc ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x87 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x240 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x140 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x8ed ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0xb7 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x242 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x83 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x5f ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x1c8 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x8f ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_cdc_if.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/App/usbd_desc.o + .text 0x00000000 0x0 ./USB_DEVICE/App/usbd_desc.o + .data 0x00000000 0x0 ./USB_DEVICE/App/usbd_desc.o + .bss 0x00000000 0x0 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0xacc ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x5b ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x24 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x94 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x43 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x9e ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x370 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x112 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x4a ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x58 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x8e ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x185 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x146 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x29 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x20 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x21b ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x2e ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x103 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x6a ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x1df ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0xbd ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0xd23 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0xe09e ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x6d ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x56 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x5bc ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x289 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x1cb ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x114 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x27 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x136 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x1bc ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x57 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x87 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x240 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x140 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x8ed ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0xb7 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x242 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x83 ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x5f ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00000000 0x1ce ./USB_DEVICE/App/usbd_desc.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .group 0x00000000 0xc ./USB_DEVICE/Target/usbd_conf.o + .text 0x00000000 0x0 ./USB_DEVICE/Target/usbd_conf.o + .data 0x00000000 0x0 ./USB_DEVICE/Target/usbd_conf.o + .bss 0x00000000 0x0 ./USB_DEVICE/Target/usbd_conf.o + .text.HAL_PCD_MspDeInit + 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o + .text.HAL_PCD_ISOOUTIncompleteCallback + 0x00000000 0x24 ./USB_DEVICE/Target/usbd_conf.o + .text.HAL_PCD_ISOINIncompleteCallback + 0x00000000 0x24 ./USB_DEVICE/Target/usbd_conf.o + .text.HAL_PCD_ConnectCallback + 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o + .text.HAL_PCD_DisconnectCallback + 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o + .text.USBD_LL_DeInit + 0x00000000 0x36 ./USB_DEVICE/Target/usbd_conf.o + .text.USBD_LL_Stop + 0x00000000 0x36 ./USB_DEVICE/Target/usbd_conf.o + .text.USBD_LL_FlushEP + 0x00000000 0x3e ./USB_DEVICE/Target/usbd_conf.o + .text.USBD_LL_Delay + 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0xacc ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x2e ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x8e ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x51 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x103 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x6a ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x1df ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x22 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0xbd ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0xd23 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0xe09e ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x6d ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x21b ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x34a2 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x190 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x5c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x5bc ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x289 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x1cb ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x114 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x1b2 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x27 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x136 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x1bc ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x57 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x87 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x240 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x140 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x8ed ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0xb7 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x242 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x83 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x61 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x24 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x43 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x3c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x370 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x4a ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x34 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x10 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x58 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x8e ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x1c ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x185 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x146 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x29 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x16 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x20 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x5f ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x1c8 ./USB_DEVICE/Target/usbd_conf.o + .debug_macro 0x00000000 0x8f ./USB_DEVICE/Target/usbd_conf.o + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) + .text.exit 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) + .debug_frame 0x00000000 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-exit.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.std 0x00000000 0x6c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.stdio_exit_handler + 0x00000000 0x18 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.cleanup_stdio + 0x00000000 0x40 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__fp_lock + 0x00000000 0x18 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock + 0x00000000 0x18 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.global_stdio_init.part.0 + 0x00000000 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_acquire + 0x00000000 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__sfp_lock_release + 0x00000000 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__sfp 0x00000000 0xa4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__sinit 0x00000000 0x30 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__fp_lock_all + 0x00000000 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text.__fp_unlock_all + 0x00000000 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .data.__sglue 0x00000000 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .bss.__stdio_exit_handler + 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) + .text._fwalk_sglue + 0x00000000 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) + .debug_frame 0x00000000 0x34 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fwalk.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + .text._sprintf_r + 0x00000000 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .text.__sread 0x00000000 0x22 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .text.__seofread + 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .text.__swrite + 0x00000000 0x38 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .text.__sseek 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .text.__sclose + 0x00000000 0x8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .debug_frame 0x00000000 0x88 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-stdio.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) + .text._close_r + 0x00000000 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) + .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-closer.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + .text._reclaim_reent + 0x00000000 0xbc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) + .text._lseek_r + 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) + .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lseekr.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) + .text._read_r 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) + .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-readr.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) + .text._write_r + 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) + .debug_frame 0x00000000 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-writer.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init + 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_init_recursive + 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close + 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_close_recursive + 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_acquire + 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire + 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_try_acquire_recursive + 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text.__retarget_lock_release + 0x00000000 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss.__lock___arc4random_mutex + 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss.__lock___dd_hash_mutex + 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss.__lock___tz_mutex + 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss.__lock___env_recursive_mutex + 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss.__lock___at_quick_exit_mutex + 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss.__lock___atexit_recursive_mutex + 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .bss.__lock___sfp_recursive_mutex + 0x00000000 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + .text.__ssprint_r + 0x00000000 0xfa C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .text.__sflush_r + 0x00000000 0x100 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .text._fflush_r + 0x00000000 0x50 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .text.fflush 0x00000000 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .debug_frame 0x00000000 0x5c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-fflush.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .rodata 0x00000000 0x24 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .eh_frame 0x00000000 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .ARM.attributes + 0x00000000 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o + .text 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .data 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + .bss 0x00000000 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x20000000 0x00005000 xrw +FLASH 0x08000000 0x00010000 xr +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o +LOAD ./Core/Src/main.o +LOAD ./Core/Src/stm32f1xx_hal_msp.o +LOAD ./Core/Src/stm32f1xx_it.o +LOAD ./Core/Src/syscalls.o +LOAD ./Core/Src/sysmem.o +LOAD ./Core/Src/system_stm32f1xx.o +LOAD ./Core/Startup/startup_stm32f103c8tx.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o +LOAD ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o +LOAD ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o +LOAD ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o +LOAD ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o +LOAD ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o +LOAD ./USB_DEVICE/App/usb_device.o +LOAD ./USB_DEVICE/App/usbd_cdc_if.o +LOAD ./USB_DEVICE/App/usbd_desc.o +LOAD ./USB_DEVICE/Target/usbd_conf.o +START GROUP +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a +END GROUP +START GROUP +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a +END GROUP +START GROUP +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libnosys.a +END GROUP +START GROUP +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libnosys.a +END GROUP +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtend.o +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x20005000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x00000200 _Min_Heap_Size = 0x200 + 0x00000400 _Min_Stack_Size = 0x400 + +.isr_vector 0x08000000 0x10c + 0x08000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x08000000 0x10c ./Core/Startup/startup_stm32f103c8tx.o + 0x08000000 g_pfnVectors + 0x0800010c . = ALIGN (0x4) + +.text 0x0800010c 0x9080 + 0x0800010c . = ALIGN (0x4) + *(.text) + .text 0x0800010c 0x40 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.text*) + .text.main 0x0800014c 0xd0 ./Core/Src/main.o + 0x0800014c main + .text.SystemClock_Config + 0x0800021c 0xb4 ./Core/Src/main.o + 0x0800021c SystemClock_Config + .text.MX_TIM2_Init + 0x080002d0 0x138 ./Core/Src/main.o + .text.MX_TIM3_Init + 0x08000408 0x144 ./Core/Src/main.o + .text.MX_TIM4_Init + 0x0800054c 0x144 ./Core/Src/main.o + .text.MX_GPIO_Init + 0x08000690 0x80 ./Core/Src/main.o + .text.Error_Handler + 0x08000710 0xc ./Core/Src/main.o + 0x08000710 Error_Handler + .text.HAL_MspInit + 0x0800071c 0x64 ./Core/Src/stm32f1xx_hal_msp.o + 0x0800071c HAL_MspInit + .text.HAL_TIM_Base_MspInit + 0x08000780 0x88 ./Core/Src/stm32f1xx_hal_msp.o + 0x08000780 HAL_TIM_Base_MspInit + .text.HAL_TIM_MspPostInit + 0x08000808 0x110 ./Core/Src/stm32f1xx_hal_msp.o + 0x08000808 HAL_TIM_MspPostInit + .text.NMI_Handler + 0x08000918 0x8 ./Core/Src/stm32f1xx_it.o + 0x08000918 NMI_Handler + .text.HardFault_Handler + 0x08000920 0x8 ./Core/Src/stm32f1xx_it.o + 0x08000920 HardFault_Handler + .text.MemManage_Handler + 0x08000928 0x8 ./Core/Src/stm32f1xx_it.o + 0x08000928 MemManage_Handler + .text.BusFault_Handler + 0x08000930 0x8 ./Core/Src/stm32f1xx_it.o + 0x08000930 BusFault_Handler + .text.UsageFault_Handler + 0x08000938 0x8 ./Core/Src/stm32f1xx_it.o + 0x08000938 UsageFault_Handler + .text.SVC_Handler + 0x08000940 0xc ./Core/Src/stm32f1xx_it.o + 0x08000940 SVC_Handler + .text.DebugMon_Handler + 0x0800094c 0xc ./Core/Src/stm32f1xx_it.o + 0x0800094c DebugMon_Handler + .text.PendSV_Handler + 0x08000958 0xc ./Core/Src/stm32f1xx_it.o + 0x08000958 PendSV_Handler + .text.SysTick_Handler + 0x08000964 0xc ./Core/Src/stm32f1xx_it.o + 0x08000964 SysTick_Handler + .text.USB_LP_CAN1_RX0_IRQHandler + 0x08000970 0x14 ./Core/Src/stm32f1xx_it.o + 0x08000970 USB_LP_CAN1_RX0_IRQHandler + .text._sbrk 0x08000984 0x6c ./Core/Src/sysmem.o + 0x08000984 _sbrk + .text.SystemInit + 0x080009f0 0xc ./Core/Src/system_stm32f1xx.o + 0x080009f0 SystemInit + .text.Reset_Handler + 0x080009fc 0x48 ./Core/Startup/startup_stm32f103c8tx.o + 0x080009fc Reset_Handler + .text.Default_Handler + 0x08000a44 0x2 ./Core/Startup/startup_stm32f103c8tx.o + 0x08000a44 RTC_Alarm_IRQHandler + 0x08000a44 EXTI2_IRQHandler + 0x08000a44 TIM1_CC_IRQHandler + 0x08000a44 PVD_IRQHandler + 0x08000a44 EXTI3_IRQHandler + 0x08000a44 EXTI0_IRQHandler + 0x08000a44 I2C2_EV_IRQHandler + 0x08000a44 ADC1_2_IRQHandler + 0x08000a44 SPI1_IRQHandler + 0x08000a44 TAMPER_IRQHandler + 0x08000a44 DMA1_Channel4_IRQHandler + 0x08000a44 USART3_IRQHandler + 0x08000a44 RTC_IRQHandler + 0x08000a44 DMA1_Channel7_IRQHandler + 0x08000a44 CAN1_RX1_IRQHandler + 0x08000a44 TIM4_IRQHandler + 0x08000a44 I2C1_EV_IRQHandler + 0x08000a44 DMA1_Channel6_IRQHandler + 0x08000a44 TIM3_IRQHandler + 0x08000a44 RCC_IRQHandler + 0x08000a44 TIM1_TRG_COM_IRQHandler + 0x08000a44 DMA1_Channel1_IRQHandler + 0x08000a44 Default_Handler + 0x08000a44 EXTI15_10_IRQHandler + 0x08000a44 EXTI9_5_IRQHandler + 0x08000a44 SPI2_IRQHandler + 0x08000a44 DMA1_Channel5_IRQHandler + 0x08000a44 EXTI4_IRQHandler + 0x08000a44 USB_HP_CAN1_TX_IRQHandler + 0x08000a44 DMA1_Channel3_IRQHandler + 0x08000a44 TIM1_UP_IRQHandler + 0x08000a44 WWDG_IRQHandler + 0x08000a44 TIM2_IRQHandler + 0x08000a44 TIM1_BRK_IRQHandler + 0x08000a44 EXTI1_IRQHandler + 0x08000a44 USART2_IRQHandler + 0x08000a44 I2C2_ER_IRQHandler + 0x08000a44 DMA1_Channel2_IRQHandler + 0x08000a44 CAN1_SCE_IRQHandler + 0x08000a44 FLASH_IRQHandler + 0x08000a44 USART1_IRQHandler + 0x08000a44 I2C1_ER_IRQHandler + 0x08000a44 USBWakeUp_IRQHandler + *fill* 0x08000a46 0x2 + .text.HAL_Init + 0x08000a48 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x08000a48 HAL_Init + .text.HAL_InitTick + 0x08000a74 0x60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x08000a74 HAL_InitTick + .text.HAL_IncTick + 0x08000ad4 0x24 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x08000ad4 HAL_IncTick + .text.HAL_GetTick + 0x08000af8 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x08000af8 HAL_GetTick + .text.__NVIC_SetPriorityGrouping + 0x08000b0c 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_GetPriorityGrouping + 0x08000b54 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_EnableIRQ + 0x08000b70 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.__NVIC_SetPriority + 0x08000ba8 0x54 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.NVIC_EncodePriority + 0x08000bfc 0x64 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.SysTick_Config + 0x08000c60 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .text.HAL_NVIC_SetPriorityGrouping + 0x08000ca4 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x08000ca4 HAL_NVIC_SetPriorityGrouping + .text.HAL_NVIC_SetPriority + 0x08000cba 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x08000cba HAL_NVIC_SetPriority + .text.HAL_NVIC_EnableIRQ + 0x08000cf2 0x1c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x08000cf2 HAL_NVIC_EnableIRQ + .text.HAL_SYSTICK_Config + 0x08000d0e 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + 0x08000d0e HAL_SYSTICK_Config + *fill* 0x08000d26 0x2 + .text.HAL_GPIO_Init + 0x08000d28 0x308 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + 0x08000d28 HAL_GPIO_Init + .text.HAL_PCD_Init + 0x08001030 0x1ec ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x08001030 HAL_PCD_Init + .text.HAL_PCD_Start + 0x0800121c 0x4c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x0800121c HAL_PCD_Start + .text.HAL_PCD_IRQHandler + 0x08001268 0x260 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x08001268 HAL_PCD_IRQHandler + .text.HAL_PCD_SetAddress + 0x080014c8 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x080014c8 HAL_PCD_SetAddress + .text.HAL_PCD_EP_Open + 0x08001510 0xba ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x08001510 HAL_PCD_EP_Open + .text.HAL_PCD_EP_Close + 0x080015ca 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x080015ca HAL_PCD_EP_Close + .text.HAL_PCD_EP_Receive + 0x0800165a 0x62 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x0800165a HAL_PCD_EP_Receive + .text.HAL_PCD_EP_GetRxCount + 0x080016bc 0x2e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x080016bc HAL_PCD_EP_GetRxCount + .text.HAL_PCD_EP_Transmit + 0x080016ea 0x6e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x080016ea HAL_PCD_EP_Transmit + .text.HAL_PCD_EP_SetStall + 0x08001758 0xc0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x08001758 HAL_PCD_EP_SetStall + .text.HAL_PCD_EP_ClrStall + 0x08001818 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + 0x08001818 HAL_PCD_EP_ClrStall + .text.PCD_EP_ISR_Handler + 0x080018c0 0x79e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_EP_DB_Receive + 0x0800205e 0x21a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCD_EP_DB_Transmit + 0x08002278 0x7f4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .text.HAL_PCDEx_PMAConfig + 0x08002a6c 0x84 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + 0x08002a6c HAL_PCDEx_PMAConfig + .text.HAL_RCC_OscConfig + 0x08002af0 0x504 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x08002af0 HAL_RCC_OscConfig + .text.HAL_RCC_ClockConfig + 0x08002ff4 0x1d4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x08002ff4 HAL_RCC_ClockConfig + .text.HAL_RCC_GetSysClockFreq + 0x080031c8 0xa8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + 0x080031c8 HAL_RCC_GetSysClockFreq + .text.RCC_Delay + 0x08003270 0x3c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .text.HAL_RCCEx_PeriphCLKConfig + 0x080032ac 0x16c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + 0x080032ac HAL_RCCEx_PeriphCLKConfig + .text.HAL_TIM_Base_Init + 0x08003418 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08003418 HAL_TIM_Base_Init + .text.HAL_TIM_PWM_Init + 0x080034b6 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x080034b6 HAL_TIM_PWM_Init + .text.HAL_TIM_PWM_MspInit + 0x08003554 0x12 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08003554 HAL_TIM_PWM_MspInit + *fill* 0x08003566 0x2 + .text.HAL_TIM_PWM_Start + 0x08003568 0x144 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08003568 HAL_TIM_PWM_Start + .text.HAL_TIM_PWM_ConfigChannel + 0x080036ac 0x184 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x080036ac HAL_TIM_PWM_ConfigChannel + .text.HAL_TIM_ConfigClockSource + 0x08003830 0x18e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08003830 HAL_TIM_ConfigClockSource + *fill* 0x080039be 0x2 + .text.TIM_Base_SetConfig + 0x080039c0 0xdc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x080039c0 TIM_Base_SetConfig + .text.TIM_OC1_SetConfig + 0x08003a9c 0xcc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_OC2_SetConfig + 0x08003b68 0xd4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08003b68 TIM_OC2_SetConfig + .text.TIM_OC3_SetConfig + 0x08003c3c 0xd4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_OC4_SetConfig + 0x08003d10 0x9c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_TI1_ConfigInputStage + 0x08003dac 0x5c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_TI2_ConfigInputStage + 0x08003e08 0x5e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_ITRx_SetConfig + 0x08003e66 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .text.TIM_ETR_SetConfig + 0x08003e9a 0x3e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08003e9a TIM_ETR_SetConfig + .text.TIM_CCxChannelCmd + 0x08003ed8 0x48 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + 0x08003ed8 TIM_CCxChannelCmd + .text.HAL_TIMEx_MasterConfigSynchronization + 0x08003f20 0xbc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + 0x08003f20 HAL_TIMEx_MasterConfigSynchronization + .text.USB_CoreInit + 0x08003fdc 0x1a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08003fdc USB_CoreInit + .text.USB_EnableGlobalInt + 0x08003ff6 0x2c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08003ff6 USB_EnableGlobalInt + .text.USB_DisableGlobalInt + 0x08004022 0x34 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08004022 USB_DisableGlobalInt + .text.USB_SetCurrentMode + 0x08004056 0x18 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08004056 USB_SetCurrentMode + .text.USB_DevInit + 0x0800406e 0x3a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x0800406e USB_DevInit + .text.USB_ActivateEndpoint + 0x080040a8 0x780 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x080040a8 USB_ActivateEndpoint + .text.USB_DeactivateEndpoint + 0x08004828 0x3d8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08004828 USB_DeactivateEndpoint + .text.USB_EPStartXfer + 0x08004c00 0x1762 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08004c00 USB_EPStartXfer + .text.USB_EPSetStall + 0x08006362 0xa0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08006362 USB_EPSetStall + .text.USB_EPClearStall + 0x08006402 0x15a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08006402 USB_EPClearStall + .text.USB_SetDevAddress + 0x0800655c 0x26 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x0800655c USB_SetDevAddress + .text.USB_DevConnect + 0x08006582 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08006582 USB_DevConnect + .text.USB_DevDisconnect + 0x08006596 0x14 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x08006596 USB_DevDisconnect + .text.USB_ReadInterrupts + 0x080065aa 0x1e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x080065aa USB_ReadInterrupts + .text.USB_EP0_OutStart + 0x080065c8 0x16 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x080065c8 USB_EP0_OutStart + .text.USB_WritePMA + 0x080065de 0x8c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x080065de USB_WritePMA + .text.USB_ReadPMA + 0x0800666a 0x9e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + 0x0800666a USB_ReadPMA + .text.USBD_CDC_Init + 0x08006708 0xf4 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_DeInit + 0x080067fc 0x6e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_Setup + 0x0800686a 0x146 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_DataIn + 0x080069b0 0xa6 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_DataOut + 0x08006a56 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_EP0_RxReady + 0x08006aac 0x4e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + *fill* 0x08006afa 0x2 + .text.USBD_CDC_GetFSCfgDesc + 0x08006afc 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_GetHSCfgDesc + 0x08006b1c 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_GetOtherSpeedCfgDesc + 0x08006b3c 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .text.USBD_CDC_GetDeviceQualifierDescriptor + 0x08006b5c 0x20 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x08006b5c USBD_CDC_GetDeviceQualifierDescriptor + .text.USBD_CDC_RegisterInterface + 0x08006b7c 0x2c ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x08006b7c USBD_CDC_RegisterInterface + .text.USBD_CDC_SetTxBuffer + 0x08006ba8 0x32 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x08006ba8 USBD_CDC_SetTxBuffer + .text.USBD_CDC_SetRxBuffer + 0x08006bda 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x08006bda USBD_CDC_SetRxBuffer + .text.USBD_CDC_TransmitPacket + 0x08006c00 0x5e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x08006c00 USBD_CDC_TransmitPacket + .text.USBD_CDC_ReceivePacket + 0x08006c5e 0x54 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x08006c5e USBD_CDC_ReceivePacket + .text.USBD_Init + 0x08006cb2 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08006cb2 USBD_Init + .text.USBD_RegisterClass + 0x08006d08 0x32 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08006d08 USBD_RegisterClass + .text.USBD_Start + 0x08006d3a 0x18 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08006d3a USBD_Start + .text.USBD_RunTestMode + 0x08006d52 0x14 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08006d52 USBD_RunTestMode + .text.USBD_SetClassConfig + 0x08006d66 0x3e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08006d66 USBD_SetClassConfig + .text.USBD_ClrClassConfig + 0x08006da4 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08006da4 USBD_ClrClassConfig + .text.USBD_LL_SetupStage + 0x08006dca 0x9a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08006dca USBD_LL_SetupStage + .text.USBD_LL_DataOutStage + 0x08006e64 0xe2 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08006e64 USBD_LL_DataOutStage + .text.USBD_LL_DataInStage + 0x08006f46 0x14a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08006f46 USBD_LL_DataInStage + .text.USBD_LL_Reset + 0x08007090 0x82 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08007090 USBD_LL_Reset + .text.USBD_LL_SetSpeed + 0x08007112 0x1e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08007112 USBD_LL_SetSpeed + .text.USBD_LL_Suspend + 0x08007130 0x28 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08007130 USBD_LL_Suspend + .text.USBD_LL_Resume + 0x08007158 0x2a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08007158 USBD_LL_Resume + .text.USBD_LL_SOF + 0x08007182 0x34 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08007182 USBD_LL_SOF + *fill* 0x080071b6 0x2 + .text.USBD_StdDevReq + 0x080071b8 0xd4 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x080071b8 USBD_StdDevReq + .text.USBD_StdItfReq + 0x0800728c 0x90 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x0800728c USBD_StdItfReq + .text.USBD_StdEPReq + 0x0800731c 0x2c6 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x0800731c USBD_StdEPReq + *fill* 0x080075e2 0x2 + .text.USBD_GetDescriptor + 0x080075e4 0x2d0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_SetAddress + 0x080078b4 0x86 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + *fill* 0x0800793a 0x2 + .text.USBD_SetConfig + 0x0800793c 0x11c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_GetConfig + 0x08007a58 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_GetStatus + 0x08007ac2 0x66 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_SetFeature + 0x08007b28 0x28 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_ClrFeature + 0x08007b50 0x42 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_ParseSetupRequest + 0x08007b92 0x72 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08007b92 USBD_ParseSetupRequest + .text.USBD_CtlError + 0x08007c04 0x22 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08007c04 USBD_CtlError + .text.USBD_GetString + 0x08007c26 0x84 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08007c26 USBD_GetString + .text.USBD_GetLen + 0x08007caa 0x2e ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .text.USBD_CtlSendData + 0x08007cd8 0x38 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x08007cd8 USBD_CtlSendData + .text.USBD_CtlContinueSendData + 0x08007d10 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x08007d10 USBD_CtlContinueSendData + .text.USBD_CtlPrepareRx + 0x08007d34 0x3c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x08007d34 USBD_CtlPrepareRx + .text.USBD_CtlContinueRx + 0x08007d70 0x24 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x08007d70 USBD_CtlContinueRx + .text.USBD_CtlSendStatus + 0x08007d94 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x08007d94 USBD_CtlSendStatus + .text.USBD_CtlReceiveStatus + 0x08007dba 0x26 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x08007dba USBD_CtlReceiveStatus + .text.MX_USB_DEVICE_Init + 0x08007de0 0x60 ./USB_DEVICE/App/usb_device.o + 0x08007de0 MX_USB_DEVICE_Init + .text.fifo_push + 0x08007e40 0x6c ./USB_DEVICE/App/usbd_cdc_if.o + .text.CDC_Available + 0x08007eac 0x28 ./USB_DEVICE/App/usbd_cdc_if.o + 0x08007eac CDC_Available + .text.CDC_ReadByte + 0x08007ed4 0x54 ./USB_DEVICE/App/usbd_cdc_if.o + 0x08007ed4 CDC_ReadByte + .text.CDC_Init_FS + 0x08007f28 0x28 ./USB_DEVICE/App/usbd_cdc_if.o + .text.CDC_DeInit_FS + 0x08007f50 0xe ./USB_DEVICE/App/usbd_cdc_if.o + *fill* 0x08007f5e 0x2 + .text.CDC_Control_FS + 0x08007f60 0xbc ./USB_DEVICE/App/usbd_cdc_if.o + .text.CDC_Receive_FS + 0x0800801c 0x3c ./USB_DEVICE/App/usbd_cdc_if.o + .text.CDC_Transmit_FS + 0x08008058 0x4c ./USB_DEVICE/App/usbd_cdc_if.o + 0x08008058 CDC_Transmit_FS + .text.USBD_FS_DeviceDescriptor + 0x080080a4 0x24 ./USB_DEVICE/App/usbd_desc.o + 0x080080a4 USBD_FS_DeviceDescriptor + .text.USBD_FS_LangIDStrDescriptor + 0x080080c8 0x24 ./USB_DEVICE/App/usbd_desc.o + 0x080080c8 USBD_FS_LangIDStrDescriptor + .text.USBD_FS_ProductStrDescriptor + 0x080080ec 0x3c ./USB_DEVICE/App/usbd_desc.o + 0x080080ec USBD_FS_ProductStrDescriptor + .text.USBD_FS_ManufacturerStrDescriptor + 0x08008128 0x28 ./USB_DEVICE/App/usbd_desc.o + 0x08008128 USBD_FS_ManufacturerStrDescriptor + .text.USBD_FS_SerialStrDescriptor + 0x08008150 0x24 ./USB_DEVICE/App/usbd_desc.o + 0x08008150 USBD_FS_SerialStrDescriptor + .text.USBD_FS_ConfigStrDescriptor + 0x08008174 0x3c ./USB_DEVICE/App/usbd_desc.o + 0x08008174 USBD_FS_ConfigStrDescriptor + .text.USBD_FS_InterfaceStrDescriptor + 0x080081b0 0x3c ./USB_DEVICE/App/usbd_desc.o + 0x080081b0 USBD_FS_InterfaceStrDescriptor + .text.Get_SerialNum + 0x080081ec 0x58 ./USB_DEVICE/App/usbd_desc.o + .text.IntToUnicode + 0x08008244 0x7c ./USB_DEVICE/App/usbd_desc.o + .text.HAL_PCD_MspInit + 0x080082c0 0x4c ./USB_DEVICE/Target/usbd_conf.o + 0x080082c0 HAL_PCD_MspInit + .text.HAL_PCD_SetupStageCallback + 0x0800830c 0x24 ./USB_DEVICE/Target/usbd_conf.o + 0x0800830c HAL_PCD_SetupStageCallback + .text.HAL_PCD_DataOutStageCallback + 0x08008330 0x36 ./USB_DEVICE/Target/usbd_conf.o + 0x08008330 HAL_PCD_DataOutStageCallback + .text.HAL_PCD_DataInStageCallback + 0x08008366 0x34 ./USB_DEVICE/Target/usbd_conf.o + 0x08008366 HAL_PCD_DataInStageCallback + .text.HAL_PCD_SOFCallback + 0x0800839a 0x1c ./USB_DEVICE/Target/usbd_conf.o + 0x0800839a HAL_PCD_SOFCallback + .text.HAL_PCD_ResetCallback + 0x080083b6 0x3c ./USB_DEVICE/Target/usbd_conf.o + 0x080083b6 HAL_PCD_ResetCallback + *fill* 0x080083f2 0x2 + .text.HAL_PCD_SuspendCallback + 0x080083f4 0x34 ./USB_DEVICE/Target/usbd_conf.o + 0x080083f4 HAL_PCD_SuspendCallback + .text.HAL_PCD_ResumeCallback + 0x08008428 0x1c ./USB_DEVICE/Target/usbd_conf.o + 0x08008428 HAL_PCD_ResumeCallback + .text.USBD_LL_Init + 0x08008444 0xb4 ./USB_DEVICE/Target/usbd_conf.o + 0x08008444 USBD_LL_Init + .text.USBD_LL_Start + 0x080084f8 0x36 ./USB_DEVICE/Target/usbd_conf.o + 0x080084f8 USBD_LL_Start + .text.USBD_LL_OpenEP + 0x0800852e 0x4c ./USB_DEVICE/Target/usbd_conf.o + 0x0800852e USBD_LL_OpenEP + .text.USBD_LL_CloseEP + 0x0800857a 0x3e ./USB_DEVICE/Target/usbd_conf.o + 0x0800857a USBD_LL_CloseEP + .text.USBD_LL_StallEP + 0x080085b8 0x3e ./USB_DEVICE/Target/usbd_conf.o + 0x080085b8 USBD_LL_StallEP + .text.USBD_LL_ClearStallEP + 0x080085f6 0x3e ./USB_DEVICE/Target/usbd_conf.o + 0x080085f6 USBD_LL_ClearStallEP + .text.USBD_LL_IsStallEP + 0x08008634 0x56 ./USB_DEVICE/Target/usbd_conf.o + 0x08008634 USBD_LL_IsStallEP + .text.USBD_LL_SetUSBAddress + 0x0800868a 0x3e ./USB_DEVICE/Target/usbd_conf.o + 0x0800868a USBD_LL_SetUSBAddress + .text.USBD_LL_Transmit + 0x080086c8 0x46 ./USB_DEVICE/Target/usbd_conf.o + 0x080086c8 USBD_LL_Transmit + .text.USBD_LL_PrepareReceive + 0x0800870e 0x46 ./USB_DEVICE/Target/usbd_conf.o + 0x0800870e USBD_LL_PrepareReceive + .text.USBD_LL_GetRxDataSize + 0x08008754 0x26 ./USB_DEVICE/Target/usbd_conf.o + 0x08008754 USBD_LL_GetRxDataSize + *fill* 0x0800877a 0x2 + .text.USBD_static_malloc + 0x0800877c 0x18 ./USB_DEVICE/Target/usbd_conf.o + 0x0800877c USBD_static_malloc + .text.USBD_static_free + 0x08008794 0x12 ./USB_DEVICE/Target/usbd_conf.o + 0x08008794 USBD_static_free + .text.HAL_PCDEx_SetConnectionState + 0x080087a6 0x16 ./USB_DEVICE/Target/usbd_conf.o + 0x080087a6 HAL_PCDEx_SetConnectionState + .text.USBD_Get_USB_Status + 0x080087bc 0x58 ./USB_DEVICE/Target/usbd_conf.o + .text.sprintf 0x08008814 0x44 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + 0x08008814 siprintf + 0x08008814 sprintf + .text.memset 0x08008858 0x10 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + 0x08008858 memset + .text.__errno 0x08008868 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + 0x08008868 __errno + .text.__libc_init_array + 0x08008874 0x48 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + 0x08008874 __libc_init_array + .text.__retarget_lock_acquire_recursive + 0x080088bc 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + 0x080088bc __retarget_lock_acquire_recursive + .text.__retarget_lock_release_recursive + 0x080088be 0x2 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + 0x080088be __retarget_lock_release_recursive + .text._free_r 0x080088c0 0x90 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) + 0x080088c0 _free_r + .text.sbrk_aligned + 0x08008950 0x44 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + .text._malloc_r + 0x08008994 0x100 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + 0x08008994 _malloc_r + .text.__malloc_lock + 0x08008a94 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + 0x08008a94 __malloc_lock + .text.__malloc_unlock + 0x08008aa0 0xc C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + 0x08008aa0 __malloc_unlock + .text.__ssputs_r + 0x08008aac 0xb6 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + 0x08008aac __ssputs_r + *fill* 0x08008b62 0x2 + .text._svfprintf_r + 0x08008b64 0x1f8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + 0x08008b64 _svfiprintf_r + 0x08008b64 _svfprintf_r + .text._printf_common + 0x08008d5c 0xe4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x08008d5c _printf_common + .text._printf_i + 0x08008e40 0x23c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x08008e40 _printf_i + .text.memmove 0x0800907c 0x34 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) + 0x0800907c memmove + .text._sbrk_r 0x080090b0 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) + 0x080090b0 _sbrk_r + .text.memchr 0x080090d0 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + 0x080090d0 memchr + .text.memcpy 0x080090ec 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + 0x080090ec memcpy + .text._realloc_r + 0x08009108 0x5c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) + 0x08009108 _realloc_r + .text._malloc_usable_size_r + 0x08009164 0x10 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) + 0x08009164 _malloc_usable_size_r + *(.glue_7) + .glue_7 0x08009174 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x08009174 0x0 linker stubs + *(.eh_frame) + .eh_frame 0x08009174 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.init) + .init 0x08009174 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08009174 _init + .init 0x08009178 0x8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + *(.fini) + .fini 0x08009180 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + 0x08009180 _fini + .fini 0x08009184 0x8 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o + 0x0800918c . = ALIGN (0x4) + 0x0800918c _etext = . + +.vfp11_veneer 0x0800918c 0x0 + .vfp11_veneer 0x0800918c 0x0 linker stubs + +.v4_bx 0x0800918c 0x0 + .v4_bx 0x0800918c 0x0 linker stubs + +.iplt 0x0800918c 0x0 + .iplt 0x0800918c 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.rodata 0x0800918c 0xb0 + 0x0800918c . = ALIGN (0x4) + *(.rodata) + .rodata 0x0800918c 0x10 ./Core/Src/main.o + .rodata 0x0800919c 0x46 ./USB_DEVICE/App/usbd_desc.o + *(.rodata*) + *fill* 0x080091e2 0x2 + .rodata.AHBPrescTable + 0x080091e4 0x10 ./Core/Src/system_stm32f1xx.o + 0x080091e4 AHBPrescTable + .rodata.aPLLMULFactorTable.1 + 0x080091f4 0x10 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .rodata.aPredivFactorTable.0 + 0x08009204 0x2 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .rodata._svfprintf_r.str1.1 + 0x08009206 0x33 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + 0x11 (size before relaxing) + .rodata._printf_i.str1.1 + 0x08009239 0x22 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x0800925c . = ALIGN (0x4) + *fill* 0x08009239 0x3 + +.ARM.extab 0x0800923c 0x0 + 0x0800923c . = ALIGN (0x4) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x0800923c . = ALIGN (0x4) + +.ARM 0x0800923c 0x0 + 0x0800923c . = ALIGN (0x4) + 0x0800923c __exidx_start = . + *(.ARM.exidx*) + 0x0800923c __exidx_end = . + 0x0800923c . = ALIGN (0x4) + +.preinit_array 0x0800923c 0x0 + 0x0800923c . = ALIGN (0x4) + 0x0800923c PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x0800923c PROVIDE (__preinit_array_end = .) + 0x0800923c . = ALIGN (0x4) + +.init_array 0x0800923c 0x4 + 0x0800923c . = ALIGN (0x4) + 0x0800923c PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x0800923c 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x08009240 PROVIDE (__init_array_end = .) + 0x08009240 . = ALIGN (0x4) + +.fini_array 0x08009240 0x4 + 0x08009240 . = ALIGN (0x4) + [!provide] PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x08009240 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + [!provide] PROVIDE (__fini_array_end = .) + 0x08009244 . = ALIGN (0x4) + 0x08009244 _sidata = LOADADDR (.data) + +.rel.dyn 0x08009244 0x0 + .rel.iplt 0x08009244 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + +.data 0x20000000 0x1cc load address 0x08009244 + 0x20000000 . = ALIGN (0x4) + 0x20000000 _sdata = . + *(.data) + *(.data*) + .data.SystemCoreClock + 0x20000000 0x4 ./Core/Src/system_stm32f1xx.o + 0x20000000 SystemCoreClock + .data.uwTickPrio + 0x20000004 0x4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x20000004 uwTickPrio + .data.uwTickFreq + 0x20000008 0x1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x20000008 uwTickFreq + *fill* 0x20000009 0x3 + .data.USBD_CDC_DeviceQualifierDesc + 0x2000000c 0xa ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + *fill* 0x20000016 0x2 + .data.USBD_CDC + 0x20000018 0x38 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x20000018 USBD_CDC + .data.USBD_CDC_CfgHSDesc + 0x20000050 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x20000050 USBD_CDC_CfgHSDesc + *fill* 0x20000093 0x1 + .data.USBD_CDC_CfgFSDesc + 0x20000094 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x20000094 USBD_CDC_CfgFSDesc + *fill* 0x200000d7 0x1 + .data.USBD_CDC_OtherSpeedCfgDesc + 0x200000d8 0x43 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + 0x200000d8 USBD_CDC_OtherSpeedCfgDesc + *fill* 0x2000011b 0x1 + .data.USBD_Interface_fops_FS + 0x2000011c 0x10 ./USB_DEVICE/App/usbd_cdc_if.o + 0x2000011c USBD_Interface_fops_FS + .data.FS_Desc 0x2000012c 0x1c ./USB_DEVICE/App/usbd_desc.o + 0x2000012c FS_Desc + .data.USBD_FS_DeviceDesc + 0x20000148 0x12 ./USB_DEVICE/App/usbd_desc.o + 0x20000148 USBD_FS_DeviceDesc + *fill* 0x2000015a 0x2 + .data.USBD_LangIDDesc + 0x2000015c 0x4 ./USB_DEVICE/App/usbd_desc.o + 0x2000015c USBD_LangIDDesc + .data.USBD_StringSerial + 0x20000160 0x1a ./USB_DEVICE/App/usbd_desc.o + 0x20000160 USBD_StringSerial + *fill* 0x2000017a 0x2 + .data._impure_ptr + 0x2000017c 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + 0x2000017c _impure_ptr + .data._impure_data + 0x20000180 0x4c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + 0x20000180 _impure_data + *(.RamFunc) + *(.RamFunc*) + 0x200001cc . = ALIGN (0x4) + 0x200001cc _edata = . + +.igot.plt 0x200001cc 0x0 load address 0x08009410 + .igot.plt 0x200001cc 0x0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + 0x200001cc . = ALIGN (0x4) + +.bss 0x200001cc 0x1508 load address 0x08009410 + 0x200001cc _sbss = . + 0x200001cc __bss_start__ = _sbss + *(.bss) + .bss 0x200001cc 0x1c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + *(.bss*) + .bss.htim2 0x200001e8 0x48 ./Core/Src/main.o + 0x200001e8 htim2 + .bss.htim3 0x20000230 0x48 ./Core/Src/main.o + 0x20000230 htim3 + .bss.htim4 0x20000278 0x48 ./Core/Src/main.o + 0x20000278 htim4 + .bss.__sbrk_heap_end + 0x200002c0 0x4 ./Core/Src/sysmem.o + .bss.uwTick 0x200002c4 0x4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + 0x200002c4 uwTick + .bss.cfgidx.0 0x200002c8 0x1 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + *fill* 0x200002c9 0x3 + .bss.hUsbDeviceFS + 0x200002cc 0x2c4 ./USB_DEVICE/App/usb_device.o + 0x200002cc hUsbDeviceFS + .bss.UserRxBufferFS + 0x20000590 0x400 ./USB_DEVICE/App/usbd_cdc_if.o + 0x20000590 UserRxBufferFS + .bss.UserTxBufferFS + 0x20000990 0x400 ./USB_DEVICE/App/usbd_cdc_if.o + 0x20000990 UserTxBufferFS + .bss.rx_fifo 0x20000d90 0x100 ./USB_DEVICE/App/usbd_cdc_if.o + .bss.rx_head 0x20000e90 0x2 ./USB_DEVICE/App/usbd_cdc_if.o + .bss.rx_tail 0x20000e92 0x2 ./USB_DEVICE/App/usbd_cdc_if.o + .bss.USBD_StrDesc + 0x20000e94 0x200 ./USB_DEVICE/App/usbd_desc.o + 0x20000e94 USBD_StrDesc + .bss.hpcd_USB_FS + 0x20001094 0x2d8 ./USB_DEVICE/Target/usbd_conf.o + 0x20001094 hpcd_USB_FS + .bss.mem.0 0x2000136c 0x220 ./USB_DEVICE/Target/usbd_conf.o + .bss.__sf 0x2000158c 0x138 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + 0x2000158c __sf + .bss.errno 0x200016c4 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + 0x200016c4 errno + .bss.__lock___malloc_recursive_mutex + 0x200016c8 0x1 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + 0x200016c8 __lock___malloc_recursive_mutex + *fill* 0x200016c9 0x3 + .bss.__malloc_sbrk_start + 0x200016cc 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + 0x200016cc __malloc_sbrk_start + .bss.__malloc_free_list + 0x200016d0 0x4 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + 0x200016d0 __malloc_free_list + *(COMMON) + 0x200016d4 . = ALIGN (0x4) + 0x200016d4 _ebss = . + 0x200016d4 __bss_end__ = _ebss + +._user_heap_stack + 0x200016d4 0x604 load address 0x08009410 + 0x200016d8 . = ALIGN (0x8) + *fill* 0x200016d4 0x4 + [!provide] PROVIDE (end = .) + 0x200016d8 PROVIDE (_end = .) + 0x200018d8 . = (. + _Min_Heap_Size) + *fill* 0x200016d8 0x200 + 0x20001cd8 . = (. + _Min_Stack_Size) + *fill* 0x200018d8 0x400 + 0x20001cd8 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) + +.ARM.attributes + 0x00000000 0x29 + *(.ARM.attributes) + .ARM.attributes + 0x00000000 0x1d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crti.o + .ARM.attributes + 0x0000001d 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtbegin.o + .ARM.attributes + 0x0000004a 0x2d ./Core/Src/main.o + .ARM.attributes + 0x00000077 0x2d ./Core/Src/stm32f1xx_hal_msp.o + .ARM.attributes + 0x000000a4 0x2d ./Core/Src/stm32f1xx_it.o + .ARM.attributes + 0x000000d1 0x2d ./Core/Src/sysmem.o + .ARM.attributes + 0x000000fe 0x2d ./Core/Src/system_stm32f1xx.o + .ARM.attributes + 0x0000012b 0x21 ./Core/Startup/startup_stm32f103c8tx.o + .ARM.attributes + 0x0000014c 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .ARM.attributes + 0x00000179 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .ARM.attributes + 0x000001a6 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .ARM.attributes + 0x000001d3 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .ARM.attributes + 0x00000200 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .ARM.attributes + 0x0000022d 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .ARM.attributes + 0x0000025a 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .ARM.attributes + 0x00000287 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .ARM.attributes + 0x000002b4 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .ARM.attributes + 0x000002e1 0x2d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .ARM.attributes + 0x0000030e 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .ARM.attributes + 0x0000033b 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .ARM.attributes + 0x00000368 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .ARM.attributes + 0x00000395 0x2d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .ARM.attributes + 0x000003c2 0x2d ./USB_DEVICE/App/usb_device.o + .ARM.attributes + 0x000003ef 0x2d ./USB_DEVICE/App/usbd_cdc_if.o + .ARM.attributes + 0x0000041c 0x2d ./USB_DEVICE/App/usbd_desc.o + .ARM.attributes + 0x00000449 0x2d ./USB_DEVICE/Target/usbd_conf.o + .ARM.attributes + 0x00000476 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .ARM.attributes + 0x000004a3 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + .ARM.attributes + 0x000004d0 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + .ARM.attributes + 0x000004fd 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + .ARM.attributes + 0x0000052a 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-impure.o) + .ARM.attributes + 0x00000557 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + .ARM.attributes + 0x00000584 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + .ARM.attributes + 0x000005b1 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .ARM.attributes + 0x000005de 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) + .ARM.attributes + 0x0000060b 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + .ARM.attributes + 0x00000638 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + .ARM.attributes + 0x00000665 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + .ARM.attributes + 0x00000692 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + .ARM.attributes + 0x000006bf 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) + .ARM.attributes + 0x000006ec 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) + .ARM.attributes + 0x00000719 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + .ARM.attributes + 0x00000746 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + .ARM.attributes + 0x00000773 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) + .ARM.attributes + 0x000007a0 0x2d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) + .ARM.attributes + 0x000007cd 0x1d C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp/crtn.o +OUTPUT(AUTOM7.elf elf32-littlearm) +LOAD linker stubs +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libm.a +LOAD C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7-m/nofp\libgcc.a + +.debug_info 0x00000000 0x10d1f + .debug_info 0x00000000 0xde5 ./Core/Src/main.o + .debug_info 0x00000de5 0x970 ./Core/Src/stm32f1xx_hal_msp.o + .debug_info 0x00001755 0x602 ./Core/Src/stm32f1xx_it.o + .debug_info 0x00001d57 0x168 ./Core/Src/sysmem.o + .debug_info 0x00001ebf 0x222 ./Core/Src/system_stm32f1xx.o + .debug_info 0x000020e1 0x30 ./Core/Startup/startup_stm32f103c8tx.o + .debug_info 0x00002111 0x704 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_info 0x00002815 0xa87 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_info 0x0000329c 0x5ab ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_info 0x00003847 0x16dc ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_info 0x00004f23 0x6c3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_info 0x000055e6 0x7d5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_info 0x00005dbb 0x3c0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_info 0x0000617b 0x2959 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_info 0x00008ad4 0x149b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_info 0x00009f6f 0x17ae ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_info 0x0000b71d 0x1043 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_info 0x0000c760 0xa52 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_info 0x0000d1b2 0x91c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_info 0x0000dace 0x6a0 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_info 0x0000e16e 0x63d ./USB_DEVICE/App/usb_device.o + .debug_info 0x0000e7ab 0x8c6 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_info 0x0000f071 0x44a ./USB_DEVICE/App/usbd_desc.o + .debug_info 0x0000f4bb 0x1864 ./USB_DEVICE/Target/usbd_conf.o + +.debug_abbrev 0x00000000 0x3119 + .debug_abbrev 0x00000000 0x2c7 ./Core/Src/main.o + .debug_abbrev 0x000002c7 0x1cf ./Core/Src/stm32f1xx_hal_msp.o + .debug_abbrev 0x00000496 0x192 ./Core/Src/stm32f1xx_it.o + .debug_abbrev 0x00000628 0xbc ./Core/Src/sysmem.o + .debug_abbrev 0x000006e4 0x13f ./Core/Src/system_stm32f1xx.o + .debug_abbrev 0x00000823 0x24 ./Core/Startup/startup_stm32f103c8tx.o + .debug_abbrev 0x00000847 0x201 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_abbrev 0x00000a48 0x2f8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_abbrev 0x00000d40 0x1ca ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_abbrev 0x00000f0a 0x2d6 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_abbrev 0x000011e0 0x189 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_abbrev 0x00001369 0x2b3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_abbrev 0x0000161c 0x188 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_abbrev 0x000017a4 0x277 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_abbrev 0x00001a1b 0x282 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_abbrev 0x00001c9d 0x1de ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_abbrev 0x00001e7b 0x2d3 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_abbrev 0x0000214e 0x24a ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_abbrev 0x00002398 0x26b ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_abbrev 0x00002603 0x192 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_abbrev 0x00002795 0x18d ./USB_DEVICE/App/usb_device.o + .debug_abbrev 0x00002922 0x2e2 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_abbrev 0x00002c04 0x1ff ./USB_DEVICE/App/usbd_desc.o + .debug_abbrev 0x00002e03 0x316 ./USB_DEVICE/Target/usbd_conf.o + +.debug_aranges 0x00000000 0x1010 + .debug_aranges + 0x00000000 0x50 ./Core/Src/main.o + .debug_aranges + 0x00000050 0x38 ./Core/Src/stm32f1xx_hal_msp.o + .debug_aranges + 0x00000088 0x68 ./Core/Src/stm32f1xx_it.o + .debug_aranges + 0x000000f0 0x20 ./Core/Src/sysmem.o + .debug_aranges + 0x00000110 0x28 ./Core/Src/system_stm32f1xx.o + .debug_aranges + 0x00000138 0x28 ./Core/Startup/startup_stm32f103c8tx.o + .debug_aranges + 0x00000160 0xe0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_aranges + 0x00000240 0x100 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_aranges + 0x00000340 0x58 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_aranges + 0x00000398 0x140 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_aranges + 0x000004d8 0x38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_aranges + 0x00000510 0x90 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_aranges + 0x000005a0 0x30 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_aranges + 0x000005d0 0x3d0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_aranges + 0x000009a0 0x168 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_aranges + 0x00000b08 0xf8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_aranges + 0x00000c00 0x90 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_aranges + 0x00000c90 0xb8 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_aranges + 0x00000d48 0x88 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_aranges + 0x00000dd0 0x50 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_aranges + 0x00000e20 0x20 ./USB_DEVICE/App/usb_device.o + .debug_aranges + 0x00000e40 0x58 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_aranges + 0x00000e98 0x60 ./USB_DEVICE/App/usbd_desc.o + .debug_aranges + 0x00000ef8 0x118 ./USB_DEVICE/Target/usbd_conf.o + +.debug_rnglists + 0x00000000 0xc27 + .debug_rnglists + 0x00000000 0x3d ./Core/Src/main.o + .debug_rnglists + 0x0000003d 0x27 ./Core/Src/stm32f1xx_hal_msp.o + .debug_rnglists + 0x00000064 0x49 ./Core/Src/stm32f1xx_it.o + .debug_rnglists + 0x000000ad 0x13 ./Core/Src/sysmem.o + .debug_rnglists + 0x000000c0 0x1a ./Core/Src/system_stm32f1xx.o + .debug_rnglists + 0x000000da 0x19 ./Core/Startup/startup_stm32f103c8tx.o + .debug_rnglists + 0x000000f3 0xa3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_rnglists + 0x00000196 0xbb ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_rnglists + 0x00000251 0x3f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_rnglists + 0x00000290 0xf4 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_rnglists + 0x00000384 0x26 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_rnglists + 0x000003aa 0x6c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_rnglists + 0x00000416 0x21 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_rnglists + 0x00000437 0x31a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_rnglists + 0x00000751 0x125 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_rnglists + 0x00000876 0xbd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_rnglists + 0x00000933 0x6a ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_rnglists + 0x0000099d 0x89 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_rnglists + 0x00000a26 0x68 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_rnglists + 0x00000a8e 0x37 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_rnglists + 0x00000ac5 0x13 ./USB_DEVICE/App/usb_device.o + .debug_rnglists + 0x00000ad8 0x3e ./USB_DEVICE/App/usbd_cdc_if.o + .debug_rnglists + 0x00000b16 0x43 ./USB_DEVICE/App/usbd_desc.o + .debug_rnglists + 0x00000b59 0xce ./USB_DEVICE/Target/usbd_conf.o + +.debug_macro 0x00000000 0x1a248 + .debug_macro 0x00000000 0x375 ./Core/Src/main.o + .debug_macro 0x00000375 0xacc ./Core/Src/main.o + .debug_macro 0x00000e41 0x21b ./Core/Src/main.o + .debug_macro 0x0000105c 0x2e ./Core/Src/main.o + .debug_macro 0x0000108a 0x22 ./Core/Src/main.o + .debug_macro 0x000010ac 0x22 ./Core/Src/main.o + .debug_macro 0x000010ce 0x8e ./Core/Src/main.o + .debug_macro 0x0000115c 0x51 ./Core/Src/main.o + .debug_macro 0x000011ad 0x103 ./Core/Src/main.o + .debug_macro 0x000012b0 0x6a ./Core/Src/main.o + .debug_macro 0x0000131a 0x1df ./Core/Src/main.o + .debug_macro 0x000014f9 0x1c ./Core/Src/main.o + .debug_macro 0x00001515 0x22 ./Core/Src/main.o + .debug_macro 0x00001537 0xbd ./Core/Src/main.o + .debug_macro 0x000015f4 0xd23 ./Core/Src/main.o + .debug_macro 0x00002317 0xe09e ./Core/Src/main.o + .debug_macro 0x000103b5 0x6d ./Core/Src/main.o + .debug_macro 0x00010422 0x34a2 ./Core/Src/main.o + .debug_macro 0x000138c4 0x190 ./Core/Src/main.o + .debug_macro 0x00013a54 0x5c ./Core/Src/main.o + .debug_macro 0x00013ab0 0x5bc ./Core/Src/main.o + .debug_macro 0x0001406c 0x289 ./Core/Src/main.o + .debug_macro 0x000142f5 0x1cb ./Core/Src/main.o + .debug_macro 0x000144c0 0x114 ./Core/Src/main.o + .debug_macro 0x000145d4 0x1b2 ./Core/Src/main.o + .debug_macro 0x00014786 0x27 ./Core/Src/main.o + .debug_macro 0x000147ad 0x136 ./Core/Src/main.o + .debug_macro 0x000148e3 0x1bc ./Core/Src/main.o + .debug_macro 0x00014a9f 0x34 ./Core/Src/main.o + .debug_macro 0x00014ad3 0x3c ./Core/Src/main.o + .debug_macro 0x00014b0f 0x57 ./Core/Src/main.o + .debug_macro 0x00014b66 0x87 ./Core/Src/main.o + .debug_macro 0x00014bed 0x240 ./Core/Src/main.o + .debug_macro 0x00014e2d 0x140 ./Core/Src/main.o + .debug_macro 0x00014f6d 0x8ed ./Core/Src/main.o + .debug_macro 0x0001585a 0xb7 ./Core/Src/main.o + .debug_macro 0x00015911 0x242 ./Core/Src/main.o + .debug_macro 0x00015b53 0x83 ./Core/Src/main.o + .debug_macro 0x00015bd6 0x61 ./Core/Src/main.o + .debug_macro 0x00015c37 0x24 ./Core/Src/main.o + .debug_macro 0x00015c5b 0x43 ./Core/Src/main.o + .debug_macro 0x00015c9e 0x34 ./Core/Src/main.o + .debug_macro 0x00015cd2 0x16 ./Core/Src/main.o + .debug_macro 0x00015ce8 0x3c ./Core/Src/main.o + .debug_macro 0x00015d24 0x370 ./Core/Src/main.o + .debug_macro 0x00016094 0x10 ./Core/Src/main.o + .debug_macro 0x000160a4 0x16 ./Core/Src/main.o + .debug_macro 0x000160ba 0x4a ./Core/Src/main.o + .debug_macro 0x00016104 0x34 ./Core/Src/main.o + .debug_macro 0x00016138 0x10 ./Core/Src/main.o + .debug_macro 0x00016148 0x58 ./Core/Src/main.o + .debug_macro 0x000161a0 0x8e ./Core/Src/main.o + .debug_macro 0x0001622e 0x1c ./Core/Src/main.o + .debug_macro 0x0001624a 0x185 ./Core/Src/main.o + .debug_macro 0x000163cf 0x16 ./Core/Src/main.o + .debug_macro 0x000163e5 0x16 ./Core/Src/main.o + .debug_macro 0x000163fb 0x146 ./Core/Src/main.o + .debug_macro 0x00016541 0x16 ./Core/Src/main.o + .debug_macro 0x00016557 0x16 ./Core/Src/main.o + .debug_macro 0x0001656d 0x29 ./Core/Src/main.o + .debug_macro 0x00016596 0x16 ./Core/Src/main.o + .debug_macro 0x000165ac 0x20 ./Core/Src/main.o + .debug_macro 0x000165cc 0x5f ./Core/Src/main.o + .debug_macro 0x0001662b 0x1c8 ./Core/Src/main.o + .debug_macro 0x000167f3 0x8f ./Core/Src/main.o + .debug_macro 0x00016882 0x10 ./Core/Src/main.o + .debug_macro 0x00016892 0x1c7 ./Core/Src/stm32f1xx_hal_msp.o + .debug_macro 0x00016a59 0x1d1 ./Core/Src/stm32f1xx_it.o + .debug_macro 0x00016c2a 0x112 ./Core/Src/sysmem.o + .debug_macro 0x00016d3c 0x23c ./Core/Src/sysmem.o + .debug_macro 0x00016f78 0x1bd ./Core/Src/system_stm32f1xx.o + .debug_macro 0x00017135 0x1e1 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_macro 0x00017316 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_macro 0x000174d3 0x228 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_macro 0x000176fb 0x1c9 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_macro 0x000178c4 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_macro 0x00017a81 0x1cf ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_macro 0x00017c50 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_macro 0x00017e0d 0x1be ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_macro 0x00017fcb 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_macro 0x00018188 0x1bd ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_macro 0x00018345 0x356 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x0001869b 0x9e ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x00018739 0x112 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x0001884b 0x56 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_macro 0x000188a1 0x33d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00018bde 0x1ce ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x00018dac 0x347 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x000190f3 0x343 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00019436 0x37c ./USB_DEVICE/App/usb_device.o + .debug_macro 0x000197b2 0x22 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x000197d4 0x16 ./USB_DEVICE/App/usb_device.o + .debug_macro 0x000197ea 0x368 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_macro 0x00019b52 0x37a ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00019ecc 0x1c ./USB_DEVICE/App/usbd_desc.o + .debug_macro 0x00019ee8 0x360 ./USB_DEVICE/Target/usbd_conf.o + +.debug_line 0x00000000 0x13e43 + .debug_line 0x00000000 0xceb ./Core/Src/main.o + .debug_line 0x00000ceb 0x809 ./Core/Src/stm32f1xx_hal_msp.o + .debug_line 0x000014f4 0x7f2 ./Core/Src/stm32f1xx_it.o + .debug_line 0x00001ce6 0x588 ./Core/Src/sysmem.o + .debug_line 0x0000226e 0x7aa ./Core/Src/system_stm32f1xx.o + .debug_line 0x00002a18 0x78 ./Core/Startup/startup_stm32f103c8tx.o + .debug_line 0x00002a90 0x9db ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_line 0x0000346b 0xba5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_line 0x00004010 0xa38 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_line 0x00004a48 0x1360 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_line 0x00005da8 0x7a5 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_line 0x0000654d 0xe94 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_line 0x000073e1 0x945 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_line 0x00007d26 0x34c9 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_line 0x0000b1ef 0x189f ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_line 0x0000ca8e 0x114b ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_line 0x0000dbd9 0xd34 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_line 0x0000e90d 0xd89 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_line 0x0000f696 0xfd3 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_line 0x00010669 0xa3f ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_line 0x000110a8 0xa0f ./USB_DEVICE/App/usb_device.o + .debug_line 0x00011ab7 0xae9 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_line 0x000125a0 0xab8 ./USB_DEVICE/App/usbd_desc.o + .debug_line 0x00013058 0xdeb ./USB_DEVICE/Target/usbd_conf.o + +.debug_str 0x00000000 0x8d17e + .debug_str 0x00000000 0x8d17e ./Core/Src/main.o + 0x8945f (size before relaxing) + .debug_str 0x0008d17e 0x84a6a ./Core/Src/stm32f1xx_hal_msp.o + .debug_str 0x0008d17e 0x848e1 ./Core/Src/stm32f1xx_it.o + .debug_str 0x0008d17e 0x7714 ./Core/Src/sysmem.o + .debug_str 0x0008d17e 0x8452d ./Core/Src/system_stm32f1xx.o + .debug_str 0x0008d17e 0x6e ./Core/Startup/startup_stm32f103c8tx.o + .debug_str 0x0008d17e 0x84c60 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_str 0x0008d17e 0x84bac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_str 0x0008d17e 0x848b3 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_str 0x0008d17e 0x84e4a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_str 0x0008d17e 0x849ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_str 0x0008d17e 0x8495c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_str 0x0008d17e 0x846ac ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_str 0x0008d17e 0x8595e ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_str 0x0008d17e 0x8516a ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_str 0x0008d17e 0x849fe ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_str 0x0008d17e 0x89499 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_str 0x0008d17e 0x88dc9 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_str 0x0008d17e 0x88ce3 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_str 0x0008d17e 0x88c10 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_str 0x0008d17e 0x88f9b ./USB_DEVICE/App/usb_device.o + .debug_str 0x0008d17e 0x89012 ./USB_DEVICE/App/usbd_cdc_if.o + .debug_str 0x0008d17e 0x88b4c ./USB_DEVICE/App/usbd_desc.o + .debug_str 0x0008d17e 0x89a26 ./USB_DEVICE/Target/usbd_conf.o + +.comment 0x00000000 0x43 + .comment 0x00000000 0x43 ./Core/Src/main.o + 0x44 (size before relaxing) + .comment 0x00000043 0x44 ./Core/Src/stm32f1xx_hal_msp.o + .comment 0x00000043 0x44 ./Core/Src/stm32f1xx_it.o + .comment 0x00000043 0x44 ./Core/Src/sysmem.o + .comment 0x00000043 0x44 ./Core/Src/system_stm32f1xx.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .comment 0x00000043 0x44 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .comment 0x00000043 0x44 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .comment 0x00000043 0x44 ./USB_DEVICE/App/usb_device.o + .comment 0x00000043 0x44 ./USB_DEVICE/App/usbd_cdc_if.o + .comment 0x00000043 0x44 ./USB_DEVICE/App/usbd_desc.o + .comment 0x00000043 0x44 ./USB_DEVICE/Target/usbd_conf.o + +.debug_frame 0x00000000 0x46b4 + .debug_frame 0x00000000 0xfc ./Core/Src/main.o + .debug_frame 0x000000fc 0xac ./Core/Src/stm32f1xx_hal_msp.o + .debug_frame 0x000001a8 0x120 ./Core/Src/stm32f1xx_it.o + .debug_frame 0x000002c8 0x34 ./Core/Src/sysmem.o + .debug_frame 0x000002fc 0x58 ./Core/Src/system_stm32f1xx.o + .debug_frame 0x00000354 0x334 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o + .debug_frame 0x00000688 0x428 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o + .debug_frame 0x00000ab0 0x14c ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o + .debug_frame 0x00000bfc 0x594 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o + .debug_frame 0x00001190 0xb0 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o + .debug_frame 0x00001240 0x218 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o + .debug_frame 0x00001458 0x80 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o + .debug_frame 0x000014d8 0x11b8 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o + .debug_frame 0x00002690 0x638 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o + .debug_frame 0x00002cc8 0x470 ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o + .debug_frame 0x00003138 0x248 ./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o + .debug_frame 0x00003380 0x300 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_frame 0x00003680 0x218 ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_frame 0x00003898 0x10c ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_frame 0x000039a4 0x2c ./USB_DEVICE/App/usb_device.o + .debug_frame 0x000039d0 0x12c ./USB_DEVICE/App/usbd_cdc_if.o + .debug_frame 0x00003afc 0x160 ./USB_DEVICE/App/usbd_desc.o + .debug_frame 0x00003c5c 0x4a4 ./USB_DEVICE/Target/usbd_conf.o + .debug_frame 0x00004100 0x144 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-findfp.o) + .debug_frame 0x00004244 0x74 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sprintf.o) + .debug_frame 0x000042b8 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memset.o) + .debug_frame 0x000042d8 0x38 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reent.o) + .debug_frame 0x00004310 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-errno.o) + .debug_frame 0x00004330 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-init.o) + .debug_frame 0x0000435c 0xb0 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-lock.o) + .debug_frame 0x0000440c 0x38 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-freer.o) + .debug_frame 0x00004444 0x50 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mallocr.o) + .debug_frame 0x00004494 0x30 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-mlock.o) + .debug_frame 0x000044c4 0x90 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-svfprintf.o) + .debug_frame 0x00004554 0x60 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + .debug_frame 0x000045b4 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memmove.o) + .debug_frame 0x000045dc 0x2c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-sbrkr.o) + .debug_frame 0x00004608 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + .debug_frame 0x00004630 0x28 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-memcpy-stub.o) + .debug_frame 0x00004658 0x3c C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-reallocr.o) + .debug_frame 0x00004694 0x20 C:/ST/STM32CubeIDE_1.19.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.0.202411081344/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7-m/nofp\libc_nano.a(libc_a-msizer.o) + +.debug_line_str + 0x00000000 0x52 + .debug_line_str + 0x00000000 0x52 ./Core/Startup/startup_stm32f103c8tx.o diff --git a/workspace/AUTOM7/Debug/Core/Src/main.cyclo b/workspace/AUTOM7/Debug/Core/Src/main.cyclo index d5e833c..e69de29 100644 --- a/workspace/AUTOM7/Debug/Core/Src/main.cyclo +++ b/workspace/AUTOM7/Debug/Core/Src/main.cyclo @@ -1,7 +0,0 @@ -../Core/Src/main.c:92:5:main 3 -../Core/Src/main.c:166:6:SystemClock_Config 4 -../Core/Src/main.c:213:13:MX_TIM2_Init 9 -../Core/Src/main.c:287:13:MX_TIM3_Init 9 -../Core/Src/main.c:361:13:MX_TIM4_Init 9 -../Core/Src/main.c:435:13:MX_GPIO_Init 1 -../Core/Src/main.c:465:6:Error_Handler 1 diff --git a/workspace/AUTOM7/Debug/Core/Src/main.d b/workspace/AUTOM7/Debug/Core/Src/main.d index 950f04d..df5bf75 100644 --- a/workspace/AUTOM7/Debug/Core/Src/main.d +++ b/workspace/AUTOM7/Debug/Core/Src/main.d @@ -1,75 +1,75 @@ -Core/Src/main.o: ../Core/Src/main.c ../Core/Inc/main.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ - ../Core/Inc/stm32f1xx_hal_conf.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ - ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ - ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ - ../Drivers/CMSIS/Include/core_cm3.h \ - ../Drivers/CMSIS/Include/cmsis_version.h \ - ../Drivers/CMSIS/Include/cmsis_compiler.h \ - ../Drivers/CMSIS/Include/cmsis_gcc.h \ - ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ - ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \ - ../USB_DEVICE/App/usb_device.h \ - ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ - ../USB_DEVICE/Target/usbd_conf.h ../USB_DEVICE/App/usbd_cdc_if.h \ - ../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h \ - ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ - ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ - ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ - ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ - ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h -../Core/Inc/main.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: -../Core/Inc/stm32f1xx_hal_conf.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: -../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: -../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: -../Drivers/CMSIS/Include/core_cm3.h: -../Drivers/CMSIS/Include/cmsis_version.h: -../Drivers/CMSIS/Include/cmsis_compiler.h: -../Drivers/CMSIS/Include/cmsis_gcc.h: -../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: -../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: -../USB_DEVICE/App/usb_device.h: -../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: -../USB_DEVICE/Target/usbd_conf.h: -../USB_DEVICE/App/usbd_cdc_if.h: -../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h: -../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: -../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: -../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: -../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: -../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: +Core/Src/main.o: ../Core/Src/main.c ../Core/Inc/main.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \ + ../Core/Inc/stm32f1xx_hal_conf.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \ + ../Drivers/CMSIS/Include/core_cm3.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \ + ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \ + ../USB_DEVICE/App/usb_device.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ + ../USB_DEVICE/Target/usbd_conf.h ../USB_DEVICE/App/usbd_cdc_if.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \ + ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h +../Core/Inc/main.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h: +../Core/Inc/stm32f1xx_hal_conf.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h: +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h: +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h: +../Drivers/CMSIS/Include/core_cm3.h: +../Drivers/CMSIS/Include/cmsis_version.h: +../Drivers/CMSIS/Include/cmsis_compiler.h: +../Drivers/CMSIS/Include/cmsis_gcc.h: +../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h: +../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h: +../USB_DEVICE/App/usb_device.h: +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: +../USB_DEVICE/Target/usbd_conf.h: +../USB_DEVICE/App/usbd_cdc_if.h: +../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h: +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h: +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h: +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h: +../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h: diff --git a/workspace/AUTOM7/Debug/Core/Src/main.o b/workspace/AUTOM7/Debug/Core/Src/main.o deleted file mode 100644 index a23e39aa19be4111ff897a2e46d1b4e813d137a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 791996 zcmdSBcT^SE7e6|4r{0;{@3mkBd+)vX-eQSHja_3jmZ&k7Bw|AZEFg*vM2d=tVnYNJ zM6e=?V#R{JfC?6DsPD6fYraX=@3+=_f4;0R`|Q5YnKP&CbFK?I_v*s3Ec5L@mZ`@4 z4`UcUUnQ2%NE4{W6t~!-03Vw z0`78_qX2h1%XB;YA$`841eXZb8(nzMWkFx^=`4|u^@&H%jVEMEf5be1mz zUU8PM0$y{LuLIt2ma_nFI?J~JZ#&C(0JHHoVAkjvvy2L(jBQ=HUc+&W`@xOT%$~3B zzI^?^{V{HpyAh9ftEfTQ%}s*_xAGcf+{!umWt{v{PJT%zzl4)t%*nSq`Bn`|ZWaw% zv&qYx2`#(Kn`-P{vI}8MV#_X~TTz+o!q$9ufv8*;rsk83506oufBh!|b3f>h`bhcJ zxM~#`r>2ze;Ft=fMhzXcany}brAD_b`#+4W7(b@(8~28v#xNCIjs-SWS8@J0qQv8w zZT~cmY<-J>smW>)m@Cd7t*aP6nyL6{G-SuNg!cR~5Tb*aY^~E&Y1rhZK=^iM{gY6u4mso_YS2-wdvWl!q8EzdomR^j%wNS zLxmfoTA*BNbTguiZmP8^wN+8fh;u+ZVywowbgB0rUakM&h}T&oS4da-4|f!5bf989 zYV~OpkCvbaUAmP1kJKqhv@FYmW;-c-AS*oNQQuIQWjAFur@PmT9~YQ6RaLp0w1+xBC4rrrM^ z+pwsf|L%SNZNm<)EHnRaZTPKy|4(h$p&%RYr)Amy*KH_M8+vNrujL=3Ov#>`elF3Y zW1cIwW^^%>Ig~z)`ZUpovK4e5bhAe1x%g4>6AdV##7^eL#Pvmebe;7813c#u#~YS=g?_ath>( zWrXo;ASrb0-;4RFNCD+;%tWos3*9^QXMWbovd|ahNm|*Uo0h{e!sH^O7NJA`{>(2L z$DyxPEUE;1zRg7(1d-6G5& z!0J6s%p!E|+Ml_vl^wbrJyH1wMM5QYS=2HQi?A{}uMik`RD>a}J_DJ@npP#D-++$H z6RliLXpfeCs+DUA{n107Y2|vl(pR9JQ>5KU=So;^5!OssnXu=Z;Zk=EF|e+0I7aHFAr?kFLl*jQJglkJ408w#&Ri|oRd5-=Q0>I8+-tfs-};v-{f)yy2=8uCPf$qho}Jvs0GViqsmzHb;iM3$$mdiW%TumjIpW}16e~2;n~wQ z@q(LZh|JmrfzdbD5CbEo+>;o6ORg#msAZJ8nSiWUEsjzCeoxpYDUF?m%KyMJN;9XS zgw8ypv@9~j#>PvG(ndopnscSShB(-W*)pRPy`Ped_^OwVQMz%{;YaH`N*|tj&Cap( z%=tlwzScTlKwk?UFH>JDJSZ^A09`iZO(f~MyPw2#Ql?rGfv|bsBhu;Rsm!o}tzmjb zIjREB&XC}BRypdJuB`VXkx^!svp~#^t>p^Nobo9^DzP{J0y59-3Xp0n9|^HPG^7^W z4+ER>mxk11!{4KJ?i$jFO&$WBMdfG=Z^o92LIg|7XTd-#HX#{09_6Tmw__w4{oVKq z8DR1BV5DMrN+;++gSq%eQ#7C_M^v?>TBoCgN<@!h8TH#ste+w=>bIBZwNGT!Z!dAj zUmT;haJKyp9XPF>Z6Av5k=m`O?HO_QE?DTn<&ujsYTy0j!g?IK-)RyI+h#S-r~@^G zXHDS(qYl;(na!PxNQP>Nf$h)&$OsLwup0)!z*r4&uuCh0^OJ_)^@d>sr%vMf!jF}l zsTTDFi_HwXdp%5_(!?0{Fs3^7jE3;6ZY4rY(-4`BT?(;u4MFEz+6@*iaA*a_N>)@^ zecYI=b;szUJ~bANBsZ79T8@VBj2O}ojq!@JLCi|BHX6|?veQxI8V$hr!WHWe3tY#l zI`lHPI#?HQ?rt0wkn*A?P_52#T_9^B1x>du8%(;jOz28nd6`DT>Q#A0$H<*eqv{P= zZV}0okS5=py+HDdYr`+s{4fvsr&C0dzh4#dtyyj#$&-*K-;p)wA(@;`l394_xHow6 zobf!38Nv$qW#qy*=yqqhdr&iWQ@>-kLPn(C5)gN1ul}l&$h7Y`4}G&xOrlY?ZT+Y@^#>fW{qO zgmutWyA2ONvQ=(DvI`^8v}%um9Q`>~AO?|2Nc|G-xRuk%0LrJy6myF1d4Fvn|;F(@$-t&SubH(l=dv5c{iIF|(I!APWS@E(qS znJ3Xy81#+BYbCAQNr`CX;|QF$scl999$vAk4AX?(N#Eh}fE*z=XM2#;@UQWx$dtNujb(n- zSjCq=5g5x9J-xtvBzB9$f`KuH=dICZep-m34bnQ_aZKr2PUg?wmvY$T!AthAHu;Hjia8 z*i0up+07?Nz5I27na-A?5ea^k7HIrm+0r!F=zK>hyNXN947NCpemdVyOo_T7tE(F0{Og>my+6lRLz*0&(c6vXYnW2hdL zhhb}**31WBgx$P?40vR*%#PyJ3v|By%;Q>eOhj?&E}U<|0<-Rcj@em;dKc%rYXMUu z2=fX%Tmd=_TP_yDbhzp`VQReI_?I^S7kXEJN;#N~WfFTi*}gD|~SZ9Evu z)SMWHan7eS-oBCHOfA%wYIC)_y&3w9&Pfoy5x8oQC_}wTV7lA!*+W2X;U=^cn!8zx zbj0HSFoKS4W>hzxWMwBqGlrq25~HeZRL+Dq(1=vrSXhB$9r}%GXH`{;#7)ma*HDLT z>!QU5NA{{N-R-Shh;DSsfvU-w8f#&hzZukOLIy27+r~{&-PrE-BC{;1TdQc|wtq0) zRH}={wX={WF^3z(>Y~=g{%6Ws@C^ zTiP_Jgq5|Fm|KEj$~#*e--fFl!8u!4C0lNIO{idnVr*3{#ELM&RB}e3MOxLR6}B3c z|0dyGeT%8e-{EV-qN>i*>{Knw)VC91i28#t7#^x=&EmB9&qk^Kw-K$j|76wpH>U+W3d= zO#BP11`ZT~SY$i!U&_CLdlAn7MJ*If1Ya2EFbX9OVoKr4S%uRKEwqX zmVb(WVXZvRl`H4;P`>;>m_>qIfh_-%$h~6q8qQ_1uK!{bux>>-_mNeKMDFV<{7Yn| zuA);UNLQ&yq=2nlMB=#^T@@!cU8fdtGfgI;Sfg`zjXd{AS5+w1Y%n!bHK$wvTU{tt zfTWGHQo>i=HtdO=7|#{62_@dPL9@FWgyMa0PRNz5A(Sv&hmCS(q4aLlj4NAHkT-9_ z>riSrt*W&J-3(Ncy z<(mq!(1NN{$0=a>=E2cS&?ytpy}07d|E1&FLPI(0-;yl_zG@j{>9~@ugmNj_C>2Q@ zVOxLeQAHMb&cz~>oIMCtEZ;^bzU4kLfo0nY#g`002xSfETkVA6EJh`+d|RG#Z7&pW zP#S$u=$$bMZ_W9loTl*6;eSVeq>`AvE0L#SEO}I3fgQ8J6rYTQ6muAhMS=P5KC(qj z+an~Ol}D0XFmX3vStT$YD~KzvCEfRJh}#Z35rN5{M$gqv=(%+O$@j%BU0`xo6XjHQ zDwilE3qPhH6U5XVP4u7uvew>>=u1LLW@K;TE~`Y(+_Lnn^@5`6WheQn?a1TJgQPWJ zE5&eRBxy-ANOEFF;$ou1^ZFdp;xmYz$WmL{TO7uvcDD|gP`2gj? znD6J2g-O_e2u$E%t!>9stxsT2gqFt{s=&B6CM{Q2lF7xY605inlG(qUEZhtsx-y-f zSs2g+rkW?knTuVHz$8tf_G#Ih=o7Jp7np$$Nq4|hdcF@Q$!SHks6q0ZPtbGuJMw$E zDsh``p-A@PbXQ;+ohFKKmh5~uLEg{eL|R}5rISnztq*vV(cXyG!UfH!+=FtXO!Idn zA2yEa`*Rn1*40{I*nEICXKJ-LKbGhnkCB}lS4py2HO&jg7=f8j znO|n~DB`Z3N!Iq`tX^O)Tqc>PTI>0+B-!^WNj`r`^rJ}e3rxgJqQ9R-^f2wMjon1t z<(WiD@*(cXA1U&d=c#tXw6``x>jSgekcE``#Gg1(G{4&HRSR2daBo&N5rikN|gA!UJ3vugdJvO0~_Fnvn z9u!4ha&dA2kA+nJ(4Dvou=B!U#X7QcON(un57C$T(lfR;Nxsrr@_r|xq_!f-en|P^ z8+k&yxzk8y-$0^_MV3@xK0cy&nqMOBTWs<$nrXdm;3O(%-X)n@+8D*&B$7}%GZqAa;0N~^GLGxRHDzsRD%&L zgrW-UOSSIzGihD$q^F}l$zOOt@+F&-Oos_1b9**Xa;H++?-o71e25#XQaNWLaVK@4 z+J$Ro|FT`HFN;Yop?Vr6d`p#h`CR^yU-EX4Sg%Y%-86 z^czMpuip}7>ToLSUz43CHhLx^U4$8-HtF6zNs(01Mzg-YRQBym+{mRQ`MLu=y|6(S znBxV+y?`CMz|7f0HXQ?~Jo|T&Z_$Eeln!LG>30-=6HT&_7VX>VB%g7Q=nuD1y&_U6 zwgs6)x&I4svo})t^lY-@A5V7D(#YdbB*O$|F_sJXnl#CiI50zxZARQiVI)~PK(nun zs2<3<<1J&6DKH_v^c;W`4&DWwZZTg6k=7JCsbb#blkVs7REr7)B$KF;FVj*gKaVAO z_Bh2^KASw2L6R0@IP%)~a(^caM-BAsZX?Q4?Hj3swKZySoOD;0Bl%~uiBjVpJrh^a zbJkgkAtQ}sl3r1{ZYPp_swZpRPLuavv~lm456N_2L-gI+mzZ9Y(-UDa)%KmN9*l-L~8B(*lA!qM6Oq0E*&73nQ2+{Y=>4wD{ZFdzFlPJavDW-RqKrdko-k|z*vVh>KyVLJBA{U>O)U= ztaC(W(OZh468gW$oM}Y%kG>)LB4SstUN>Crt#U$BpiYtY;9G z`$8{GvUf5LX@ounNMH+tYh3_$*i@Q_#tl6L%H+eIu=!iH&ybmW^%%H|+4<23Z3+9u z7hoydv@gthu%}x=$CLed2-tGgZ4Pw3SSu}lz1f~$;opaCvmC*!U{|z-$V#>`Qe46+ zHgX7ftJzY>KM20;WVC?b#|kxIYz_P8X%PL{*M4xjmeo&#v32b6p#TAF{zh0?&o-l> zd;>c)7T89%P9(zI#2Tu@=4N&S4h)4rb}h{>L2RGJ0K3?RX8@wu6#77Rv%*6d+ruvY z9qQ3+J0sNhvUw$;et=#27{r6Dhd&fz*jpTkhu8-1O>=HYO+W#{94rdv{6}I**h+JjcZ3K3M9bp0QCcF75z%BOp zcc{@L_Pwlq3%IgiDg?bztKVQ}#06R|j(ktk(5UKT@f_XTiu#O6phG$8NRZD7<$DOtXu;juVmL^@g%NdyCI8?cYhEk8)7JH2#2vSHm)^97V5TJp|?!; z=M7-1bj$EH3jw-oUjagN4qBaT(;aUPgv%YRRo((4|s8VybCaTnW?*>rXCeRkSQypaE zh3@5OgVM+6G{PTXuIGGvB_@{vwQT7Mkgixb8rG}N^v1LCyA)Vy+j1S~-7nFCe?ZMu zc)GLECqP=rdf;SHSj7H*9-*vfI}vXKYoWP%BirXFEQGLiKY|#_-ax-aw`=np)!5Cp zs0oohtVex_M6)5O56F_^ zJLPbai|_O{4sY=-&hP_x%=Rt`;uAJ&64VRWtea4O$JT#<`o3pR)5^_5x6grCmg(N1 z{|cVE`){DIPFI;e-~e5J6$&#^~4&aCAu5wE;k^ zuJaWroX`zHR!BIh``!j{UN`GI5U=XymWSJ0y2JFoZtJGEhueEP;Q+8ly34V^a&*Bn zC{A633gFI_T@A35^Y(%jAMVCFNUq>E1VeH?H>L$_Zs6u!2NuQ+*aj?|JLL(mm)o@j zj`ndM`+|3jJ8=to$=p-qd9;q?T9}7IMaNz|D^=@^N>pALhC>Z{`yHxKHm2kD>hRcU z%63$#YrP;)dbLNinnbD6v}&wgoz};-PPxK#-R(5@HTdKLfySe84Mu3z8#AlWvTYAg z+T5#x)@omP4YoS$TikL<9IwSr?ef^@i$qVw=#p>yhOq23!L-MusYhCab>d*fK1z-J3 zcW3n$EN=^`?d%=Q_Cf^vXbnQx$%fHH6vbxsKq$M}>-`YL9+s!Y%`JAoXh_~>-8w)r zo9$E{yu0iHFId0NPNDt61NQD;5P8Hl4*~HpYd!)iPuZ8W?tjMiY668%>_NJ!R>&Tq zE$cd+l}C&Ly5s>MZqN-X1}htNWyU~qv#vYsf&+ENHBjH8Q)7&EJBTr>9Xm) zC+h~@g=C5@2h)I%s_Rq{3XgOQ?cg5khSOSOH5XSAjpfU|QlYno8@d=of6iV8#C4nx z?Y{yzhd;0lTvytOZsbb)0c_^7`oKdVcV<06FxSom?_0S}e*z2T7E%5tjN391#)BaCDK&$7dpBa+@hDc$qu206|>kEC*oh8W(yE zA~(3Zry!EWT{MDsiwh6|ZgagTae0?B((HPVE3pCC11`ER^d55QSAad{Ft(6CO3Q^s{NyjdmhkCFs|!nc3vKz9@mH}r z7CiZc8Bp-zlV}w1=9eY{tl-zq2UyAfc?V6fn)jq}%9pQCNq{wc(s}Uw`6*rCZyi7X zIjjWmKU{#w2L5Jgh-~D;lc2Ymzvc=@fqbz6z_#!easNpO<{Q$wHH3e)3?P*MTmx3Z z`3EV8Y#Xnapb)|L#G$RQlaIUu-Y&kybMT`03`(Kw;k#`CF`93NV+vtEzn>ZLQ@E-AJH^9nMzQtAWp7Hs#<;vyH4+i#}pBM+;OMder1fR#($${Q$ z-UGMAgg5-T_Xw$gw?Br+J3eU~un)XTICvlVm9$ALyO}_5^A0SI4$&^1)FKYS;}Ud6ND)U>4LDQ9~3f# zJLAvO4v_&QB(lU6LXr)nck67Iu#AvbE64YcG;>DgcMka{!{s8f)_~;F6CW^J=!8<0toCjXA=*ocjTyzle zg;?_tjOB@MDQl81R^5sky%sBuMYwOog(E;L5WCC!`QUj= zl_+=OBeg?%L0Bn`rdPE}QfUtGl_Xk!_({j8pZQB$9|EkEw$Y+HK)Uo1*m|iQ4aOU# z{dZt`lO)@r9w-HNhrb}{!#MDQC12e36Shh{4#8iTG~qt5a4CjXi#w$IpP&#SZJ;F2 zE~&*+fGFwnB}hg~X{+F2uhj7!+Vg;PWf#Cf=~o-{Vx@qgzz$1YC>fa`oug0th*TyW zAW=%i#Umj}`tvg+lcjo;7d|d6!x0#Zv!pddIk_zHNng0vKMRL>vfTi*WcLeVt zZ=$5-a`|-(Onb?_z60=)KVL%-E9A7t0ITG%Ga#;(Q=7n%pZp7L#Ma1nZUC&4f0_a- z0rEUbly8umQI>t9oSg=LfpYf*m=2Ps(jn4Tc`+pzLgW&Z$P1H`eum9(dE_Jzx62J0 z!1N9|npO}y<*dO_h?H-Afk>2mYzP!~%MB_+BwBuZ8#edKat(m}^1N#R2V_fg@D9m_ zE&#D|ZJIvgWY-BW7B2^`2Jxs|ou=zVxqVw;$K>YifhEhraF|Y!(`kj8D*xFT;H12Z zMyXS>N(sI*aw%Hso|PZ(L!9U2+-Xoxm&>q_ydcNY1~fxX-vBF_@^`qmBV3kePlMi7 z`7|k9lgm(wH%p#a88&aqJzb%9NA5<`e73x%7qENs$lIvqefhU9z#huC8bR-o+-e8( zp2#D~%2RpY5CoAUTk+!xAy*Fe1b885UIy`{JdcLTSMr-@kbEuY({l2yyoYjF1@hGO zaQjlHpL9Vbw8Aoq=sp2{Z*fPaH`5sSYIb|ull)5y? zc`FrL!tDy>#RWK8slVEYw2rL_(y_i0NNqkK3C;vvN_4|<1{ zLBD|*r--x>Oi;ueG}aO2b^)+N}j|0T09qGh7P905C zYrNWF1+WD5AthW+o6>Pkr0wq#__2LJIl{+WM65^onxmnc$oHjh;utT}b}gA-=Z)x2 z@TMN9|4BZbcJZh9L6jId!=HT!k+Xc&ju1)X>s|!$9RJiCBI$fn8K%$kvuVSAfiF$N zYzFVB3G5=zmO)sT_?}2|3z_`Qj!?MFfB6v#SNQ9+`oGHest3tyd_zipT<2@k9^wYy zA{s$t@neo7{+s-e0`P9}$De?Bn}7Zb)bH^1X)qpfo`vLnK4vCK^@!`GonESIlNd&%c~liDD@;LE;;m6!bZ zAyCNY18A@NiZ_;o_t*T#ioo9R#VHZ{o_`zwg-?9e14tI~5BdWv6ViW!h^O#264-K~ zojZV+aC8QU-h$^USn&~lrtQ}XA-WQHD+MVOajp^u(fVe!P>hz^zQXM=@ce{puR&ZR z7`}r)e_>2HU~7d=v|C&!blr^5RzL3Q(u4(Vg6NE2^F^e0$!NlJqN^a;X-dHY!lL` zhin(FoPn_&!q8QyQH0QaIjXW#h{x?4AyViO4)tBans$(k5_V;QxLfd`{n{R(<^k9| zBAnGhFGDC{2X;|#T>;)DVg3%-ydo^V35BbIFRi1m34?~hbe8Zs576e3 z=|{q^w8wocWJiJbL?}V+@>ICf4I%j3t-QMp>N>mh44c~U@wKf zD_}ZL=<*jpzVN0h^j-PQl_5_&r7Ljs8M-ja)Kyrn6mo{oE#Y}45Rbr=Cu;MF*Jcfv$*p+(n z8nHqUBm=}to#1G_c(*ga1`*3^TJttP3DcXzFq&yLi&wKj3>4kzv@%GH@B(p*I2&nR ztbqIaA(pM;Uo^Rgh^e&JiWKo9Hd^IoP^Ldhq!zE|u*$*q0j6j~k~6l>C1 zT8y}evWbVp36$@N6H`ecUYtfJ@CoATk5EVy&m4q8lK9tTI65ZYTLvsejG{G6syKNC zuoGhUKj81QICvox&WIgp@p4xDJO&EsV&7^oc3vDwXS^50-rqs*lBg^JmMI!(kh?4% zy8>`c{NWPRuZxDCz`G$zod9l%6)AOiM|7_Yy=?LJ5;(dmZleBqPkiPE-hDAG0oVhv zfClS_;!`>reI%Bw3*KX~JB?sZ#C2T}(o^vmZEl~5nLh$N7XzswUx>-nZC;9;Ht~z- z2()g$G6x~O5_jB#&9~x62P6x`RzCxKC;C-H5bwqB4ubeW>|6ohqgd`o@IHxO8^CR$ z=vfxT&*BRD0p%C5UpF-JSF!j5*mRfbQ9f~@G;Zp zL4Bq4nC?8Sk~+|Zk=2sRIuL!OahHJkNrxJMw?=wD8Vdf>GU^&@rK!E)Xq{AgH3AHf z_Dlh`USerUvO(Gr3v8pb#SIFZq%>OaZI-g1fEXy%DUINRq{79}+af7G@DMEZr2X$! z>91gb5UHUn^g^XEbi5rVjjRQcaA|Hd)VE1fMj^88QY?LjJ0!LlBqOAW=^*ZwdeDk( zk7T6pC|U}u25hfnq-zxWr1`I4<$yE|7f-PXxG({{7^xrS6AnwoY!Hc)deiY#yyQuP zT!Iu?3sE1D?gzqjqO{`?uq3G)ou?j?P96l7BE2{W^;GHTEnp|4y_6$7DZRv9IP474 zXxKh2#ovPZ8L7o+fHdhRGwOa$dPcFNOOHpu*mz;C z%u?uON~7q!=&H1fl1ta5SM_1#y0no_`EN+=a)4z?mndy=Qz}Qh=-bjZ{J2NBBOR#@ zg>0!6jpcWx=rIWCp44z2j6IZ&QcmQNH1|9Bdn}EiHOv#KEOpGMQekWGo=G|7(O9`s zNOy=lms;k4_d?2{Oyf&w8=b}HNfidc^lNF~1NeI*O{J>^Z>2KSkXUvd0q>nOl7rp{ zX+E8weUz@Q1^6UYp%JrC>J*QVzDOmDL;b5%=Xbbumj_exERvIEfVWsqo(P*u|L-0ITFmH(_(N9GMNwPrgiz zyhe`j1@M@`w{~yG1@o!*8(cLLb*w`4X+ALgY9ffKd5pFDQh`El+|MF888WwN0LO z7V6vO&tp-|9dakSbr2!PQc`=T91sk>NO{RRNbZummIW_LUV9F4?v}gK7_vt$-UnE; ze3;U*d*$w5f$fu@(4E5lvY3om4#+B=f|wxZ^@P78@*G;lAC=|3z!K$@vT&3vKQ0DG$K}NO04Z{EH}F#B%0I*A z2|0!)x07;Q2}qunO|%9*BOhx4-dTB&4w7lI*Ir=fWV;VUF32mYLL@`>_XY8yJSiFA zl01i&9GUXT>cB3`ep3Lh$gdkh{i^(IAUs@?KhA)9mOPmbwryaUAaGHEbhs@mjm3Fi_vM|1DT@_{h?f^4~#vMlgGmJV|gO2o}S2& zv@(7wuc9NHXL5NvK#qKjLu9$~3j)t&wIRR@dD~4Wyp)6JHRj2yd0_dnCmp4|lFPq< z_t$bQGr$|U$~b_x@>|N87s%=$`SLIjKggja;P#`ug|3r*lB0*hN}+t3 z_Bx+srVSLn$T>6@f0dVY0OqcD6=8FsUOomZi}ZC8!CS14o&>N&e}~Qkm+BkRD&0fB zg?0_g^gqxX;Hm#P5DLrnX|x~p(vPMQ#asUq?Gt?TKhPYoLf;|_JYRh{ZD9TMIo~6Q zHTo4mrf*4|FI=CA18rfO{t`9T z4!w~^+6et&Gr&&$Ju5s!>VN$LkzIN-)jdk@=m!tG^>O(S*`u$u6Iisq`EH2p*Kf^* zqXYUWbmQotzFto##Ov90kWA1IA-yB|KdC*B>hI44FH!#oi>Q6*0=uR+ zP`>NBz8-z=H}tu#;AQE@QfBj}exn8cZs`r_sKagjH2UK1=vT%Nouc;&Z+6HxOUwFHlbMr9O!^zIpnX^Kg`}uRjvJSNgHkKVR!F z>;mzP{u*V;-|A~ugJgj|hZ4B&^no>jz1RCagTF8OGIYP-t9~`*$=sE4;ZRtpe4u;Z ziy?pHp|C;eNvA3sm0nvw+@!pv)3nV>Of;}SC6Iw$u;LvGY^(B{3yg&*9y<8j zp?nvBibW`=N~eWTY(9A%&1D3>Xp_f|Pai?;X5fbvlIpyXA6!Ng)Km#zg_YBkpdn6KLG zPw@QIW0ZjnR3|nAF-ToN>66ICa!oz56TIu{u!~U7QkT-cR9ou+^3)|-PgaXPg5+zpQb`2yM%_pWhPUb|I>#(fUy#B(_00_sKd9l9 zG5n}jp_Iud761GTdb0XcE4clv9-uMut7;hn;BN4q2jW6Q+5K?4$S~9gl8X&D_JZhP zD4Pv`%M8CA0q`_D+zz6b;nxsIdK*etgu0JmqLz^`T>lJgrQsy~Tw}GtZ6z>Y!=Sd1 z^fQd6)%_Yn-^K{Z-*6`lymf}oTfqx3bf(DG8_orx4jT-mT+tvK4cq?$w%Ks)5rrGZ5l z*3i;@r{Qx`V3CHUbZD{5FgOZ&yA7$7GTCFurDLsVgToH6*Wh^r9`+dw=Ml>R!^c4& z9yH`PM-VZF<iRE{BOG_2$rPA!GxOG9D{ zn9eik&p;s`|FQ`(!Zw3cW(ZOqvZp8@y-|{$iLo3RU@PC`M;;?#Ay8;4L&p(<$*HQzTtepk0$!Mozip|FHv=0b04&DOwAmiaSP~U27 zNwaT=@iCoQg&MC+1TV}O@d~_fV;Q>qw$1qD6oTJwJTV83b{Ji0fQT?&ssM$Z#;$bu z7im03YxZ5nLOKSGGPWIoSautqUIlND@!2$hXrmwP1NIu{`~;i(j6-O)*l&Eh2iO5) zGcVXYXsllqvBVhL1;O+oW2J2ni8Zcj0N!Eacm4ozMo&ug#2eSr9FSnFNtcC>7}vxB zJ8Hc20&WwHnY12EGR~sQYsZXc`nZyffwZ1DZd_0bHdBmc8v{!;yL zbPxTMG5!>coi_f-0Xt(H`~vFuB|asm(~PU=?!`IdTz>?SZX8+)9?oMtfx-pjds+lv zG7ftLkxb(+bk*mwF}MV#r@*q;tT?i%Y=f!;l%8ztZG8%MMU_P}Ua2;M{ELON!7 zWL#eZ3XhG?Xy^9CSfU?dd200j3f?ngW>bJ1;{aM`FL1$b_JLmQPB#xzP+y)+K< zh0Q$UJ<15?8@p2C<&|+Zt!ZBy=cYp8jj`i?5Z@a2yn(R-^zm@?_yDb&ObhubhyGaAUkO_Qm!Z!>MBTNB$&1MkB04pU@HIEpZp zppRsy$z>T7B2C-rKF%)FExJz?Wy-7rY_}wheEY8$D10deiGZ7*QCS^QAI%1kassE#< z7}_x;nr8d}EXlO49ZVlH{ZR{8vMHL5OOBgH(1IYvH1Z+*rJ8oN26n=9U=d)xVn_TC@!v&LfDm-ME z;v)bqngWl3c*&GX8P-fwEM0rJY&shPD_2bSXmGr0+C{miYo;+1VeGo8BHf$6VY=Q1 zl3Awmx4^q;s`e5Jw@gX&P2V=15x~1+dPavQ*{0K!VZCee%!kN5lY=ho-Z$mauL&NQ zey6GKp{X&gVxO4A1u*^8l;I8DGt&efAjcH<5PG?$lwt7x+>})k*b7s^MPM&Y z&s33)UGq)VXeN1O>O*t*Ym*!8Q{R|IABD(U(*atl6qo{Kcz9>>qNBd|rq^_I^TE`E z8tbF!C)yr=GEJO_s0&Rqegf~asoz@|`(oOf50S5?bSrr7=23L}VWGJW{pf6B zvAG6)luOKF26#)&`_tgo!yMEG{+5}KQtrvq-2E_k%gy{HnD#RNO24G_HV-yH(#Pzr zz{(1<&sSh8&2z}ZD)XI2@V?q?Ed$fO=2u-&KR>gHs=3D8TZE*)c_*C-uQgZ8fx41;J7{aN(VRs`6kE){tpYLF{F$zMZZ&_T*)YVMMJI5f=A7$r z6lR`INxX3L)B7OqFegU=M3{}G;curo`ZW|H&1vW0XqP$10b^0-?`T23+gxJ;us!B8 z?!cnWrQ9L8*SzmNz&`V18m#u4fA0)v>5fQ@`KQ*v4w)y?q!DZ0y&R4X zo87c+wK0Gu{YDg)jbb1lj}oi*=$07q%& z4;>NNIkUAo6w=KNQ(@)2xjFU73+Bb8fn}Ii6#`r|e=tDrlDTaMC}f)Foq+mfv!w-s zziL(}`+Cj1pYoB{&6|fo@`ky2FJM{bJ9LHgra6?B9CyrtlcASw9^wt`uGuvdBKOQg zLqWW6-cLu^56sUfvWMn*EfDo1bG_n_d~6<1tMn&kk2Dy2YFERFhr7i=j->$9zv>fZx|Ssu{3Al#x-n{Bi7*a2hPEt9C9 z?Xc{ipQ=SzYW9VrotCn+N{F=VtpQ`ZEGs>r5M^oH9twLbp+5mcTh{i1!d}aFbg5*Y zr6S!u*l!s_15%7-Zz_m~EOQj-#aeu+6CJi(r~%k*h59d9X1KU+(%bfitwQOni{ zC?r~@xxi+UW$!Q$lP!NV12}G(whUHMEI*$DmTKv67FJGJ#VwWs!D2aE)(u0QPtCk!e zM0U+Gupx-oEje^q|Ar;V6?$2giPI6pElc^W@h zOos$<*61|=@z!MtFqUAgORK{p)<_owf7CjgF0>_DU7x{9lGQIABFC&tZ@@~jb?;FS zk6Zf;hxZh#AElB~t@&MG`h<1#Z@^AkyOe|JQ`V*BK|F2k8H$k7tfqEQIA=Xn7pBv# z)ds`SdFzuH7`tE{BSA02>i+{IFIu0`3jUJyX>SlSt!*|z;j*>n0@%D_-MS6ns`Un~ z$Zl9W(()(EnmiZ8o7T0oV7+DC;R@bu>zl~{cdV-igO_ccu?_z2S_h2=cF)@MCOq7? zE{ucs2iBm)01vHWV?cal{gMsv*jk=WO`cePrz>1ft$~z9eP(@0cj0rap=ChKwYpK7 z{-w3?R!HVqrGo(ZR=Fa;D{I5=!Fz4JLE*l!1_r~!TkCWBxC*ShXwC4>`lTkUytj^^ z+ddzxUOxc)XuYok_+({i*IHNkS=Sm1+d(Pb8>tgw(^v=^S1pl3&6)VoDw!GY!_+s zv(lDfhRs#BA3MR(YTGpWM`wI(j|#!_vyE*Du*MeXf~xr2no+W9tu2Kzm+Nd5>8xOb zZ99du(e`5(fK4{ z7HS)!01LCVqJ($2&7Z#TZMLIy#<1Pifp!HuZ0A=ahzOfE_3NFsB?Cc>wB4nNXt(Xw zGk`s|E>xpv+f%wVu-Dda3>5a+=FqBZzfCCyV+U-FnxmBt+N^W{6l1GH%a}v9o|H?7 zwFQ0z@33tvEuIr>3m-x6h%J%4AGOWf1(0ZKo(%6vwhOc;IcD2WyTN4JCKpH^w{?;s zl42XP9qOsJHlYwXVH>EOKiHz(K|E#KO~+)XZKkzwd&cH#gx*=(99r_H+4j;w<2jq* zK5VAjyeB~$ZY?U^i^$1rW)yaib8+O-3XD}wjq~L={vSB#{jZzLM52KYs;Xd?>*a= z01)rnj?&%ON4C#2em=I`l3#3V=~VWsZSX8$?)Dj0h%B`4t_I>FyMvAv z7uyHYY1tC{{?5Rb+Go(p(Zjx=6cm=(heRMUPkV#*0L$$SIz!LPJ|qMp-u4D`Y0Jm{ z%nj-*>=La2SKHla4)?VWp-Y;6_RVI1HTIUhAmVSIIRScW?V;l!vd;d2QfvYC%sBw- z?VpB0eS`h;FA&*iuT9zBP4-}#CW7o$XivGtev%TV{vCQD_O`UQ2(|Bd z3iU91ce-;DZl6^FBHQd6egN2RuQU%LJM6o=!dQfTtG21I`<;f(Nc(m=M%rc1WWkHF zFE|e?yX_BY)wRc-H3?X>y~Otje!smxU4lDcZ}&SC4%#~of=GEJm+cKyM0UlV@)xkH z_QsbG?lpUl7ZAB_Z(k4UH|*W%%=?x-YcjxX``A|C-LX%gSuNZCP6l?@K9{zg_w2t@ z9_+roO95WT1A747ad~JLLZJ7^-k*M1^w|C;ACgb(iK!qywU4FCG|%kM=!Qm)J(p74 zx%LV#5z=$JA8l-3*atQT@uj_HZx9RZtEoLd+beW~-WU5o>epZG?dV3GyQ953u!W8t zw8&rN*g{+U#g44v081Q+^iM1;b@caxq=)0)3BVYsGF{G#QXv)s~sz7dEo1)MY}9NhfFJvHIAxJpy2Ol zLa%YHBaZTX>m2!Q00JCtouIegkw-tr+2C;h0?Cbz#fu=h$?>%mc$*z3Z-W@XETEOuPDhno*o<`Sqv3a#WB7YuQI5@XVP&_&%Li8WI7ZP_9_={O6TH0+ z<74plInsI{>iv#Slv_LCm_W&gLyo<)Xp42chyd}hqcm*?;v5x5LoePjU<*VN91NWv zA90MQ(e$XJd^Qvk9nZCFuVZ9;*gWQV<^f)^V;F6kjypC{k~zhZR2}N6j>P5Qop2=Y z1n;EdeIpn<<(ORyywi@8MmRd-=${PUImZcFE2cX*LC^C z)y!;ZgYVv(@7`IKW}2nhvb3_LS=q2`*s?M~_K=Mzh%5mG1P4Redx}g4pn?h_pt3<^ z{oeQc>t1)yz3=Yx`F=jnbI;xL0cf^5?4g29n?o`sSXUgz=7U^y2&VMsnuG6W&}?_8 zS_~^44sBGQzwR(fhaYb^WVL|1>G0%V@ZRY#Kv{E_!yCp56(a9C6s-n#&*A-akbZ~vK7(+;;Zxd(4LUqcQ|yq# zW3(9=c6gW8hY^Qk{xCi2V0i>8V-9^ousQDV#7}_VcbEtQnQ&N1kIe&z?`TDzbSR*t zZOXx(im_>jvkl;8929iRXB~L-YdSGrein|L8Hx|U?PdJ42L4QZ{Ml-eAgBdj!pc2Apq1zhDSoqJFF#e^T>2b#Mv=*l_Dyc${#+XN`^a)1v zX24G}tYX+a#kfaV!f8ex<=5#9)t?Y%Fh2hVwCGg>X+N*MZO zuu{rMqylsqW5EaD${8K+0Z_q+r4JY?8GqgeSH;*n4qP?E?JsaOj0cpQoMSAal5;KN zlPHk$j3rcbs$-n|9h&tFS2|PL!1!q+B5P#4LiuMCWBDvpni+FhxGxtN?@fbTW`xpX z)518(gk~#a%i}QJ#<=w*Y+hkl-v#a}BZ@Y6*BA+lFxJjU`vzkj3_~7p*BRn^jNM@1 zOd8%Q##AIoC*ub{kS@j(v`@XonDqzgW^@W+>^38LJxC8@We-R%V=>im?=qGi2f4>^ zrK9rwj6rHQ4>0EG;bD+bT>;G@hLacW{4gV)dZr_c`?S1_GCsbGD;i@YT?ZLwd`iuX z`;2945#R(Pjvj^wjQNxuPBQxF^_^mzq?~=4(ftg#8OF17V0xC3OX-~xGxs^*oSFU9 zCEd$BLJOY@vu6`*x-w6_58}pjS^%6o^ZRJ1crZU*1h<~d!f6P-n01s(c{7dFaPnc+ z)BE7dbfZ%k`g(0uadLQ=KS?xt-GGVCIU)feT@>w;|3@ z<}q61_A~ELsu{-IF$cH<%#};w;UH641rp9&KnZyS^Q+AmJH%W~pB_dsXaAqAF>kYB zC5o9J4$Wxhl3|b-<|fL-W0^tp@WnANQdRm0^J*n<@yslm=Z`W^Q<8Cv`5PT!PGY`z z4*@1K%c(=0!n|X{*m0&z4lb4XH+96)m>E<+Il+W2yj9GV^g+QX<~C1or3m2A^VTJhOy)a}0g%PK8V_=YIou3#mO1ZVkZfkgA^6K<;zJRvPRubn&rrbR$G})2 za|JctiN-c8>oiRJlTu)O_9n+c8<$7i$rA7_Rcix7-M&|R>d~RZL z<^k8tETHP$1?K!WpmLGveHcMpVrDZyE;Gxh(b2*js{v_cj?*ryjVYrf;|lZIW(cn` z-RW%8HKxx|kap%*|6;6z`I`a8t}~kp5#SBx<}?_)$^3+t@=oTRZNPOg<7lsai`nLl zv2Nz{;~=-0K@?IC^JO`%p_lni5rlor(GhnY-8r@PF9)Y`a*#|^@MW;PF(GQhm& z4%{F!;taSUrg9xFbC_v7i6BOpuhM%v$~;6l`+eq1^am3sn0B2hyH;5~1l#W=qvHqev z=+5e$gr)~8xdz0O^)2lKyjb2n@b1l8NZ*g`V}(j^eSR$I7MS*DU8etj6u^q0{d*v* z>oiCZYu6S4f?3af1%DwdS30H~%9@CVa6ikHwhCdaar(m)2UyNa;Nc*vZ!N~cSsVWW ziC`_F2J<1-TQ6ZOlI8vbtQ=-NoeUDi8ZqL|N3-(iWsYG5y$ddurTKsJgvEUgxFf7z zOJO>m)kJ?mFoE?%D6Ay1>gdlS9A$k-Y2h)}*VN2UVue!GD4A8!3DYU8{IiJcIO}mb z){x4Ic^L3C)(&cfpJ4rY9ac`VD(QUWDOP_s;HO!ww8cng{c#z93|1}m$}?FbbVIUO zm#4s;Vf{{#on_@c0WOC8bO?m-V3qvABV&!Yt$;VN<}SooGpmJ43Kv)&xrpT=D|rqy zFR_we0{k-Tbte3^u)d(uYAdVtYiQnN9Tr2_$x5gM*TpKmiLqNO5$zbdSt&@@9=^?r z9)qxl)#eDUm(~0oO!u*3BLKL=+C*vST~-2BrSGx6q@}K(l|z~80IOvhnuDy4r65DB ze=a~}m=#Am#Szx_O^9riwSbx+W30!=!Hu&{PeAiNYwP#WoM7z=!`K6s{{pz3WEI2% zH^mCaB|SXNildBdhLxTKZk9FFhCAWJ?tcStXLjmJaC_M;&w{wHd6^)t?AK^6cVmB- z4lC~LGga{5!M?EyLQnP|R4w#k_fjJ0&DKz<(}(@oeO!Ytdz|(_``C?C8t`L#P{!iV zUjGDcPXJrxiLpTTwpMruVsDxUE|~3c0+EHV_c9?2Wgjkua6fwy6}7|IKTxsi0DJ07 zs2pU!^&f=c>_l2ZBG_+Jsq7Ftm`?9UvY*`u++p@kSExj>Kl%xPXm*AG-ecHZG<(Og zAEOOp9Q%offjh!pRtgf&o_rIU3GCd}xRgY8_7<2v%HBz3v}5ciD(lT+JopJ;>GL0&2BjZKsx(WAZ%u^ z$L9f%$u_M3{4Bdg1Cq^l8N*l(`>ASp&t?062xEEd`u8!G&rUOdD_|E4!Db;_PaCl! z_PexF7PC*?1XseoMz^4pEvLg!Wo%_E0Of4c9snxXeiVEqd*RC%t73l?SHVG_o(y0i-6jnO@jtwk{Lo z0{aFXp}feRp>*UD`_T(9cA35I0fa5=x4wc(E4!D4i*93A(z%2yZ24mtyUPBJww>45 z@BIWoJA1ta*WSVYJrBa`Y}pO~Zm^gA3+^Vng;Lv2_P$_nUF^8m5&SLo0vlAi+2KkU zyUk9Znm`YG;2BuyWoPx^qWjpkl^}Q6x-`J=vRf!KzQ>+O0Ir{%_5_R#uz%VCl|i=T zFQ^Q$7te>vFgu3oQX}kaI-fPlUP?>I7`rSBfN{2rdIk5{?~`zX?Nb5G2kcl%3n$s{ zS-?%PnbZ%MW@piYIm2E?<+oY(i5EbeINNl9J99GDL1iz;OiPao=TH#fuAJ|mhR}`k z0wuHVoY-ZE(}QDv12#Q5VNQtCi?eDgIB(7wQt{#V&?N55S;K`De~vFD83CMSZm<%_ zDW<+m5NES5RDwBk-v%y(Gp`q8p`1^?hUR|Gx-1b!m=p zhTMUR=NKuOP2hY&1)`&zYqSU-%P=l3pq2;d{80GENbhF6ZRYBV5I?QS+pl^C-20YB;y) z)Z;}?1{H5xIGG0kXyrV@1-y+D=!3BBnS28T&&z)g<72S_L9sT7bd&hQD4Tb$Z|5nwmR{R_D5<#1`g*~eK!<*9p|ZB(4@ z=VTW_IKa_R>M+Qe(*v7BoLxMGG|cgP2f`7~{WTDdaz-dK9_Iv77wSHzjb^?HP6ZV{ zA8@oaP?_W$^vBgsamuMR?+@}t~kqg(6 z9(`A?lM9F&_eYwO-MLBSzRsZi(1Wm%!=#r@@BaNgYbKB)L`-RZk)U+!zK!qGmi zosvX9?zA&B1Gp#<;MwJR{R+21+_!0`AI#nTE>uFeel%x=a)tB*gmIS`AUweR_yuqW zxn)#W4Cg+31vVqN-sJBPS5*N=k=#9NFc!s~OS4ThSHB#lW4O=K-Y}LMMnS}Jmv=z( z2)A`3NFvwyJCLK?;(u}LlDWT7WiN$$?o&i|oEwycu~hCty680S1Ql;ja3lWTQQ-zr zLFyD&FF>59xm9DprE_o43Y5Y9G6$NO+)z56kj0%50DgwM_yoAK+&^h1%H}Rz26zs4 z&Wjk!<$hKLfBD?))LSaxmX;#wLT+_9tQ2wk=(R8A-lD{_g!>wmOv2hW`T1OWfPEcwgq0d=D!vT-}eb*~;x7#YMMqBYpz8 z#(mfd&35h%FQ{~IBYOe3&Q*N_;SKJKFT&P96<&gNDJ4 zaF-Op*eJKs0c4E3oH~r-+{KTAyU$e^;o$-IeR`cHxerkeJ;i;K8k^JHF*=?%!`&JR zz$|yq7C3U|J(7%Y_wwSJ0e9gIQf0xFw~6|cZafWbJKcFtQ)$POrwoVCi`PI6UvJ*R z<$;Qd86@(}OZp8y=@y-J5^qIk!?gUx8(JF7rqc<4pp zndg0J0w9iOqQ+)CFK;(U0`HnH{3Y`I@50JaUM77{a*UTrC&!X_%yl3sJQ+Q^$9cQi z7)#|v2O;=0UJ$j=PVg2!0pUsBYFEHd^FF2WTRLyvGT<_J?X;K4UZI&h{t&c#)^42Juz0ovk&1K zN_j(nLRiMjU;v-rSD2hT=_p>Fa{D?mDVf{);~i?=)*+-+VYRXlrmjkJ{a@|gcX zc$Zhd3#RY!G!wAW&nuvv+YqmC9aM&S`Lxv=;nmXT6XU!e>Cw2)b8Z7}f~TO5r>1yM z(_ApkOFjkR4DX>71To8deFmCN{9WI{m@_~2Tfq17&!qz3!e2~3hZ}ztb!puB8!kfA zgZ~O05b)&Z*+IPc^|LVM&1WA0+=u@$Z3=z)tLew_h1xEq=4%#XN@+<4W z1@YgY^I5_CtgSE|!jGp7M=1XT`l-VBZ_~nXfM3MH*g^i)XTXK?w?7FF5&Uo3VdW5? z)d^uF|1>@yefTi{$8?NE^H=YL=@|aOFX1+pe}X3CIR3NmVeAP1@@5!|=MQEBm%vYo zfcInkVEPs+iJwcKGbHniDZmuIT@S!AXY{`+1qc80&N0f4jokEooP!w;e}8M*wr-vQ6#&jui* zeE#D!XBF`4<1tpq|C}mqMf?D&0T%O%sESj{m%IX%GQKPQ0OkBOSrAt6k3R=tC4V<{ z9IE)gEW}tf-{}Cn*YJO$Ww4f?J%q9I{N)GWuZ}+~2C3)ksCLo7cYhiF8u@otK&6TQ zIpsFZ`~q45-b|uc3|641d)&L_N!|r0u_x z;E@GTaTY|?g6tI>rYF)>@X8phxCxF@JIGydBL|uu0*8-4JO!J$FzqF{{u``#3x1~E zl8<13a_@Ztf7-uo5h|q6Q#DFiZ(nnBa9< zXb%XC9S|NA9HEZ}!Uf(mB}53e4k4C9f~~Z(i4?f>LU>q^MN4F~V8as_ixKSJ2}iMl zjWlh?3BD-8*b%|+CfJM@h^exdAlRdXFj4UA_s~2hs9Oz^Bsdp@v1CEc9B8HpdS@U! zF4$d$AW{V>ROLt$OmBhkgkU>mho=Oke&9|Edc+{Tdt1^>(ecTezTGywgA`G0{72!<)a8WemQ z50xRor91>NBCyb%7!@3*6Cq=QiwxKt7kt)%;O`55px*8SLBI~EObSBp06ryHN$K*8 z;A#4)W(E7-gwRR2hdPYT!Y>`6xmP%P4r6Y@7lOdK3(I^l<{|uf5+QjC&r)^LODLdO z*jsqE6>uM6H0`o{h1m`O>=V||i2{FN;c^HAgwJjP2^7lr0v9BF{xV3gu$)%45TSSy z*RWss<2z6Z6E4*tvI9cbc-TBB9H#duT=)u|c!?0EKM8V3_=N*hB83mr_ZEkRy9a@b z5}xveFj{zN8@L$Zcb_2KSmA&4cL?HyKT%?KMEEl`EaHXBDQ8a*rp1CJ3R7rdKPsH1 z%=nn_Vam^vgmb9Qo-8b+OfE&Z^#X*)g^TGoIw7pR1UKlG7meB1f z6sElfQY@T01!E<`3sh+<6)t%Xv6Kmaq_TOrFkl64Plb?2+v7^%D7F2oh0EyKtr7B< zfIBBlrhKqg_!0fY=YxTor!p4epxo25p_&g$!CZJA`f2PQNa!*$nQ6 z&@%^PH-(0sxXe!B(!T)c5;mDYZVA)>f=ahAh8iokg}fZiT*nbl_b$qLfAYmTB89;75Ns!Sel5p04gU$?T><-6eXX6<|$E30l3p5VJ&Q? ziz4ZV%Mj`4&`+jldK*kstQY#VTuqF*nAs}jwl zG_+bIwjt^o(JIP?YeiE_05~riy$YLkqV=DFs~3q1aD5G;uu+(96z!(ZCz?g&^eylO z(FrO7T@>Z)0Q{1uh*tZ{qLxDdw21aj!9$yf`#OYIME`yR;Z@P?0GMtUjX#7SIz+m6 zz+D%WQ-|t?=)iAKxhaw?1lJ`xqz1Vqa-scLw)jg>I%EZ#N(V|&G$sS55Qejy)1S8+x? zaBkx0t>8SwW3&(O6n{ZwLNBrHEa2W^r*?$oBaXWO_&#w{7>J)Z$qu2v_zSws0I`Yg zOQ5*<|9@>m{K_uig2mmGXYCgoD7_04w~j%0K>VXKydM+~Qxhay{KDVh4vGIb4-zS^ zIt6lAe1%%=QQ|pNxQ-UjqYiP5_+b@7iW84gR&qp~POopgIMxD{1o7Vrm`)TgUI%|i z#p|gLlq9}F??bXUj5cB^;xU?gQpNw#T$d*Hm;;+9#1WpjODDxAsV06(oKHVhy7-BG z7|Reh(Il5C{*{WwSz^cka1Cd~6*J(@ia$L7E=TP1CrsyxuTb)pC;p8Nx8#d|m_SGc z;!T6lEEMBEisHEzyHf^OB397nHl^an=yYbK`0|^;Rf#9gK&4u|=WPIL#Mv7$c24|C z2aKH;JBop;6Te7>$a-<^LI@kg`18wnpv7OZ!8M7O)Bdknyy7FkFN#~KMs`Vjdk%1y z#f}s3&?4?S0nJu%Xzgi2Gb}@@;za3&5H4v_g`&t0MA^vPD zNSF9`D!kkhJ5f)gTUFY`uutq30+l=Bl#g)@cg5v&BF{2XnTXT|T+-#KxTgwuY^Suz+4 zV|yi;ly135*wo{5mAr8gLN`f!F#zt8`&2jekSwB)H#{Y|%b@8c3GRSRZ^=cn;v;!) z69B#v-OmVcpJc@!xIRCLdKO%uB%VHq43a!a-GN|~tg-Nc{Pjx`@J8=<` z$Mo=UNHXVfkVwgSYKcTkR?zbqBeBv{5-WL{&Pc>d-i-lCko;~yWQmgDR{&3vyrTk_ zEQzPoAw{zJO9YW75nn-oCnPIr2{|cQ@c?7#lA1Xn8Iombz-3B)+6R@hl09#L%a*MC z4P!ZyIsd>zuEg>ZxID?fOL1TFCErr+Rv?-GA%umJP+H%MBtLEjS1kF111lwxLrmkAa0(!j9OAfsOn{|@h z6S$Om$$!-9YmfvDfoqh!L0Ni}B#9E%W{ImiLb@RNf!=_NlDFxBz9c#DD6CwTcqBoy zMUwjvR9Ypu99U_Stf3Fbu1J`4g1udma130BB;`58d0leuO^_QB;U!qPDLIf1u2T}# zkKnr`Yt933OLF>iIJzyF+5%yZRm}M{owZ`-~9p2 zeu;tJ=^@Dy+CC0TR#2)kBH5h?W7Cp#&tPmuQrZAAD;Ze=oRc(>R#9i^-yu-hEB%^E zdM?uOG~isNx1WQGoAjd?aGuh|R2cMwqE= zr6q6S&L>MZGccASwb54SxYVT<2!49%0$7uunDN-Cm*C>heDVIY~(1)0EQNyjFj znJt~X2rftJNn4X#>7j543#4OIC@7R}{~iGrN#9-%T(y)4r2&zoZnPQF?|RjV9@9lms_RCsSeNl5{6|xGX*W6iAD-h#u%G(pTHy{i?K) zS}@n7oV|#;UAnOqq(gdi0Zd<){y`6Iue3h^q)$4ghwzTHm>LLorF)iwyC)5xb3y&m z4gW%AK$?CDZU?2SH4qL-f2xI}VX2PNkum8KXN-+Y^W%WKFKzuA!U^dcJ0W}^T|+bG zq}1{ROixKw^tYL2q+=tnIV*jx0-8=T2_=axvUA5Fbd@y}Lg*$-rv|#a>=!z^=OJ5n z6~t3^f@)-5vNhS@yk-4VO7f9?zY4@xcArif`pbq*7z>aE)3X~W^SuocBpX%Wh6KwN z&>I&bbEKU{s7xq=zc5*CBDe!G$H!phpsa&tlyI2`^|B<@MN(mhJfi!YJAPC!iT4 z+eNEPtgJZ{_cKnmvkPMhvOlP&m?*nU8~&rR6}0s_DLY7&(o?cI3E)o4UU&?+blIXA za2c|FRI$#Ky*&(Jmh78R#BxUF6ajdS?4cmo%$2z|K$s_cg?irkGIb(Ifvmh7q)@gd z7Gp)SM`$lvEZa+`Z%Smp(p*p~bD-?EOx9zChjN+d5`-19*RLboN?A!SG^=FnzY%V= zEMPtS)yRJR3*0%GoO&p=vhNC@d0yr~GhdyIbp_W@FH5H+xIy;)CotA13!n-}lWaH` z#+qd=G~Hj2J#`J-McHFlKrYE{QIc_4c4I9_o6KPZ!mF~_1VnaCwuMRq?XtQ50oNf* zqpsI=*(WqF-H@%OvfWKt%5G?O%HB8#?v`wm8@SuDOlr3E$Od+R>y<4D1J@^eKn>GPX(I+*^{dw9F#?BV0uV~e+-U?R(3KP@DZ8eaa_@;tj-BRjL96o zfaZkku@0y_kR{Y$Y*O~pe=t2QV>}6NM&{cJm08(`?*r~6|Bw<-XL;wx0Jz92++f93 z{_hP4-Q>qq@a``EkMao*xpWnXr#$Fc5HI;>Z^MeWTuEp7edMuKFt$(r(Ieped<8a!~$&Ze+Mz zM?Y$W{AWJ=MatLF@u0)<%(dX6e-0E?*M{l??fX*D#hTXDtNDl9yAt=&U^RIILvLw}>Fjk-O6dJXd}!4S+oP zvO1^~$XUJcS18Ze0#YP@rV5%R@`+^#zEpnr9=J03UmM`PT)v)Giwb$+N(iguUsIo? zT0TtPYvdX_(s)kpq6Mjyw@^Reygcqn02<`02LNxB7ezy}Nj~ubg18`;QP}z6@cHJdZZEeeyNb`o1HNq}lDR z+?#gu{qhGp+RX;%(ruh02JRDGL`wc-HR4l!ZI3pCXnGhaQ%r(GY zq~i6(7(1*`jetZc5_cn(7=?QzG-DO|EwCA<_>&s9M-&Tb4-~H$rIvYuVlBP>#}rFE zppv9uEQG&g#V2(T9#?E%43er?lLkPVf=e&u3B@X^znoOO^8(0eg;5Ec>54@+fy+?% z{st~nafr60S&HAh5!o4q<_&OX6|3nyL$<>94y@!Tntq4(JVlQytmG>WQ=DSUh&tX5o`fv`p~kLIOX zMK8@~=M|BZ!qq8uG(%XgIBo{lp!mZMK%?Ss9)5reij(xw|3yVh9N?D}4O@U~QEaEO zR;%JyUqs!ec!TDUD~eYSKzLQ*`y4de6(1HL>JG&-jtJtqqOb^KHx#b4&$+2EQQp(3 zxK#mMmty@LsN7P7&}-4H`1KBiJ&IIX5qcH(=O;2q&Z|vQJ{lxT=BggHYXIHQ;YC{A~qD6;;;NM5W)cEk8gqtRHlj%V35+m0ak*Q zM|NT?R2fZ^z<%YERACKMDt3W8pp2r|@Ssvi#|R^oA8$rvhm^f^I51M#xe=OC%C~=k zFj^V40)QB0F%{TjmF^(`#3{q+yiL6FBl@cn2};?Mz$GgGrSq6amF5|!98-StJOD{b z&q8p=m6cO4ma6>nM{sG%g)HDsDxX;lz$vAFDS|((tl0%Xx-!5OrZbd(P%53Jd@C5_ zjB@sCcsQ%9rTtO1a_f5tFh?0kb%tE!Dw>z_lp-q8C$5vY_Z9~*>~GG(I!f~ZhVQq!zb`SUnPl`@Vd+#2N%9|3+&IjII$tNbq>A)Qy^ zuX5w@R(jJE)S%o$<;6zjVKt&|QYxNie(ueZTcI9I?V6#Jcw+7sG<<)m#`i7E6x$sS81eI1hm5DT^cPVq} zL!evAJ(S*cD{m(Pa9i0*e?6f`dF?NdUgZKh8PKQfc81Cw5r$%mDXD?m6UcN-m0;0A@osI`ooy7DuSB9`&9XKMSd!O zO8Na&GAi!}sLs-F6sY=y_OL-J>+8S;t6JzAl@Jw!GPzJynLOLaRBSw~N~8@(lq!WPQPHaVi{K$nwVgg1 zIHF1&z*xMhfS%n1RV}3|iK<0Z^gXJojfTHts4^#Xlaldf7z+v*He2YnBesfwopN|x#pHAK&-a%rJG ztIDU%a<(ea2+bVT4>kyMRc@W|kf+)}d*6JO*C}uXs!7^Y7OGyO^}R?XJ_pTWRizG& zN>taWSz4+ZB)4U%U8?{nSK(i`;FVDwX9G~FifaZ}rTVZBxN6nD5xA{U4eUo`wW`B= zLC&j$bQ-2kC8y0@qpFrtjwY4!Rgh-YW?F16s}}dcbc?EnUhanG4V8}C@HbT>?}K!z-lpbWw<>fWuKl*ks{sCbRC`_n?vASGVOY7V`kfAw z-c$WWeYHWAKNVAlRQ86*%+t5*IE z&ApD-wt~1ghJFAQSI0Wa`8*sA-B9s#obQZ~yd0;@Fy`x+NM||rIezSlF+azj5L_5Cq zA%roGM{=MU>lknoj^Z8Pejhdy9FJee^(8uX(c!ri$LmySOLNS!L3qkBhANO5j=er` zbjERQ8Q?jN|Fl4u?^sLqtRhDX&CsQeIU@j6IPRqSXSL&^V*u1TV&%b7?il(4a7~U? z>w&xIIFE{=Esl#<0(Z@^heB$1jO+of!%<2v`c20aBQ!f5T~0#S<+zT@Ft;6_pbA!x z<6pEo^*XlGi+9%%|4#zHk>hpBD*GMh9fq+X$9+8@!;W#UK{(>LoW8FbcYKmkj{A;3 zB*E>3<5F6EryRenfum{1pQ%DO;~0D!rk&L>D{*`Fsv|={T-3L}g^H(oDh^h>)WKZX z^j6nD3C>sDN#&G%>R;)=lb<>|6E^+TnNa`)sJrPzWS}}I9wbQJKxbou)!&AL3so0U zdbeNwXA`a{Or4|$7p|_LgeOA1E*HW>>K!z#9ae9*z-E-XnhHzN>c^?99HSP6Lo-(W z5f#zn)bGy2oj9T{q@$4W>YGs@iRz!|VLz%a$bjZCwI96*De5LVO>tappzVLEx{5l5 zC)5s$Fm_V?>nq?+sa@&s_ncNAq_$kTx`FnT8S0-X1I$$Kpv_2@di!_a&Z=KchDx^j zVLA<(qkc~U)A{OsPeG+Xy~G`3h3bcY#aOYrYCA$IQO_+yET!saHvwLz?%W1Ixq3TY zbcI^q2vVt*jUuutb<}s@YSe#S1b0qtUIsv|x}6SO)T`U57t)|!kcP2F^`EpNG^>-T z*>*uaLo@V6b?FU^T~c>fKzLaltictvsC{X{Y*l|kdy+QwvmZh8sydx&oY&MhABL57 z^<61cZm7rPaCB4s6qO!3)!%#!z%8}ULI}InuRIIkZS{A*0N$fMX~os{s^6K0l|HpT z0aos)nRJ@zuKHp6;ri8=RfuIk?MJ1+LG_tljE$&MpTgLv`u5)#8&k8E!SsFg^<5B7 zsNdcIn-A0p-y--)bzCr1rqo8Nzf7ycX#Y2(-c5=8ta^7l0L~ijn;6@x!Hvh$s<{&a z;;#9DvIGxJCIg(OraJ>Ry*2HfAU>K7+IRSBJ{bgjpXMpb8T>Sve*)mI+4?h70yIfv zB~ZhmCnQ*Nz8U^PG_h2>57n%9f-qdeTm$Zq=42HDjMPM~!wosC`SliJiPC&co6u;D zhNi<9&GuAi#%aEN2Dk)G(C#u%?)8`E5G&}PEsMWlE z6_;{e6HJ@zI!&$;!g|d#?SUFJH48wRG|y0J=c48Um5VNGrseS0qFF{iK&!^~AynEl zbCn=hH2$H0U)5}-8g;woy*aRXLnEVVVW*~+4j*@E?ooN;mL_5otaNL3mBRFGO)EWv zJ(`yv2kFzC{TKn>(?kWs=76Szb_Ii)gA9-%O~YoW3~O#t7Br$ka*xMNGeM_1$2Grw zj@kOHaUxi*|YgOuK9Kl=FFN zqyGT$(hdp`pttsAI#=SOZG0Lb`D*(ff#yDKJe_;;*ZO=6c#w7(Jrg0?q8%6u)qZ{$ zWBawG+rfot_bf#$2eesi2oGvabRr}|``Aec4{ImO;UQZ4$^~e~Xg|^*z*w!z&rpfe zK6(W~9MQf=IZ?cJ1*Mva+Hb`OB1!8;D@ls>3#$Gc*RF|#u~h9gD&M4Of1^^;3GE;s z!jsx}L?EZNs~*EOWNMQnz@5>~p-t0S?RqNBWow_?2`)!_=qhlz+J9xx%+tPp8(e|* z>;Irqtc~9YQmVC6VW~`;^A)U=YwIaXsL&SD#;8(zllHJx+Mz<=YP6-zi1WO*G7cft zYt?krr9qo+0oSNqNG;_it?3R_nzfBo=ewXiOApZ{tsAv3u4}95iM*jrrk(yx?YqCj zd#84`94cMfc&et|(ykZ;>DGRI7eU z{|%_z(@yRN*RPdd#n^!M!%sm5wQpHLhO`T-FgC0mp>oQIwsjK#quP{Wrl5_EDaET=!G~9Hr_wKOmMgU1vSW3EhX=;r67i=|8|v=@JWoJFUCb3@%+4NEvm8 z?mlg~Gj*mg0J3yZn*cbY`)faJp4EN&03Nb+YkvSBM<+W5&0L)uoj}Rcl~D~MU$>Ti z=>naX9)Ln!N-V4t=}uEVQLHl^hOk7pP6V5!y3q^Z%5+_H?6h2$a1@#qx_uMStkf0L z&8pH}@q@5hx7P#@HM(u9Av~vhcqde9bsH#`s?#~_LlE`4_SfLOK{rf$u11~q5O7Vp zg>ON#S$FFHC4607J~S`tB0O=?mvmRv@P1iWO=mz_bZhg$wd$Uy?eP`eCttwdRoyxk zgx7SR>;<4*_Z#IC9l8wKeO}iYOF?evR;c0Vrfwzq>(ssH4tSUDU?6PX(pA%a>DDcw z{%x;r1MMmMbUPEEc}G`r4CJnE$`Rq-)7@PN(yu#Dlj?xZnWpAJ-M=)=4Cy{;hvu+u zHEmQzbl+$|Ms+20&+h92<^wRHn>hl&16>?V{*$_A>6w_)b$<=`v~J@NOwZ`*0%2uV z_bsIWPWm6IbKtD6r()_}ecl{!F8U1(;N10Te?i4VFQq=0r~c`)81vG{F2mJ&>sNja z;-fe20`b*5If%c$tPmtXzqJF#0`*Sr&-fbf9ckNWQi_1ow{3D?gx0T-cvYc5m{={;$i8>!CmFiZ}H37;rcBQFQLUQ@_>(K$l*-1#WxveHBpY)yFP{N}t~F zDTH_QH-%8StKUN>Vejb&=~zm?zCQ+<1NzEjaD)1b25>`q76FF!UsJJTL|@1SZdAYL zAjZb@pVPBDuCJh7$OC0tp4+L;G7JJv`un0 za46N>YsjNwoSR_}WrywtpJIgMVep{pou}b-88|P)x@Hh>!}<-lJ|9E=A!zy<%4yNq zXKY11n*M*4+r{fFa~{ zs2nteQnnUuxIGD#2*Z^~zz-SjQe!jH;QTAN!-n4z;UUJ*P04etA)hjxIK!iqPaH7> zQ)NBgprzelf+2PtG!qT^TBsZ~)SpFw#|*0kFr8#*-iNVd!>g}Dm}2N@2RUwdnda71 zgY*PUrx`lvCZ96QzY22Nu!CCd=>`j}#Tka(?}N)U+}#M%S%!?i;P#B+HQI-tHM~UK zfo#LN8xZCh_R`OoZ+L;WxdjF0j~g8WLQk|Qn4X47=RMPl?jkiLnLhn$_%Ui zf=ao;?f;zv!{TcYRvHp1xvVjSzXr{7hSVOY)Eb`o7ngG0;C~&$I)l#^c&Imoe+AND z80!VD(XhP^T$5o}9#onQ^Qd=y!SDy=!WRvkXjo}6{6p_;tAP^%%{IgCcfegSe4UJI zxN2BS1+Z&|YI+LV4L$|Hbr}AM19#m}Kpo8+2CV?(rorcRjCC5~7QsrFfmsLdw+xr* zk?J-$Mnc$YSbQJCK0_>Z-0v7J%*EJUgPt7SGwh+}Lcd|t8E^xJ8Ctam4S!RnGi2y; zf^gLEXduEJGi-DQH*R>7yx%v(&{{lUcs>-|1H-;f*qk)1rgKkIhLZUp(}q~eSY`}A z7GZ4GuwfU3PDUf`om`Bs1mXHzjhQa+=VmOfLV)hZ4^#kn7(GWJ^fVsj1K?#W_z1+? zcm(j7{3D7 zu-~|X+ALwltJ^^i82_ZV)~F)7B+r7(Tm zxYQMqr5a1eAxtxhc7r=%tfgx2Nnb#{|2}mVm$)y9oft*9|>qKD|5Q62$DwZ;uuFm~P; z@HSNHjCarAF4Y^)aBxKp#ozvI0C3yL`5R+B#y_9JSg%p_61cm@_y0sl_l)x?x9K-Jcq7gMqi`|C z28~l5fDakVe}L&>V->wQBgQ8lKsai=l@FCMBa_nQapU7pV(h+AbO~h2D5Wmxv@w=) zuo>gv&w$Sw>xFRZWEwdPxU=bEEmT}h*;J)+GbM;&%-u8@4NVVI_XXfQP3|>VcK{EfJ3GavJph2 zsq7$Z9yaX=!jBVWN}@(UwCRoma51JY$AF79>1bw;Gl^&ieZ*ApE=at|PYYav>5mN{ zi6#}Lg-1<)>Ht4xT1yj4l4*>hPBtCegs~LUHXDo`H?5kB$Wl!|-i1n40}^G!cd1*E_fk^`>LOxUTXUMN8rj#K@AX= zn*yk|U192e0m4dCfIm!EnI1U@T(#*it#~!2vz{<^&h%^#NUiCp2grHTH4OlDrZw+F zrQWo<6MzO&@Ru;wXqwPstjT0O57KP%w_)sp$v{u}MU%sFaF1QOh4#= z>o-l_1sO1XM-7BQQz7kahD@pSUBR&FrDzx%F$Ga|WYqNZQgCA?E*(4@H~qB*9`2hs zG>K1`EL6~VU>bi19wtry(jTFjGV$+&n>IO|g0UIXgH*t0P4i>n&&j-kst(TPkV?S! znqPhk#$3#8uVT#AELaVHZsuQK$C$hMDVnG~%%WTfJ$6QAr zi};#bXlJ_597LM~Kl5YM8V)qeMMMDs5vp>ovx8ckNm%vxGulgy#D zfG3-mxFMDl^Ykfb9yk9;g~3$w?{tVG&FrxVV<*fH_~1^O{m$VooicOkK~9@Xw!%uf zd2R~EGR)#O_{%iUql!|NnGuAsGv=~D7&~j;^c%Qrb882J$T6o^Kr`38Ck0%dS?Z13 zQ)u2qvuTm}vGsr#n^)0?D<$S6Djt=Zm-zuuW}g2CxN`HG-@{mi`H@kWt~9Gm092X3 z-3+eUynHjpYRo0B;Le#hu7#Ca^XOs-&zrxe)v3;$KpUKTvoF0X4d$2VEI^|z`+*Wfe?Pc1`r)ax##XL?c z$yM_a+Js&+kN<|Tc5@BY(mTu_q`>BN^Eb2|xMAK-pM%{r=g_XT(_BjLN|*T?`o(UU zchc|PZEmJ2$8B>hWxqYwz0IpXb2XkonvHFH+_!w8o8?6Q0M|sJXKYV`JtI6Tpp|hm{ETzL~WF+=TfQ zHO(HFS5r}R()=iO;HJ#4d&2v)Iq+i$XUuLlL1xW1Ivnq0`GGpw&K3{yzSlDURa~Zv zC1eTWbhXUWLg;2Gr@QNJ;phPHuzc$WN1m2}0$A~~{CgV2+p><*WgknV5srKIkUC&72tf{7mS2I*aEnJ2#v&|POCUUCsi$Ibq-BW?V}~uTw8LhUWo06Sv6j7A zAaRyY3lPK+%N`9($6J;j11`bx$hXi;v{Zi!;ZaK&t<%RWdGtsnS)QSMBH7Xw0Fq+y zcoLe&Ek98`E7h{{U2tiZEmiP$!V;1K+)0c7a*Um_q><^<7H%!Z(k(UAVa%|sz6F&` zi_r_XEXyJx#?DwGDX%+g+4lm*vMpUK#F=CHjBY`$<#+0m=2@~9z*xQ|pL$sZ7TL3a z7g~I`0$yY}M-9;yp{oxq|;cwkl z37Y}dXxeNAT3>t{xFG9G)P@MQCR~Ov#5zTZOQ^MhcCGuZ-c%q8vt|?ncffjR2;4zy z7M04vt(RqpCBj-opEVz{W~~7iY0ang;jq=24sk?Tk5N7tZEd3dW{g#G9wgR!Z4|;d zYyL0re#AP^3b*mr-~fyzSQm2uPqa=w2V+OAjT;czG3%9R0FtbdWB`(__0&~QvCdG{ z_PBMyBY>w`t9FB=Su66Oa>9CR8dgqPuThe5%DS@?fYa8%AdqxxLK9Rnth?qxCDWSB zgrh90Z9W{GvHnI=^I7Yforopd$_WD?$C^pU!g8&V7vLe!>h>Yr=3Aeq01K=OY1SyT z4$z*f$odbh9mUoU9idrb#a~v$8)xnK4mQiId>%B*t!Kve` zQEh#n`W-daGjzD+ob@DyTWgIw0dn4YUXQUlYqtWX>#d1-u-RY@@dwvv4eo>6CTrCj z;F_%qXqR=ty2lBZdC|I=-tbFSPilf(wq_*(*JAyl7l2l4`->oL)|pR0u2_pG0l8}Z ziIU)JR=Ej)cI!qJgdNt8f)T`Z>qGxij9-cdRa7!q{Ew0}qVdvu6AUEB)3z)aM$o+V{fBpf#@=WXM`a zJ=$UGP!2RltPkIVl~JpV4p)y^-=f;+xOMOaT-bf9$ElO3{+;UVbrOgwe}Q&IN83Y8O+(nq`k#n+c>3@F1AyYs<_(vXfANGy?hGZ z-EDu+j>yAymP(zTw&G#{ylgkA4(4r(rR2-Uw(=7=^0jT*i?MyS$QI!IY*w1c{A~?X zQ3|jnJOP`5HvYrlf@}ub1_s+!P!1hpdzq?Rp|;130PMFtpwfSst%}yo1GdmD;11e0 z%|IpGw#kAZB5Xrl;11b*9pNa_*7!bb9=2Vj%6gRTTRM~$ZTpJmtQebtHdL{;!0+Ha z&bD+M!Xq}B34nOp$9i~Auq~v0T%xVY8}OsHhGO_TX508YxFp;DwcwI%zfy}g#nw;N z`s21uN$`+rdz8AeX}0-vROy86DK^MS+qN8xow6;bLlviOeggoc+kT_N{~0#6Cv0Zg zetj1qW!XO73Dak6vs7F;YvWVfBip8YQl4mmu)^QUh0W!vW!;96|*r@*z^K9@qJ&E`2D;a;&Rw!y9>@TMxq)fZm9bA^3`7^wq zu`{=VJ8Ms_hGw??;{>SW*c+vQ=i2)%u$gDyd>v!?_MD{{E3hZfV^e5P;eiy{-=d?5 z#rD-v2)@LAAq}L|zWzAEEwf)4gi5(xe-|nh_UGudR;4}jZ>Ut+lcF(JZGY)e*sQVt z_!vB#vp3R>thFo05Yl=3%Tz$Av#(wU&3gL>bYQ!|F0X^>M!SIa+D-QVv2-0^S(e>j zc-2@UW#;NLtu)QiBPsJJjIsf2Q8wo*gbgXwY}#FJU)ideju7xJLu%{)>Be?H7Q+AH^EeoycF8D<_e zmd-L+(=b2Bw0{dSKc=r4h(EK18v5s%CbJPz0P_HKf-f*jseuy6Tuj>uLCk-t8VqKB z=K}K(=A9>q^CGjA66;XreKEK&=1ppAg)^@_gIxqOn9jIdVw!yhgGlB&AD~1rPtmEJ zXr_pMhZtrB6=Jc>zzWDNGo5Mg`U-Pe4V5_Ns0ilqOcUDeyvqEN68US)xKe;!XC9-2 zbqUN6S~nA!`)Q-&1~YjFWJ%0+N{N%1k***q%y*svI+gkDAK=oM1+>wBllcivR_V+u z=^z=*8*-pzGUr(#_$+2At()1*v~A#Wn2)Fxn9J-hf%z?_gAW|tW`01ERUY%xK9D=i z?`cCcpSgzzM|YXEGjR>~nCTjD1x#T$LMmjQe;b2E%%^go6f+ZON34W-_!=CQGN-8p zb)UJHQq(f0qzWnzn8(jRrJNZtne(Wuu3|o%1yarY=NG8dFpqu-SuOMM zMfj^@&e?z~s%KuK)uMqp?|X2K%;)#PH8IV8fl4!T<&WT6m_=;(d&t~N2~R8Y4G)ku zW)uB6kalJS4=NqZb@cgJC-Y+~*mW`M=D}?@GmW;UdYG5@VX&8Z<1kSAnD&9-9x)AF z!1XiF9D>~wW~4E^KV`0^e14GWF%B}s6PW5mq-9y|%1(<3Q|K8|bI9XC+Y2%7LXm02D{oDQfdNu|B5N$(dy*1Lwl}bt?jN zWrc(z7B|)im7VUawR8tPSc43pc(OvNE#k#`NjbDP%Z<7KKCE&HWWKCn>b{;~)zN0~ zSyps7RL-%M(`4nxV$j>@&(e?Dg#P2Y>Gx%B>pvRdh&Vi@Z|Gz`L7p42vvV3kvM@)Bz$m0po7F;xsvtm!)-(X32L zQDa!cgK!(mT0@Pj%dDJM3|?W`7Q!x$HIvHfcvdfENLN`wv^#!{HS{OIuCwNf;5~u$ zE)@rfti9(zZm?EY6|pAi?iRB?{t%>uRdE8Ol-1J#%?GUT zOxTsPidqm$1PpwMYG`A# zfyJP38(9yiZfs(SsE}@E&7t?bh1IQr!9&)^_1S!UY3$--#*q|Y8^jfoj(JEepUh{&jTzsQ^+2({#1i| z!kVCN{Zp2LdVqs0vt)2XEbk{U7-qRs(*2C}DV5bDtR!l;KWF_`1TxAhpnPeJl9ca#qXXEQ(ym9P1$AEH;ee@>m64|F$V(YT~E({*9E&8EZ z&OSu%Uj^H1Jv1xXZ##fgv6Zy0RI}?`VNk>VD+OFFJDC2WO&z|}qT z1J}i#|0AHg*+H~N)WbeRhoO4eF&=Q#$6iYH-y`;iKZEOM?^+6#0d^;KE+4c1odS8n z-cE_jQ}zVCPJ`@iPvLfmoe~5x%pTJK`Wd^M4vmbk8$JQpb9NwgtVh|3IB;X^5qc?K zu;1;DWKQ>G-qKJ zWVW1BH{r;Rv+g7=%%0;;DXIg9O?_cU4wE*OoH!O#B06&()783gn&{Y@D<`raGB-}m zS`4~#g1TYg!LgnJnJ4GKPjKYLNm&4yH)qunK>Kh?Tp&Bkd3P@~&vA^XA?(MwmI6(G zPB1kT&vTsTK_!4Qj?*-=E^xNcesLftnP!F{&g}<~1#@=R!ytrnj%J37oJe|aLpeWu zifaht#L#)EaL%$7fR5n&jP-2RCC*n?kVSG9*}x!*(=`V-E1I*h4E|y`JuQHaa;jkC@eDAzd*+6GMEBv2-h$SI(svo|>Z zvqxk}oO2hTlFYHRfJzFdcrON1IXofUrg7f1gzP3~6P0u6oQff+WN=pP2g&4=ZU#yg zCz|%yvpJ4b736R}r`bD~<3&mSEzT(IBi!a3q`pQT=iC<9-QnD$R63s%OB;W8Ij3l= z{T|1_2Bd(~OO3%oj-IyKi#VVB0#eKod<%mT&gx7!D&@EdF?gSI+ZX0#oX@CD@qqLF z6AYGfn6yV!!AYmCSS4p#5-s$-&ifnx|l1$2m!D*LqH79o#l> z(rE*skz*==W)o+aZb&od7In{CIA>TGe8?H*K&6$l>KAZroYdXm+Bxs%!MuaBl=huE zIR_|5>Ebk;2Xr?l^Abo8$88}DdO1v*3;H-7&EOt!UWP!kpL4<%g9DtFS1^Cfd2KHO ze8LGo1n*BdzAHcmIW7A!IK=VwgUT>x2IbJtIA*mlALTfQ;8MmoZl6Qt1!paFE58vh9B(_F<87}#>Z+XK#y zJ4D;*_FRumP;uaXwFQ^r$gMg76(??NBCf%iYa)S)3wH^f4{_zPX@}p9`+W?c-MLBB z`uE^^9R%me_4Y>)Ufg=>FL`sbX!qEMdy>NS<^Em>a)!H)mh!XQXzEy><1QM72S0AO z6Ab*hcPRNf&s{qob^+WkRzh}xyP3-WK<+!CfDYpBrJEJZ{b)M|L%0iefn4P7Jcb}b zxgCQ*3F9856B^;%V^pL?aFw*MU*gW8)<7gTm_G50;@+PIN;J2ga>W?##TppIatnS1 zxy%irrqdPf$j|T|$K8JgB%b>}8<=0^{^JXSYg{drtJk?1a%d)S_fP?l$jyC>!5iGO z+Yn0WdtL=DgX?7kN10p!7Y13} zVrsl(bJJe~$>AQLnJAZw<5_s)xEE;Ryv-FZ!X3=xVm`tf$6Zc)A^BYCUTEIsuKf~r z_qg?gxXc3XLF$wia_`VQU&L*H2jLcTM=04V;g-?bU&`&ag35jF2UJLxalcFf_kg=- zCQ!<`=NiCOaD!$7x{~YY4}Vo$`$?ErbKj%MzmDr&3Ryk(b~S;PZQS`(SG99{PeP@GE1^24lWRDR!7i@xYXIx! zdfEc4hwI!9m0s>Noo(vlo}|3s5!a3$w|?#pN>K;6^#X8@x#pIzd%`_SDb7=_jM~wI zTrG8mhPZKCAsgoQQ9Jq>H(>$5Mz|~J#NcyoH}&;Lxj+8`lripQ69n;sYq<&BICnYK z%rChc*T8&&yO^5xliWr0{!MW`>EPfrSNS$%ueb|ova;cI9D&MdUjALkY}Wu)EK@JPUSZJWEQ39`F+B6XbGU^LKDt!E4Ay zxRt!;)ViwT{gMlmYTjGdL27v3(@?49SyBE{$NP922J3klbh8?G#Z(nE@=7SjY~nHM zpxMlua~Y(Cca193hrGAxlwK=ukY2nt-lHqv+Icmukah6l!@+g(s*fVTE?&hIsC4sY zg~Pmu7exnmdwJgbAfHN<1n6g$k*&=o!7g=a!G!n^tdpr7+bX(1ZrSsely zeWSN>UQmAUZ`{RJ?0{-@L-@Zg_* z7cx)&j@JS0#SgGXWZwLPpF`%uKQ0CF<=gxZgJ<~u?*Qy9f5$Ke&+#K7K>YX>G;8?t z^A`Z+JpU*i6%62Stp^F>C+&fwVEzYUTv!NyWdSrV^3&)LPAGqb`dMN8qc)I*^Z!wS zMDWl34V6p$P$6Q8+Ka9?YB=B|K7)<1kKZm~?{3;G)N&NLQ;3%12;|N&_ zfBhIpDt}Epz|#0N)quXqXUd?G&UaXZ!3_RiwBeh{fA1l*9&!9TIp0C=7!3MtHe2_-IyESA@{O!kK(9Hjc z=G_*)mUi49^5+kOwDO&3)2xmE!)x%@&R5Z?_zwQO9E8-#|JD+2yZF~=)2y4nn3CBZ z{(MT8d-*-IX!P;3sUUvDUry_EKYzdxm;?L|sk{7`fAL*#Px#&pKtJW5FNC8({wYeq zhxjr7^-B1^)9dt%f7}RUgui7zpr7+M*#ml%pFz#{F@7KwnlJbqDwfCjo8JR@$M)R(%z=yiFc7m_yRkIh^SK^8s1mpdXISLf9 zAWnjBM=afmD=?rg_!)r>73XIKd+0$qC)h!?jGrKj%42^)p&8ts7d)n%C_oU|2692b z*C2>M!EvfSg9HaJ04!MGm?q9BDDXQ2WX7v^DtvvVK|7sL-j79seJR>Mnz zB?l2%q@ao3qbR|QPLOCp+Gaq<2uiQRE>^H=4h${}HfMpmA_x%!B~Gwy4Y+s#^DV@3 zRluN^>zbgC4fE@QSSl?O1fq+uOB6_$klhgMx(UrBLC>d9Nfvy!6|xk;YAP*L1-X-u zr3tD}0Q07x{e5^(7f9(1&k%g_-*>x$Y-+<~2_~tnoGtilDeQ6tG1Jh@74+_g?3SSP z5**zYxR(PuPhfrl{$_CDYW1umPx6$#pp0<&1) zbP`}Cg6))TmkJIJgWMN{O5vzXAWa5&AlPq#aLWa;!5|d^wgw(51#ekHRwc-uhNEgh zF!f?<1c&lLY6Z)`0!p1gO9e;0AcivI2EolQKpF+>=fiuGfJ>dPW`Xm4V73bUKfqv{ zVAur)?Sjn`a2n4%pqoyS_6mM@8~*wP2We07k>J_{ z%=-nQv=u!d*hbUnW5E{MFMcApLciEk!6gmIpx{k9a4{sX}y&!+)xFD!2bii1!%3($_jF6uHm3BOE& z%vt!HaugTgkurd}3O`K%n42(@vXognmU(@fUtE3o7S@ckBTcApCOyxC_ELlzasW z&(S;>B)nsc!C+xO71<#|%VB_B6yBxZFH|U`^e0ScP0M_^@N>!wB7{pD;pmd^WgHA5 zg@?VtMG1NI{zVHvpkgFOxM3A;R;+OEzfid>T)YnBnZDZfWJgxbOtbQ2xra%Sd#Fy21J%DJlzJ&6e0H@>{5km4ueY* zK7Iweo5Gj(;UQgU`92IXgqk;DkSQF>1xl9iyHv=sg@!GV62ySNKyP$UWhMp8#DT9GneVp|Bwgq)3=fEyQBsqnF@Hga<3(p;UN* zrr7(!$sTZJLgUAX?18YJ%8znkBJFZl2*3F69TUczfvXaF&_-Of@P#o*jj(VZ%xi@Q zXa%YhCQ~(7FHHCVT!U~;B7$fXwpio7Gzk}p;GtPK7K7khgv+S;_fR;{B)FM)e3ET`w?iO^scLV7AZN|V)~u$TTyz>v^j8wQ7k8hTTo2?eV`MuhL? z!qIc#0h*phg>QX`!7-sJt>`a=XDC@87gkeV@KP8`6X%5Rc?@Ke!dLXyYNvz)v^6y? z9EkQTqU>)Va}Z@M!jI!9vLNCl+DhLW zI*WFF251*iWi!BBMINazcM}y+QSUC&P~PexYE=WpQ?zp{?7T!jQm5Nn6isa{A5q&5 zsQ8K)R2ZER-HHG?E1De!m2;x#P7puQZpuphMJL^Xd0x~(&9MN{j6E>FAZoe>l|a#> zwcvt8+#B#7Eb_bzl@L+b7{D%y=1Ji_RJ5fPT$m`!4gM~PI%v6$6qThxGfH&-e?W;A zh0u}B7*WM>Ty3oA#eHy>MdNfSS42NhT^uJ`PLo``sBbmwu8Q8I!u^`)Pnzz3$kD%@|2ex`IXPZX;M<{eS+ zOOSlgdz2;I6&);rzk4EiAc80m#nJj#DC!)Ad6DS#6kJ2GsDe&_m57eo0jyNClFlIC z7wxGBS0>sJ3GRVtT@6UND6$ZwLUe>uu}V?-Y={rCtWRf|q+0(6b&-WteiMayWi zsuL}#0ZP57?jQJT5M9Xt*C?u>b+buyoK~)8Q39pQEuuGG2YDzOqb;;nk<16OHc=Ms z|Fw(swCCL+nsFC)ouZyGsC0=M{J?dKF7?2Bk7zz!d#^}y8X@(G1a~m_NVIz^H2X!Y zCU66yc{Eu)7CBL!^F*}F1Q-2O^!f#mK~dNDkPV591K?;_#6AkJXQJ1rU>p%e((3zM zw3v1WMn%OmLyw7SHbeG8G5_q2w&D{gANl_m~HYGY{1TrmZpziA{ z5udUW8}T*jd7Ktsp-RJ6Z0QY|ow#Q^I7hMTKTvTJdq_Z>#RuIGl8gB39|7$u?$txn zP5hf0#9f^F0la&NlNQ3xQ@o7&tzP1cOvt>&2kCM15tmZV=POQb1vw*j-Uhd4#XmP7 zz;j{;Iyd7d?xlO}FMg9+ALqqCQP(d(9CR1nFNjY_U>7L1bb?)wII9|V!Qxl+284*c zeuu$D@iMC4L&XxBO~b_fw9JQ#X9!^zA%1uavPa#`%QA1YVGb0c6LCk}H*Eb-zWs7AOdW>O)2P25c#*6ZTMRHr70D`?$J z6#q*JI{~Ag748_Q6A{*lHMrQEKkm!0*m@k?Gw~rxCr8AGX}W(dKD8cXRP5dcGA7ni3im=> zLj~%%IK&gT?xnbO72HmU9jMHm6zl1Wjw$gN^%(= z$q_2}?IiQY!P!gnO91U4*-;A=N6EUAkU2?aP>t>^5zzAKBKeBC=dKbzJ_g++^>k*z zU2^F*g7=WD$$`12#B3)Vc}Z%Y!N6M*N2g4DBr-~{d?gA0bw?y+^a!7oJfO_+oFswH zar#LvzK$ULCC|)3&P%TQKo%eoTmL6Fl3cKXL8PR10S2Qa2fjc^(UKy{y<;R-seKwN ziTxhjWeJ1&`d1{;OJNWvS+NMRc*%NdGhLO~DB$m!WFFn}>k=tVRtb{deuP1yB;O7O zHzdY%a3V?4KpXGLk~z&FDU!xPsH933Q>m9GSuR3IHzj|pL)7V#o7A()knHw_N~UC# za)vBPcM7;{$>PV5ThF zA-P25N2P>8UzS!$Hva&B)sj23nO`G0Lzhx3xg7?BItg0~^Loj*Kfmy-D7kWEN<)DoJM2wEVUlKgH8N7ItnG00v?j!+qIBMlgV?6j0g>!z)A zKQ*%Kr1vSgw3o8y!oWdV-3|js>8}>>?j$Xt#-Ouw^+ssANLwxg#Z?+6gUn4jhstVq z>7rr~59w<9|H1K;8c|v8CH;xEioB%;190Rc4Veatuk`B+Ksh4~c@wg;(!NaqJ12Ff z`qodn@EkDxr6XxjIWIl-6m|hp%Xh(Dkp3GD4}sFOr657lO%m7zOP?FSAVm7>4M1O% zo};8KR64d3Buu*L2x1AB&ZCx4g!Eu83@%CI`~VgyjXw@9O1g<^u4rjEZ2-kchql5X zR=VyD$l|1BRJF!S576DcDvhRE^qO>iEzGY=Kfi^@5~NA=+a^jQbHLq@3L`<1qzRP8 zCQHX|!XQP;qGm^`^g3F1Cw;FC+#TsA>U-x)3syqquGA$Q{_aV;)&Z8 zLRv*tNTt-4CaWqbcMAfnmY%u*l^W?x+A6A*en&}0o%FZAp;9khBLrrHbk=^z8l~H* zk<}z!v%{GWqb}*| zv@CT?f1up7M>?_vvR>((SX^|UwB-l}A4$L33eA407d5#Cq;C$v(PQbabZ+~JR8IZt zr_v5{aD&p~H{fqb`W7Ai8kTxeee_Ja?*I%&qz1oY@VV48516CUH#D#tlSa`OsV}7B zDRAS`Pbi;wDgB@WC=*f#YLrh()!)K=N*YHQ(zNuX9WY->%_xz#k%^@kJS}@L7k0L? z_0-6+lNHv%z+Sfa3^)fFgDOQwS<}xLbdsHj0dban7zuM1*%8{Pa+S@w3rB9UDmqZ& zDf{DB5HDE_b?Cfho{b;w$^R7Mf>d4KKi*m0jEjuyZnx`3T8RX8t9Jzbu%} zC7hS7S_G5;S?NKTUy#|*DjFy=-UPcKnfL>cU|AGZ-XStWY9wEj+5U-336=fu4oH}6 zUI9?TWyeB5B4oz%0DVc;M3r!)tY9k)qGZ2LVK7>@%pV3ZGVdX9u`w%0xb5^;`HyxN2 zG6sE}P$@h59So{udNpL#vPdecYh?BR!(gq9{R${`vOg&au9uZ0!Fz+O@neui*;48d zG|B#=u2{1y#2AAuvOqfH@=*4SCiqs_d!K@|$xbN|V7tti+HV~)-Uirp$~e@^>yk++ z$?uk3roHPPncEDIURfixI{Re5(6jqU#-YryUlyGJZa~)XJIG^Mrxqa%$_~*^=#Xsp zB*?JrWBNk-naq;~wKshbHY6#9&p8XAEcJdX}p|h87+5wq^ z{M-hhILZf>fH=u*vf#*Bp2$OhF7l=@aISJIn*815XV-#rmnWpd&O@H~8^Ao}x6Bc| zm%Q>Yh_`(G3S6d-{O54UeC2y+MmZxt&V~6|`JsKVJ15^70!M!G&uK;QmphGuJ1_r@ z4rT?&E8P*<1$pvHkU%+m0whT8Oa{U78=K%gM857I1~1C%lrRXD8ytWvOdg;Ibh!NP zW89ty`2>~Ym*gq5_Yx_eeuY?~L%iIU{(lv&%8yd=d`)hc0)y-Fokk!D@@d+lNR+SC0{VvBc@6B6hh%vV z6}Bnz-SncT%0HylK21L35@a{!DgJPjE?;y71{v~!B9Kh^?Ld$$x!^VovgMn;hGvfZ zk0Nln@*VW9+>+bUUkJJ_x9b6yC(n-o${qQFbU^3JpBp2VyK;M)jPJ?2hhSGA|B*7X zLb=~wTy2qjb||=FIfJ?!CGx8a!IjEQDxi5^{&^orncSoRvI_Z_Jy0s;>u4vtO0NG2 zgVpklG(ptJvnd^^mA^}W1))yvyB%D;JfsI)gM6PYFdOBL8eB?~eDXOko8^lR0<1-T zTZjN3%Kc~`s8znY94c+{74)LF%a1Gv*CF5cF~B^H%lF=c!4tV`2K+sh2XH_J<*P&CVMy+? z9Ne({tzV(?O#b*Ecps5(r-}2q+?RR~qw;0+nZTHQ>@F~0$ahn+FfLy;0Pdyybx)X2 z$gQZAG%5F3hLEP@2WhWhTJCTP!M~E~@= zBL~GiO4=M15wy@cDc+}w$XW3oEp9FfeKgEn6&>^jxG9Dxn{ik0scGn;i2odJJr%ap zb?{PL8iRqiqKK+UAH_@sG<_8jbcpJVLP-6kvx?Y8kaLPc7hJTTB7y^%zrvN4p7V;~ zJs1p7SWyq+g5m&msR9);+MWqgMESx)u%eB+=OK#YDIgaWJ82mVRpbr=B}}og4(8#C zidGmzC<>Ot(IrJbZ6`!3GU?}!Qat|x(9w!lbhBat9YXeNu zb762>F~a~PPw~@QT*Dnj4in+#D^Ad!)Lli{Qb6BR%(??vf#Mb|ONELBUGPw(xJ-3_ zv7(VuhZ05HC`hTIh_ayjid9rBmnjxfi}ZnFxjndY#psWaRVcPkK(kW8pjxI%@x?~S zsui8@BeELB?X7^WRlG*|OPyjp&HD9<{eMHHLGczXS&a%W8*ojEo+!wg6~;-hYf%K! z?(sv#`8<$T#l~WIXj8OkK-v|CT`=fSY@;ZCo`BSkh%R{e^r)C3w(Y_$gTW5t1;KzX7#L1pJtMa~;A7*zECmq#jGFM%6Y zoGgaQGlh;$A&w~irPt!QVlfqWql(RR%wSB>Nj;qxief5h#uY~=AbY7Odma8J6fQ-O zO)B!%AnGYaqZlgFieifTl_J3gG8?7QE_gVt40s*Twn`cOoo+kjr>9|VuT<0VW(Q^a zLxk(7{3a3RPRiel!8t2i;^D|e`J@u&uF53J3*3}f=s3K)GD(C%59LyKsCX)aXnyfh zTGG$&t&FD{$VYjfR!U#x=VE}JQBJ%IJ3nO<51hX;fZm7m%B(sV1SmgTi*PR}N9bJ% zR7OOB1SvmU3KFagqHkhClq;!JxTrLF13`o;!y*A4ru2OPuyAGZBnBgtgV{j2q}+E4 zgOSQXDjcGet+a_8t^7&|E=IYXwr*mTUPnPLD`!*Yctu(AHo)SP#?*O^SKg&+>8kS5 zd2rX1v*;#YSMK2hIzbue1n5L%8T~DV8_FBOP)Snm_5w*(e%l9; zJ^@ON(!mbqwaN*aL+X@!=tZwrhKIqtLD|9pSfet35Tr@Dcs*pz%2c|P7UdP1tR5;Y zsqNaTtfQ2%P5Ca7cIDsZARS5vdRID?Ez~XSQuc?!yj%I@Y{+_)>uK`nRmyKerBAtI zF=UUF3<(_dD|i15l>ue+9jH83delMoL|OXZ4uEo&7_vd-Wm`tqu=t;I!9VeNc>X%+zt-Y#?auf$u z6&==dR24*kIIEs;SKNQmy_Cn%=5&RMPmU z_-z>URZSg3WM@?Il^|zTMwa*i&Z$o6!1<|$;t;OCY6%a6=T*Z1sAT`aU5KP>JU9dmsF>} zLx7R0Z@fXGRFR*-JX$5|z%|6E0;#bStMa3Q>auF~pRl{4dMSlwoXU)H{cEZM>g8Qm zEsTI>g6enrITBS0>e}8=E%$<5lB(%1aLK9=R~V$IPHcohs;ZP$nKacC>RsGay+h5$ zbk(urkY%V2S70zx^$(q9%2FwPftjt+O+%KW`s_8><*KGBpU6{frAqjYs-J~R$yYf( zfrq=Q@;Q**Q*EUqM+K@0*`BA%K;r`0oL%RP`>UaQ9WBPeIC5 zwx{6lfokDfAmysKXCM`-sP_O?iTeWcD%EZ}CRwe@Cd?X@|6{nVReeaOdFxawOrTP) z+D&t0gDR;8n9ZuhK{#qrDSm^>L)Bt4kakrYt&|?Tz+jX|bVYYu`; zs}}tW%~z^#`{BVx9rixJPOB%r1d6TN;}Fd4)b17t&|bZeQYr`ap=8J$)h!FaIjKLT z)6vfAz$}2dsMov#n5){w0sh?7qHVBqS3fj_%tQT@W+_i~1~s|7)PCP!&|4in6PiBi z-v=S{ReQaIAkL^$m%;9=`qK}=ol`IU2mbujZL~i4tKSL+cU~=}>^?xfXbOWD)D|pg z2C4lJ3jt=RT5<*6!_>)?GlZ+fy%>y88&au$No_z~ z)M)h|#xRdjH!>lMRX;X??6P{|DF&~oXC%WsPVGdGM!eeK0AyFyT~uORQ|D9PG(p|% z1(ihgl@Gz)Q1_j~^(Cp-oCir(J5a@*qW;_svQ)Ky2)H!0ITLZ-RIi}KEM2{wo{$W6 zKONr5R3D`cgeY4ihiSf^IxvTD_HRqoC&6`ju zQ1g>O3e|5LA>1PM6y;0B>MmLeO4MIa*;%UQd=J@u^<^i-Ql@rnh4}+@bv9JW)eV0@ zR-rEEf~!9-R*#y1Yf-;Ly8{o^pV3xBt9riypxe|unm^msU3TC))wS-Bb*bN<2hDEv zkJReyQ`c^R?2&qtKcM^7MVCMZ)IU%k<*_=3){ZCY^K^o5Nd2S@WLQ0mri*9l3aV2_ z)n^P5?wDGTfgoO}-=jwPxcc>8V7^p;v=b^5>RKJHZ&Ka+Kgg!kJbJRG)lJkNe5JOg zg4jm0dlk%2YqTLyvDI|5;K5GgN4-OP&F7RJIA|{D;oVWQVg}5eH05p}&KlnZfOgRg zJ%h|ulOP6|o5p1$z}z*TRKU(d^B^6Zr>3MHoR?-G1uEVeBg%AqG}TvN?yEUKTMcJ4 zAJJ2ORuf1csh`uR=#L%wX*N@8>#zB71-SE?X{z`FG@*2k<$|U*9B~F}UZYl7kmmad zs03?fCL)#)%}NF|FKXJNF&M59(^g7^=BMYdyQG`Gzc&lrCBx`D$$w}I?@=U znWQWsR&#+5&C8m{-+^4wNU4Pwr&)6qj^Z_Y=^*A+&8(Xs*EHepVeq;}N0~r^rne85 zlBg+Z2g(hN(P7vnY5ZvkN!EmXg~1d}gca;kHCeRXm8LmDtISPJ&U>)S)Hu;^l%@G% z2%6cN|4{~?qiLrjGP#;~BMjcs=--3NZOt|6C+BH~s9$hLBWlK_+|xXvvlRszqsuTT z)Vxm}tP0H%2K-fOzMTYDrTKauP^vZMbR%mt#sP3!tGT-ax4cfXp%h^Cn&CtYHfXXb z?`hQ7JcW6aCWof`X3bVQE!m>EdKX|1H4)wL*Qzn6AE!;TfL7mjO&xvM*r7Szj=@gN z3OakxrFr-TNVmp#Kfro4EmTePYChZvM|~Orm6ne*o=Y*4QLFT93OtZJY)}$WfytXwCvH)#-8ps9h#UR)P zY8O*uH%Oa9TfD*A@&j-bqCG>0DlTgIwD5&$UFe2{Y5$3ZO1RdV-pvT@Bbv4^X$L6R zkJQF8!9{69DSeIB+ROqYMdo$Q^W`&S=%1~%oJ@h)lR9}BzmCJw7<}9^-XP~6kNJ? zdoD08nSk+;177{(0=a$u2XxN4)u0v zn^r)xTYEwU%^od>cFTIT+wNnqPn#bI@<=Oe*?@>_l#yKCtcP6WX`%b3ULQrbp_E-ann7gLepLM_5VOTbc?C&!b6e^wn1vOh5k_UBqwDJgXCIK`iHV!M8#DbRJZ)`RjJg1N3>_ z$pAPC(5;z-?1C=j7svv2w<%!_(s|S%mW#Unk3m9p4Yai%rt2z%+i=}iw3tTd9I2|i zr2DcPBvNN+1oJ4}Nh%Jab-SD~7^6Ezotju((PenJtb4E=gK@fhF(C1}!yiENs?PCa z*j>|&^+M&k?k4ShCh8tHL*<6fx&|ak7oQE1tV^W{FhyrbU8+=F&KYQ?>2^}{@21XX zDP-xof?$vgoi!DVnYuoI$g*_7pMqrT3U6aDN4N5KaJf2@voOD<%iWG3ZtMP?56nE> zGnxeM=$_II$=5|p0_?6Xjsul@y3e~{UZAsDhQUIe`*x5bT~G@&i*>f=U|ynYr(Qyp zPFaM(Y8|^2U^Tju9k8p_#je4RQ>Xih1+aRZnFQvIx?DdPH0jQKhFj3Av!ybyMc4Nw z>>lc(a-q_yC%L_lxf|^bPHbTiarCe(Jy@qk)75jr$EJ4Fa8>woj%M3 zoW1_nH^DjR8FXJ9^*vM&JL$DFc{uC&5g=}Q9?g;N`j^uH^U$+PpyH{YLx+>R^cl2` zc43RIit@c4`=nteF*8C{yODSe)_>&IP%vI&Bow)eZ_KM2IxPd zrqczz4V{|_)Mtr7g7iOS!#r4jeFY3c^o$44yr_Rnz28v1BPH@-`WQNq6|Oh<3M4`w z7J37j|AFqG(Eo9gA+h{K` zL2sUh!9@M13xIM%zwi*aBz+>~w8{DxRQ{*x51N9c=|7-!zt zWa^!QAuq1EYLgCzHhN!N)KO&ent&srTV2*R8;8O^I%Y^pJxJEMKhj$mUev!oowvT zI~)P&)Xy!4U6+0b9i8pgJ5%D>qyKdo$Rj=f9tQjM+vz0wfd0@Ai0rXmO$*Tzy+bQ7 zpXyi9lsBx;;=tgU{+EB@eMG;AdI`_W`m=%9#ELr5rEy5%fe(=;uzsU{YU6 ztIU-CXL|dm^+We?VXyQve+Fl3wTcpQJFCiZ5PPdqn$jJt@)v@0wEB*|V{o#{q;%5N z>XSUg>1K6-ULbd?sqbL!VO7Y6rl(b=DL5~y6gwD%TFnZAL4?)A&moJna-^M+Xe$Mk zh?lK)B|$UZ>J{}=6Ro1?-OR8Wqt5_uTY1lbdA?OFRf7dqO>3c9Vl}b`Zp*BWQq5dp zC2xYP*6M62WX)Dp1oqHs`8o`CSxuV*v)_vI0)su7g3b^;%DGCDwiPxp%4cfE>5{ zzIEewFetNLvl8Ti^>6tg<<`9ls8m=djDoAQHmBLG%DSWzgVolVPJphlmQp!hYb~aw zyw19}9fS4OCu!nrurAL9bc^-YM;Lr)En_3M6*8^;&v*9$Q~K zG7}X43o|%x0Fq!}MIE3U2KO?cmTVBy43cW#>I2-H21}Zul3_4PCj+w#7MFp`G1$Ko zDtQLGKf@K57<|-?!D@rf3UDn3epGGr7-TNRk1%M^{`UVnd#i(v>%4d74aE0;=K}~= zbd+Ia_I65_B7H3Bc{BilTamm~BHZGgrRskHr zR(ddnYpJ&)I&}@2;@2q+kbF=3Skm7f_Q$L`(8}#mkosU6>CG5Hk#FWI37{qWvMh$wN!Thvg)lGoe z8Zt}Z)ZLKP2I67(;sX#*LuE2By$q+QZ1y%h?+r&jhJFh%=xf*`0m>Oehk1~lHC#_^ zq$I;pdVG@&gJ!~QilO!^K&Kko(=wN4_{O`C-89^L1qSJcU(=$OVR$DVV3~$%Q$ex} ze~yJL+c1j(%^X9W3ovsHvmU_FEyEg0yz&g+poi{`;dN?Z=Nk^hK{JnG^ENc^FuLXd zC7)4E`NCaBD;=S@$Jp~1>67Mn*njDPr)K0JE4e_XD7mFq{*?l`{Iwpn0D$ zpN{yHF(msz9x#4i0F-jZAL+2GVEhyZQpu>^2w4?l(gCEJv40z&YZytVaYeNZcbfm} z7$elmtY@sFFQOY5?l+*)#JGybdR7ag{xJq0GR6`RXDeg>0R+*;aFM`KJ7e=A$T}E2 zCm3`x&OC=f7o(Aqk8Z{n)QIb0Ox}fNFJp=xlRkzY^*0|ePMX1>pW%N8g9D5_swW>a zYN;>tgwaZG_EQEU6=aa{EiKMNjBE774Kqw=!GFg1l5&?3Mmfzp&l#bVtd24iRA`Mc zMrb;J!SIzqWt`!@3D7SYO4`PpU<6Y0a+2Y11?VY;8%-$Fj2W-P;1%O;Dma^&zwLk{ z+?xOp+nGO6x6E#4^jF~QXAX72gTqWqC5Yq9dz61U%`CD3ah~}#{hBT_e{KMAo%zns zh|Fzf4jq>9o@ss!20k;7iE$~VGrd}Yd4Fc~*T5{B85afa!OZtxgJ${6OzNFg%q*nk zzjEfA)b*;Gd29w$s%OU1i}_$yDIKpUpS8&i<`uJis35GI6-Uj5=2^eaLo6+`Uc7*2 z_bfgw7(KJz8G*UWY@eSIgzM~KsxsVW3+d2q@a!QI42I0!y$=S=sFnspbC2-q3 zd&}z}EwiUigFKwQjQYi`vo~gfw9W3K&QJU7?|%h!$Ltku80?(AJOx2?&2FRVx@UGb z)swxm4?AP9Z}!*U;o2X~Ufck%{@K$pkPXcK^E5Oc&+e6jJei$FC*N$1zM?e6&S=3x z5PPF9s6cZt61G6a(MX;Nb0?z#TD6>wUYw%~GqR;*+}+6W2sjU;0=h6yqmD!H;AQm2 z7T9?kF({w)F*-2=<`<0CQ->GNKAA*=Xbl%u|ex{s59{^xY81O(V7wP|}SI&7qlL^bb9|nMTqR z@SbawOkb!6sE;N0O zt!QdKW4wU+YSG4SwC-mayZ=||8pm~m%Q4hjfonCcp>}$^@mo}Obr}En z4`iLj*J!J<%h;YO$ZlgdI!4!PeA*h}_8AKX!96nmwH!C3-?)y6!NnqQ(!#*G0MZ4yRbqsEvh zNF%1$ zy8=gLCPh?{KQIZUFUfjMM#n+=OvX9^)^Bq7bC3a(_i4p@Y~rvQ=1)v?xfpzE;?)Yf zL6iOaK!!}dP(U_p;&lL;&rAyK;BUmFLIus|Cf5!jz)_R8X}f34#Hs{tUzn(jpfYaa zc@YLLO`JVpK4Egq11ggy85G2n$=TPTGHo)On(MDjf*2q+rY_+ir%g94f{LxFd@k(l zOznFxXm1)tMXiHr@^_FqnJ(N5&e?QoAy8aQ|DuzGuBP%2;N8tMl6KqOO}}(QfF7nB z3o+=9snMI@&X{7^MCM@{Pu-n!rqTV7`I&Y+#EtYfO{7yD z=S}%#a2sGMr<--bbl(p!2sHJzf`=f}TeNNlo6hxsU5Kd-{n4z8ronWKHPp19a=tKA zQ}P#Xy6zY}6q(+pesQtsJ0n1;G(Ajzs;0`+P=LW|(^yLw)R-QjvvqZ*DLn|V-ZWnV z^G4IP$q1>*bcY#8v+4E4P-!u>r1`Ve^yng>w3)7^-cq~i7e_%lOczky+huy3ngl(j zHXk7PUehCVBI23p-(rvv)7#r18#P@|lj@kMcL-EonWoczl(SjvfBB%<7qqqJYWC)r zFmN+#q}HOlS?Ffid6=0LVbIg8bO#K)%s!;vwYQm7J&2Fl%MBO|G~@3E2{LOL1az>O z>s~ktG3%*@-9@vPw8I^07DPMoVP-?O5OuiOXE7v-(3Yh&DS% z>t>8u$O34_n%Vph+-0+OeIUDHmN^EnIJ04Qka#l&HFB<+y{&@Eb+a%9P!i03p$1o? znfKe^ZkWAP!Y;||$vS|gn2o66FU@SzDwwC6&7f9ohMBt;R5H!ZtcFUq8K)E1kZX2~ zij3Q4yC)#aGqVi=cgO4;eT972jF|+@0<-uRFn?fnaW=RLvrCi`SDKmr1?VcXoB6P- zHv5HMnHn?AQ-oA&_HQ;wy;-vxP}4;CDxrQ16LFT9C!F#ZI6rC6kF;9F0ab7gfdkR^MdCFY=?HlItAK#F8a*@Ui*)tr&b_ZYzN1Q}bD8 zF*so#!H=9eV6hF9i2UxBlk>%1HOPS5?}IaKWCo}dog(A*E}L5An9 zp72BqMJQ!DE*5F@Q@L71W@6CI;-fHl zaJTUP75+Rdq&%2=S}d1A=5H}v3xkUm>@kEJYO$R5Qo}4*A3`(S;`diTNw%1zEzT4R z2g;>VE%cOi9$2VWhHqQZPfC)V<8=fO1{O;Fbv+chccvG}$CaXz#d`U3{77F}-ZIrdn5vm251TGa0W_sHTyTHN|A0{;aWu-Hp$&SQ(7aQJ&- z!KM}Vsl}maU=CXROlKp9EDVPr8@A}J0Ln9qRgORzv52Q;_j8LXI^{cRkv4+CvH#=l zy#u1WwtiurHX}`)FnyRfm}taGv&KeMREiY4j)0@3#gpn&Ub5ec$i?aqmsYtXX~S{p`B-ekL`iJV)^FYX0Uz4W;IqA`m~+ zjJ*ot$C_6@0eq@C`4WhqYi^}WQeSJn=mbYoCH+qWOp`RFT+Vcf6U`PgBs*e2oGF=g z5MY+%Q&WT+DKSlizuA)Fv%sPxOXDCpSMu2xHlrmbBpD-7eue2+iGN!V<0MIRYh|8f z&vEF@m#ngb!UD;AYJ&?UWz;PeNfJ{avRERwfXEVwViK^WlC_kBUM4ZB2jX%`3AKVeKX>(B}t$OI$Pp0 z48((y=H1{SM>3nTCnWusz*xTI4@$$Il$4!@+tZRRV?aD3`C0>5fkfB=(}fb_QkXs~nM7;obCT1k zP(Lq`Ereu|B=uJWaY6F?d6>Q^`8ojLlEjme@|Pv1mw{c8^rOA+RY?fVo5d0n%9fQ# zo;tz94T+Mfpj5Kw7Z|%K>6Z)QEy;LVOWl@uv9NMSQs9Lk9!Y+i24cD7-56kxC9M@O z{Y28^7>Lg#PlkZ_TvDAjs4pbVXp!+!VqXGduOzY5WnN1b(pdLKGM=t1zLm7<4)9L$ z@-)1^m*i4n;)7&}6xc_}?e4I-&?50EtSq*07y?I2Eh6iIx7@-u4#rkmT&2N(wZ-7N zAg;A2rajPli|afjH(L}J!PsGoBlLECfrUkN@Cq#~ji?4KtgV2Zv-pJ`$9ao}YhkR& zqOAy^#KMf$JvS^eC`)?N!fFew+_e~=fmq5cZf^s)XHgUZ$@>=VeuMf03zY`MhZe)= zK#wFo+aMz1~9Pg7juB5HCs> z4g~R%RM8(+E=$)^54a|+LH@2wzf$!SOXto+oF!6YY9TkIlNLd*RGPmC3OA*r&VYDJ zx}FCA+tPD%$XF&-90T!z^tLqud?@`yQ^6zYEb7JO(nz{V_*fdY3A`uLL6i@EDm_Iu zpGjvlhsb;B-VFHrAZx!mH9jc zwoLZL0dAMe+;79?3YqITfR(a5%3iOMEou$D)iT)@U~6O+)X~?<4!wrWb+Ws({a7zs z5(jL9EKLk-qpXb9t(#<%#IUkiw*EFeY>^G`11v!{lLn8iviZ|d+HJCelaNf51%Cuc zlBLs5Dp^*uJFxAtS~kFT$Q%X$+bQ#-VJ$_ri#pye*}Jvyw_7%elCY_=E$2bpBTJ@a z>Rwrco#3U(ex*HZx~zmIn+(~x^#J>18G+zs${eZx?UyBcLgavKWeNh!lC@n1W7)D@ zl!!bkOIQltFZfHr4L1;F zW;9b4$W|tSSSY*y8$`~^2GRAqbFya-pm$y-nvD__$u82m=YniIB}^~MQYiU;Nw$>6 zg3Ge`bhvdzww?yZtFm2m&T&l^<^t@xOrWK0u}q{#EG05|A7D3RYbc*pDifTbep7Z% z2FY8pYcU|+mJPK-iSEcYd&0_H+2QukE0c*S-F{ET%K`4oBIw@o16gZl@E*!M=m9*E ztxW*0Tz2Uyj6If>p96Rzn?gPAsciUKfM>FHx8eP{tR}V37qUZ+054^=C?oMowrdR( zUdv{ugZM^vj}q)}W#^^zmGDW&SXBxuF%Z}(u(Q{|IP!J8(xrDXVY`6Fkj&yb&p0&k}LkDUOs#L!`VxUx>_>Pi_tn zC4W5+ygBj~>%f~U|AjV9(ego*D2S2wYYUsPa@l0~i<6tDKw+L-^aZ^6@_-eHbAddS zvW)TaUb{hDD8G^d^+obG^g7LA`Fsz6CGtMEp|@0i|1rW{CTHnMFPGn-)4mn*;|hS4 zay?z!TO}Vz%dOS&YGVM_$ai#x+qH7nZot;b`{ly)dilXsFt$OSM2p0Ya;-T;Hpxe> zfXHTfbQ5^kA|E^ek_mE~hX7mUx0b@gHu=shR7j$Hb0c_9k{_WQb+VkL%))m0AJqSL z$XkX%eWyH(lEo?VKMz2CmwW>y>UPT$>BuQn-jS+jk39StyziA?*$6C6UPNIL%2G*lMK&1vvBD{meMa87Pf1H|+4rIa)*lHa9Y z;=Lem9}jR*{!2T6OY)pWFnw9RkJ6G?!E&4K8Us-*X2gNQ4_`Tb995W zL>_kp#%{=`w*;?L&d^@;ro7`kfLn6BJBt1%x9AGVJM!+e;r*^$Iupb)d0HCu?#Y)9 zfQS3?GRlcRkPn#+k%#hEG#fsWC(tXgtk$cnf{Ha_@N#X*zoUKXXZZlSUjIe@Kn2rZ<&8GN(Nx6-x^OT}QDO>_>550qfXz@G^M(3M zMNLWt&QeTx1!AP4uNSb{ilH<@M=6#vz~(4A%m$dN*mn|+q7}>N_d#M5sbv7MifGD5 z#wjN62R2VpI2$(SD;9kQSfCh9#}M%fmR@yRsQ9HTBo`^1XFb&3SPj&R)smOg0?9_XuwTWlu)uGNl`+lmdT1t+D~s+#L{|jhhh_*TklkS%7A)` z;t8F^>{3{-0JdA9qNr09o*L-wQLOp}yuFIBx~RG|1)~5jUD1|S@EM9yN`&lF-17!6 zQ?cz5{OwoNrM%k#MYRJUW+{d!A(E|_90a|Cis$oTEJtyfy5S*(8x8Qeiq^D2J*+tK zCq#}Yx*r5~RB?>%#2!;9XdjTL*g6)xcQU{g#Ubj&R~5Gkpm$9n@&*7fTxNU?g;*w;)Wyio+~!iMi4I)=lcSCsaR_d zf3Fnpoq8a)82T z#SvNoeo+L{1^%y!`h_q(RXOGvB&R8*v|5|4yiQr$8A{iqz-B7Pv+y@ddBO`eBb9dt zz|m}FI?XFl%78xr<|ya&g0Z>EGJ5>cN_%=LG0L1%0I|xB^e%dw^5Ge%&r>ex4B~vH zFC8W>P!8S?EMDnC_p%o%XVdZ1B4y;C;4N0_w!`fbrHnRyOO*%9A+k()@+>?oS8}Hz zvO<}f4s4}zq60)$DfhI7$ZDmA(x7XUt7zrFRyoKXR@Ny)E`hgRxnUJbyFocC3VIur zJ?P@cCS_lmXg4d(>jG?1+R)}8LAi!5t8G+pbCNT}~rt}z3aqU=8krgtgr$HMJy zX=+VZHW-e`GL%mOfbCOWmO>#@soVvH{mPQI;2lujr_@fC^0!IAvX#Nz01hg*)2UvL zvSTQ09#Vci2lZT~@pP2ou<|d;G9FRRqrm5PbsI+9i7w4H`HOzC_N~_P@wEcQ5P!D-UW76xq>!Z=afrmadKWc zxCmI0vaK6<7nG9EFm_Q{Hy+@U^3@9PE-TFyz^*7?(Zc$wvcoG7uPNmn0j?{rw?>^6 zE8ElEgA!%uHUKx2tM`Ies=P_<<)(5>6PUiG^s|QgZKdsH5br22_W<#(awqK=%9Pdi z0lTN1NlSqH%7_cV9w<%7%0uO@*0A|VxhMyZ$pwoX-K2b=3veg{C@ zpc>N#&vv6KiBg@LRBac5w^_BRCe*j65={_Nf~uAoyl+)G`T*Oey7d&iM3ptAfRj}D z9ifn{s$&n49jZv`(>qmX9s^5JEvB=&T`Hy}M0TtCD500CYDs4=dsI87L1eFLJT2tY zR51qu(p81)p^%{(QwP{SRR--)GF8WErMh30c@n$>suc~v%Tmo35OuaHo$k0CRF%iU zW{&C%J)A?TIU>ZFtD4pa;IOJ)JBS=n)%XkH9#zeyw`z{5-nN42Jk>S2Eq`2<@etsI zD*rVU@>Q)aL*b;VZ81EYQvLoF3a3@GC_#HhRYEr&3smx6@K>lhkq_Qk)!qrf&Zz=K z@NiyrY749ssWheVa6uJHXOS0G!}>zxlFE~I-j`KhX`H{J$}vGvuBsjngq3Tmvn@cp zuIgqCkz$og7wDC!?j-=+P;Ih-WT~pnPI$kmx>pUxZmEvbtbJRxA`)@lQAN>1y{o!J zr;lZ-N0ipOr@CqdWA{~KYJm4Z<*Nhnp-PYfJW_qE1-Ip@PxQnds~(iY*b`M}nkk>E zMty+ZGu7iY5P7chUI*d})j+!U^iq{igU2h?B^p>>t2WW;{~J||JHT6&^?4BAsjAaJ z{a!VnRu>;s7If3~qiV-Qc=)7Jz5wyF>V^`gzo^DY!27BiJPu&0`mPg-GEH6U7I@Ru ztrJ0K zHH>Xj2mS?xM0F>686-))h1P?~>eBw;ZC7vn3@ba-ir*o!Q|&_;!4$PXrgy0w8^Y~w zwS>mHRP{&>*dDbe0g`*wmkvNAO`Y2e#?sYkA3)4dPomSSeQKF6yl1LU(2ErN)k!NM zazNc`7CJR)qP9AJF6~l4{%OB zfHENG)%`vI6sZ?kLga$_J>4q1sD43jh+I-H-3#Jn^^Q{zxuVwmh2XELlV}fgU7cEv zAd1z$>rf#j>Sl7-yrI6m0K`)DwvG_Fsa_wA0B@R;*H>7H6jXA}3;edbD6^d75U(1zoQy4@SNeWo_= z2k=~NON+f1>OU3(yi{+!kKkXaCsHoxwfYq;C*PNm6td8Zy`1n^$%PU(~n z>M_B95H6JMJ9<8yb#Al4=DRq)q zjiMH?IE^n0zqXp|i&1f+wo#LAhFCUfFcTOFn>BUlj_nqWIlVQTpt(d>8n0F+$CPNz z(#)l`aJHuWC5Q(#7srE`qq%Yul7}=B+7abyoZ>({ta%#+D@Qc(bkKNIlid|%IHvhX zzX_11xql5-j%zyXMl2^ZM@^xSulbX5%_lV-o5IQ|jd3&-PHO~GIHPGc2?_-ozn4%b z)YPYq`&msQjnL;bU+KcddCj8V;HXH`A_tNeG*2$T%0*4ue5ha2Y#xXJFKbM0LE(z# zKCKz9Y7*B#@|tF<7{u$E&|$!eHAQLQm1u0}q2AE6;DMEDX1PJ+re@*>xV@zjbw^~k zHQF8!NwRGC1tQ6oxq|_ASQgR(GR1ONJA|~$a;XCpc3Vc$-SSjRljR`pv0UVfIMXa! z%3w3YGMLu$`z-6O1-9REJDtQFu*{+jPL|~cQ}D7az3W2npyfLY7|XF#OaM4!SxhC$ zwH(j^yu+5mRzu;aCGav!HO<(!V>bT(KGSh-~iZJi%mI<$uR6HDu4NItc^MLpn|<-mmq{<-C9H+X+xIqD0rSC*$~Px;z% z<1nbdvAm-}fNw3=(ggj^ay~6J-&@*wA@~oLMeRZSXnC13QJ*YVYzFVMWju|FUo6vh zLFB9DT}Ke7YKPMfdYZN)UEN?MPRmi=ZJySJYJR?!r*+Q)t%)bp zBox9T+avZlS#XGVQyQ;4Rn6NOFbt-BEy*+Pls$y-Hi1 zGPqPmtC)w)k9<(v~rrmH);>jHQr5HQ`!`6);^_J z610uzJYcI9>(<)9%6=X5CwLEjO{RCG9{t)<1mfdg zqkABvr@!vyVdeR+pIKnhwFH0Y#nfVHQ4?FM32iarYS~iXoL4KP7?SgADUKkB1+^wO z1{Pndkd{pgYjvHDI$Kn0@LYh!wM2>FEvY4H0^ZVE$qxXQ)$&Pzl@+yu$H4o_TJ_99 zOsth1i;$9PJ)|2NGj+~w;cu4iDIG&Z>SAbZI$L+875qi%J}MB>99>B|B%^iywBw7> zHQNT8aXR<$P*|$_{0p#Ux=dQvE!XW12UwxYOMv7`-A>w8uhNaCad5S+*GL4hM%PRU zEJ1gtE_hpY2adqXHl6<~5L0!B=>F#(-BL$@y}G3bA(EyWmjf(AchwW7Gj#zO!1n9x zR>9aYU3hzl1>rc2np<`$UI;qoa1@V+__yU-|t~*G*xJ1|gGs<^E=Si2E zN_E|D0lTR)qH6}XbxlSF8dZY{O z4q~~kkdiBpbsi$b@|R@ zgE!r3^=0s8SnaVvWV5W?OW{4zD(@)5jkCHm23F=-4X6i43#_^}05RUme+h_-tO7iM zEwQq(gZHIYMl=L1v%0Vm*mA3WZD4wZRfp;@z0&GaITTh|@$?*4TdjQzy){<4XgFGH zRd5)*byf+P@V?$^Su%(lt=>~|Y_ru^Pe^XDdbt+ZPOAVK`BJP#l|gcs)#~Ob!)~hw zbj*@!Wm^KU$13=DsPDD9dITWdilg3`VP$_1ynR+4UQj<|b&;-@q5kxLpO`xIqk`-4*=|cSdVJ|`)^>$GouODBC?=zWo698s0HzHv>l6gA} z`m>p9G>t|vHz|>_A2QQO3 zmV~hPGsk^FJivVMhh!Er{2_SR%xO8S9AuoDftbU53Z1#AS3xbbXBH4qoF&FHvu5$iS(l8ae?`XQ4gY&l6T zWo@irdKp_zd~@f5!c}u>SYDjH3+=5 zTmfDDUB^wJ?E7Y}7sf-w^JuY^hRaq1yMg@YGFm&f85#%=E@PKLpxYffSnjjB2+oG= zqm{x~R~l(1s071f38I_#G0e7}02xe9XQ&@$UQA&sZ1xe(W0+|jd=F=7y%}M)2cM&_Q~L0)FFO&%93nZxhW5gvZhnN7!GI)^EvWbq-!hgQG2OdL%bCz)irN^pufNPSmlZseGAC(O z`G9HF0N^1b?FRKn%wBh3k-&eP!x31Tl);6$&eJ*ac;9G?%SM zK}55TQQ*a}b?IjqVp;h;h^%5C(GA7b?7+tmS;O{N4QxFdN%^`B?9yFuw2>{7LSYlz z^f$8mLcLtzQ$UmI4|a6wK0TR5YM2x$lR`v^#;ar3FiWOH$SVdWs_ zL7Vymhq!YzsOEA?8mx|RyQdvm$?wy;$PvG90u~oMb$SDv zkGUh1N_x$W3jz4dMbho>S^OnBtcm60Xg{`?AJ_nTtNGl%5ZTQCavvhw`L-M2VJ{yt z6}&V)bR0aS^M8f`%ixF6Rf&CkM>^cgd3&wS4gIi$*gD;<>2kD@@N2KN^f@8!JBY86aKUoic4##C3`wa!b5` zwvYG3eQ3*8E_NFZD=)-;_rQB2_Mn5?1=X5$25)1v6;HuStM=pxZ01)>q^?$2&6)=0 z2h|3>Fuo@;Gg-^GS_Etzf2c8d>-m0xz&7w7Kf%#PKF0xA0zXOte_Q#P48S(t z{2qvjd`((YB=Ipm0Li>p8-VS6b^7(1bpHAYsAupUH$!0`A3`glOx}^K?B^ZmzIC)H z{y4xwQ3~CtSt0s08eoH{M;?fYqGiJYc8luYg0W1IV={RAMST|o91tDe0%Dfv&^&-# z(c`r!U%u!!J5=DVYApkS;iWuV_{*r)DjXvFs+|r-F*B>3h$k!6KCVD94^$gNd)BOK z872VP)n;4U)_i`-dGL9#m3oF5qzd`ojT;!Sd>7HOakga zGSy@gotqyrspbHXYm(R%lG98zt)MrCdLe zgQ0%VOw|ZjftiMb$UO6x5fE8w?!OUw>E=BtV|BH2r4xZv}kct?yEhk$t0 z_{lJc6d3Pa3#`z10;N~Z8u#%9cFs6=1x%keZg>g`myFBlBKBqDT2#2J#*sC^yJmcN zKO!qOUO5}Q664H92(Z*xUjx`ps zPmOmQ!R-sgj zZ8mAV3X+K?d+2C7+2rI!sP8Z-jE2HalLl+xHpOHpC8T$m-0cJ69+MH2w#YEa8w%on zlX+24$Tk_}3~<K?fCc~lNr-yU>q>Zd-1 zPyfku(%)@A-9PKT@+eI7Xiy6Io~Nat^ctUm&)&w(5lbJFMzGv>_BqJ(lZSz>??p|x zf4?Yv4=AMs*8n-??*=}-kMH3PYT$cB?-BSMy^H~6%s5J+j-3#VsuHt*_etvJT(d*;CrNeRdu`9c$6-@AT(N zd^!)Ai4a|cP<(frF%4z!SMU%NeZoA{cK@hsd=GHwgYN@EQ(<|aV*`Aj_!nIgna;>9 zP}(_6d<}S*&&-rSU@22`2{j<5iv&?AdIkpzW2)@KQbOSwffPp;vt-^1T#?lSF8 zk~tl1IxcWLB@M1~=je999nSkMJUrs2^g%IqifT=Qu>+z;+hHtMq>6#$anVc4{1%9` zn<`szBx`yDc4xDm)&Nm#uX0E)Vi(+n*b?@S<3=!rKUpuj0NbnQc9`rvicVqrd~$&rLO24A#pzBA`maso#jDiLDU4_hm9+?OzaE1py2M+82lR-}F@O{t>%AX9@T!PGy z+cd`q%X092=%QT6467Xr%flo7faHXwqaitwy^GIDSjNx>yFpF3oW+!F1QyAhcmc)P z%*#?>^O=2i5M00n(W{Q}%nQ1Ww~+a|8rWh+O-CPlndg+}Ok*CWg{Im~}8+z<30rSl5^%2ccKW45B^RZH8+A>@MR<*Bb9JbEkp$p0TA1 zp0n8cZdJ9`j7qhHiEaw8l!>E;yo{-J192>83hDu@VD8NZZv(UFHSBFA>tLV56n?I@%za9VVB=XUpIrioHeEGlxCk0?E1T?O8Au&F0b$C5AOQ2rQOu^B#KZ*!ArI64*U8 zps<5&m;eu1Y$P2`onSX!hvWrzVl7y?&MwQYOzp@dTm&^ zz}UHi_lP-d0qi{!xVKVg8F!HqV5_)=^Sp}-+R>)DE4*4Zc@+((%v9o>Kqh#XjT{~!#E`s9 zyYoPw;^m0Xsm$5{kft#^C|4BC)TINT7^Y<@uvlg}MX`rj^d6E2n9LoB<_zPu0roC3 z?dyPdml;FL@kh+iLmXuAC!IPGQr5fv0=NF!�XSzYK)2rtw`tZ*CHW;9HKM^wys) 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
I&E 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 z

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 cs1~V%Ck>H&X@lvQaXo|fO^wV9=0zU "AUTOM7.list" - @echo 'Finished building: $@' - @echo ' ' - -# Other Targets -clean: - -$(RM) AUTOM7.elf AUTOM7.list AUTOM7.map default.size.stdout - -@echo ' ' - -secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST) - -fail-specified-linker-script-missing: - @echo 'Error: Cannot find the specified linker script. Check the linker settings in the build configuration.' - @exit 2 - -warn-no-linker-script-specified: - @echo 'Warning: No linker script specified. Check the linker settings in the build configuration.' - -.PHONY: all clean dependents main-build fail-specified-linker-script-missing warn-no-linker-script-specified - --include ../makefile.targets + + +# All Target +all: main-build + +# Main-build Target +main-build: AUTOM7.elf secondary-outputs + +# Tool invocations +AUTOM7.elf AUTOM7.map: $(OBJS) $(USER_OBJS) C:\progetti\AUTOM1\workspace\AUTOM7\STM32F103C8TX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-gcc -o "AUTOM7.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m3 -T"C:\progetti\AUTOM1\workspace\AUTOM7\STM32F103C8TX_FLASH.ld" --specs=nosys.specs -Wl,-Map="AUTOM7.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group + @echo 'Finished building target: $@' + @echo ' ' + +default.size.stdout: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-size $(EXECUTABLES) + @echo 'Finished building: $@' + @echo ' ' + +AUTOM7.list: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-objdump -h -S $(EXECUTABLES) > "AUTOM7.list" + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) AUTOM7.elf AUTOM7.list AUTOM7.map default.size.stdout + -@echo ' ' + +secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST) + +fail-specified-linker-script-missing: + @echo 'Error: Cannot find the specified linker script. Check the linker settings in the build configuration.' + @exit 2 + +warn-no-linker-script-specified: + @echo 'Warning: No linker script specified. Check the linker settings in the build configuration.' + +.PHONY: all clean dependents main-build fail-specified-linker-script-missing warn-no-linker-script-specified + +-include ../makefile.targets diff --git a/workspace/AUTOM7/Debug/objects.list b/workspace/AUTOM7/Debug/objects.list index 8b40743..c7efc85 100644 --- a/workspace/AUTOM7/Debug/objects.list +++ b/workspace/AUTOM7/Debug/objects.list @@ -1,31 +1,31 @@ -"./Core/Src/main.o" -"./Core/Src/stm32f1xx_hal_msp.o" -"./Core/Src/stm32f1xx_it.o" -"./Core/Src/syscalls.o" -"./Core/Src/sysmem.o" -"./Core/Src/system_stm32f1xx.o" -"./Core/Startup/startup_stm32f103c8tx.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o" -"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o" -"./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o" -"./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o" -"./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o" -"./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o" -"./USB_DEVICE/App/usb_device.o" -"./USB_DEVICE/App/usbd_cdc_if.o" -"./USB_DEVICE/App/usbd_desc.o" -"./USB_DEVICE/Target/usbd_conf.o" +"./Core/Src/main.o" +"./Core/Src/stm32f1xx_hal_msp.o" +"./Core/Src/stm32f1xx_it.o" +"./Core/Src/syscalls.o" +"./Core/Src/sysmem.o" +"./Core/Src/system_stm32f1xx.o" +"./Core/Startup/startup_stm32f103c8tx.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o" +"./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o" +"./Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.o" +"./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o" +"./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o" +"./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o" +"./USB_DEVICE/App/usb_device.o" +"./USB_DEVICE/App/usbd_cdc_if.o" +"./USB_DEVICE/App/usbd_desc.o" +"./USB_DEVICE/Target/usbd_conf.o" diff --git a/workspace/AUTOM7/Debug/objects.mk b/workspace/AUTOM7/Debug/objects.mk index b471e98..fca83df 100644 --- a/workspace/AUTOM7/Debug/objects.mk +++ b/workspace/AUTOM7/Debug/objects.mk @@ -1,9 +1,9 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (13.3.rel1) -################################################################################ - -USER_OBJS := - -LIBS := - +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (13.3.rel1) +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/workspace/AUTOM7/Debug/sources.mk b/workspace/AUTOM7/Debug/sources.mk index 353abfb..f1de920 100644 --- a/workspace/AUTOM7/Debug/sources.mk +++ b/workspace/AUTOM7/Debug/sources.mk @@ -1,26 +1,26 @@ -################################################################################ -# Automatically-generated file. Do not edit! -# Toolchain: GNU Tools for STM32 (13.3.rel1) -################################################################################ - -ELF_SRCS := -OBJ_SRCS := -S_SRCS := -C_SRCS := -S_UPPER_SRCS := -O_SRCS := -CYCLO_FILES := -SIZE_OUTPUT := -OBJDUMP_LIST := -SU_FILES := -EXECUTABLES := -OBJS := -MAP_FILES := -S_DEPS := -S_UPPER_DEPS := -C_DEPS := - -# Every subdirectory with source files must be described here +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (13.3.rel1) +################################################################################ + +ELF_SRCS := +OBJ_SRCS := +S_SRCS := +C_SRCS := +S_UPPER_SRCS := +O_SRCS := +CYCLO_FILES := +SIZE_OUTPUT := +OBJDUMP_LIST := +SU_FILES := +EXECUTABLES := +OBJS := +MAP_FILES := +S_DEPS := +S_UPPER_DEPS := +C_DEPS := + +# Every subdirectory with source files must be described here SUBDIRS := \ Core/Src \ Core/Startup \ @@ -29,4 +29,4 @@ Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src \ Middlewares/ST/STM32_USB_Device_Library/Core/Src \ USB_DEVICE/App \ USB_DEVICE/Target \ - +