From 0d605ee023bd5001989f82e06b516f8f61acd7c8 Mon Sep 17 00:00:00 2001 From: "jazz (gitea)" Date: Thu, 16 Oct 2025 13:20:26 -0500 Subject: [PATCH] pain --- .metadata/.ide.log | 1 + .metadata/.plugins/org.eclipse.cdt.core/.log | 1 + .../TrafficLightsPlusPlus.1758569400646.pdom | Bin 12603392 -> 12603392 bytes .../TrafficLightsPlusPlus.build.log | 13 +- .../org.eclipse.cdt.ui/global-build.log | 11 +- .../10/5079bc0785aa00101018f4a80462297c | 337 + .../.indexes/bf/c4/history.index | Bin 842 -> 866 bytes .../.projects/TrafficLightsPlusPlus/.markers | Bin 643 -> 424 bytes .../.root/{29.tree => 30.tree} | Bin 119306 -> 119488 bytes .../.safetable/org.eclipse.core.resources | Bin 588 -> 584 bytes .../org.eclipse.e4.workbench/workbench.xmi | 44 +- TrafficLightsPlusPlus/Core/Src/main.cpp | 134 +- .../Debug/Core/Src/main.cyclo | 12 +- TrafficLightsPlusPlus/Debug/Core/Src/main.o | Bin 1182900 -> 1182916 bytes TrafficLightsPlusPlus/Debug/Core/Src/main.su | 12 +- .../Debug/TrafficLightsPlusPlus.elf | Bin 1224668 -> 1224740 bytes .../Debug/TrafficLightsPlusPlus.list | 7044 +++++++++-------- .../Debug/TrafficLightsPlusPlus.map | 737 +- 18 files changed, 4362 insertions(+), 3984 deletions(-) create mode 100644 .metadata/.plugins/org.eclipse.core.resources/.history/10/5079bc0785aa00101018f4a80462297c rename .metadata/.plugins/org.eclipse.core.resources/.root/{29.tree => 30.tree} (99%) diff --git a/.metadata/.ide.log b/.metadata/.ide.log index 916e759..be53257 100644 --- a/.metadata/.ide.log +++ b/.metadata/.ide.log @@ -309,3 +309,4 @@ 2025-10-16 06:40:25,340 [INFO] IntegrityCheckThread:100 - exiting critical section [integrity check] 2025-10-16 06:40:25,340 [INFO] IntegrityCheckThread:103 - End integrity checks thread 2025-10-16 06:40:25,461 [INFO] WebApp:191 - Connection restablished +2025-10-16 13:20:11,462 [ERROR] LogOutputStream:75 - [STDERR_REDIRECT] diff --git a/.metadata/.plugins/org.eclipse.cdt.core/.log b/.metadata/.plugins/org.eclipse.cdt.core/.log index 5ba72d8..95b1f04 100644 --- a/.metadata/.plugins/org.eclipse.cdt.core/.log +++ b/.metadata/.plugins/org.eclipse.cdt.core/.log @@ -27,3 +27,4 @@ *** SESSION Oct 13, 2025 23:56:38.08 ------------------------------------------- *** SESSION Oct 14, 2025 20:35:21.375 ------------------------------------------ *** SESSION Oct 14, 2025 22:46:25.379 ------------------------------------------ +*** SESSION Oct 16, 2025 06:40:11.796 ------------------------------------------ diff --git a/.metadata/.plugins/org.eclipse.cdt.core/TrafficLightsPlusPlus.1758569400646.pdom b/.metadata/.plugins/org.eclipse.cdt.core/TrafficLightsPlusPlus.1758569400646.pdom index 4bd9761036d8df8f005497356cb1af84860be40d..a3683982b9aba5d554e895997e1fb048d2b0b523 100644 GIT binary patch delta 30328 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 diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/TrafficLightsPlusPlus.build.log b/.metadata/.plugins/org.eclipse.cdt.ui/TrafficLightsPlusPlus.build.log index 4270aac..942f2cd 100644 --- a/.metadata/.plugins/org.eclipse.cdt.ui/TrafficLightsPlusPlus.build.log +++ b/.metadata/.plugins/org.eclipse.cdt.ui/TrafficLightsPlusPlus.build.log @@ -1,10 +1,17 @@ -04:06:28 **** Incremental Build of configuration Debug for project TrafficLightsPlusPlus **** +06:41:34 **** Build of configuration Debug for project TrafficLightsPlusPlus **** make -j8 all +arm-none-eabi-g++ "../Core/Src/main.cpp" -mcpu=cortex-m4 -std=gnu++14 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/main.d" -MT"Core/Src/main.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Core/Src/main.o" +arm-none-eabi-g++ -o "TrafficLightsPlusPlus.elf" @"objects.list" -mcpu=cortex-m4 -T"/home/ja/st/Home/TrafficLightsPlusPlus/STM32F429ZITX_FLASH.ld" --specs=nosys.specs -Wl,-Map="TrafficLightsPlusPlus.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -lstdc++ -lsupc++ -Wl,--end-group +Finished building target: TrafficLightsPlusPlus.elf + arm-none-eabi-size TrafficLightsPlusPlus.elf +arm-none-eabi-objdump -h -S TrafficLightsPlusPlus.elf > "TrafficLightsPlusPlus.list" text data bss dec hex filename - 9328 8 1832 11168 2ba0 TrafficLightsPlusPlus.elf + 9392 12 1836 11240 2be8 TrafficLightsPlusPlus.elf Finished building: default.size.stdout +Finished building: TrafficLightsPlusPlus.list + -04:06:28 Build Finished. 0 errors, 0 warnings. (took 134ms) +06:41:35 Build Finished. 0 errors, 0 warnings. (took 505ms) diff --git a/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log b/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log index bd88fab..1dceade 100644 --- a/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log +++ b/.metadata/.plugins/org.eclipse.cdt.ui/global-build.log @@ -1,7 +1,14 @@ -04:06:28 **** Incremental Build of configuration Debug for project TrafficLightsPlusPlus **** +06:41:34 **** Build of configuration Debug for project TrafficLightsPlusPlus **** make -j8 all +arm-none-eabi-g++ "../Core/Src/main.cpp" -mcpu=cortex-m4 -std=gnu++14 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F429xx -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Core/Src/main.d" -MT"Core/Src/main.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Core/Src/main.o" +arm-none-eabi-g++ -o "TrafficLightsPlusPlus.elf" @"objects.list" -mcpu=cortex-m4 -T"/home/ja/st/Home/TrafficLightsPlusPlus/STM32F429ZITX_FLASH.ld" --specs=nosys.specs -Wl,-Map="TrafficLightsPlusPlus.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -lstdc++ -lsupc++ -Wl,--end-group +Finished building target: TrafficLightsPlusPlus.elf + arm-none-eabi-size TrafficLightsPlusPlus.elf +arm-none-eabi-objdump -h -S TrafficLightsPlusPlus.elf > "TrafficLightsPlusPlus.list" text data bss dec hex filename - 9328 8 1832 11168 2ba0 TrafficLightsPlusPlus.elf + 9392 12 1836 11240 2be8 TrafficLightsPlusPlus.elf Finished building: default.size.stdout +Finished building: TrafficLightsPlusPlus.list + diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/10/5079bc0785aa00101018f4a80462297c b/.metadata/.plugins/org.eclipse.core.resources/.history/10/5079bc0785aa00101018f4a80462297c new file mode 100644 index 0000000..ea80735 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/10/5079bc0785aa00101018f4a80462297c @@ -0,0 +1,337 @@ +/* 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. + * + ****************************************************************************** + */ +// Feeling sneaky. +extern "C" { +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +} + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ +#include + +enum class TrafficState { GREEN, YELLOW, RED }; +void SetTrafficLights(TrafficState s); + +TrafficState currentState = TrafficState::GREEN; +uint32_t stateStartTime = 0; //HAL_GetTick() at the start of this state +bool buttonPressedThisCycle = false; +bool pedestrianNextCycle = false; +bool pedestrianThisCycle = false; + +const uint32_t DURATION_GREEN = 5000; +const uint32_t DURATION_YELLOW = 3000; +const uint32_t DURATION_RED_NOPED = 5000; +const uint32_t DURATION_RED_PED = 7000; + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ + +void SetTrafficLights(TrafficState s) +{ + // reset all + HAL_GPIO_WritePin(GPIOD, Green_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOD, Yellow_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOD, Red_Pin, GPIO_PIN_SET); + + switch (s) + { + case TrafficState::GREEN : + HAL_GPIO_WritePin(GPIOD, Green_Pin, GPIO_PIN_SET); + break; + case TrafficState::YELLOW : + HAL_GPIO_WritePin(GPIOD, Yellow_Pin, GPIO_PIN_SET); + break; + case TrafficState::RED: + HAL_GPIO_WritePin(GPIOD, Red_Pin, GPIO_PIN_SET); + break; + } +} + +int main(void) +{ + + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + MX_GPIO_Init(); + + stateStartTime = HAL_GetTick(); + SetTrafficLights(currentState); + + while (1) + { + /* USER CODE END WHILE */ + uint32_t now = HAL_GetTick(); + uint32_t elapsed = now - stateStartTime; + + switch(currentState) + { + case TrafficState::GREEN: + if (buttonPressedThisCycle) + pedestrianThisCycle = true; + + /* + if (buttonPressedThisCycle) + { + currentState = TrafficState::YELLOW; + stateStartTime = now; + buttonPressedThisCycle = false; + SetTrafficLights(currentState); + } + else + { + pedestrianNextCycle = false; + SetTrafficLights(currentState); + } + */ + + else if (elapsed >= DURATION_GREEN) + { + currentState = TrafficState::YELLOW; + stateStartTime = now; + SetTrafficLights(currentState); + } + break; + case TrafficState::YELLOW: + if (buttonPressedThisCycle || pedestrianNextCycle) + pedestrianThisCycle = true; + + if (elapsed >= DURATION_YELLOW) + { + currentState = TrafficState::RED; + stateStartTime = now; + buttonPressedThisCycle = false; //TODO add pressed pedestrian button in yellow + SetTrafficLights(currentState); + // If Ped Button was pressed during GREEN or YELLOW, we need to enable WHITE this cycle + } + break; + case TrafficState::RED: + /* + if (pedestrianNextCycle) + { + HAL_GPIO_WritePin(GPIOD,White_Pin,GPIO_PIN_SET); // turn on Pedestrian LED + if (elapsed >= DURATION_RED_PED) + { + HAL_GPIO_WritePin(GPIOD,White_Pin,GPIO_PIN_RESET); + pedestrianNextCycle = false; + currentState = TrafficState::GREEN; + stateStartTime = now; + SetTrafficLights(currentState); + } + } + else + { + HAL_GPIO_WritePin(GPIOD,White_Pin,GPIO_PIN_RESET); + if(elapsed >= DURATION_RED_PED) + { + currentState = TrafficState::GREEN; + stateStartTime = now; + SetTrafficLights(currentState); + } + } + */ + + if (buttonPressedThisCycle) + pedestrianNextCycle = true; + + if (pedestrianThisCycle) { + HAL_GPIO_WritePin(White_GPIO_Port, White_Pin, GPIO_PIN_RESET); + pedestrianThisCycle = false; + pedestrianNextCycle = false; + currentState = TrafficState::GREEN; + stateStartTime = now; + SetTrafficLights(currentState); + buttonPressedThisCycle = false; + } else { + HAL_GPIO_WritePin(White_GPIO_Port, White_Pin, GPIO_PIN_RESET); + if (elapsed >= DURATION_RED_NOPED) + { + currentState = TrafficState::GREEN; + stateStartTime = now; + SetTrafficLights(currentState); + buttonPressedThisCycle = false; + } + } + break; + } + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ + +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; + RCC_OscInitStruct.PLL.PLLM = 8; + RCC_OscInitStruct.PLL.PLLN = 50; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4; + RCC_OscInitStruct.PLL.PLLQ = 7; + 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_DIV8; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV4; + + 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_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, White_Pin|Red_Pin|Yellow_Pin|Green_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin : PedButton_Pin */ + GPIO_InitStruct.Pin = PedButton_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(PedButton_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : White_Pin Red_Pin Yellow_Pin Green_Pin */ + GPIO_InitStruct.Pin = White_Pin|Red_Pin|Yellow_Pin|Green_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /* EXTI interrupt init*/ + HAL_NVIC_SetPriority(EXTI15_10_IRQn, 15, 0); + HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); + + /* USER CODE BEGIN MX_GPIO_Init_2 */ + + /* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +/* +extern "C" void EXTI15_10_IRQHandler() +{ + HAL_GPIO_EXTI_IRQHandler(PedButton_Pin); +} +*/ + +extern "C" void HAL_GPIO_EXTI_CallBack(uint16_t GPIO_Pin) +{ + static uint32_t lastInterruptTime = 0; + uint32_t now = HAL_GetTick(); + + // software debounce + if (now - lastInterruptTime < 100) + return; + + lastInterruptTime = now; + + if (GPIO_Pin == PedButton_Pin) + buttonPressedThisCycle = true; + +} + +/* 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/.metadata/.plugins/org.eclipse.core.resources/.projects/TrafficLightsPlusPlus/.indexes/bf/c4/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/TrafficLightsPlusPlus/.indexes/bf/c4/history.index index 7a014a878de88fa4dc780928fb48b93512b3b66a..0443f207ccaad5b8cc226542ab827a38c74361af 100644 GIT binary patch delta 36 scmX@b_K0nQl%#w>UBS%4z`(#f@mtbFE1S)=jBJbmH)sW8 delta 158 zcmZ3%+{|jlz`(%FprId9l$e&5ne3C9o>5X9kW&iA`p)@9srtc1$@;m8nR$B21qDFW zj6e(o%xV+UY?yf0PS#?SvEseSz@D30T%4Gm%FLh>;_u?GkeHI9P*4OEO9j%YDXGOJ zMVX0t3Q46UCHZ*@nRyD8sX00M<&zs2<+vDHfyU0fuekfuM3$t<%#5lV7qKw{06e!a ABme*a diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/29.tree b/.metadata/.plugins/org.eclipse.core.resources/.root/30.tree similarity index 99% rename from .metadata/.plugins/org.eclipse.core.resources/.root/29.tree rename to .metadata/.plugins/org.eclipse.core.resources/.root/30.tree index a797f8903809ed3373803bdb98179061f2753132..1a6410b9fadd7c5700d3e27a2677f6a3fb01bc53 100644 GIT binary patch delta 564 zcmeBL!hT>Wy9^666B7d%9A$yfFp@oIqKqOl6NBjVjZuuERt!e@Md^B}$vK$?#i@G9 zDJ6QjiFt|XsVPaNnK>z`MS98kMX7q}sd>4H*{M)5uu%~GE({jL=nqa#%*#tHa?a07 z%S?BIm<%$7k%gIoiLudXs}rMLsGK0s$&54KT;@%KI5uS~kgkQW%co3s`Wsd eEevJ5O=g@Ty4_$4<26|kU^p={f}9E@VE_Q>5r1$1 delta 424 zcmX@Gl)Y;Sy9^666B7d%?AZpPVI+IPL>Wa^21X`EhQ=3LUohH*$}s|!GR}M`)T<3q zl(H2_*Ff0ilP5RkN^Oq|W1MbN|4=gMH$-@i7=#9qYs48C*m4sy^Yl^}7#Rehrb!0< zfhq+`!@wE|n9_V?rNM8ZN`cZautt)BfgNmWaVb=-G{}_*Cjb?|z#6H^2Y0DVe?6Iz zd;7l0j3x@w4<$o0AhN3)fixqO-ORusH9awwQB+GWC$qQ&*%6^LplX_s)VDA&NP^X? u>E$LCpeWBm7zsDNb$a_2MkR@dKc-xP$j&qZ(t=R7%l3m?7+=e>fVcoL;!u$Q diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources index 929b99413b9c98609a8c89fe790969bbd8b2207a..ec2d5ffb467c3c057566bb4fd5a4ba4b3a88896a 100644 GIT binary patch delta 184 zcmX@Za)M=oyjn;`se*rUiGrb-f}ydMk%5(=p@OqZh=P%UktvtHUP)1Es;#lX}+NCkfGsoq_F3;H_HG3 delta 138 zcmX@Xa)xDsyjpl_ih_S~iGrc2f`O5hfw`55p@OqZh=P%UktvtHUP)1Es;!ab#EBA< w>lxQ`m>L=xm>F7_P8MJ^#G=&*w^k{bR#UD65x+kx?_m&;3jEwty}SGv00-G8_W%F@ diff --git a/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi index 935da80..c7e00cd 100644 --- a/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi +++ b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi @@ -71,9 +71,7 @@ persp.viewSC:com.st.stm32cube.ide.mcu.cyclomaticcomplexity.view persp.viewSC:com.st.stm32cube.ide.mcu.sfrview - - Minimized - MinimizedByZoom + View categoryTag:General @@ -89,12 +87,8 @@ - - Maximized - - - Minimized - MinimizedByZoom + + View categoryTag:General @@ -109,10 +103,8 @@ - - - Minimized - MinimizedByZoom + + View categoryTag:General @@ -130,9 +122,7 @@ categoryTag:General - - Minimized - MinimizedByZoom + View categoryTag:C/C++ @@ -240,7 +230,7 @@ active noFocus - + Editor removeOnHide org.eclipse.cdt.ui.editor.CEditor @@ -406,7 +396,7 @@ Draggable - + toolbarSeparator @@ -414,8 +404,8 @@ Draggable - - + + toolbarSeparator @@ -439,7 +429,7 @@ Draggable - + toolbarSeparator @@ -473,12 +463,12 @@ Draggable - + TrimStack Draggable - + TrimStack Draggable @@ -487,16 +477,16 @@ Draggable - - + + TrimStack Draggable - + TrimStack Draggable - + TrimStack Draggable diff --git a/TrafficLightsPlusPlus/Core/Src/main.cpp b/TrafficLightsPlusPlus/Core/Src/main.cpp index ea80735..d81110f 100644 --- a/TrafficLightsPlusPlus/Core/Src/main.cpp +++ b/TrafficLightsPlusPlus/Core/Src/main.cpp @@ -15,25 +15,31 @@ * ****************************************************************************** */ -// Feeling sneaky. -extern "C" { /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ + +extern "C" { + #include "main.h" +#include /* Private function prototypes -----------------------------------------------*/ + void SystemClock_Config(void); static void MX_GPIO_Init(void); + } + +enum class TrafficState { GREEN, YELLOW, RED }; + + +void SetTrafficLights(TrafficState s); + /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ -#include -enum class TrafficState { GREEN, YELLOW, RED }; -void SetTrafficLights(TrafficState s); - -TrafficState currentState = TrafficState::GREEN; +TrafficState currentState = TrafficState::RED; uint32_t stateStartTime = 0; //HAL_GetTick() at the start of this state bool buttonPressedThisCycle = false; bool pedestrianNextCycle = false; @@ -51,11 +57,11 @@ const uint32_t DURATION_RED_PED = 7000; * @retval int */ + void SetTrafficLights(TrafficState s) { // reset all - HAL_GPIO_WritePin(GPIOD, Green_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(GPIOD, Yellow_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOD, Green_Pin|Yellow_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD, Red_Pin, GPIO_PIN_SET); switch (s) @@ -72,6 +78,7 @@ void SetTrafficLights(TrafficState s) } } + int main(void) { @@ -84,10 +91,10 @@ int main(void) /* Configure the system clock */ SystemClock_Config(); MX_GPIO_Init(); - + stateStartTime = HAL_GetTick(); SetTrafficLights(currentState); - + while (1) { /* USER CODE END WHILE */ @@ -97,103 +104,86 @@ int main(void) switch(currentState) { case TrafficState::GREEN: + // Record if the button was pressed during this green cycle if (buttonPressedThisCycle) + { pedestrianThisCycle = true; - - /* - if (buttonPressedThisCycle) - { - currentState = TrafficState::YELLOW; - stateStartTime = now; - buttonPressedThisCycle = false; - SetTrafficLights(currentState); } - else - { - pedestrianNextCycle = false; - SetTrafficLights(currentState); - } - */ - - else if (elapsed >= DURATION_GREEN) +// else +// { +// pedestrianNextCycle = false; +// SetTrafficLights(currentState); +// } + if (elapsed >= DURATION_GREEN) { currentState = TrafficState::YELLOW; stateStartTime = now; SetTrafficLights(currentState); } break; - case TrafficState::YELLOW: - if (buttonPressedThisCycle || pedestrianNextCycle) - pedestrianThisCycle = true; + case TrafficState::YELLOW: + // Record if button pressed during yellow + if (buttonPressedThisCycle || pedestrianNextCycle) + { + pedestrianThisCycle = true; + } if (elapsed >= DURATION_YELLOW) { + currentState = TrafficState::RED; stateStartTime = now; - buttonPressedThisCycle = false; //TODO add pressed pedestrian button in yellow SetTrafficLights(currentState); + pedestrianNextCycle = false; // If Ped Button was pressed during GREEN or YELLOW, we need to enable WHITE this cycle } break; + case TrafficState::RED: - /* - if (pedestrianNextCycle) + if (buttonPressedThisCycle) + { + pedestrianNextCycle = true; + } + if (pedestrianThisCycle) { HAL_GPIO_WritePin(GPIOD,White_Pin,GPIO_PIN_SET); // turn on Pedestrian LED if (elapsed >= DURATION_RED_PED) { HAL_GPIO_WritePin(GPIOD,White_Pin,GPIO_PIN_RESET); + pedestrianThisCycle = false; pedestrianNextCycle = false; currentState = TrafficState::GREEN; stateStartTime = now; SetTrafficLights(currentState); + buttonPressedThisCycle = false; // reset button flag on transition } } else { HAL_GPIO_WritePin(GPIOD,White_Pin,GPIO_PIN_RESET); - if(elapsed >= DURATION_RED_PED) + if(elapsed >= DURATION_RED_NOPED) { currentState = TrafficState::GREEN; stateStartTime = now; SetTrafficLights(currentState); - } - } - */ - - if (buttonPressedThisCycle) - pedestrianNextCycle = true; - - if (pedestrianThisCycle) { - HAL_GPIO_WritePin(White_GPIO_Port, White_Pin, GPIO_PIN_RESET); - pedestrianThisCycle = false; - pedestrianNextCycle = false; - currentState = TrafficState::GREEN; - stateStartTime = now; - SetTrafficLights(currentState); - buttonPressedThisCycle = false; - } else { - HAL_GPIO_WritePin(White_GPIO_Port, White_Pin, GPIO_PIN_RESET); - if (elapsed >= DURATION_RED_NOPED) - { - currentState = TrafficState::GREEN; - stateStartTime = now; - SetTrafficLights(currentState); - buttonPressedThisCycle = false; + buttonPressedThisCycle = false; // reset button flag on transition } } break; - } + }// switch /* USER CODE BEGIN 3 */ - } + }// while /* USER CODE END 3 */ -} +}// main /** * @brief System Clock Configuration * @retval None */ + + + void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; @@ -278,28 +268,27 @@ static void MX_GPIO_Init(void) } /* USER CODE BEGIN 4 */ +//extern "C" void EXTI15_10_IRQHandler() +//{ +// HAL_GPIO_EXTI_IRQHandler(PedButton_Pin); +//} -/* -extern "C" void EXTI15_10_IRQHandler() -{ - HAL_GPIO_EXTI_IRQHandler(PedButton_Pin); -} -*/ - -extern "C" void HAL_GPIO_EXTI_CallBack(uint16_t GPIO_Pin) +extern "C" void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { static uint32_t lastInterruptTime = 0; uint32_t now = HAL_GetTick(); - // software debounce - if (now - lastInterruptTime < 100) + /* software debounce */ + if(now - lastInterruptTime < 100) + { return; - + } lastInterruptTime = now; if (GPIO_Pin == PedButton_Pin) + { buttonPressedThisCycle = true; - + } } /* USER CODE END 4 */ @@ -335,3 +324,4 @@ void assert_failed(uint8_t *file, uint32_t line) } #endif /* USE_FULL_ASSERT */ + diff --git a/TrafficLightsPlusPlus/Debug/Core/Src/main.cyclo b/TrafficLightsPlusPlus/Debug/Core/Src/main.cyclo index 22e38a7..2a680bd 100644 --- a/TrafficLightsPlusPlus/Debug/Core/Src/main.cyclo +++ b/TrafficLightsPlusPlus/Debug/Core/Src/main.cyclo @@ -1,6 +1,6 @@ -../Core/Src/main.cpp:54:6:void SetTrafficLights(TrafficState) 5 -../Core/Src/main.cpp:75:5:int main() 13 -../Core/Src/main.cpp:197:6:void SystemClock_Config() 3 -../Core/Src/main.cpp:244:13:void MX_GPIO_Init() 1 -../Core/Src/main.cpp:289:17:void HAL_GPIO_EXTI_CallBack(uint16_t) 3 -../Core/Src/main.cpp:311:6:void Error_Handler() 1 +../Core/Src/main.cpp:61:6:void SetTrafficLights(TrafficState) 5 +../Core/Src/main.cpp:82:5:int main() 14 +../Core/Src/main.cpp:187:6:void SystemClock_Config() 3 +../Core/Src/main.cpp:234:13:void MX_GPIO_Init() 1 +../Core/Src/main.cpp:276:17:void HAL_GPIO_EXTI_Callback(uint16_t) 3 +../Core/Src/main.cpp:300:6:void Error_Handler() 1 diff --git a/TrafficLightsPlusPlus/Debug/Core/Src/main.o b/TrafficLightsPlusPlus/Debug/Core/Src/main.o index d548d6a60e8225d81dea76ad0bdbbbd19635f68a..bbd52571fb66ee7d481fa48148cd02bd418f08ca 100644 GIT binary patch delta 26907 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 delta 26821 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 diff --git a/TrafficLightsPlusPlus/Debug/Core/Src/main.su b/TrafficLightsPlusPlus/Debug/Core/Src/main.su index 882ab6c..2732ef9 100644 --- a/TrafficLightsPlusPlus/Debug/Core/Src/main.su +++ b/TrafficLightsPlusPlus/Debug/Core/Src/main.su @@ -1,6 +1,6 @@ -../Core/Src/main.cpp:54:6:void SetTrafficLights(TrafficState) 16 static -../Core/Src/main.cpp:75:5:int main() 16 static -../Core/Src/main.cpp:197:6:void SystemClock_Config() 88 static -../Core/Src/main.cpp:244:13:void MX_GPIO_Init() 40 static -../Core/Src/main.cpp:289:17:void HAL_GPIO_EXTI_CallBack(uint16_t) 24 static -../Core/Src/main.cpp:311:6:void Error_Handler() 4 static,ignoring_inline_asm +../Core/Src/main.cpp:61:6:void SetTrafficLights(TrafficState) 16 static +../Core/Src/main.cpp:82:5:int main() 16 static +../Core/Src/main.cpp:187:6:void SystemClock_Config() 88 static +../Core/Src/main.cpp:234:13:void MX_GPIO_Init() 40 static +../Core/Src/main.cpp:276:17:void HAL_GPIO_EXTI_Callback(uint16_t) 24 static +../Core/Src/main.cpp:300:6:void Error_Handler() 4 static,ignoring_inline_asm diff --git a/TrafficLightsPlusPlus/Debug/TrafficLightsPlusPlus.elf b/TrafficLightsPlusPlus/Debug/TrafficLightsPlusPlus.elf index cc98e29d28e449e1420c5d506963c5c53a82335b..2696acd11a6ac6b7240b7b9a7a1a06bdc51b5f71 100755 GIT binary patch delta 29085 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 delta 28731 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 diff --git a/TrafficLightsPlusPlus/Debug/TrafficLightsPlusPlus.list b/TrafficLightsPlusPlus/Debug/TrafficLightsPlusPlus.list index 356ebc3..ca3b2ac 100644 --- a/TrafficLightsPlusPlus/Debug/TrafficLightsPlusPlus.list +++ b/TrafficLightsPlusPlus/Debug/TrafficLightsPlusPlus.list @@ -5,33 +5,33 @@ Sections: Idx Name Size VMA LMA File off Algn 0 .isr_vector 000001ac 08000000 08000000 00001000 2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA - 1 .text 0000229c 080001b0 080001b0 000011b0 2**4 + 1 .text 000022dc 080001b0 080001b0 000011b0 2**4 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .rodata 00000018 0800244c 0800244c 0000344c 2**2 + 2 .rodata 00000018 0800248c 0800248c 0000348c 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 3 .ARM.extab 00000000 08002464 08002464 00004008 2**0 + 3 .ARM.extab 00000000 080024a4 080024a4 0000400c 2**0 CONTENTS, READONLY - 4 .ARM 00000008 08002464 08002464 00003464 2**2 + 4 .ARM 00000008 080024a4 080024a4 000034a4 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 5 .preinit_array 00000000 0800246c 0800246c 00004008 2**0 + 5 .preinit_array 00000000 080024ac 080024ac 0000400c 2**0 CONTENTS, ALLOC, LOAD, DATA - 6 .init_array 00000004 0800246c 0800246c 0000346c 2**2 + 6 .init_array 00000004 080024ac 080024ac 000034ac 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 7 .fini_array 00000004 08002470 08002470 00003470 2**2 + 7 .fini_array 00000004 080024b0 080024b0 000034b0 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 8 .data 00000008 20000000 08002474 00004000 2**2 + 8 .data 0000000c 20000000 080024b4 00004000 2**2 CONTENTS, ALLOC, LOAD, DATA - 9 .ccmram 00000000 10000000 10000000 00004008 2**0 + 9 .ccmram 00000000 10000000 10000000 0000400c 2**0 CONTENTS - 10 .bss 00000128 20000008 20000008 00004008 2**2 + 10 .bss 00000128 2000000c 2000000c 0000400c 2**2 ALLOC - 11 ._user_heap_stack 00000600 20000130 20000130 00004008 2**0 + 11 ._user_heap_stack 00000604 20000134 20000134 0000400c 2**0 ALLOC - 12 .ARM.attributes 00000030 00000000 00000000 00004008 2**0 + 12 .ARM.attributes 00000030 00000000 00000000 0000400c 2**0 CONTENTS, READONLY - 13 .debug_info 0000c2b8 00000000 00000000 00004038 2**0 + 13 .debug_info 0000c2b8 00000000 00000000 0000403c 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 14 .debug_abbrev 00001fdb 00000000 00000000 000102f0 2**0 + 14 .debug_abbrev 00001fdb 00000000 00000000 000102f4 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS 15 .debug_aranges 00000c88 00000000 00000000 000122d0 2**3 CONTENTS, READONLY, DEBUGGING, OCTETS @@ -39,15 +39,15 @@ Idx Name Size VMA LMA File off Algn CONTENTS, READONLY, DEBUGGING, OCTETS 17 .debug_macro 00024bc7 00000000 00000000 000138f6 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 18 .debug_line 0000d487 00000000 00000000 000384bd 2**0 + 18 .debug_line 0000d485 00000000 00000000 000384bd 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 19 .debug_str 000df3c5 00000000 00000000 00045944 2**0 + 19 .debug_str 000df3ae 00000000 00000000 00045942 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 20 .comment 00000043 00000000 00000000 00124d09 2**0 + 20 .comment 00000043 00000000 00000000 00124cf0 2**0 CONTENTS, READONLY - 21 .debug_frame 00003374 00000000 00000000 00124d4c 2**2 + 21 .debug_frame 00003374 00000000 00000000 00124d34 2**2 CONTENTS, READONLY, DEBUGGING, OCTETS - 22 .debug_line_str 00000055 00000000 00000000 001280c0 2**0 + 22 .debug_line_str 00000055 00000000 00000000 001280a8 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS Disassembly of section .text: @@ -64,9 +64,9 @@ Disassembly of section .text: 80001c2: 2301 movs r3, #1 80001c4: 7023 strb r3, [r4, #0] 80001c6: bd10 pop {r4, pc} - 80001c8: 20000008 .word 0x20000008 + 80001c8: 2000000c .word 0x2000000c 80001cc: 00000000 .word 0x00000000 - 80001d0: 08002434 .word 0x08002434 + 80001d0: 08002474 .word 0x08002474 080001d4 : 80001d4: b508 push {r3, lr} @@ -77,8 +77,8 @@ Disassembly of section .text: 80001de: f3af 8000 nop.w 80001e2: bd08 pop {r3, pc} 80001e4: 00000000 .word 0x00000000 - 80001e8: 2000000c .word 0x2000000c - 80001ec: 08002434 .word 0x08002434 + 80001e8: 20000010 .word 0x20000010 + 80001ec: 08002474 .word 0x08002474 080001f0 <__aeabi_uldivmod>: 80001f0: b953 cbnz r3, 8000208 <__aeabi_uldivmod+0x18> @@ -395,10 +395,10 @@ __weak void vApplicationStackOverflowHook(xTaskHandle xTask, signed char *pcTask ... 08000534 <_Z16SetTrafficLights12TrafficState>: - * @brief The application entry point. * @retval int */ + void SetTrafficLights(TrafficState s) { 8000534: b580 push {r7, lr} @@ -406,5582 +406,5626 @@ void SetTrafficLights(TrafficState s) 8000538: af00 add r7, sp, #0 800053a: 6078 str r0, [r7, #4] // reset all - HAL_GPIO_WritePin(GPIOD, Green_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOD, Green_Pin|Yellow_Pin, GPIO_PIN_RESET); 800053c: 2200 movs r2, #0 - 800053e: 2180 movs r1, #128 @ 0x80 - 8000540: 4817 ldr r0, [pc, #92] @ (80005a0 <_Z16SetTrafficLights12TrafficState+0x6c>) - 8000542: f000 fda3 bl 800108c - HAL_GPIO_WritePin(GPIOD, Yellow_Pin, GPIO_PIN_RESET); - 8000546: 2200 movs r2, #0 - 8000548: 2120 movs r1, #32 - 800054a: 4815 ldr r0, [pc, #84] @ (80005a0 <_Z16SetTrafficLights12TrafficState+0x6c>) - 800054c: f000 fd9e bl 800108c + 800053e: 21a0 movs r1, #160 @ 0xa0 + 8000540: 4815 ldr r0, [pc, #84] @ (8000598 <_Z16SetTrafficLights12TrafficState+0x64>) + 8000542: f000 fdcb bl 80010dc HAL_GPIO_WritePin(GPIOD, Red_Pin, GPIO_PIN_SET); - 8000550: 2201 movs r2, #1 - 8000552: 2108 movs r1, #8 - 8000554: 4812 ldr r0, [pc, #72] @ (80005a0 <_Z16SetTrafficLights12TrafficState+0x6c>) - 8000556: f000 fd99 bl 800108c + 8000546: 2201 movs r2, #1 + 8000548: 2108 movs r1, #8 + 800054a: 4813 ldr r0, [pc, #76] @ (8000598 <_Z16SetTrafficLights12TrafficState+0x64>) + 800054c: f000 fdc6 bl 80010dc switch (s) - 800055a: 687b ldr r3, [r7, #4] - 800055c: 2b02 cmp r3, #2 - 800055e: d015 beq.n 800058c <_Z16SetTrafficLights12TrafficState+0x58> - 8000560: 687b ldr r3, [r7, #4] - 8000562: 2b02 cmp r3, #2 - 8000564: dc18 bgt.n 8000598 <_Z16SetTrafficLights12TrafficState+0x64> - 8000566: 687b ldr r3, [r7, #4] - 8000568: 2b00 cmp r3, #0 - 800056a: d003 beq.n 8000574 <_Z16SetTrafficLights12TrafficState+0x40> - 800056c: 687b ldr r3, [r7, #4] - 800056e: 2b01 cmp r3, #1 - 8000570: d006 beq.n 8000580 <_Z16SetTrafficLights12TrafficState+0x4c> + 8000550: 687b ldr r3, [r7, #4] + 8000552: 2b02 cmp r3, #2 + 8000554: d015 beq.n 8000582 <_Z16SetTrafficLights12TrafficState+0x4e> + 8000556: 687b ldr r3, [r7, #4] + 8000558: 2b02 cmp r3, #2 + 800055a: dc18 bgt.n 800058e <_Z16SetTrafficLights12TrafficState+0x5a> + 800055c: 687b ldr r3, [r7, #4] + 800055e: 2b00 cmp r3, #0 + 8000560: d003 beq.n 800056a <_Z16SetTrafficLights12TrafficState+0x36> + 8000562: 687b ldr r3, [r7, #4] + 8000564: 2b01 cmp r3, #1 + 8000566: d006 beq.n 8000576 <_Z16SetTrafficLights12TrafficState+0x42> break; case TrafficState::RED: HAL_GPIO_WritePin(GPIOD, Red_Pin, GPIO_PIN_SET); break; } } - 8000572: e011 b.n 8000598 <_Z16SetTrafficLights12TrafficState+0x64> + 8000568: e011 b.n 800058e <_Z16SetTrafficLights12TrafficState+0x5a> HAL_GPIO_WritePin(GPIOD, Green_Pin, GPIO_PIN_SET); - 8000574: 2201 movs r2, #1 - 8000576: 2180 movs r1, #128 @ 0x80 - 8000578: 4809 ldr r0, [pc, #36] @ (80005a0 <_Z16SetTrafficLights12TrafficState+0x6c>) - 800057a: f000 fd87 bl 800108c + 800056a: 2201 movs r2, #1 + 800056c: 2180 movs r1, #128 @ 0x80 + 800056e: 480a ldr r0, [pc, #40] @ (8000598 <_Z16SetTrafficLights12TrafficState+0x64>) + 8000570: f000 fdb4 bl 80010dc break; - 800057e: e00b b.n 8000598 <_Z16SetTrafficLights12TrafficState+0x64> + 8000574: e00b b.n 800058e <_Z16SetTrafficLights12TrafficState+0x5a> HAL_GPIO_WritePin(GPIOD, Yellow_Pin, GPIO_PIN_SET); - 8000580: 2201 movs r2, #1 - 8000582: 2120 movs r1, #32 - 8000584: 4806 ldr r0, [pc, #24] @ (80005a0 <_Z16SetTrafficLights12TrafficState+0x6c>) - 8000586: f000 fd81 bl 800108c + 8000576: 2201 movs r2, #1 + 8000578: 2120 movs r1, #32 + 800057a: 4807 ldr r0, [pc, #28] @ (8000598 <_Z16SetTrafficLights12TrafficState+0x64>) + 800057c: f000 fdae bl 80010dc break; - 800058a: e005 b.n 8000598 <_Z16SetTrafficLights12TrafficState+0x64> + 8000580: e005 b.n 800058e <_Z16SetTrafficLights12TrafficState+0x5a> HAL_GPIO_WritePin(GPIOD, Red_Pin, GPIO_PIN_SET); - 800058c: 2201 movs r2, #1 - 800058e: 2108 movs r1, #8 - 8000590: 4803 ldr r0, [pc, #12] @ (80005a0 <_Z16SetTrafficLights12TrafficState+0x6c>) - 8000592: f000 fd7b bl 800108c + 8000582: 2201 movs r2, #1 + 8000584: 2108 movs r1, #8 + 8000586: 4804 ldr r0, [pc, #16] @ (8000598 <_Z16SetTrafficLights12TrafficState+0x64>) + 8000588: f000 fda8 bl 80010dc break; - 8000596: bf00 nop + 800058c: bf00 nop } - 8000598: bf00 nop - 800059a: 3708 adds r7, #8 - 800059c: 46bd mov sp, r7 - 800059e: bd80 pop {r7, pc} - 80005a0: 40020c00 .word 0x40020c00 + 800058e: bf00 nop + 8000590: 3708 adds r7, #8 + 8000592: 46bd mov sp, r7 + 8000594: bd80 pop {r7, pc} + 8000596: bf00 nop + 8000598: 40020c00 .word 0x40020c00 + +0800059c
: -080005a4
: int main(void) { - 80005a4: b580 push {r7, lr} - 80005a6: b082 sub sp, #8 - 80005a8: af00 add r7, sp, #0 + 800059c: b580 push {r7, lr} + 800059e: b082 sub sp, #8 + 80005a0: af00 add r7, sp, #0 HAL_Init(); - 80005aa: f000 fab3 bl 8000b14 + 80005a2: f000 fadf bl 8000b64 /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); - 80005ae: f000 f8a7 bl 8000700 + 80005a6: f000 f8b1 bl 800070c MX_GPIO_Init(); - 80005b2: f000 f91b bl 80007ec - + 80005aa: f000 f925 bl 80007f8 + stateStartTime = HAL_GetTick(); - 80005b6: f000 facf bl 8000b58 - 80005ba: 4603 mov r3, r0 - 80005bc: 4a4a ldr r2, [pc, #296] @ (80006e8 ) - 80005be: 6013 str r3, [r2, #0] + 80005ae: f000 fafb bl 8000ba8 + 80005b2: 4603 mov r3, r0 + 80005b4: 4a4f ldr r2, [pc, #316] @ (80006f4 ) + 80005b6: 6013 str r3, [r2, #0] SetTrafficLights(currentState); - 80005c0: 4b4a ldr r3, [pc, #296] @ (80006ec ) - 80005c2: 681b ldr r3, [r3, #0] - 80005c4: 4618 mov r0, r3 - 80005c6: f7ff ffb5 bl 8000534 <_Z16SetTrafficLights12TrafficState> - + 80005b8: 4b4f ldr r3, [pc, #316] @ (80006f8 ) + 80005ba: 681b ldr r3, [r3, #0] + 80005bc: 4618 mov r0, r3 + 80005be: f7ff ffb9 bl 8000534 <_Z16SetTrafficLights12TrafficState> + while (1) { /* USER CODE END WHILE */ uint32_t now = HAL_GetTick(); - 80005ca: f000 fac5 bl 8000b58 - 80005ce: 6078 str r0, [r7, #4] + 80005c2: f000 faf1 bl 8000ba8 + 80005c6: 6078 str r0, [r7, #4] uint32_t elapsed = now - stateStartTime; - 80005d0: 4b45 ldr r3, [pc, #276] @ (80006e8 ) - 80005d2: 681b ldr r3, [r3, #0] - 80005d4: 687a ldr r2, [r7, #4] - 80005d6: 1ad3 subs r3, r2, r3 - 80005d8: 603b str r3, [r7, #0] + 80005c8: 4b4a ldr r3, [pc, #296] @ (80006f4 ) + 80005ca: 681b ldr r3, [r3, #0] + 80005cc: 687a ldr r2, [r7, #4] + 80005ce: 1ad3 subs r3, r2, r3 + 80005d0: 603b str r3, [r7, #0] switch(currentState) - 80005da: 4b44 ldr r3, [pc, #272] @ (80006ec ) - 80005dc: 681b ldr r3, [r3, #0] - 80005de: 2b02 cmp r3, #2 - 80005e0: d03e beq.n 8000660 - 80005e2: 2b02 cmp r3, #2 - 80005e4: dcf1 bgt.n 80005ca - 80005e6: 2b00 cmp r3, #0 - 80005e8: d002 beq.n 80005f0 - 80005ea: 2b01 cmp r3, #1 - 80005ec: d019 beq.n 8000622 - 80005ee: e07a b.n 80006e6 + 80005d2: 4b49 ldr r3, [pc, #292] @ (80006f8 ) + 80005d4: 681b ldr r3, [r3, #0] + 80005d6: 2b02 cmp r3, #2 + 80005d8: d03d beq.n 8000656 + 80005da: 2b02 cmp r3, #2 + 80005dc: dcf1 bgt.n 80005c2 + 80005de: 2b00 cmp r3, #0 + 80005e0: d002 beq.n 80005e8 + 80005e2: 2b01 cmp r3, #1 + 80005e4: d018 beq.n 8000618 + 80005e6: e083 b.n 80006f0 { case TrafficState::GREEN: + // Record if the button was pressed during this green cycle if (buttonPressedThisCycle) - 80005f0: 4b3f ldr r3, [pc, #252] @ (80006f0 ) - 80005f2: 781b ldrb r3, [r3, #0] - 80005f4: 2b00 cmp r3, #0 - 80005f6: d003 beq.n 8000600 + 80005e8: 4b44 ldr r3, [pc, #272] @ (80006fc ) + 80005ea: 781b ldrb r3, [r3, #0] + 80005ec: 2b00 cmp r3, #0 + 80005ee: d002 beq.n 80005f6 + { pedestrianThisCycle = true; - 80005f8: 4b3e ldr r3, [pc, #248] @ (80006f4 ) - 80005fa: 2201 movs r2, #1 - 80005fc: 701a strb r2, [r3, #0] + 80005f0: 4b43 ldr r3, [pc, #268] @ (8000700 ) + 80005f2: 2201 movs r2, #1 + 80005f4: 701a strb r2, [r3, #0] +// else +// { +// pedestrianNextCycle = false; +// SetTrafficLights(currentState); +// } + if (elapsed >= DURATION_GREEN) + 80005f6: 683b ldr r3, [r7, #0] + 80005f8: f241 3287 movw r2, #4999 @ 0x1387 + 80005fc: 4293 cmp r3, r2 + 80005fe: d972 bls.n 80006e6 { currentState = TrafficState::YELLOW; + 8000600: 4b3d ldr r3, [pc, #244] @ (80006f8 ) + 8000602: 2201 movs r2, #1 + 8000604: 601a str r2, [r3, #0] stateStartTime = now; + 8000606: 4a3b ldr r2, [pc, #236] @ (80006f4 ) + 8000608: 687b ldr r3, [r7, #4] + 800060a: 6013 str r3, [r2, #0] SetTrafficLights(currentState); + 800060c: 4b3a ldr r3, [pc, #232] @ (80006f8 ) + 800060e: 681b ldr r3, [r3, #0] + 8000610: 4618 mov r0, r3 + 8000612: f7ff ff8f bl 8000534 <_Z16SetTrafficLights12TrafficState> } break; - 80005fe: e06d b.n 80006dc - else if (elapsed >= DURATION_GREEN) - 8000600: 683b ldr r3, [r7, #0] - 8000602: f241 3287 movw r2, #4999 @ 0x1387 - 8000606: 4293 cmp r3, r2 - 8000608: d968 bls.n 80006dc - currentState = TrafficState::YELLOW; - 800060a: 4b38 ldr r3, [pc, #224] @ (80006ec ) - 800060c: 2201 movs r2, #1 - 800060e: 601a str r2, [r3, #0] - stateStartTime = now; - 8000610: 4a35 ldr r2, [pc, #212] @ (80006e8 ) - 8000612: 687b ldr r3, [r7, #4] - 8000614: 6013 str r3, [r2, #0] - SetTrafficLights(currentState); - 8000616: 4b35 ldr r3, [pc, #212] @ (80006ec ) - 8000618: 681b ldr r3, [r3, #0] - 800061a: 4618 mov r0, r3 - 800061c: f7ff ff8a bl 8000534 <_Z16SetTrafficLights12TrafficState> - break; - 8000620: e05c b.n 80006dc - case TrafficState::YELLOW: - if (buttonPressedThisCycle || pedestrianNextCycle) - 8000622: 4b33 ldr r3, [pc, #204] @ (80006f0 ) - 8000624: 781b ldrb r3, [r3, #0] - 8000626: 2b00 cmp r3, #0 - 8000628: d103 bne.n 8000632 - 800062a: 4b33 ldr r3, [pc, #204] @ (80006f8 ) - 800062c: 781b ldrb r3, [r3, #0] - 800062e: 2b00 cmp r3, #0 - 8000630: d002 beq.n 8000638 - pedestrianThisCycle = true; - 8000632: 4b30 ldr r3, [pc, #192] @ (80006f4 ) - 8000634: 2201 movs r2, #1 - 8000636: 701a strb r2, [r3, #0] + 8000616: e066 b.n 80006e6 + case TrafficState::YELLOW: + // Record if button pressed during yellow + if (buttonPressedThisCycle || pedestrianNextCycle) + 8000618: 4b38 ldr r3, [pc, #224] @ (80006fc ) + 800061a: 781b ldrb r3, [r3, #0] + 800061c: 2b00 cmp r3, #0 + 800061e: d103 bne.n 8000628 + 8000620: 4b38 ldr r3, [pc, #224] @ (8000704 ) + 8000622: 781b ldrb r3, [r3, #0] + 8000624: 2b00 cmp r3, #0 + 8000626: d002 beq.n 800062e + { + pedestrianThisCycle = true; + 8000628: 4b35 ldr r3, [pc, #212] @ (8000700 ) + 800062a: 2201 movs r2, #1 + 800062c: 701a strb r2, [r3, #0] + } if (elapsed >= DURATION_YELLOW) - 8000638: 683b ldr r3, [r7, #0] - 800063a: f640 32b7 movw r2, #2999 @ 0xbb7 - 800063e: 4293 cmp r3, r2 - 8000640: d94e bls.n 80006e0 + 800062e: 683b ldr r3, [r7, #0] + 8000630: f640 32b7 movw r2, #2999 @ 0xbb7 + 8000634: 4293 cmp r3, r2 + 8000636: d958 bls.n 80006ea { + currentState = TrafficState::RED; - 8000642: 4b2a ldr r3, [pc, #168] @ (80006ec ) - 8000644: 2202 movs r2, #2 - 8000646: 601a str r2, [r3, #0] + 8000638: 4b2f ldr r3, [pc, #188] @ (80006f8 ) + 800063a: 2202 movs r2, #2 + 800063c: 601a str r2, [r3, #0] stateStartTime = now; - 8000648: 4a27 ldr r2, [pc, #156] @ (80006e8 ) - 800064a: 687b ldr r3, [r7, #4] - 800064c: 6013 str r3, [r2, #0] - buttonPressedThisCycle = false; //TODO add pressed pedestrian button in yellow - 800064e: 4b28 ldr r3, [pc, #160] @ (80006f0 ) + 800063e: 4a2d ldr r2, [pc, #180] @ (80006f4 ) + 8000640: 687b ldr r3, [r7, #4] + 8000642: 6013 str r3, [r2, #0] + SetTrafficLights(currentState); + 8000644: 4b2c ldr r3, [pc, #176] @ (80006f8 ) + 8000646: 681b ldr r3, [r3, #0] + 8000648: 4618 mov r0, r3 + 800064a: f7ff ff73 bl 8000534 <_Z16SetTrafficLights12TrafficState> + pedestrianNextCycle = false; + 800064e: 4b2d ldr r3, [pc, #180] @ (8000704 ) 8000650: 2200 movs r2, #0 8000652: 701a strb r2, [r3, #0] - SetTrafficLights(currentState); - 8000654: 4b25 ldr r3, [pc, #148] @ (80006ec ) - 8000656: 681b ldr r3, [r3, #0] - 8000658: 4618 mov r0, r3 - 800065a: f7ff ff6b bl 8000534 <_Z16SetTrafficLights12TrafficState> // If Ped Button was pressed during GREEN or YELLOW, we need to enable WHITE this cycle } break; - 800065e: e03f b.n 80006e0 - SetTrafficLights(currentState); - } - } - */ + 8000654: e049 b.n 80006ea + case TrafficState::RED: if (buttonPressedThisCycle) - 8000660: 4b23 ldr r3, [pc, #140] @ (80006f0 ) - 8000662: 781b ldrb r3, [r3, #0] - 8000664: 2b00 cmp r3, #0 - 8000666: d002 beq.n 800066e + 8000656: 4b29 ldr r3, [pc, #164] @ (80006fc ) + 8000658: 781b ldrb r3, [r3, #0] + 800065a: 2b00 cmp r3, #0 + 800065c: d002 beq.n 8000664 + { pedestrianNextCycle = true; - 8000668: 4b23 ldr r3, [pc, #140] @ (80006f8 ) - 800066a: 2201 movs r2, #1 - 800066c: 701a strb r2, [r3, #0] - - if (pedestrianThisCycle) { - 800066e: 4b21 ldr r3, [pc, #132] @ (80006f4 ) - 8000670: 781b ldrb r3, [r3, #0] - 8000672: 2b00 cmp r3, #0 - 8000674: d019 beq.n 80006aa - HAL_GPIO_WritePin(White_GPIO_Port, White_Pin, GPIO_PIN_RESET); - 8000676: 2200 movs r2, #0 - 8000678: 2102 movs r1, #2 - 800067a: 4820 ldr r0, [pc, #128] @ (80006fc ) - 800067c: f000 fd06 bl 800108c - pedestrianThisCycle = false; - 8000680: 4b1c ldr r3, [pc, #112] @ (80006f4 ) - 8000682: 2200 movs r2, #0 - 8000684: 701a strb r2, [r3, #0] - pedestrianNextCycle = false; - 8000686: 4b1c ldr r3, [pc, #112] @ (80006f8 ) - 8000688: 2200 movs r2, #0 - 800068a: 701a strb r2, [r3, #0] - currentState = TrafficState::GREEN; - 800068c: 4b17 ldr r3, [pc, #92] @ (80006ec ) - 800068e: 2200 movs r2, #0 - 8000690: 601a str r2, [r3, #0] - stateStartTime = now; - 8000692: 4a15 ldr r2, [pc, #84] @ (80006e8 ) - 8000694: 687b ldr r3, [r7, #4] - 8000696: 6013 str r3, [r2, #0] - SetTrafficLights(currentState); - 8000698: 4b14 ldr r3, [pc, #80] @ (80006ec ) - 800069a: 681b ldr r3, [r3, #0] - 800069c: 4618 mov r0, r3 - 800069e: f7ff ff49 bl 8000534 <_Z16SetTrafficLights12TrafficState> - buttonPressedThisCycle = false; - 80006a2: 4b13 ldr r3, [pc, #76] @ (80006f0 ) - 80006a4: 2200 movs r2, #0 - 80006a6: 701a strb r2, [r3, #0] + 800065e: 4b29 ldr r3, [pc, #164] @ (8000704 ) + 8000660: 2201 movs r2, #1 + 8000662: 701a strb r2, [r3, #0] + } + if (pedestrianThisCycle) + 8000664: 4b26 ldr r3, [pc, #152] @ (8000700 ) + 8000666: 781b ldrb r3, [r3, #0] + 8000668: 2b00 cmp r3, #0 + 800066a: d023 beq.n 80006b4 + { + HAL_GPIO_WritePin(GPIOD,White_Pin,GPIO_PIN_SET); // turn on Pedestrian LED + 800066c: 2201 movs r2, #1 + 800066e: 2102 movs r1, #2 + 8000670: 4825 ldr r0, [pc, #148] @ (8000708 ) + 8000672: f000 fd33 bl 80010dc + if (elapsed >= DURATION_RED_PED) + 8000676: 683b ldr r3, [r7, #0] + 8000678: f641 3257 movw r2, #6999 @ 0x1b57 + 800067c: 4293 cmp r3, r2 + 800067e: d936 bls.n 80006ee + { + HAL_GPIO_WritePin(GPIOD,White_Pin,GPIO_PIN_RESET); + 8000680: 2200 movs r2, #0 + 8000682: 2102 movs r1, #2 + 8000684: 4820 ldr r0, [pc, #128] @ (8000708 ) + 8000686: f000 fd29 bl 80010dc + pedestrianThisCycle = false; + 800068a: 4b1d ldr r3, [pc, #116] @ (8000700 ) + 800068c: 2200 movs r2, #0 + 800068e: 701a strb r2, [r3, #0] + pedestrianNextCycle = false; + 8000690: 4b1c ldr r3, [pc, #112] @ (8000704 ) + 8000692: 2200 movs r2, #0 + 8000694: 701a strb r2, [r3, #0] + currentState = TrafficState::GREEN; + 8000696: 4b18 ldr r3, [pc, #96] @ (80006f8 ) + 8000698: 2200 movs r2, #0 + 800069a: 601a str r2, [r3, #0] + stateStartTime = now; + 800069c: 4a15 ldr r2, [pc, #84] @ (80006f4 ) + 800069e: 687b ldr r3, [r7, #4] + 80006a0: 6013 str r3, [r2, #0] + SetTrafficLights(currentState); + 80006a2: 4b15 ldr r3, [pc, #84] @ (80006f8 ) + 80006a4: 681b ldr r3, [r3, #0] + 80006a6: 4618 mov r0, r3 + 80006a8: f7ff ff44 bl 8000534 <_Z16SetTrafficLights12TrafficState> + buttonPressedThisCycle = false; // reset button flag on transition + 80006ac: 4b13 ldr r3, [pc, #76] @ (80006fc ) + 80006ae: 2200 movs r2, #0 + 80006b0: 701a strb r2, [r3, #0] stateStartTime = now; SetTrafficLights(currentState); - buttonPressedThisCycle = false; + buttonPressedThisCycle = false; // reset button flag on transition } } break; - 80006a8: e01c b.n 80006e4 - HAL_GPIO_WritePin(White_GPIO_Port, White_Pin, GPIO_PIN_RESET); - 80006aa: 2200 movs r2, #0 - 80006ac: 2102 movs r1, #2 - 80006ae: 4813 ldr r0, [pc, #76] @ (80006fc ) - 80006b0: f000 fcec bl 800108c - if (elapsed >= DURATION_RED_NOPED) - 80006b4: 683b ldr r3, [r7, #0] - 80006b6: f241 3287 movw r2, #4999 @ 0x1387 - 80006ba: 4293 cmp r3, r2 - 80006bc: d912 bls.n 80006e4 + 80006b2: e01c b.n 80006ee + HAL_GPIO_WritePin(GPIOD,White_Pin,GPIO_PIN_RESET); + 80006b4: 2200 movs r2, #0 + 80006b6: 2102 movs r1, #2 + 80006b8: 4813 ldr r0, [pc, #76] @ (8000708 ) + 80006ba: f000 fd0f bl 80010dc + if(elapsed >= DURATION_RED_NOPED) + 80006be: 683b ldr r3, [r7, #0] + 80006c0: f241 3287 movw r2, #4999 @ 0x1387 + 80006c4: 4293 cmp r3, r2 + 80006c6: d912 bls.n 80006ee currentState = TrafficState::GREEN; - 80006be: 4b0b ldr r3, [pc, #44] @ (80006ec ) - 80006c0: 2200 movs r2, #0 - 80006c2: 601a str r2, [r3, #0] + 80006c8: 4b0b ldr r3, [pc, #44] @ (80006f8 ) + 80006ca: 2200 movs r2, #0 + 80006cc: 601a str r2, [r3, #0] stateStartTime = now; - 80006c4: 4a08 ldr r2, [pc, #32] @ (80006e8 ) - 80006c6: 687b ldr r3, [r7, #4] - 80006c8: 6013 str r3, [r2, #0] + 80006ce: 4a09 ldr r2, [pc, #36] @ (80006f4 ) + 80006d0: 687b ldr r3, [r7, #4] + 80006d2: 6013 str r3, [r2, #0] SetTrafficLights(currentState); - 80006ca: 4b08 ldr r3, [pc, #32] @ (80006ec ) - 80006cc: 681b ldr r3, [r3, #0] - 80006ce: 4618 mov r0, r3 - 80006d0: f7ff ff30 bl 8000534 <_Z16SetTrafficLights12TrafficState> - buttonPressedThisCycle = false; - 80006d4: 4b06 ldr r3, [pc, #24] @ (80006f0 ) - 80006d6: 2200 movs r2, #0 - 80006d8: 701a strb r2, [r3, #0] + 80006d4: 4b08 ldr r3, [pc, #32] @ (80006f8 ) + 80006d6: 681b ldr r3, [r3, #0] + 80006d8: 4618 mov r0, r3 + 80006da: f7ff ff2b bl 8000534 <_Z16SetTrafficLights12TrafficState> + buttonPressedThisCycle = false; // reset button flag on transition + 80006de: 4b07 ldr r3, [pc, #28] @ (80006fc ) + 80006e0: 2200 movs r2, #0 + 80006e2: 701a strb r2, [r3, #0] break; - 80006da: e003 b.n 80006e4 + 80006e4: e003 b.n 80006ee break; - 80006dc: bf00 nop - 80006de: e774 b.n 80005ca + 80006e6: bf00 nop + 80006e8: e76b b.n 80005c2 break; - 80006e0: bf00 nop - 80006e2: e772 b.n 80005ca + 80006ea: bf00 nop + 80006ec: e769 b.n 80005c2 break; - 80006e4: bf00 nop - } + 80006ee: bf00 nop + }// switch /* USER CODE BEGIN 3 */ - } - 80006e6: e770 b.n 80005ca - 80006e8: 20000028 .word 0x20000028 - 80006ec: 20000024 .word 0x20000024 - 80006f0: 2000002c .word 0x2000002c - 80006f4: 2000002e .word 0x2000002e - 80006f8: 2000002d .word 0x2000002d - 80006fc: 40020c00 .word 0x40020c00 + }// while + 80006f0: e767 b.n 80005c2 + 80006f2: bf00 nop + 80006f4: 20000028 .word 0x20000028 + 80006f8: 20000000 .word 0x20000000 + 80006fc: 2000002c .word 0x2000002c + 8000700: 2000002e .word 0x2000002e + 8000704: 2000002d .word 0x2000002d + 8000708: 40020c00 .word 0x40020c00 + +0800070c : + + -08000700 : - * @brief System Clock Configuration - * @retval None - */ void SystemClock_Config(void) { - 8000700: b580 push {r7, lr} - 8000702: b094 sub sp, #80 @ 0x50 - 8000704: af00 add r7, sp, #0 + 800070c: b580 push {r7, lr} + 800070e: b094 sub sp, #80 @ 0x50 + 8000710: af00 add r7, sp, #0 RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - 8000706: f107 0320 add.w r3, r7, #32 - 800070a: 2230 movs r2, #48 @ 0x30 - 800070c: 2100 movs r1, #0 - 800070e: 4618 mov r0, r3 - 8000710: f001 fe64 bl 80023dc + 8000712: f107 0320 add.w r3, r7, #32 + 8000716: 2230 movs r2, #48 @ 0x30 + 8000718: 2100 movs r1, #0 + 800071a: 4618 mov r0, r3 + 800071c: f001 fe7e bl 800241c RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - 8000714: f107 030c add.w r3, r7, #12 - 8000718: 2200 movs r2, #0 - 800071a: 601a str r2, [r3, #0] - 800071c: 605a str r2, [r3, #4] - 800071e: 609a str r2, [r3, #8] - 8000720: 60da str r2, [r3, #12] - 8000722: 611a str r2, [r3, #16] + 8000720: f107 030c add.w r3, r7, #12 + 8000724: 2200 movs r2, #0 + 8000726: 601a str r2, [r3, #0] + 8000728: 605a str r2, [r3, #4] + 800072a: 609a str r2, [r3, #8] + 800072c: 60da str r2, [r3, #12] + 800072e: 611a str r2, [r3, #16] /** Configure the main internal regulator output voltage */ __HAL_RCC_PWR_CLK_ENABLE(); - 8000724: 2300 movs r3, #0 - 8000726: 60bb str r3, [r7, #8] - 8000728: 4b2e ldr r3, [pc, #184] @ (80007e4 ) - 800072a: 6c1b ldr r3, [r3, #64] @ 0x40 - 800072c: 4a2d ldr r2, [pc, #180] @ (80007e4 ) - 800072e: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 8000732: 6413 str r3, [r2, #64] @ 0x40 - 8000734: 4b2b ldr r3, [pc, #172] @ (80007e4 ) + 8000730: 2300 movs r3, #0 + 8000732: 60bb str r3, [r7, #8] + 8000734: 4b2e ldr r3, [pc, #184] @ (80007f0 ) 8000736: 6c1b ldr r3, [r3, #64] @ 0x40 - 8000738: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 800073c: 60bb str r3, [r7, #8] - 800073e: 68bb ldr r3, [r7, #8] + 8000738: 4a2d ldr r2, [pc, #180] @ (80007f0 ) + 800073a: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 800073e: 6413 str r3, [r2, #64] @ 0x40 + 8000740: 4b2b ldr r3, [pc, #172] @ (80007f0 ) + 8000742: 6c1b ldr r3, [r3, #64] @ 0x40 + 8000744: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8000748: 60bb str r3, [r7, #8] + 800074a: 68bb ldr r3, [r7, #8] __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3); - 8000740: 2300 movs r3, #0 - 8000742: 607b str r3, [r7, #4] - 8000744: 4b28 ldr r3, [pc, #160] @ (80007e8 ) - 8000746: 681b ldr r3, [r3, #0] - 8000748: f423 4340 bic.w r3, r3, #49152 @ 0xc000 - 800074c: 4a26 ldr r2, [pc, #152] @ (80007e8 ) - 800074e: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 8000752: 6013 str r3, [r2, #0] - 8000754: 4b24 ldr r3, [pc, #144] @ (80007e8 ) - 8000756: 681b ldr r3, [r3, #0] - 8000758: f403 4340 and.w r3, r3, #49152 @ 0xc000 - 800075c: 607b str r3, [r7, #4] - 800075e: 687b ldr r3, [r7, #4] + 800074c: 2300 movs r3, #0 + 800074e: 607b str r3, [r7, #4] + 8000750: 4b28 ldr r3, [pc, #160] @ (80007f4 ) + 8000752: 681b ldr r3, [r3, #0] + 8000754: f423 4340 bic.w r3, r3, #49152 @ 0xc000 + 8000758: 4a26 ldr r2, [pc, #152] @ (80007f4 ) + 800075a: f443 4380 orr.w r3, r3, #16384 @ 0x4000 + 800075e: 6013 str r3, [r2, #0] + 8000760: 4b24 ldr r3, [pc, #144] @ (80007f4 ) + 8000762: 681b ldr r3, [r3, #0] + 8000764: f403 4340 and.w r3, r3, #49152 @ 0xc000 + 8000768: 607b str r3, [r7, #4] + 800076a: 687b ldr r3, [r7, #4] /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; - 8000760: 2302 movs r3, #2 - 8000762: 623b str r3, [r7, #32] - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - 8000764: 2301 movs r3, #1 - 8000766: 62fb str r3, [r7, #44] @ 0x2c - RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; - 8000768: 2310 movs r3, #16 - 800076a: 633b str r3, [r7, #48] @ 0x30 - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; 800076c: 2302 movs r3, #2 - 800076e: 63bb str r3, [r7, #56] @ 0x38 + 800076e: 623b str r3, [r7, #32] + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 8000770: 2301 movs r3, #1 + 8000772: 62fb str r3, [r7, #44] @ 0x2c + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + 8000774: 2310 movs r3, #16 + 8000776: 633b str r3, [r7, #48] @ 0x30 + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + 8000778: 2302 movs r3, #2 + 800077a: 63bb str r3, [r7, #56] @ 0x38 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; - 8000770: 2300 movs r3, #0 - 8000772: 63fb str r3, [r7, #60] @ 0x3c + 800077c: 2300 movs r3, #0 + 800077e: 63fb str r3, [r7, #60] @ 0x3c RCC_OscInitStruct.PLL.PLLM = 8; - 8000774: 2308 movs r3, #8 - 8000776: 643b str r3, [r7, #64] @ 0x40 + 8000780: 2308 movs r3, #8 + 8000782: 643b str r3, [r7, #64] @ 0x40 RCC_OscInitStruct.PLL.PLLN = 50; - 8000778: 2332 movs r3, #50 @ 0x32 - 800077a: 647b str r3, [r7, #68] @ 0x44 + 8000784: 2332 movs r3, #50 @ 0x32 + 8000786: 647b str r3, [r7, #68] @ 0x44 RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4; - 800077c: 2304 movs r3, #4 - 800077e: 64bb str r3, [r7, #72] @ 0x48 + 8000788: 2304 movs r3, #4 + 800078a: 64bb str r3, [r7, #72] @ 0x48 RCC_OscInitStruct.PLL.PLLQ = 7; - 8000780: 2307 movs r3, #7 - 8000782: 64fb str r3, [r7, #76] @ 0x4c + 800078c: 2307 movs r3, #7 + 800078e: 64fb str r3, [r7, #76] @ 0x4c if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 8000784: f107 0320 add.w r3, r7, #32 - 8000788: 4618 mov r0, r3 - 800078a: f000 fcbd bl 8001108 - 800078e: 4603 mov r3, r0 - 8000790: 2b00 cmp r3, #0 - 8000792: bf14 ite ne - 8000794: 2301 movne r3, #1 - 8000796: 2300 moveq r3, #0 - 8000798: b2db uxtb r3, r3 - 800079a: 2b00 cmp r3, #0 - 800079c: d001 beq.n 80007a2 + 8000790: f107 0320 add.w r3, r7, #32 + 8000794: 4618 mov r0, r3 + 8000796: f000 fcd3 bl 8001140 + 800079a: 4603 mov r3, r0 + 800079c: 2b00 cmp r3, #0 + 800079e: bf14 ite ne + 80007a0: 2301 movne r3, #1 + 80007a2: 2300 moveq r3, #0 + 80007a4: b2db uxtb r3, r3 + 80007a6: 2b00 cmp r3, #0 + 80007a8: d001 beq.n 80007ae { Error_Handler(); - 800079e: f000 f87f bl 80008a0 + 80007aa: f000 f8a1 bl 80008f0 } /** Initializes the CPU, AHB and APB buses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - 80007a2: 230f movs r3, #15 - 80007a4: 60fb str r3, [r7, #12] + 80007ae: 230f movs r3, #15 + 80007b0: 60fb str r3, [r7, #12] |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - 80007a6: 2302 movs r3, #2 - 80007a8: 613b str r3, [r7, #16] + 80007b2: 2302 movs r3, #2 + 80007b4: 613b str r3, [r7, #16] RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - 80007aa: 2300 movs r3, #0 - 80007ac: 617b str r3, [r7, #20] + 80007b6: 2300 movs r3, #0 + 80007b8: 617b str r3, [r7, #20] RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV8; - 80007ae: f44f 53c0 mov.w r3, #6144 @ 0x1800 - 80007b2: 61bb str r3, [r7, #24] + 80007ba: f44f 53c0 mov.w r3, #6144 @ 0x1800 + 80007be: 61bb str r3, [r7, #24] RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV4; - 80007b4: f44f 53a0 mov.w r3, #5120 @ 0x1400 - 80007b8: 61fb str r3, [r7, #28] + 80007c0: f44f 53a0 mov.w r3, #5120 @ 0x1400 + 80007c4: 61fb str r3, [r7, #28] if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) - 80007ba: f107 030c add.w r3, r7, #12 - 80007be: 2100 movs r1, #0 - 80007c0: 4618 mov r0, r3 - 80007c2: f000 ff19 bl 80015f8 - 80007c6: 4603 mov r3, r0 - 80007c8: 2b00 cmp r3, #0 - 80007ca: bf14 ite ne - 80007cc: 2301 movne r3, #1 - 80007ce: 2300 moveq r3, #0 - 80007d0: b2db uxtb r3, r3 - 80007d2: 2b00 cmp r3, #0 - 80007d4: d001 beq.n 80007da + 80007c6: f107 030c add.w r3, r7, #12 + 80007ca: 2100 movs r1, #0 + 80007cc: 4618 mov r0, r3 + 80007ce: f000 ff2f bl 8001630 + 80007d2: 4603 mov r3, r0 + 80007d4: 2b00 cmp r3, #0 + 80007d6: bf14 ite ne + 80007d8: 2301 movne r3, #1 + 80007da: 2300 moveq r3, #0 + 80007dc: b2db uxtb r3, r3 + 80007de: 2b00 cmp r3, #0 + 80007e0: d001 beq.n 80007e6 { Error_Handler(); - 80007d6: f000 f863 bl 80008a0 + 80007e2: f000 f885 bl 80008f0 } } - 80007da: bf00 nop - 80007dc: 3750 adds r7, #80 @ 0x50 - 80007de: 46bd mov sp, r7 - 80007e0: bd80 pop {r7, pc} - 80007e2: bf00 nop - 80007e4: 40023800 .word 0x40023800 - 80007e8: 40007000 .word 0x40007000 + 80007e6: bf00 nop + 80007e8: 3750 adds r7, #80 @ 0x50 + 80007ea: 46bd mov sp, r7 + 80007ec: bd80 pop {r7, pc} + 80007ee: bf00 nop + 80007f0: 40023800 .word 0x40023800 + 80007f4: 40007000 .word 0x40007000 -080007ec : +080007f8 : * @brief GPIO Initialization Function * @param None * @retval None */ static void MX_GPIO_Init(void) { - 80007ec: b580 push {r7, lr} - 80007ee: b088 sub sp, #32 - 80007f0: af00 add r7, sp, #0 + 80007f8: b580 push {r7, lr} + 80007fa: b088 sub sp, #32 + 80007fc: af00 add r7, sp, #0 GPIO_InitTypeDef GPIO_InitStruct = {0}; - 80007f2: f107 030c add.w r3, r7, #12 - 80007f6: 2200 movs r2, #0 - 80007f8: 601a str r2, [r3, #0] - 80007fa: 605a str r2, [r3, #4] - 80007fc: 609a str r2, [r3, #8] - 80007fe: 60da str r2, [r3, #12] - 8000800: 611a str r2, [r3, #16] + 80007fe: f107 030c add.w r3, r7, #12 + 8000802: 2200 movs r2, #0 + 8000804: 601a str r2, [r3, #0] + 8000806: 605a str r2, [r3, #4] + 8000808: 609a str r2, [r3, #8] + 800080a: 60da str r2, [r3, #12] + 800080c: 611a str r2, [r3, #16] /* USER CODE BEGIN MX_GPIO_Init_1 */ /* USER CODE END MX_GPIO_Init_1 */ /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOA_CLK_ENABLE(); - 8000802: 2300 movs r3, #0 - 8000804: 60bb str r3, [r7, #8] - 8000806: 4b23 ldr r3, [pc, #140] @ (8000894 ) - 8000808: 6b1b ldr r3, [r3, #48] @ 0x30 - 800080a: 4a22 ldr r2, [pc, #136] @ (8000894 ) - 800080c: f043 0301 orr.w r3, r3, #1 - 8000810: 6313 str r3, [r2, #48] @ 0x30 - 8000812: 4b20 ldr r3, [pc, #128] @ (8000894 ) + 800080e: 2300 movs r3, #0 + 8000810: 60bb str r3, [r7, #8] + 8000812: 4b23 ldr r3, [pc, #140] @ (80008a0 ) 8000814: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000816: f003 0301 and.w r3, r3, #1 - 800081a: 60bb str r3, [r7, #8] - 800081c: 68bb ldr r3, [r7, #8] + 8000816: 4a22 ldr r2, [pc, #136] @ (80008a0 ) + 8000818: f043 0301 orr.w r3, r3, #1 + 800081c: 6313 str r3, [r2, #48] @ 0x30 + 800081e: 4b20 ldr r3, [pc, #128] @ (80008a0 ) + 8000820: 6b1b ldr r3, [r3, #48] @ 0x30 + 8000822: f003 0301 and.w r3, r3, #1 + 8000826: 60bb str r3, [r7, #8] + 8000828: 68bb ldr r3, [r7, #8] __HAL_RCC_GPIOD_CLK_ENABLE(); - 800081e: 2300 movs r3, #0 - 8000820: 607b str r3, [r7, #4] - 8000822: 4b1c ldr r3, [pc, #112] @ (8000894 ) - 8000824: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000826: 4a1b ldr r2, [pc, #108] @ (8000894 ) - 8000828: f043 0308 orr.w r3, r3, #8 - 800082c: 6313 str r3, [r2, #48] @ 0x30 - 800082e: 4b19 ldr r3, [pc, #100] @ (8000894 ) + 800082a: 2300 movs r3, #0 + 800082c: 607b str r3, [r7, #4] + 800082e: 4b1c ldr r3, [pc, #112] @ (80008a0 ) 8000830: 6b1b ldr r3, [r3, #48] @ 0x30 - 8000832: f003 0308 and.w r3, r3, #8 - 8000836: 607b str r3, [r7, #4] - 8000838: 687b ldr r3, [r7, #4] + 8000832: 4a1b ldr r2, [pc, #108] @ (80008a0 ) + 8000834: f043 0308 orr.w r3, r3, #8 + 8000838: 6313 str r3, [r2, #48] @ 0x30 + 800083a: 4b19 ldr r3, [pc, #100] @ (80008a0 ) + 800083c: 6b1b ldr r3, [r3, #48] @ 0x30 + 800083e: f003 0308 and.w r3, r3, #8 + 8000842: 607b str r3, [r7, #4] + 8000844: 687b ldr r3, [r7, #4] /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOD, White_Pin|Red_Pin|Yellow_Pin|Green_Pin, GPIO_PIN_RESET); - 800083a: 2200 movs r2, #0 - 800083c: 21aa movs r1, #170 @ 0xaa - 800083e: 4816 ldr r0, [pc, #88] @ (8000898 ) - 8000840: f000 fc24 bl 800108c + 8000846: 2200 movs r2, #0 + 8000848: 21aa movs r1, #170 @ 0xaa + 800084a: 4816 ldr r0, [pc, #88] @ (80008a4 ) + 800084c: f000 fc46 bl 80010dc /*Configure GPIO pin : PedButton_Pin */ GPIO_InitStruct.Pin = PedButton_Pin; - 8000844: f44f 4380 mov.w r3, #16384 @ 0x4000 - 8000848: 60fb str r3, [r7, #12] + 8000850: f44f 4380 mov.w r3, #16384 @ 0x4000 + 8000854: 60fb str r3, [r7, #12] GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; - 800084a: f44f 1388 mov.w r3, #1114112 @ 0x110000 - 800084e: 613b str r3, [r7, #16] + 8000856: f44f 1388 mov.w r3, #1114112 @ 0x110000 + 800085a: 613b str r3, [r7, #16] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8000850: 2300 movs r3, #0 - 8000852: 617b str r3, [r7, #20] + 800085c: 2300 movs r3, #0 + 800085e: 617b str r3, [r7, #20] HAL_GPIO_Init(PedButton_GPIO_Port, &GPIO_InitStruct); - 8000854: f107 030c add.w r3, r7, #12 - 8000858: 4619 mov r1, r3 - 800085a: 4810 ldr r0, [pc, #64] @ (800089c ) - 800085c: f000 fa6a bl 8000d34 + 8000860: f107 030c add.w r3, r7, #12 + 8000864: 4619 mov r1, r3 + 8000866: 4810 ldr r0, [pc, #64] @ (80008a8 ) + 8000868: f000 fa8c bl 8000d84 /*Configure GPIO pins : White_Pin Red_Pin Yellow_Pin Green_Pin */ GPIO_InitStruct.Pin = White_Pin|Red_Pin|Yellow_Pin|Green_Pin; - 8000860: 23aa movs r3, #170 @ 0xaa - 8000862: 60fb str r3, [r7, #12] + 800086c: 23aa movs r3, #170 @ 0xaa + 800086e: 60fb str r3, [r7, #12] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8000864: 2301 movs r3, #1 - 8000866: 613b str r3, [r7, #16] + 8000870: 2301 movs r3, #1 + 8000872: 613b str r3, [r7, #16] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8000868: 2300 movs r3, #0 - 800086a: 617b str r3, [r7, #20] + 8000874: 2300 movs r3, #0 + 8000876: 617b str r3, [r7, #20] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 800086c: 2300 movs r3, #0 - 800086e: 61bb str r3, [r7, #24] + 8000878: 2300 movs r3, #0 + 800087a: 61bb str r3, [r7, #24] HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 8000870: f107 030c add.w r3, r7, #12 - 8000874: 4619 mov r1, r3 - 8000876: 4808 ldr r0, [pc, #32] @ (8000898 ) - 8000878: f000 fa5c bl 8000d34 + 800087c: f107 030c add.w r3, r7, #12 + 8000880: 4619 mov r1, r3 + 8000882: 4808 ldr r0, [pc, #32] @ (80008a4 ) + 8000884: f000 fa7e bl 8000d84 /* EXTI interrupt init*/ HAL_NVIC_SetPriority(EXTI15_10_IRQn, 15, 0); - 800087c: 2200 movs r2, #0 - 800087e: 210f movs r1, #15 - 8000880: 2028 movs r0, #40 @ 0x28 - 8000882: f000 fa2d bl 8000ce0 + 8000888: 2200 movs r2, #0 + 800088a: 210f movs r1, #15 + 800088c: 2028 movs r0, #40 @ 0x28 + 800088e: f000 fa4f bl 8000d30 HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); - 8000886: 2028 movs r0, #40 @ 0x28 - 8000888: f000 fa46 bl 8000d18 + 8000892: 2028 movs r0, #40 @ 0x28 + 8000894: f000 fa68 bl 8000d68 /* USER CODE BEGIN MX_GPIO_Init_2 */ /* USER CODE END MX_GPIO_Init_2 */ } - 800088c: bf00 nop - 800088e: 3720 adds r7, #32 - 8000890: 46bd mov sp, r7 - 8000892: bd80 pop {r7, pc} - 8000894: 40023800 .word 0x40023800 - 8000898: 40020c00 .word 0x40020c00 - 800089c: 40020000 .word 0x40020000 + 8000898: bf00 nop + 800089a: 3720 adds r7, #32 + 800089c: 46bd mov sp, r7 + 800089e: bd80 pop {r7, pc} + 80008a0: 40023800 .word 0x40023800 + 80008a4: 40020c00 .word 0x40020c00 + 80008a8: 40020000 .word 0x40020000 -080008a0 : +080008ac : +//{ +// HAL_GPIO_EXTI_IRQHandler(PedButton_Pin); +//} + +extern "C" void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) +{ + 80008ac: b580 push {r7, lr} + 80008ae: b084 sub sp, #16 + 80008b0: af00 add r7, sp, #0 + 80008b2: 4603 mov r3, r0 + 80008b4: 80fb strh r3, [r7, #6] + static uint32_t lastInterruptTime = 0; + uint32_t now = HAL_GetTick(); + 80008b6: f000 f977 bl 8000ba8 + 80008ba: 60f8 str r0, [r7, #12] + + /* software debounce */ + if(now - lastInterruptTime < 100) + 80008bc: 4b0a ldr r3, [pc, #40] @ (80008e8 ) + 80008be: 681b ldr r3, [r3, #0] + 80008c0: 68fa ldr r2, [r7, #12] + 80008c2: 1ad3 subs r3, r2, r3 + 80008c4: 2b63 cmp r3, #99 @ 0x63 + 80008c6: d90a bls.n 80008de + { + return; + } + lastInterruptTime = now; + 80008c8: 4a07 ldr r2, [pc, #28] @ (80008e8 ) + 80008ca: 68fb ldr r3, [r7, #12] + 80008cc: 6013 str r3, [r2, #0] + + if (GPIO_Pin == PedButton_Pin) + 80008ce: 88fb ldrh r3, [r7, #6] + 80008d0: f5b3 4f80 cmp.w r3, #16384 @ 0x4000 + 80008d4: d104 bne.n 80008e0 + { + buttonPressedThisCycle = true; + 80008d6: 4b05 ldr r3, [pc, #20] @ (80008ec ) + 80008d8: 2201 movs r2, #1 + 80008da: 701a strb r2, [r3, #0] + 80008dc: e000 b.n 80008e0 + return; + 80008de: bf00 nop + } +} + 80008e0: 3710 adds r7, #16 + 80008e2: 46bd mov sp, r7 + 80008e4: bd80 pop {r7, pc} + 80008e6: bf00 nop + 80008e8: 20000030 .word 0x20000030 + 80008ec: 2000002c .word 0x2000002c + +080008f0 : /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { - 80008a0: b480 push {r7} - 80008a2: af00 add r7, sp, #0 + 80008f0: b480 push {r7} + 80008f2: af00 add r7, sp, #0 \details Disables IRQ interrupts by setting special-purpose register PRIMASK. Can only be executed in Privileged modes. */ __STATIC_FORCEINLINE void __disable_irq(void) { __ASM volatile ("cpsid i" : : : "memory"); - 80008a4: b672 cpsid i + 80008f4: b672 cpsid i } - 80008a6: bf00 nop + 80008f6: 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) - 80008a8: bf00 nop - 80008aa: e7fd b.n 80008a8 + 80008f8: bf00 nop + 80008fa: e7fd b.n 80008f8 -080008ac : +080008fc : /* USER CODE END 0 */ /** * Initializes the Global MSP. */ void HAL_MspInit(void) { - 80008ac: b580 push {r7, lr} - 80008ae: b082 sub sp, #8 - 80008b0: af00 add r7, sp, #0 + 80008fc: b580 push {r7, lr} + 80008fe: b082 sub sp, #8 + 8000900: af00 add r7, sp, #0 /* USER CODE BEGIN MspInit 0 */ /* USER CODE END MspInit 0 */ __HAL_RCC_SYSCFG_CLK_ENABLE(); - 80008b2: 2300 movs r3, #0 - 80008b4: 607b str r3, [r7, #4] - 80008b6: 4b12 ldr r3, [pc, #72] @ (8000900 ) - 80008b8: 6c5b ldr r3, [r3, #68] @ 0x44 - 80008ba: 4a11 ldr r2, [pc, #68] @ (8000900 ) - 80008bc: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 80008c0: 6453 str r3, [r2, #68] @ 0x44 - 80008c2: 4b0f ldr r3, [pc, #60] @ (8000900 ) - 80008c4: 6c5b ldr r3, [r3, #68] @ 0x44 - 80008c6: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 80008ca: 607b str r3, [r7, #4] - 80008cc: 687b ldr r3, [r7, #4] + 8000902: 2300 movs r3, #0 + 8000904: 607b str r3, [r7, #4] + 8000906: 4b12 ldr r3, [pc, #72] @ (8000950 ) + 8000908: 6c5b ldr r3, [r3, #68] @ 0x44 + 800090a: 4a11 ldr r2, [pc, #68] @ (8000950 ) + 800090c: f443 4380 orr.w r3, r3, #16384 @ 0x4000 + 8000910: 6453 str r3, [r2, #68] @ 0x44 + 8000912: 4b0f ldr r3, [pc, #60] @ (8000950 ) + 8000914: 6c5b ldr r3, [r3, #68] @ 0x44 + 8000916: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 800091a: 607b str r3, [r7, #4] + 800091c: 687b ldr r3, [r7, #4] __HAL_RCC_PWR_CLK_ENABLE(); - 80008ce: 2300 movs r3, #0 - 80008d0: 603b str r3, [r7, #0] - 80008d2: 4b0b ldr r3, [pc, #44] @ (8000900 ) - 80008d4: 6c1b ldr r3, [r3, #64] @ 0x40 - 80008d6: 4a0a ldr r2, [pc, #40] @ (8000900 ) - 80008d8: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 80008dc: 6413 str r3, [r2, #64] @ 0x40 - 80008de: 4b08 ldr r3, [pc, #32] @ (8000900 ) - 80008e0: 6c1b ldr r3, [r3, #64] @ 0x40 - 80008e2: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 80008e6: 603b str r3, [r7, #0] - 80008e8: 683b ldr r3, [r7, #0] + 800091e: 2300 movs r3, #0 + 8000920: 603b str r3, [r7, #0] + 8000922: 4b0b ldr r3, [pc, #44] @ (8000950 ) + 8000924: 6c1b ldr r3, [r3, #64] @ 0x40 + 8000926: 4a0a ldr r2, [pc, #40] @ (8000950 ) + 8000928: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 800092c: 6413 str r3, [r2, #64] @ 0x40 + 800092e: 4b08 ldr r3, [pc, #32] @ (8000950 ) + 8000930: 6c1b ldr r3, [r3, #64] @ 0x40 + 8000932: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 8000936: 603b str r3, [r7, #0] + 8000938: 683b ldr r3, [r7, #0] /* System interrupt init*/ /* PendSV_IRQn interrupt configuration */ HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0); - 80008ea: 2200 movs r2, #0 - 80008ec: 210f movs r1, #15 - 80008ee: f06f 0001 mvn.w r0, #1 - 80008f2: f000 f9f5 bl 8000ce0 + 800093a: 2200 movs r2, #0 + 800093c: 210f movs r1, #15 + 800093e: f06f 0001 mvn.w r0, #1 + 8000942: f000 f9f5 bl 8000d30 /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */ } - 80008f6: bf00 nop - 80008f8: 3708 adds r7, #8 - 80008fa: 46bd mov sp, r7 - 80008fc: bd80 pop {r7, pc} - 80008fe: bf00 nop - 8000900: 40023800 .word 0x40023800 + 8000946: bf00 nop + 8000948: 3708 adds r7, #8 + 800094a: 46bd mov sp, r7 + 800094c: bd80 pop {r7, pc} + 800094e: bf00 nop + 8000950: 40023800 .word 0x40023800 -08000904 : +08000954 : * 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) { - 8000904: b480 push {r7} - 8000906: b085 sub sp, #20 - 8000908: af00 add r7, sp, #0 - 800090a: 6078 str r0, [r7, #4] + 8000954: b480 push {r7} + 8000956: b085 sub sp, #20 + 8000958: af00 add r7, sp, #0 + 800095a: 6078 str r0, [r7, #4] if(htim_base->Instance==TIM1) - 800090c: 687b ldr r3, [r7, #4] - 800090e: 681b ldr r3, [r3, #0] - 8000910: 4a0b ldr r2, [pc, #44] @ (8000940 ) - 8000912: 4293 cmp r3, r2 - 8000914: d10d bne.n 8000932 + 800095c: 687b ldr r3, [r7, #4] + 800095e: 681b ldr r3, [r3, #0] + 8000960: 4a0b ldr r2, [pc, #44] @ (8000990 ) + 8000962: 4293 cmp r3, r2 + 8000964: d10d bne.n 8000982 { /* USER CODE BEGIN TIM1_MspInit 0 */ /* USER CODE END TIM1_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_TIM1_CLK_ENABLE(); - 8000916: 2300 movs r3, #0 - 8000918: 60fb str r3, [r7, #12] - 800091a: 4b0a ldr r3, [pc, #40] @ (8000944 ) - 800091c: 6c5b ldr r3, [r3, #68] @ 0x44 - 800091e: 4a09 ldr r2, [pc, #36] @ (8000944 ) - 8000920: f043 0301 orr.w r3, r3, #1 - 8000924: 6453 str r3, [r2, #68] @ 0x44 - 8000926: 4b07 ldr r3, [pc, #28] @ (8000944 ) - 8000928: 6c5b ldr r3, [r3, #68] @ 0x44 - 800092a: f003 0301 and.w r3, r3, #1 - 800092e: 60fb str r3, [r7, #12] - 8000930: 68fb ldr r3, [r7, #12] + 8000966: 2300 movs r3, #0 + 8000968: 60fb str r3, [r7, #12] + 800096a: 4b0a ldr r3, [pc, #40] @ (8000994 ) + 800096c: 6c5b ldr r3, [r3, #68] @ 0x44 + 800096e: 4a09 ldr r2, [pc, #36] @ (8000994 ) + 8000970: f043 0301 orr.w r3, r3, #1 + 8000974: 6453 str r3, [r2, #68] @ 0x44 + 8000976: 4b07 ldr r3, [pc, #28] @ (8000994 ) + 8000978: 6c5b ldr r3, [r3, #68] @ 0x44 + 800097a: f003 0301 and.w r3, r3, #1 + 800097e: 60fb str r3, [r7, #12] + 8000980: 68fb ldr r3, [r7, #12] /* USER CODE END TIM1_MspInit 1 */ } } - 8000932: bf00 nop - 8000934: 3714 adds r7, #20 - 8000936: 46bd mov sp, r7 - 8000938: f85d 7b04 ldr.w r7, [sp], #4 - 800093c: 4770 bx lr - 800093e: bf00 nop - 8000940: 40010000 .word 0x40010000 - 8000944: 40023800 .word 0x40023800 + 8000982: bf00 nop + 8000984: 3714 adds r7, #20 + 8000986: 46bd mov sp, r7 + 8000988: f85d 7b04 ldr.w r7, [sp], #4 + 800098c: 4770 bx lr + 800098e: bf00 nop + 8000990: 40010000 .word 0x40010000 + 8000994: 40023800 .word 0x40023800 -08000948 : +08000998 : * reset by HAL_Init() or at any time when clock is configured, by HAL_RCC_ClockConfig(). * @param TickPriority: Tick interrupt priority. * @retval HAL status */ HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { - 8000948: b580 push {r7, lr} - 800094a: b08e sub sp, #56 @ 0x38 - 800094c: af00 add r7, sp, #0 - 800094e: 6078 str r0, [r7, #4] + 8000998: b580 push {r7, lr} + 800099a: b08e sub sp, #56 @ 0x38 + 800099c: af00 add r7, sp, #0 + 800099e: 6078 str r0, [r7, #4] RCC_ClkInitTypeDef clkconfig; uint32_t uwTimclock, uwAPB1Prescaler = 0U; - 8000950: 2300 movs r3, #0 - 8000952: 62fb str r3, [r7, #44] @ 0x2c + 80009a0: 2300 movs r3, #0 + 80009a2: 62fb str r3, [r7, #44] @ 0x2c uint32_t uwPrescalerValue = 0U; - 8000954: 2300 movs r3, #0 - 8000956: 62bb str r3, [r7, #40] @ 0x28 + 80009a4: 2300 movs r3, #0 + 80009a6: 62bb str r3, [r7, #40] @ 0x28 uint32_t pFLatency; HAL_StatusTypeDef status; /* Enable TIM6 clock */ __HAL_RCC_TIM6_CLK_ENABLE(); - 8000958: 2300 movs r3, #0 - 800095a: 60fb str r3, [r7, #12] - 800095c: 4b33 ldr r3, [pc, #204] @ (8000a2c ) - 800095e: 6c1b ldr r3, [r3, #64] @ 0x40 - 8000960: 4a32 ldr r2, [pc, #200] @ (8000a2c ) - 8000962: f043 0310 orr.w r3, r3, #16 - 8000966: 6413 str r3, [r2, #64] @ 0x40 - 8000968: 4b30 ldr r3, [pc, #192] @ (8000a2c ) - 800096a: 6c1b ldr r3, [r3, #64] @ 0x40 - 800096c: f003 0310 and.w r3, r3, #16 - 8000970: 60fb str r3, [r7, #12] - 8000972: 68fb ldr r3, [r7, #12] + 80009a8: 2300 movs r3, #0 + 80009aa: 60fb str r3, [r7, #12] + 80009ac: 4b33 ldr r3, [pc, #204] @ (8000a7c ) + 80009ae: 6c1b ldr r3, [r3, #64] @ 0x40 + 80009b0: 4a32 ldr r2, [pc, #200] @ (8000a7c ) + 80009b2: f043 0310 orr.w r3, r3, #16 + 80009b6: 6413 str r3, [r2, #64] @ 0x40 + 80009b8: 4b30 ldr r3, [pc, #192] @ (8000a7c ) + 80009ba: 6c1b ldr r3, [r3, #64] @ 0x40 + 80009bc: f003 0310 and.w r3, r3, #16 + 80009c0: 60fb str r3, [r7, #12] + 80009c2: 68fb ldr r3, [r7, #12] /* Get clock configuration */ HAL_RCC_GetClockConfig(&clkconfig, &pFLatency); - 8000974: f107 0210 add.w r2, r7, #16 - 8000978: f107 0314 add.w r3, r7, #20 - 800097c: 4611 mov r1, r2 - 800097e: 4618 mov r0, r3 - 8000980: f001 f846 bl 8001a10 + 80009c4: f107 0210 add.w r2, r7, #16 + 80009c8: f107 0314 add.w r3, r7, #20 + 80009cc: 4611 mov r1, r2 + 80009ce: 4618 mov r0, r3 + 80009d0: f001 f83a bl 8001a48 /* Get APB1 prescaler */ uwAPB1Prescaler = clkconfig.APB1CLKDivider; - 8000984: 6a3b ldr r3, [r7, #32] - 8000986: 62fb str r3, [r7, #44] @ 0x2c + 80009d4: 6a3b ldr r3, [r7, #32] + 80009d6: 62fb str r3, [r7, #44] @ 0x2c /* Compute TIM6 clock */ if (uwAPB1Prescaler == RCC_HCLK_DIV1) - 8000988: 6afb ldr r3, [r7, #44] @ 0x2c - 800098a: 2b00 cmp r3, #0 - 800098c: d103 bne.n 8000996 + 80009d8: 6afb ldr r3, [r7, #44] @ 0x2c + 80009da: 2b00 cmp r3, #0 + 80009dc: d103 bne.n 80009e6 { uwTimclock = HAL_RCC_GetPCLK1Freq(); - 800098e: f001 f82b bl 80019e8 - 8000992: 6378 str r0, [r7, #52] @ 0x34 - 8000994: e004 b.n 80009a0 + 80009de: f001 f81f bl 8001a20 + 80009e2: 6378 str r0, [r7, #52] @ 0x34 + 80009e4: e004 b.n 80009f0 } else { uwTimclock = 2UL * HAL_RCC_GetPCLK1Freq(); - 8000996: f001 f827 bl 80019e8 - 800099a: 4603 mov r3, r0 - 800099c: 005b lsls r3, r3, #1 - 800099e: 637b str r3, [r7, #52] @ 0x34 + 80009e6: f001 f81b bl 8001a20 + 80009ea: 4603 mov r3, r0 + 80009ec: 005b lsls r3, r3, #1 + 80009ee: 637b str r3, [r7, #52] @ 0x34 } /* Compute the prescaler value to have TIM6 counter clock equal to 1MHz */ uwPrescalerValue = (uint32_t) ((uwTimclock / 1000000U) - 1U); - 80009a0: 6b7b ldr r3, [r7, #52] @ 0x34 - 80009a2: 4a23 ldr r2, [pc, #140] @ (8000a30 ) - 80009a4: fba2 2303 umull r2, r3, r2, r3 - 80009a8: 0c9b lsrs r3, r3, #18 - 80009aa: 3b01 subs r3, #1 - 80009ac: 62bb str r3, [r7, #40] @ 0x28 + 80009f0: 6b7b ldr r3, [r7, #52] @ 0x34 + 80009f2: 4a23 ldr r2, [pc, #140] @ (8000a80 ) + 80009f4: fba2 2303 umull r2, r3, r2, r3 + 80009f8: 0c9b lsrs r3, r3, #18 + 80009fa: 3b01 subs r3, #1 + 80009fc: 62bb str r3, [r7, #40] @ 0x28 /* Initialize TIM6 */ htim6.Instance = TIM6; - 80009ae: 4b21 ldr r3, [pc, #132] @ (8000a34 ) - 80009b0: 4a21 ldr r2, [pc, #132] @ (8000a38 ) - 80009b2: 601a str r2, [r3, #0] + 80009fe: 4b21 ldr r3, [pc, #132] @ (8000a84 ) + 8000a00: 4a21 ldr r2, [pc, #132] @ (8000a88 ) + 8000a02: 601a str r2, [r3, #0] * Period = [(TIM6CLK/1000) - 1]. to have a (1/1000) s time base. * Prescaler = (uwTimclock/1000000 - 1) to have a 1MHz counter clock. * ClockDivision = 0 * Counter direction = Up */ htim6.Init.Period = (1000000U / 1000U) - 1U; - 80009b4: 4b1f ldr r3, [pc, #124] @ (8000a34 ) - 80009b6: f240 32e7 movw r2, #999 @ 0x3e7 - 80009ba: 60da str r2, [r3, #12] + 8000a04: 4b1f ldr r3, [pc, #124] @ (8000a84 ) + 8000a06: f240 32e7 movw r2, #999 @ 0x3e7 + 8000a0a: 60da str r2, [r3, #12] htim6.Init.Prescaler = uwPrescalerValue; - 80009bc: 4a1d ldr r2, [pc, #116] @ (8000a34 ) - 80009be: 6abb ldr r3, [r7, #40] @ 0x28 - 80009c0: 6053 str r3, [r2, #4] + 8000a0c: 4a1d ldr r2, [pc, #116] @ (8000a84 ) + 8000a0e: 6abb ldr r3, [r7, #40] @ 0x28 + 8000a10: 6053 str r3, [r2, #4] htim6.Init.ClockDivision = 0; - 80009c2: 4b1c ldr r3, [pc, #112] @ (8000a34 ) - 80009c4: 2200 movs r2, #0 - 80009c6: 611a str r2, [r3, #16] + 8000a12: 4b1c ldr r3, [pc, #112] @ (8000a84 ) + 8000a14: 2200 movs r2, #0 + 8000a16: 611a str r2, [r3, #16] htim6.Init.CounterMode = TIM_COUNTERMODE_UP; - 80009c8: 4b1a ldr r3, [pc, #104] @ (8000a34 ) - 80009ca: 2200 movs r2, #0 - 80009cc: 609a str r2, [r3, #8] + 8000a18: 4b1a ldr r3, [pc, #104] @ (8000a84 ) + 8000a1a: 2200 movs r2, #0 + 8000a1c: 609a str r2, [r3, #8] htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 80009ce: 4b19 ldr r3, [pc, #100] @ (8000a34 ) - 80009d0: 2200 movs r2, #0 - 80009d2: 619a str r2, [r3, #24] + 8000a1e: 4b19 ldr r3, [pc, #100] @ (8000a84 ) + 8000a20: 2200 movs r2, #0 + 8000a22: 619a str r2, [r3, #24] status = HAL_TIM_Base_Init(&htim6); - 80009d4: 4817 ldr r0, [pc, #92] @ (8000a34 ) - 80009d6: f001 f84d bl 8001a74 - 80009da: 4603 mov r3, r0 - 80009dc: f887 3033 strb.w r3, [r7, #51] @ 0x33 + 8000a24: 4817 ldr r0, [pc, #92] @ (8000a84 ) + 8000a26: f001 f841 bl 8001aac + 8000a2a: 4603 mov r3, r0 + 8000a2c: f887 3033 strb.w r3, [r7, #51] @ 0x33 if (status == HAL_OK) - 80009e0: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 - 80009e4: 2b00 cmp r3, #0 - 80009e6: d11b bne.n 8000a20 + 8000a30: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 + 8000a34: 2b00 cmp r3, #0 + 8000a36: d11b bne.n 8000a70 { /* Start the TIM time Base generation in interrupt mode */ status = HAL_TIM_Base_Start_IT(&htim6); - 80009e8: 4812 ldr r0, [pc, #72] @ (8000a34 ) - 80009ea: f001 f893 bl 8001b14 - 80009ee: 4603 mov r3, r0 - 80009f0: f887 3033 strb.w r3, [r7, #51] @ 0x33 + 8000a38: 4812 ldr r0, [pc, #72] @ (8000a84 ) + 8000a3a: f001 f887 bl 8001b4c + 8000a3e: 4603 mov r3, r0 + 8000a40: f887 3033 strb.w r3, [r7, #51] @ 0x33 if (status == HAL_OK) - 80009f4: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 - 80009f8: 2b00 cmp r3, #0 - 80009fa: d111 bne.n 8000a20 + 8000a44: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 + 8000a48: 2b00 cmp r3, #0 + 8000a4a: d111 bne.n 8000a70 { /* Enable the TIM6 global Interrupt */ HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn); - 80009fc: 2036 movs r0, #54 @ 0x36 - 80009fe: f000 f98b bl 8000d18 + 8000a4c: 2036 movs r0, #54 @ 0x36 + 8000a4e: f000 f98b bl 8000d68 /* Configure the SysTick IRQ priority */ if (TickPriority < (1UL << __NVIC_PRIO_BITS)) - 8000a02: 687b ldr r3, [r7, #4] - 8000a04: 2b0f cmp r3, #15 - 8000a06: d808 bhi.n 8000a1a + 8000a52: 687b ldr r3, [r7, #4] + 8000a54: 2b0f cmp r3, #15 + 8000a56: d808 bhi.n 8000a6a { /* Configure the TIM IRQ priority */ HAL_NVIC_SetPriority(TIM6_DAC_IRQn, TickPriority, 0U); - 8000a08: 2200 movs r2, #0 - 8000a0a: 6879 ldr r1, [r7, #4] - 8000a0c: 2036 movs r0, #54 @ 0x36 - 8000a0e: f000 f967 bl 8000ce0 + 8000a58: 2200 movs r2, #0 + 8000a5a: 6879 ldr r1, [r7, #4] + 8000a5c: 2036 movs r0, #54 @ 0x36 + 8000a5e: f000 f967 bl 8000d30 uwTickPrio = TickPriority; - 8000a12: 4a0a ldr r2, [pc, #40] @ (8000a3c ) - 8000a14: 687b ldr r3, [r7, #4] - 8000a16: 6013 str r3, [r2, #0] - 8000a18: e002 b.n 8000a20 + 8000a62: 4a0a ldr r2, [pc, #40] @ (8000a8c ) + 8000a64: 687b ldr r3, [r7, #4] + 8000a66: 6013 str r3, [r2, #0] + 8000a68: e002 b.n 8000a70 } else { status = HAL_ERROR; - 8000a1a: 2301 movs r3, #1 - 8000a1c: f887 3033 strb.w r3, [r7, #51] @ 0x33 + 8000a6a: 2301 movs r3, #1 + 8000a6c: f887 3033 strb.w r3, [r7, #51] @ 0x33 } } } /* Return function status */ return status; - 8000a20: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 + 8000a70: f897 3033 ldrb.w r3, [r7, #51] @ 0x33 } - 8000a24: 4618 mov r0, r3 - 8000a26: 3738 adds r7, #56 @ 0x38 - 8000a28: 46bd mov sp, r7 - 8000a2a: bd80 pop {r7, pc} - 8000a2c: 40023800 .word 0x40023800 - 8000a30: 431bde83 .word 0x431bde83 - 8000a34: 20000030 .word 0x20000030 - 8000a38: 40001000 .word 0x40001000 - 8000a3c: 20000004 .word 0x20000004 + 8000a74: 4618 mov r0, r3 + 8000a76: 3738 adds r7, #56 @ 0x38 + 8000a78: 46bd mov sp, r7 + 8000a7a: bd80 pop {r7, pc} + 8000a7c: 40023800 .word 0x40023800 + 8000a80: 431bde83 .word 0x431bde83 + 8000a84: 20000034 .word 0x20000034 + 8000a88: 40001000 .word 0x40001000 + 8000a8c: 20000008 .word 0x20000008 -08000a40 : +08000a90 : /******************************************************************************/ /** * @brief This function handles Non maskable interrupt. */ void NMI_Handler(void) { - 8000a40: b480 push {r7} - 8000a42: af00 add r7, sp, #0 + 8000a90: b480 push {r7} + 8000a92: 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) - 8000a44: bf00 nop - 8000a46: e7fd b.n 8000a44 + 8000a94: bf00 nop + 8000a96: e7fd b.n 8000a94 -08000a48 : +08000a98 : /** * @brief This function handles Hard fault interrupt. */ void HardFault_Handler(void) { - 8000a48: b480 push {r7} - 8000a4a: af00 add r7, sp, #0 + 8000a98: b480 push {r7} + 8000a9a: af00 add r7, sp, #0 /* USER CODE BEGIN HardFault_IRQn 0 */ /* USER CODE END HardFault_IRQn 0 */ while (1) - 8000a4c: bf00 nop - 8000a4e: e7fd b.n 8000a4c + 8000a9c: bf00 nop + 8000a9e: e7fd b.n 8000a9c -08000a50 : +08000aa0 : /** * @brief This function handles Memory management fault. */ void MemManage_Handler(void) { - 8000a50: b480 push {r7} - 8000a52: af00 add r7, sp, #0 + 8000aa0: b480 push {r7} + 8000aa2: af00 add r7, sp, #0 /* USER CODE BEGIN MemoryManagement_IRQn 0 */ /* USER CODE END MemoryManagement_IRQn 0 */ while (1) - 8000a54: bf00 nop - 8000a56: e7fd b.n 8000a54 + 8000aa4: bf00 nop + 8000aa6: e7fd b.n 8000aa4 -08000a58 : +08000aa8 : /** * @brief This function handles Pre-fetch fault, memory access fault. */ void BusFault_Handler(void) { - 8000a58: b480 push {r7} - 8000a5a: af00 add r7, sp, #0 + 8000aa8: b480 push {r7} + 8000aaa: af00 add r7, sp, #0 /* USER CODE BEGIN BusFault_IRQn 0 */ /* USER CODE END BusFault_IRQn 0 */ while (1) - 8000a5c: bf00 nop - 8000a5e: e7fd b.n 8000a5c + 8000aac: bf00 nop + 8000aae: e7fd b.n 8000aac -08000a60 : +08000ab0 : /** * @brief This function handles Undefined instruction or illegal state. */ void UsageFault_Handler(void) { - 8000a60: b480 push {r7} - 8000a62: af00 add r7, sp, #0 + 8000ab0: b480 push {r7} + 8000ab2: af00 add r7, sp, #0 /* USER CODE BEGIN UsageFault_IRQn 0 */ /* USER CODE END UsageFault_IRQn 0 */ while (1) - 8000a64: bf00 nop - 8000a66: e7fd b.n 8000a64 + 8000ab4: bf00 nop + 8000ab6: e7fd b.n 8000ab4 -08000a68 : +08000ab8 : /** * @brief This function handles Debug monitor. */ void DebugMon_Handler(void) { - 8000a68: b480 push {r7} - 8000a6a: af00 add r7, sp, #0 + 8000ab8: b480 push {r7} + 8000aba: af00 add r7, sp, #0 /* USER CODE END DebugMonitor_IRQn 0 */ /* USER CODE BEGIN DebugMonitor_IRQn 1 */ /* USER CODE END DebugMonitor_IRQn 1 */ } - 8000a6c: bf00 nop - 8000a6e: 46bd mov sp, r7 - 8000a70: f85d 7b04 ldr.w r7, [sp], #4 - 8000a74: 4770 bx lr + 8000abc: bf00 nop + 8000abe: 46bd mov sp, r7 + 8000ac0: f85d 7b04 ldr.w r7, [sp], #4 + 8000ac4: 4770 bx lr -08000a76 : +08000ac6 : /** * @brief This function handles EXTI line[15:10] interrupts. */ void EXTI15_10_IRQHandler(void) { - 8000a76: b580 push {r7, lr} - 8000a78: af00 add r7, sp, #0 + 8000ac6: b580 push {r7, lr} + 8000ac8: af00 add r7, sp, #0 /* USER CODE BEGIN EXTI15_10_IRQn 0 */ /* USER CODE END EXTI15_10_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(PedButton_Pin); - 8000a7a: f44f 4080 mov.w r0, #16384 @ 0x4000 - 8000a7e: f000 fb1f bl 80010c0 + 8000aca: f44f 4080 mov.w r0, #16384 @ 0x4000 + 8000ace: f000 fb1f bl 8001110 /* USER CODE BEGIN EXTI15_10_IRQn 1 */ /* USER CODE END EXTI15_10_IRQn 1 */ } - 8000a82: bf00 nop - 8000a84: bd80 pop {r7, pc} + 8000ad2: bf00 nop + 8000ad4: bd80 pop {r7, pc} ... -08000a88 : +08000ad8 : /** * @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts. */ void TIM6_DAC_IRQHandler(void) { - 8000a88: b580 push {r7, lr} - 8000a8a: af00 add r7, sp, #0 + 8000ad8: b580 push {r7, lr} + 8000ada: af00 add r7, sp, #0 /* USER CODE BEGIN TIM6_DAC_IRQn 0 */ /* USER CODE END TIM6_DAC_IRQn 0 */ HAL_TIM_IRQHandler(&htim6); - 8000a8c: 4802 ldr r0, [pc, #8] @ (8000a98 ) - 8000a8e: f001 f8b1 bl 8001bf4 + 8000adc: 4802 ldr r0, [pc, #8] @ (8000ae8 ) + 8000ade: f001 f8a5 bl 8001c2c /* USER CODE BEGIN TIM6_DAC_IRQn 1 */ /* USER CODE END TIM6_DAC_IRQn 1 */ } - 8000a92: bf00 nop - 8000a94: bd80 pop {r7, pc} - 8000a96: bf00 nop - 8000a98: 20000030 .word 0x20000030 + 8000ae2: bf00 nop + 8000ae4: bd80 pop {r7, pc} + 8000ae6: bf00 nop + 8000ae8: 20000034 .word 0x20000034 -08000a9c : +08000aec : * configuration. * @param None * @retval None */ void SystemInit(void) { - 8000a9c: b480 push {r7} - 8000a9e: af00 add r7, sp, #0 + 8000aec: b480 push {r7} + 8000aee: af00 add r7, sp, #0 /* FPU settings ------------------------------------------------------------*/ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ - 8000aa0: 4b06 ldr r3, [pc, #24] @ (8000abc ) - 8000aa2: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 - 8000aa6: 4a05 ldr r2, [pc, #20] @ (8000abc ) - 8000aa8: f443 0370 orr.w r3, r3, #15728640 @ 0xf00000 - 8000aac: f8c2 3088 str.w r3, [r2, #136] @ 0x88 + 8000af0: 4b06 ldr r3, [pc, #24] @ (8000b0c ) + 8000af2: f8d3 3088 ldr.w r3, [r3, #136] @ 0x88 + 8000af6: 4a05 ldr r2, [pc, #20] @ (8000b0c ) + 8000af8: f443 0370 orr.w r3, r3, #15728640 @ 0xf00000 + 8000afc: f8c2 3088 str.w r3, [r2, #136] @ 0x88 /* Configure the Vector Table location -------------------------------------*/ #if defined(USER_VECT_TAB_ADDRESS) SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ #endif /* USER_VECT_TAB_ADDRESS */ } - 8000ab0: bf00 nop - 8000ab2: 46bd mov sp, r7 - 8000ab4: f85d 7b04 ldr.w r7, [sp], #4 - 8000ab8: 4770 bx lr - 8000aba: bf00 nop - 8000abc: e000ed00 .word 0xe000ed00 + 8000b00: bf00 nop + 8000b02: 46bd mov sp, r7 + 8000b04: f85d 7b04 ldr.w r7, [sp], #4 + 8000b08: 4770 bx lr + 8000b0a: bf00 nop + 8000b0c: e000ed00 .word 0xe000ed00 -08000ac0 : +08000b10 : .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: ldr sp, =_estack /* set stack pointer */ - 8000ac0: f8df d034 ldr.w sp, [pc, #52] @ 8000af8 + 8000b10: f8df d034 ldr.w sp, [pc, #52] @ 8000b48 /* Call the clock system initialization function.*/ bl SystemInit - 8000ac4: f7ff ffea bl 8000a9c + 8000b14: f7ff ffea bl 8000aec /* Copy the data segment initializers from flash to SRAM */ ldr r0, =_sdata - 8000ac8: 480c ldr r0, [pc, #48] @ (8000afc ) + 8000b18: 480c ldr r0, [pc, #48] @ (8000b4c ) ldr r1, =_edata - 8000aca: 490d ldr r1, [pc, #52] @ (8000b00 ) + 8000b1a: 490d ldr r1, [pc, #52] @ (8000b50 ) ldr r2, =_sidata - 8000acc: 4a0d ldr r2, [pc, #52] @ (8000b04 ) + 8000b1c: 4a0d ldr r2, [pc, #52] @ (8000b54 ) movs r3, #0 - 8000ace: 2300 movs r3, #0 + 8000b1e: 2300 movs r3, #0 b LoopCopyDataInit - 8000ad0: e002 b.n 8000ad8 + 8000b20: e002 b.n 8000b28 -08000ad2 : +08000b22 : CopyDataInit: ldr r4, [r2, r3] - 8000ad2: 58d4 ldr r4, [r2, r3] + 8000b22: 58d4 ldr r4, [r2, r3] str r4, [r0, r3] - 8000ad4: 50c4 str r4, [r0, r3] + 8000b24: 50c4 str r4, [r0, r3] adds r3, r3, #4 - 8000ad6: 3304 adds r3, #4 + 8000b26: 3304 adds r3, #4 -08000ad8 : +08000b28 : LoopCopyDataInit: adds r4, r0, r3 - 8000ad8: 18c4 adds r4, r0, r3 + 8000b28: 18c4 adds r4, r0, r3 cmp r4, r1 - 8000ada: 428c cmp r4, r1 + 8000b2a: 428c cmp r4, r1 bcc CopyDataInit - 8000adc: d3f9 bcc.n 8000ad2 + 8000b2c: d3f9 bcc.n 8000b22 /* Zero fill the bss segment. */ ldr r2, =_sbss - 8000ade: 4a0a ldr r2, [pc, #40] @ (8000b08 ) + 8000b2e: 4a0a ldr r2, [pc, #40] @ (8000b58 ) ldr r4, =_ebss - 8000ae0: 4c0a ldr r4, [pc, #40] @ (8000b0c ) + 8000b30: 4c0a ldr r4, [pc, #40] @ (8000b5c ) movs r3, #0 - 8000ae2: 2300 movs r3, #0 + 8000b32: 2300 movs r3, #0 b LoopFillZerobss - 8000ae4: e001 b.n 8000aea + 8000b34: e001 b.n 8000b3a -08000ae6 : +08000b36 : FillZerobss: str r3, [r2] - 8000ae6: 6013 str r3, [r2, #0] + 8000b36: 6013 str r3, [r2, #0] adds r2, r2, #4 - 8000ae8: 3204 adds r2, #4 + 8000b38: 3204 adds r2, #4 -08000aea : +08000b3a : LoopFillZerobss: cmp r2, r4 - 8000aea: 42a2 cmp r2, r4 + 8000b3a: 42a2 cmp r2, r4 bcc FillZerobss - 8000aec: d3fb bcc.n 8000ae6 + 8000b3c: d3fb bcc.n 8000b36 /* Call static constructors */ bl __libc_init_array - 8000aee: f001 fc7d bl 80023ec <__libc_init_array> + 8000b3e: f001 fc75 bl 800242c <__libc_init_array> /* Call the application's entry point.*/ bl main - 8000af2: f7ff fd57 bl 80005a4
+ 8000b42: f7ff fd2b bl 800059c
bx lr - 8000af6: 4770 bx lr + 8000b46: 4770 bx lr ldr sp, =_estack /* set stack pointer */ - 8000af8: 20030000 .word 0x20030000 + 8000b48: 20030000 .word 0x20030000 ldr r0, =_sdata - 8000afc: 20000000 .word 0x20000000 + 8000b4c: 20000000 .word 0x20000000 ldr r1, =_edata - 8000b00: 20000008 .word 0x20000008 + 8000b50: 2000000c .word 0x2000000c ldr r2, =_sidata - 8000b04: 08002474 .word 0x08002474 + 8000b54: 080024b4 .word 0x080024b4 ldr r2, =_sbss - 8000b08: 20000008 .word 0x20000008 + 8000b58: 2000000c .word 0x2000000c ldr r4, =_ebss - 8000b0c: 20000130 .word 0x20000130 + 8000b5c: 20000134 .word 0x20000134 -08000b10 : +08000b60 : * @retval None */ .section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop - 8000b10: e7fe b.n 8000b10 + 8000b60: e7fe b.n 8000b60 ... -08000b14 : +08000b64 : * 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) { - 8000b14: b580 push {r7, lr} - 8000b16: af00 add r7, sp, #0 + 8000b64: b580 push {r7, lr} + 8000b66: af00 add r7, sp, #0 /* Configure Flash prefetch, Instruction cache, Data cache */ #if (INSTRUCTION_CACHE_ENABLE != 0U) __HAL_FLASH_INSTRUCTION_CACHE_ENABLE(); - 8000b18: 4b0e ldr r3, [pc, #56] @ (8000b54 ) - 8000b1a: 681b ldr r3, [r3, #0] - 8000b1c: 4a0d ldr r2, [pc, #52] @ (8000b54 ) - 8000b1e: f443 7300 orr.w r3, r3, #512 @ 0x200 - 8000b22: 6013 str r3, [r2, #0] + 8000b68: 4b0e ldr r3, [pc, #56] @ (8000ba4 ) + 8000b6a: 681b ldr r3, [r3, #0] + 8000b6c: 4a0d ldr r2, [pc, #52] @ (8000ba4 ) + 8000b6e: f443 7300 orr.w r3, r3, #512 @ 0x200 + 8000b72: 6013 str r3, [r2, #0] #endif /* INSTRUCTION_CACHE_ENABLE */ #if (DATA_CACHE_ENABLE != 0U) __HAL_FLASH_DATA_CACHE_ENABLE(); - 8000b24: 4b0b ldr r3, [pc, #44] @ (8000b54 ) - 8000b26: 681b ldr r3, [r3, #0] - 8000b28: 4a0a ldr r2, [pc, #40] @ (8000b54 ) - 8000b2a: f443 6380 orr.w r3, r3, #1024 @ 0x400 - 8000b2e: 6013 str r3, [r2, #0] + 8000b74: 4b0b ldr r3, [pc, #44] @ (8000ba4 ) + 8000b76: 681b ldr r3, [r3, #0] + 8000b78: 4a0a ldr r2, [pc, #40] @ (8000ba4 ) + 8000b7a: f443 6380 orr.w r3, r3, #1024 @ 0x400 + 8000b7e: 6013 str r3, [r2, #0] #endif /* DATA_CACHE_ENABLE */ #if (PREFETCH_ENABLE != 0U) __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); - 8000b30: 4b08 ldr r3, [pc, #32] @ (8000b54 ) - 8000b32: 681b ldr r3, [r3, #0] - 8000b34: 4a07 ldr r2, [pc, #28] @ (8000b54 ) - 8000b36: f443 7380 orr.w r3, r3, #256 @ 0x100 - 8000b3a: 6013 str r3, [r2, #0] + 8000b80: 4b08 ldr r3, [pc, #32] @ (8000ba4 ) + 8000b82: 681b ldr r3, [r3, #0] + 8000b84: 4a07 ldr r2, [pc, #28] @ (8000ba4 ) + 8000b86: f443 7380 orr.w r3, r3, #256 @ 0x100 + 8000b8a: 6013 str r3, [r2, #0] #endif /* PREFETCH_ENABLE */ /* Set Interrupt Group Priority */ HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); - 8000b3c: 2003 movs r0, #3 - 8000b3e: f000 f8c4 bl 8000cca + 8000b8c: 2003 movs r0, #3 + 8000b8e: f000 f8c4 bl 8000d1a /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */ HAL_InitTick(TICK_INT_PRIORITY); - 8000b42: 200f movs r0, #15 - 8000b44: f7ff ff00 bl 8000948 + 8000b92: 200f movs r0, #15 + 8000b94: f7ff ff00 bl 8000998 /* Init the low level hardware */ HAL_MspInit(); - 8000b48: f7ff feb0 bl 80008ac + 8000b98: f7ff feb0 bl 80008fc /* Return function status */ return HAL_OK; - 8000b4c: 2300 movs r3, #0 + 8000b9c: 2300 movs r3, #0 } - 8000b4e: 4618 mov r0, r3 - 8000b50: bd80 pop {r7, pc} - 8000b52: bf00 nop - 8000b54: 40023c00 .word 0x40023c00 + 8000b9e: 4618 mov r0, r3 + 8000ba0: bd80 pop {r7, pc} + 8000ba2: bf00 nop + 8000ba4: 40023c00 .word 0x40023c00 -08000b58 : +08000ba8 : * @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) { - 8000b58: b480 push {r7} - 8000b5a: af00 add r7, sp, #0 + 8000ba8: b480 push {r7} + 8000baa: af00 add r7, sp, #0 return uwTick; - 8000b5c: 4b03 ldr r3, [pc, #12] @ (8000b6c ) - 8000b5e: 681b ldr r3, [r3, #0] + 8000bac: 4b03 ldr r3, [pc, #12] @ (8000bbc ) + 8000bae: 681b ldr r3, [r3, #0] } - 8000b60: 4618 mov r0, r3 - 8000b62: 46bd mov sp, r7 - 8000b64: f85d 7b04 ldr.w r7, [sp], #4 - 8000b68: 4770 bx lr - 8000b6a: bf00 nop - 8000b6c: 20000078 .word 0x20000078 + 8000bb0: 4618 mov r0, r3 + 8000bb2: 46bd mov sp, r7 + 8000bb4: f85d 7b04 ldr.w r7, [sp], #4 + 8000bb8: 4770 bx lr + 8000bba: bf00 nop + 8000bbc: 2000007c .word 0x2000007c -08000b70 <__NVIC_SetPriorityGrouping>: +08000bc0 <__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) { - 8000b70: b480 push {r7} - 8000b72: b085 sub sp, #20 - 8000b74: af00 add r7, sp, #0 - 8000b76: 6078 str r0, [r7, #4] + 8000bc0: b480 push {r7} + 8000bc2: b085 sub sp, #20 + 8000bc4: af00 add r7, sp, #0 + 8000bc6: 6078 str r0, [r7, #4] uint32_t reg_value; uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 8000b78: 687b ldr r3, [r7, #4] - 8000b7a: f003 0307 and.w r3, r3, #7 - 8000b7e: 60fb str r3, [r7, #12] + 8000bc8: 687b ldr r3, [r7, #4] + 8000bca: f003 0307 and.w r3, r3, #7 + 8000bce: 60fb str r3, [r7, #12] reg_value = SCB->AIRCR; /* read old register configuration */ - 8000b80: 4b0c ldr r3, [pc, #48] @ (8000bb4 <__NVIC_SetPriorityGrouping+0x44>) - 8000b82: 68db ldr r3, [r3, #12] - 8000b84: 60bb str r3, [r7, #8] + 8000bd0: 4b0c ldr r3, [pc, #48] @ (8000c04 <__NVIC_SetPriorityGrouping+0x44>) + 8000bd2: 68db ldr r3, [r3, #12] + 8000bd4: 60bb str r3, [r7, #8] reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ - 8000b86: 68ba ldr r2, [r7, #8] - 8000b88: f64f 03ff movw r3, #63743 @ 0xf8ff - 8000b8c: 4013 ands r3, r2 - 8000b8e: 60bb str r3, [r7, #8] + 8000bd6: 68ba ldr r2, [r7, #8] + 8000bd8: f64f 03ff movw r3, #63743 @ 0xf8ff + 8000bdc: 4013 ands r3, r2 + 8000bde: 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 */ - 8000b90: 68fb ldr r3, [r7, #12] - 8000b92: 021a lsls r2, r3, #8 + 8000be0: 68fb ldr r3, [r7, #12] + 8000be2: 021a lsls r2, r3, #8 ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | - 8000b94: 68bb ldr r3, [r7, #8] - 8000b96: 4313 orrs r3, r2 + 8000be4: 68bb ldr r3, [r7, #8] + 8000be6: 4313 orrs r3, r2 reg_value = (reg_value | - 8000b98: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 - 8000b9c: f443 3300 orr.w r3, r3, #131072 @ 0x20000 - 8000ba0: 60bb str r3, [r7, #8] + 8000be8: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000 + 8000bec: f443 3300 orr.w r3, r3, #131072 @ 0x20000 + 8000bf0: 60bb str r3, [r7, #8] SCB->AIRCR = reg_value; - 8000ba2: 4a04 ldr r2, [pc, #16] @ (8000bb4 <__NVIC_SetPriorityGrouping+0x44>) - 8000ba4: 68bb ldr r3, [r7, #8] - 8000ba6: 60d3 str r3, [r2, #12] + 8000bf2: 4a04 ldr r2, [pc, #16] @ (8000c04 <__NVIC_SetPriorityGrouping+0x44>) + 8000bf4: 68bb ldr r3, [r7, #8] + 8000bf6: 60d3 str r3, [r2, #12] } - 8000ba8: bf00 nop - 8000baa: 3714 adds r7, #20 - 8000bac: 46bd mov sp, r7 - 8000bae: f85d 7b04 ldr.w r7, [sp], #4 - 8000bb2: 4770 bx lr - 8000bb4: e000ed00 .word 0xe000ed00 + 8000bf8: bf00 nop + 8000bfa: 3714 adds r7, #20 + 8000bfc: 46bd mov sp, r7 + 8000bfe: f85d 7b04 ldr.w r7, [sp], #4 + 8000c02: 4770 bx lr + 8000c04: e000ed00 .word 0xe000ed00 -08000bb8 <__NVIC_GetPriorityGrouping>: +08000c08 <__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) { - 8000bb8: b480 push {r7} - 8000bba: af00 add r7, sp, #0 + 8000c08: b480 push {r7} + 8000c0a: af00 add r7, sp, #0 return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); - 8000bbc: 4b04 ldr r3, [pc, #16] @ (8000bd0 <__NVIC_GetPriorityGrouping+0x18>) - 8000bbe: 68db ldr r3, [r3, #12] - 8000bc0: 0a1b lsrs r3, r3, #8 - 8000bc2: f003 0307 and.w r3, r3, #7 + 8000c0c: 4b04 ldr r3, [pc, #16] @ (8000c20 <__NVIC_GetPriorityGrouping+0x18>) + 8000c0e: 68db ldr r3, [r3, #12] + 8000c10: 0a1b lsrs r3, r3, #8 + 8000c12: f003 0307 and.w r3, r3, #7 } - 8000bc6: 4618 mov r0, r3 - 8000bc8: 46bd mov sp, r7 - 8000bca: f85d 7b04 ldr.w r7, [sp], #4 - 8000bce: 4770 bx lr - 8000bd0: e000ed00 .word 0xe000ed00 + 8000c16: 4618 mov r0, r3 + 8000c18: 46bd mov sp, r7 + 8000c1a: f85d 7b04 ldr.w r7, [sp], #4 + 8000c1e: 4770 bx lr + 8000c20: e000ed00 .word 0xe000ed00 -08000bd4 <__NVIC_EnableIRQ>: +08000c24 <__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) { - 8000bd4: b480 push {r7} - 8000bd6: b083 sub sp, #12 - 8000bd8: af00 add r7, sp, #0 - 8000bda: 4603 mov r3, r0 - 8000bdc: 71fb strb r3, [r7, #7] + 8000c24: b480 push {r7} + 8000c26: b083 sub sp, #12 + 8000c28: af00 add r7, sp, #0 + 8000c2a: 4603 mov r3, r0 + 8000c2c: 71fb strb r3, [r7, #7] if ((int32_t)(IRQn) >= 0) - 8000bde: f997 3007 ldrsb.w r3, [r7, #7] - 8000be2: 2b00 cmp r3, #0 - 8000be4: db0b blt.n 8000bfe <__NVIC_EnableIRQ+0x2a> + 8000c2e: f997 3007 ldrsb.w r3, [r7, #7] + 8000c32: 2b00 cmp r3, #0 + 8000c34: db0b blt.n 8000c4e <__NVIC_EnableIRQ+0x2a> { __COMPILER_BARRIER(); NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); - 8000be6: 79fb ldrb r3, [r7, #7] - 8000be8: f003 021f and.w r2, r3, #31 - 8000bec: 4907 ldr r1, [pc, #28] @ (8000c0c <__NVIC_EnableIRQ+0x38>) - 8000bee: f997 3007 ldrsb.w r3, [r7, #7] - 8000bf2: 095b lsrs r3, r3, #5 - 8000bf4: 2001 movs r0, #1 - 8000bf6: fa00 f202 lsl.w r2, r0, r2 - 8000bfa: f841 2023 str.w r2, [r1, r3, lsl #2] + 8000c36: 79fb ldrb r3, [r7, #7] + 8000c38: f003 021f and.w r2, r3, #31 + 8000c3c: 4907 ldr r1, [pc, #28] @ (8000c5c <__NVIC_EnableIRQ+0x38>) + 8000c3e: f997 3007 ldrsb.w r3, [r7, #7] + 8000c42: 095b lsrs r3, r3, #5 + 8000c44: 2001 movs r0, #1 + 8000c46: fa00 f202 lsl.w r2, r0, r2 + 8000c4a: f841 2023 str.w r2, [r1, r3, lsl #2] __COMPILER_BARRIER(); } } - 8000bfe: bf00 nop - 8000c00: 370c adds r7, #12 - 8000c02: 46bd mov sp, r7 - 8000c04: f85d 7b04 ldr.w r7, [sp], #4 - 8000c08: 4770 bx lr - 8000c0a: bf00 nop - 8000c0c: e000e100 .word 0xe000e100 + 8000c4e: bf00 nop + 8000c50: 370c adds r7, #12 + 8000c52: 46bd mov sp, r7 + 8000c54: f85d 7b04 ldr.w r7, [sp], #4 + 8000c58: 4770 bx lr + 8000c5a: bf00 nop + 8000c5c: e000e100 .word 0xe000e100 -08000c10 <__NVIC_SetPriority>: +08000c60 <__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) { - 8000c10: b480 push {r7} - 8000c12: b083 sub sp, #12 - 8000c14: af00 add r7, sp, #0 - 8000c16: 4603 mov r3, r0 - 8000c18: 6039 str r1, [r7, #0] - 8000c1a: 71fb strb r3, [r7, #7] + 8000c60: b480 push {r7} + 8000c62: b083 sub sp, #12 + 8000c64: af00 add r7, sp, #0 + 8000c66: 4603 mov r3, r0 + 8000c68: 6039 str r1, [r7, #0] + 8000c6a: 71fb strb r3, [r7, #7] if ((int32_t)(IRQn) >= 0) - 8000c1c: f997 3007 ldrsb.w r3, [r7, #7] - 8000c20: 2b00 cmp r3, #0 - 8000c22: db0a blt.n 8000c3a <__NVIC_SetPriority+0x2a> + 8000c6c: f997 3007 ldrsb.w r3, [r7, #7] + 8000c70: 2b00 cmp r3, #0 + 8000c72: db0a blt.n 8000c8a <__NVIC_SetPriority+0x2a> { NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 8000c24: 683b ldr r3, [r7, #0] - 8000c26: b2da uxtb r2, r3 - 8000c28: 490c ldr r1, [pc, #48] @ (8000c5c <__NVIC_SetPriority+0x4c>) - 8000c2a: f997 3007 ldrsb.w r3, [r7, #7] - 8000c2e: 0112 lsls r2, r2, #4 - 8000c30: b2d2 uxtb r2, r2 - 8000c32: 440b add r3, r1 - 8000c34: f883 2300 strb.w r2, [r3, #768] @ 0x300 + 8000c74: 683b ldr r3, [r7, #0] + 8000c76: b2da uxtb r2, r3 + 8000c78: 490c ldr r1, [pc, #48] @ (8000cac <__NVIC_SetPriority+0x4c>) + 8000c7a: f997 3007 ldrsb.w r3, [r7, #7] + 8000c7e: 0112 lsls r2, r2, #4 + 8000c80: b2d2 uxtb r2, r2 + 8000c82: 440b add r3, r1 + 8000c84: 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); } } - 8000c38: e00a b.n 8000c50 <__NVIC_SetPriority+0x40> + 8000c88: e00a b.n 8000ca0 <__NVIC_SetPriority+0x40> SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 8000c3a: 683b ldr r3, [r7, #0] - 8000c3c: b2da uxtb r2, r3 - 8000c3e: 4908 ldr r1, [pc, #32] @ (8000c60 <__NVIC_SetPriority+0x50>) - 8000c40: 79fb ldrb r3, [r7, #7] - 8000c42: f003 030f and.w r3, r3, #15 - 8000c46: 3b04 subs r3, #4 - 8000c48: 0112 lsls r2, r2, #4 - 8000c4a: b2d2 uxtb r2, r2 - 8000c4c: 440b add r3, r1 - 8000c4e: 761a strb r2, [r3, #24] + 8000c8a: 683b ldr r3, [r7, #0] + 8000c8c: b2da uxtb r2, r3 + 8000c8e: 4908 ldr r1, [pc, #32] @ (8000cb0 <__NVIC_SetPriority+0x50>) + 8000c90: 79fb ldrb r3, [r7, #7] + 8000c92: f003 030f and.w r3, r3, #15 + 8000c96: 3b04 subs r3, #4 + 8000c98: 0112 lsls r2, r2, #4 + 8000c9a: b2d2 uxtb r2, r2 + 8000c9c: 440b add r3, r1 + 8000c9e: 761a strb r2, [r3, #24] } - 8000c50: bf00 nop - 8000c52: 370c adds r7, #12 - 8000c54: 46bd mov sp, r7 - 8000c56: f85d 7b04 ldr.w r7, [sp], #4 - 8000c5a: 4770 bx lr - 8000c5c: e000e100 .word 0xe000e100 - 8000c60: e000ed00 .word 0xe000ed00 + 8000ca0: bf00 nop + 8000ca2: 370c adds r7, #12 + 8000ca4: 46bd mov sp, r7 + 8000ca6: f85d 7b04 ldr.w r7, [sp], #4 + 8000caa: 4770 bx lr + 8000cac: e000e100 .word 0xe000e100 + 8000cb0: e000ed00 .word 0xe000ed00 -08000c64 : +08000cb4 : \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) { - 8000c64: b480 push {r7} - 8000c66: b089 sub sp, #36 @ 0x24 - 8000c68: af00 add r7, sp, #0 - 8000c6a: 60f8 str r0, [r7, #12] - 8000c6c: 60b9 str r1, [r7, #8] - 8000c6e: 607a str r2, [r7, #4] + 8000cb4: b480 push {r7} + 8000cb6: b089 sub sp, #36 @ 0x24 + 8000cb8: af00 add r7, sp, #0 + 8000cba: 60f8 str r0, [r7, #12] + 8000cbc: 60b9 str r1, [r7, #8] + 8000cbe: 607a str r2, [r7, #4] uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 8000c70: 68fb ldr r3, [r7, #12] - 8000c72: f003 0307 and.w r3, r3, #7 - 8000c76: 61fb str r3, [r7, #28] + 8000cc0: 68fb ldr r3, [r7, #12] + 8000cc2: f003 0307 and.w r3, r3, #7 + 8000cc6: 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); - 8000c78: 69fb ldr r3, [r7, #28] - 8000c7a: f1c3 0307 rsb r3, r3, #7 - 8000c7e: 2b04 cmp r3, #4 - 8000c80: bf28 it cs - 8000c82: 2304 movcs r3, #4 - 8000c84: 61bb str r3, [r7, #24] + 8000cc8: 69fb ldr r3, [r7, #28] + 8000cca: f1c3 0307 rsb r3, r3, #7 + 8000cce: 2b04 cmp r3, #4 + 8000cd0: bf28 it cs + 8000cd2: 2304 movcs r3, #4 + 8000cd4: 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)); - 8000c86: 69fb ldr r3, [r7, #28] - 8000c88: 3304 adds r3, #4 - 8000c8a: 2b06 cmp r3, #6 - 8000c8c: d902 bls.n 8000c94 - 8000c8e: 69fb ldr r3, [r7, #28] - 8000c90: 3b03 subs r3, #3 - 8000c92: e000 b.n 8000c96 - 8000c94: 2300 movs r3, #0 - 8000c96: 617b str r3, [r7, #20] + 8000cd6: 69fb ldr r3, [r7, #28] + 8000cd8: 3304 adds r3, #4 + 8000cda: 2b06 cmp r3, #6 + 8000cdc: d902 bls.n 8000ce4 + 8000cde: 69fb ldr r3, [r7, #28] + 8000ce0: 3b03 subs r3, #3 + 8000ce2: e000 b.n 8000ce6 + 8000ce4: 2300 movs r3, #0 + 8000ce6: 617b str r3, [r7, #20] return ( ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 8000c98: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff - 8000c9c: 69bb ldr r3, [r7, #24] - 8000c9e: fa02 f303 lsl.w r3, r2, r3 - 8000ca2: 43da mvns r2, r3 - 8000ca4: 68bb ldr r3, [r7, #8] - 8000ca6: 401a ands r2, r3 - 8000ca8: 697b ldr r3, [r7, #20] - 8000caa: 409a lsls r2, r3 + 8000ce8: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 8000cec: 69bb ldr r3, [r7, #24] + 8000cee: fa02 f303 lsl.w r3, r2, r3 + 8000cf2: 43da mvns r2, r3 + 8000cf4: 68bb ldr r3, [r7, #8] + 8000cf6: 401a ands r2, r3 + 8000cf8: 697b ldr r3, [r7, #20] + 8000cfa: 409a lsls r2, r3 ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) - 8000cac: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff - 8000cb0: 697b ldr r3, [r7, #20] - 8000cb2: fa01 f303 lsl.w r3, r1, r3 - 8000cb6: 43d9 mvns r1, r3 - 8000cb8: 687b ldr r3, [r7, #4] - 8000cba: 400b ands r3, r1 + 8000cfc: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff + 8000d00: 697b ldr r3, [r7, #20] + 8000d02: fa01 f303 lsl.w r3, r1, r3 + 8000d06: 43d9 mvns r1, r3 + 8000d08: 687b ldr r3, [r7, #4] + 8000d0a: 400b ands r3, r1 ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 8000cbc: 4313 orrs r3, r2 + 8000d0c: 4313 orrs r3, r2 ); } - 8000cbe: 4618 mov r0, r3 - 8000cc0: 3724 adds r7, #36 @ 0x24 - 8000cc2: 46bd mov sp, r7 - 8000cc4: f85d 7b04 ldr.w r7, [sp], #4 - 8000cc8: 4770 bx lr + 8000d0e: 4618 mov r0, r3 + 8000d10: 3724 adds r7, #36 @ 0x24 + 8000d12: 46bd mov sp, r7 + 8000d14: f85d 7b04 ldr.w r7, [sp], #4 + 8000d18: 4770 bx lr -08000cca : +08000d1a : * @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) { - 8000cca: b580 push {r7, lr} - 8000ccc: b082 sub sp, #8 - 8000cce: af00 add r7, sp, #0 - 8000cd0: 6078 str r0, [r7, #4] + 8000d1a: b580 push {r7, lr} + 8000d1c: b082 sub sp, #8 + 8000d1e: af00 add r7, sp, #0 + 8000d20: 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); - 8000cd2: 6878 ldr r0, [r7, #4] - 8000cd4: f7ff ff4c bl 8000b70 <__NVIC_SetPriorityGrouping> + 8000d22: 6878 ldr r0, [r7, #4] + 8000d24: f7ff ff4c bl 8000bc0 <__NVIC_SetPriorityGrouping> } - 8000cd8: bf00 nop - 8000cda: 3708 adds r7, #8 - 8000cdc: 46bd mov sp, r7 - 8000cde: bd80 pop {r7, pc} + 8000d28: bf00 nop + 8000d2a: 3708 adds r7, #8 + 8000d2c: 46bd mov sp, r7 + 8000d2e: bd80 pop {r7, pc} -08000ce0 : +08000d30 : * 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) { - 8000ce0: b580 push {r7, lr} - 8000ce2: b086 sub sp, #24 - 8000ce4: af00 add r7, sp, #0 - 8000ce6: 4603 mov r3, r0 - 8000ce8: 60b9 str r1, [r7, #8] - 8000cea: 607a str r2, [r7, #4] - 8000cec: 73fb strb r3, [r7, #15] + 8000d30: b580 push {r7, lr} + 8000d32: b086 sub sp, #24 + 8000d34: af00 add r7, sp, #0 + 8000d36: 4603 mov r3, r0 + 8000d38: 60b9 str r1, [r7, #8] + 8000d3a: 607a str r2, [r7, #4] + 8000d3c: 73fb strb r3, [r7, #15] uint32_t prioritygroup = 0x00U; - 8000cee: 2300 movs r3, #0 - 8000cf0: 617b str r3, [r7, #20] + 8000d3e: 2300 movs r3, #0 + 8000d40: 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(); - 8000cf2: f7ff ff61 bl 8000bb8 <__NVIC_GetPriorityGrouping> - 8000cf6: 6178 str r0, [r7, #20] + 8000d42: f7ff ff61 bl 8000c08 <__NVIC_GetPriorityGrouping> + 8000d46: 6178 str r0, [r7, #20] NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); - 8000cf8: 687a ldr r2, [r7, #4] - 8000cfa: 68b9 ldr r1, [r7, #8] - 8000cfc: 6978 ldr r0, [r7, #20] - 8000cfe: f7ff ffb1 bl 8000c64 - 8000d02: 4602 mov r2, r0 - 8000d04: f997 300f ldrsb.w r3, [r7, #15] - 8000d08: 4611 mov r1, r2 - 8000d0a: 4618 mov r0, r3 - 8000d0c: f7ff ff80 bl 8000c10 <__NVIC_SetPriority> + 8000d48: 687a ldr r2, [r7, #4] + 8000d4a: 68b9 ldr r1, [r7, #8] + 8000d4c: 6978 ldr r0, [r7, #20] + 8000d4e: f7ff ffb1 bl 8000cb4 + 8000d52: 4602 mov r2, r0 + 8000d54: f997 300f ldrsb.w r3, [r7, #15] + 8000d58: 4611 mov r1, r2 + 8000d5a: 4618 mov r0, r3 + 8000d5c: f7ff ff80 bl 8000c60 <__NVIC_SetPriority> } - 8000d10: bf00 nop - 8000d12: 3718 adds r7, #24 - 8000d14: 46bd mov sp, r7 - 8000d16: bd80 pop {r7, pc} + 8000d60: bf00 nop + 8000d62: 3718 adds r7, #24 + 8000d64: 46bd mov sp, r7 + 8000d66: bd80 pop {r7, pc} -08000d18 : +08000d68 : * This parameter can be an enumerator of IRQn_Type enumeration * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f4xxxx.h)) * @retval None */ void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) { - 8000d18: b580 push {r7, lr} - 8000d1a: b082 sub sp, #8 - 8000d1c: af00 add r7, sp, #0 - 8000d1e: 4603 mov r3, r0 - 8000d20: 71fb strb r3, [r7, #7] + 8000d68: b580 push {r7, lr} + 8000d6a: b082 sub sp, #8 + 8000d6c: af00 add r7, sp, #0 + 8000d6e: 4603 mov r3, r0 + 8000d70: 71fb strb r3, [r7, #7] /* Check the parameters */ assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); /* Enable interrupt */ NVIC_EnableIRQ(IRQn); - 8000d22: f997 3007 ldrsb.w r3, [r7, #7] - 8000d26: 4618 mov r0, r3 - 8000d28: f7ff ff54 bl 8000bd4 <__NVIC_EnableIRQ> + 8000d72: f997 3007 ldrsb.w r3, [r7, #7] + 8000d76: 4618 mov r0, r3 + 8000d78: f7ff ff54 bl 8000c24 <__NVIC_EnableIRQ> } - 8000d2c: bf00 nop - 8000d2e: 3708 adds r7, #8 - 8000d30: 46bd mov sp, r7 - 8000d32: bd80 pop {r7, pc} + 8000d7c: bf00 nop + 8000d7e: 3708 adds r7, #8 + 8000d80: 46bd mov sp, r7 + 8000d82: bd80 pop {r7, pc} -08000d34 : +08000d84 : * @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) { - 8000d34: b480 push {r7} - 8000d36: b089 sub sp, #36 @ 0x24 - 8000d38: af00 add r7, sp, #0 - 8000d3a: 6078 str r0, [r7, #4] - 8000d3c: 6039 str r1, [r7, #0] + 8000d84: b480 push {r7} + 8000d86: b089 sub sp, #36 @ 0x24 + 8000d88: af00 add r7, sp, #0 + 8000d8a: 6078 str r0, [r7, #4] + 8000d8c: 6039 str r1, [r7, #0] uint32_t position; uint32_t ioposition = 0x00U; - 8000d3e: 2300 movs r3, #0 - 8000d40: 617b str r3, [r7, #20] + 8000d8e: 2300 movs r3, #0 + 8000d90: 617b str r3, [r7, #20] uint32_t iocurrent = 0x00U; - 8000d42: 2300 movs r3, #0 - 8000d44: 613b str r3, [r7, #16] + 8000d92: 2300 movs r3, #0 + 8000d94: 613b str r3, [r7, #16] uint32_t temp = 0x00U; - 8000d46: 2300 movs r3, #0 - 8000d48: 61bb str r3, [r7, #24] + 8000d96: 2300 movs r3, #0 + 8000d98: 61bb str r3, [r7, #24] assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); /* Configure the port pins */ for(position = 0U; position < GPIO_NUMBER; position++) - 8000d4a: 2300 movs r3, #0 - 8000d4c: 61fb str r3, [r7, #28] - 8000d4e: e177 b.n 8001040 + 8000d9a: 2300 movs r3, #0 + 8000d9c: 61fb str r3, [r7, #28] + 8000d9e: e177 b.n 8001090 { /* Get the IO position */ ioposition = 0x01U << position; - 8000d50: 2201 movs r2, #1 - 8000d52: 69fb ldr r3, [r7, #28] - 8000d54: fa02 f303 lsl.w r3, r2, r3 - 8000d58: 617b str r3, [r7, #20] + 8000da0: 2201 movs r2, #1 + 8000da2: 69fb ldr r3, [r7, #28] + 8000da4: fa02 f303 lsl.w r3, r2, r3 + 8000da8: 617b str r3, [r7, #20] /* Get the current IO position */ iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition; - 8000d5a: 683b ldr r3, [r7, #0] - 8000d5c: 681b ldr r3, [r3, #0] - 8000d5e: 697a ldr r2, [r7, #20] - 8000d60: 4013 ands r3, r2 - 8000d62: 613b str r3, [r7, #16] + 8000daa: 683b ldr r3, [r7, #0] + 8000dac: 681b ldr r3, [r3, #0] + 8000dae: 697a ldr r2, [r7, #20] + 8000db0: 4013 ands r3, r2 + 8000db2: 613b str r3, [r7, #16] if(iocurrent == ioposition) - 8000d64: 693a ldr r2, [r7, #16] - 8000d66: 697b ldr r3, [r7, #20] - 8000d68: 429a cmp r2, r3 - 8000d6a: f040 8166 bne.w 800103a + 8000db4: 693a ldr r2, [r7, #16] + 8000db6: 697b ldr r3, [r7, #20] + 8000db8: 429a cmp r2, r3 + 8000dba: f040 8166 bne.w 800108a { /*--------------------- GPIO Mode Configuration ------------------------*/ /* In case of Output or Alternate function mode selection */ if(((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || \ - 8000d6e: 683b ldr r3, [r7, #0] - 8000d70: 685b ldr r3, [r3, #4] - 8000d72: f003 0303 and.w r3, r3, #3 - 8000d76: 2b01 cmp r3, #1 - 8000d78: d005 beq.n 8000d86 + 8000dbe: 683b ldr r3, [r7, #0] + 8000dc0: 685b ldr r3, [r3, #4] + 8000dc2: f003 0303 and.w r3, r3, #3 + 8000dc6: 2b01 cmp r3, #1 + 8000dc8: d005 beq.n 8000dd6 (GPIO_Init->Mode & GPIO_MODE) == MODE_AF) - 8000d7a: 683b ldr r3, [r7, #0] - 8000d7c: 685b ldr r3, [r3, #4] - 8000d7e: f003 0303 and.w r3, r3, #3 + 8000dca: 683b ldr r3, [r7, #0] + 8000dcc: 685b ldr r3, [r3, #4] + 8000dce: f003 0303 and.w r3, r3, #3 if(((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || \ - 8000d82: 2b02 cmp r3, #2 - 8000d84: d130 bne.n 8000de8 + 8000dd2: 2b02 cmp r3, #2 + 8000dd4: d130 bne.n 8000e38 { /* Check the Speed parameter */ assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); /* Configure the IO Speed */ temp = GPIOx->OSPEEDR; - 8000d86: 687b ldr r3, [r7, #4] - 8000d88: 689b ldr r3, [r3, #8] - 8000d8a: 61bb str r3, [r7, #24] + 8000dd6: 687b ldr r3, [r7, #4] + 8000dd8: 689b ldr r3, [r3, #8] + 8000dda: 61bb str r3, [r7, #24] temp &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2U)); - 8000d8c: 69fb ldr r3, [r7, #28] - 8000d8e: 005b lsls r3, r3, #1 - 8000d90: 2203 movs r2, #3 - 8000d92: fa02 f303 lsl.w r3, r2, r3 - 8000d96: 43db mvns r3, r3 - 8000d98: 69ba ldr r2, [r7, #24] - 8000d9a: 4013 ands r3, r2 - 8000d9c: 61bb str r3, [r7, #24] + 8000ddc: 69fb ldr r3, [r7, #28] + 8000dde: 005b lsls r3, r3, #1 + 8000de0: 2203 movs r2, #3 + 8000de2: fa02 f303 lsl.w r3, r2, r3 + 8000de6: 43db mvns r3, r3 + 8000de8: 69ba ldr r2, [r7, #24] + 8000dea: 4013 ands r3, r2 + 8000dec: 61bb str r3, [r7, #24] temp |= (GPIO_Init->Speed << (position * 2U)); - 8000d9e: 683b ldr r3, [r7, #0] - 8000da0: 68da ldr r2, [r3, #12] - 8000da2: 69fb ldr r3, [r7, #28] - 8000da4: 005b lsls r3, r3, #1 - 8000da6: fa02 f303 lsl.w r3, r2, r3 - 8000daa: 69ba ldr r2, [r7, #24] - 8000dac: 4313 orrs r3, r2 - 8000dae: 61bb str r3, [r7, #24] + 8000dee: 683b ldr r3, [r7, #0] + 8000df0: 68da ldr r2, [r3, #12] + 8000df2: 69fb ldr r3, [r7, #28] + 8000df4: 005b lsls r3, r3, #1 + 8000df6: fa02 f303 lsl.w r3, r2, r3 + 8000dfa: 69ba ldr r2, [r7, #24] + 8000dfc: 4313 orrs r3, r2 + 8000dfe: 61bb str r3, [r7, #24] GPIOx->OSPEEDR = temp; - 8000db0: 687b ldr r3, [r7, #4] - 8000db2: 69ba ldr r2, [r7, #24] - 8000db4: 609a str r2, [r3, #8] + 8000e00: 687b ldr r3, [r7, #4] + 8000e02: 69ba ldr r2, [r7, #24] + 8000e04: 609a str r2, [r3, #8] /* Configure the IO Output Type */ temp = GPIOx->OTYPER; - 8000db6: 687b ldr r3, [r7, #4] - 8000db8: 685b ldr r3, [r3, #4] - 8000dba: 61bb str r3, [r7, #24] + 8000e06: 687b ldr r3, [r7, #4] + 8000e08: 685b ldr r3, [r3, #4] + 8000e0a: 61bb str r3, [r7, #24] temp &= ~(GPIO_OTYPER_OT_0 << position) ; - 8000dbc: 2201 movs r2, #1 - 8000dbe: 69fb ldr r3, [r7, #28] - 8000dc0: fa02 f303 lsl.w r3, r2, r3 - 8000dc4: 43db mvns r3, r3 - 8000dc6: 69ba ldr r2, [r7, #24] - 8000dc8: 4013 ands r3, r2 - 8000dca: 61bb str r3, [r7, #24] + 8000e0c: 2201 movs r2, #1 + 8000e0e: 69fb ldr r3, [r7, #28] + 8000e10: fa02 f303 lsl.w r3, r2, r3 + 8000e14: 43db mvns r3, r3 + 8000e16: 69ba ldr r2, [r7, #24] + 8000e18: 4013 ands r3, r2 + 8000e1a: 61bb str r3, [r7, #24] temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); - 8000dcc: 683b ldr r3, [r7, #0] - 8000dce: 685b ldr r3, [r3, #4] - 8000dd0: 091b lsrs r3, r3, #4 - 8000dd2: f003 0201 and.w r2, r3, #1 - 8000dd6: 69fb ldr r3, [r7, #28] - 8000dd8: fa02 f303 lsl.w r3, r2, r3 - 8000ddc: 69ba ldr r2, [r7, #24] - 8000dde: 4313 orrs r3, r2 - 8000de0: 61bb str r3, [r7, #24] + 8000e1c: 683b ldr r3, [r7, #0] + 8000e1e: 685b ldr r3, [r3, #4] + 8000e20: 091b lsrs r3, r3, #4 + 8000e22: f003 0201 and.w r2, r3, #1 + 8000e26: 69fb ldr r3, [r7, #28] + 8000e28: fa02 f303 lsl.w r3, r2, r3 + 8000e2c: 69ba ldr r2, [r7, #24] + 8000e2e: 4313 orrs r3, r2 + 8000e30: 61bb str r3, [r7, #24] GPIOx->OTYPER = temp; - 8000de2: 687b ldr r3, [r7, #4] - 8000de4: 69ba ldr r2, [r7, #24] - 8000de6: 605a str r2, [r3, #4] + 8000e32: 687b ldr r3, [r7, #4] + 8000e34: 69ba ldr r2, [r7, #24] + 8000e36: 605a str r2, [r3, #4] } if((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) - 8000de8: 683b ldr r3, [r7, #0] - 8000dea: 685b ldr r3, [r3, #4] - 8000dec: f003 0303 and.w r3, r3, #3 - 8000df0: 2b03 cmp r3, #3 - 8000df2: d017 beq.n 8000e24 + 8000e38: 683b ldr r3, [r7, #0] + 8000e3a: 685b ldr r3, [r3, #4] + 8000e3c: f003 0303 and.w r3, r3, #3 + 8000e40: 2b03 cmp r3, #3 + 8000e42: d017 beq.n 8000e74 { /* Check the parameters */ assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); /* Activate the Pull-up or Pull down resistor for the current IO */ temp = GPIOx->PUPDR; - 8000df4: 687b ldr r3, [r7, #4] - 8000df6: 68db ldr r3, [r3, #12] - 8000df8: 61bb str r3, [r7, #24] + 8000e44: 687b ldr r3, [r7, #4] + 8000e46: 68db ldr r3, [r3, #12] + 8000e48: 61bb str r3, [r7, #24] temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2U)); - 8000dfa: 69fb ldr r3, [r7, #28] - 8000dfc: 005b lsls r3, r3, #1 - 8000dfe: 2203 movs r2, #3 - 8000e00: fa02 f303 lsl.w r3, r2, r3 - 8000e04: 43db mvns r3, r3 - 8000e06: 69ba ldr r2, [r7, #24] - 8000e08: 4013 ands r3, r2 - 8000e0a: 61bb str r3, [r7, #24] + 8000e4a: 69fb ldr r3, [r7, #28] + 8000e4c: 005b lsls r3, r3, #1 + 8000e4e: 2203 movs r2, #3 + 8000e50: fa02 f303 lsl.w r3, r2, r3 + 8000e54: 43db mvns r3, r3 + 8000e56: 69ba ldr r2, [r7, #24] + 8000e58: 4013 ands r3, r2 + 8000e5a: 61bb str r3, [r7, #24] temp |= ((GPIO_Init->Pull) << (position * 2U)); - 8000e0c: 683b ldr r3, [r7, #0] - 8000e0e: 689a ldr r2, [r3, #8] - 8000e10: 69fb ldr r3, [r7, #28] - 8000e12: 005b lsls r3, r3, #1 - 8000e14: fa02 f303 lsl.w r3, r2, r3 - 8000e18: 69ba ldr r2, [r7, #24] - 8000e1a: 4313 orrs r3, r2 - 8000e1c: 61bb str r3, [r7, #24] + 8000e5c: 683b ldr r3, [r7, #0] + 8000e5e: 689a ldr r2, [r3, #8] + 8000e60: 69fb ldr r3, [r7, #28] + 8000e62: 005b lsls r3, r3, #1 + 8000e64: fa02 f303 lsl.w r3, r2, r3 + 8000e68: 69ba ldr r2, [r7, #24] + 8000e6a: 4313 orrs r3, r2 + 8000e6c: 61bb str r3, [r7, #24] GPIOx->PUPDR = temp; - 8000e1e: 687b ldr r3, [r7, #4] - 8000e20: 69ba ldr r2, [r7, #24] - 8000e22: 60da str r2, [r3, #12] + 8000e6e: 687b ldr r3, [r7, #4] + 8000e70: 69ba ldr r2, [r7, #24] + 8000e72: 60da str r2, [r3, #12] } /* In case of Alternate function mode selection */ if((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) - 8000e24: 683b ldr r3, [r7, #0] - 8000e26: 685b ldr r3, [r3, #4] - 8000e28: f003 0303 and.w r3, r3, #3 - 8000e2c: 2b02 cmp r3, #2 - 8000e2e: d123 bne.n 8000e78 + 8000e74: 683b ldr r3, [r7, #0] + 8000e76: 685b ldr r3, [r3, #4] + 8000e78: f003 0303 and.w r3, r3, #3 + 8000e7c: 2b02 cmp r3, #2 + 8000e7e: d123 bne.n 8000ec8 { /* Check the Alternate function parameter */ assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); /* Configure Alternate function mapped with the current IO */ temp = GPIOx->AFR[position >> 3U]; - 8000e30: 69fb ldr r3, [r7, #28] - 8000e32: 08da lsrs r2, r3, #3 - 8000e34: 687b ldr r3, [r7, #4] - 8000e36: 3208 adds r2, #8 - 8000e38: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8000e3c: 61bb str r3, [r7, #24] + 8000e80: 69fb ldr r3, [r7, #28] + 8000e82: 08da lsrs r2, r3, #3 + 8000e84: 687b ldr r3, [r7, #4] + 8000e86: 3208 adds r2, #8 + 8000e88: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 8000e8c: 61bb str r3, [r7, #24] temp &= ~(0xFU << ((uint32_t)(position & 0x07U) * 4U)) ; - 8000e3e: 69fb ldr r3, [r7, #28] - 8000e40: f003 0307 and.w r3, r3, #7 - 8000e44: 009b lsls r3, r3, #2 - 8000e46: 220f movs r2, #15 - 8000e48: fa02 f303 lsl.w r3, r2, r3 - 8000e4c: 43db mvns r3, r3 - 8000e4e: 69ba ldr r2, [r7, #24] - 8000e50: 4013 ands r3, r2 - 8000e52: 61bb str r3, [r7, #24] + 8000e8e: 69fb ldr r3, [r7, #28] + 8000e90: f003 0307 and.w r3, r3, #7 + 8000e94: 009b lsls r3, r3, #2 + 8000e96: 220f movs r2, #15 + 8000e98: fa02 f303 lsl.w r3, r2, r3 + 8000e9c: 43db mvns r3, r3 + 8000e9e: 69ba ldr r2, [r7, #24] + 8000ea0: 4013 ands r3, r2 + 8000ea2: 61bb str r3, [r7, #24] temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4U)); - 8000e54: 683b ldr r3, [r7, #0] - 8000e56: 691a ldr r2, [r3, #16] - 8000e58: 69fb ldr r3, [r7, #28] - 8000e5a: f003 0307 and.w r3, r3, #7 - 8000e5e: 009b lsls r3, r3, #2 - 8000e60: fa02 f303 lsl.w r3, r2, r3 - 8000e64: 69ba ldr r2, [r7, #24] - 8000e66: 4313 orrs r3, r2 - 8000e68: 61bb str r3, [r7, #24] + 8000ea4: 683b ldr r3, [r7, #0] + 8000ea6: 691a ldr r2, [r3, #16] + 8000ea8: 69fb ldr r3, [r7, #28] + 8000eaa: f003 0307 and.w r3, r3, #7 + 8000eae: 009b lsls r3, r3, #2 + 8000eb0: fa02 f303 lsl.w r3, r2, r3 + 8000eb4: 69ba ldr r2, [r7, #24] + 8000eb6: 4313 orrs r3, r2 + 8000eb8: 61bb str r3, [r7, #24] GPIOx->AFR[position >> 3U] = temp; - 8000e6a: 69fb ldr r3, [r7, #28] - 8000e6c: 08da lsrs r2, r3, #3 - 8000e6e: 687b ldr r3, [r7, #4] - 8000e70: 3208 adds r2, #8 - 8000e72: 69b9 ldr r1, [r7, #24] - 8000e74: f843 1022 str.w r1, [r3, r2, lsl #2] + 8000eba: 69fb ldr r3, [r7, #28] + 8000ebc: 08da lsrs r2, r3, #3 + 8000ebe: 687b ldr r3, [r7, #4] + 8000ec0: 3208 adds r2, #8 + 8000ec2: 69b9 ldr r1, [r7, #24] + 8000ec4: f843 1022 str.w r1, [r3, r2, lsl #2] } /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ temp = GPIOx->MODER; - 8000e78: 687b ldr r3, [r7, #4] - 8000e7a: 681b ldr r3, [r3, #0] - 8000e7c: 61bb str r3, [r7, #24] + 8000ec8: 687b ldr r3, [r7, #4] + 8000eca: 681b ldr r3, [r3, #0] + 8000ecc: 61bb str r3, [r7, #24] temp &= ~(GPIO_MODER_MODER0 << (position * 2U)); - 8000e7e: 69fb ldr r3, [r7, #28] - 8000e80: 005b lsls r3, r3, #1 - 8000e82: 2203 movs r2, #3 - 8000e84: fa02 f303 lsl.w r3, r2, r3 - 8000e88: 43db mvns r3, r3 - 8000e8a: 69ba ldr r2, [r7, #24] - 8000e8c: 4013 ands r3, r2 - 8000e8e: 61bb str r3, [r7, #24] + 8000ece: 69fb ldr r3, [r7, #28] + 8000ed0: 005b lsls r3, r3, #1 + 8000ed2: 2203 movs r2, #3 + 8000ed4: fa02 f303 lsl.w r3, r2, r3 + 8000ed8: 43db mvns r3, r3 + 8000eda: 69ba ldr r2, [r7, #24] + 8000edc: 4013 ands r3, r2 + 8000ede: 61bb str r3, [r7, #24] temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U)); - 8000e90: 683b ldr r3, [r7, #0] - 8000e92: 685b ldr r3, [r3, #4] - 8000e94: f003 0203 and.w r2, r3, #3 - 8000e98: 69fb ldr r3, [r7, #28] - 8000e9a: 005b lsls r3, r3, #1 - 8000e9c: fa02 f303 lsl.w r3, r2, r3 - 8000ea0: 69ba ldr r2, [r7, #24] - 8000ea2: 4313 orrs r3, r2 - 8000ea4: 61bb str r3, [r7, #24] + 8000ee0: 683b ldr r3, [r7, #0] + 8000ee2: 685b ldr r3, [r3, #4] + 8000ee4: f003 0203 and.w r2, r3, #3 + 8000ee8: 69fb ldr r3, [r7, #28] + 8000eea: 005b lsls r3, r3, #1 + 8000eec: fa02 f303 lsl.w r3, r2, r3 + 8000ef0: 69ba ldr r2, [r7, #24] + 8000ef2: 4313 orrs r3, r2 + 8000ef4: 61bb str r3, [r7, #24] GPIOx->MODER = temp; - 8000ea6: 687b ldr r3, [r7, #4] - 8000ea8: 69ba ldr r2, [r7, #24] - 8000eaa: 601a str r2, [r3, #0] + 8000ef6: 687b ldr r3, [r7, #4] + 8000ef8: 69ba ldr r2, [r7, #24] + 8000efa: 601a str r2, [r3, #0] /*--------------------- EXTI Mode Configuration ------------------------*/ /* Configure the External Interrupt or event for the current IO */ if((GPIO_Init->Mode & EXTI_MODE) != 0x00U) - 8000eac: 683b ldr r3, [r7, #0] - 8000eae: 685b ldr r3, [r3, #4] - 8000eb0: f403 3340 and.w r3, r3, #196608 @ 0x30000 - 8000eb4: 2b00 cmp r3, #0 - 8000eb6: f000 80c0 beq.w 800103a + 8000efc: 683b ldr r3, [r7, #0] + 8000efe: 685b ldr r3, [r3, #4] + 8000f00: f403 3340 and.w r3, r3, #196608 @ 0x30000 + 8000f04: 2b00 cmp r3, #0 + 8000f06: f000 80c0 beq.w 800108a { /* Enable SYSCFG Clock */ __HAL_RCC_SYSCFG_CLK_ENABLE(); - 8000eba: 2300 movs r3, #0 - 8000ebc: 60fb str r3, [r7, #12] - 8000ebe: 4b66 ldr r3, [pc, #408] @ (8001058 ) - 8000ec0: 6c5b ldr r3, [r3, #68] @ 0x44 - 8000ec2: 4a65 ldr r2, [pc, #404] @ (8001058 ) - 8000ec4: f443 4380 orr.w r3, r3, #16384 @ 0x4000 - 8000ec8: 6453 str r3, [r2, #68] @ 0x44 - 8000eca: 4b63 ldr r3, [pc, #396] @ (8001058 ) - 8000ecc: 6c5b ldr r3, [r3, #68] @ 0x44 - 8000ece: f403 4380 and.w r3, r3, #16384 @ 0x4000 - 8000ed2: 60fb str r3, [r7, #12] - 8000ed4: 68fb ldr r3, [r7, #12] + 8000f0a: 2300 movs r3, #0 + 8000f0c: 60fb str r3, [r7, #12] + 8000f0e: 4b66 ldr r3, [pc, #408] @ (80010a8 ) + 8000f10: 6c5b ldr r3, [r3, #68] @ 0x44 + 8000f12: 4a65 ldr r2, [pc, #404] @ (80010a8 ) + 8000f14: f443 4380 orr.w r3, r3, #16384 @ 0x4000 + 8000f18: 6453 str r3, [r2, #68] @ 0x44 + 8000f1a: 4b63 ldr r3, [pc, #396] @ (80010a8 ) + 8000f1c: 6c5b ldr r3, [r3, #68] @ 0x44 + 8000f1e: f403 4380 and.w r3, r3, #16384 @ 0x4000 + 8000f22: 60fb str r3, [r7, #12] + 8000f24: 68fb ldr r3, [r7, #12] temp = SYSCFG->EXTICR[position >> 2U]; - 8000ed6: 4a61 ldr r2, [pc, #388] @ (800105c ) - 8000ed8: 69fb ldr r3, [r7, #28] - 8000eda: 089b lsrs r3, r3, #2 - 8000edc: 3302 adds r3, #2 - 8000ede: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 8000ee2: 61bb str r3, [r7, #24] + 8000f26: 4a61 ldr r2, [pc, #388] @ (80010ac ) + 8000f28: 69fb ldr r3, [r7, #28] + 8000f2a: 089b lsrs r3, r3, #2 + 8000f2c: 3302 adds r3, #2 + 8000f2e: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8000f32: 61bb str r3, [r7, #24] temp &= ~(0x0FU << (4U * (position & 0x03U))); - 8000ee4: 69fb ldr r3, [r7, #28] - 8000ee6: f003 0303 and.w r3, r3, #3 - 8000eea: 009b lsls r3, r3, #2 - 8000eec: 220f movs r2, #15 - 8000eee: fa02 f303 lsl.w r3, r2, r3 - 8000ef2: 43db mvns r3, r3 - 8000ef4: 69ba ldr r2, [r7, #24] - 8000ef6: 4013 ands r3, r2 - 8000ef8: 61bb str r3, [r7, #24] + 8000f34: 69fb ldr r3, [r7, #28] + 8000f36: f003 0303 and.w r3, r3, #3 + 8000f3a: 009b lsls r3, r3, #2 + 8000f3c: 220f movs r2, #15 + 8000f3e: fa02 f303 lsl.w r3, r2, r3 + 8000f42: 43db mvns r3, r3 + 8000f44: 69ba ldr r2, [r7, #24] + 8000f46: 4013 ands r3, r2 + 8000f48: 61bb str r3, [r7, #24] temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U))); - 8000efa: 687b ldr r3, [r7, #4] - 8000efc: 4a58 ldr r2, [pc, #352] @ (8001060 ) - 8000efe: 4293 cmp r3, r2 - 8000f00: d037 beq.n 8000f72 - 8000f02: 687b ldr r3, [r7, #4] - 8000f04: 4a57 ldr r2, [pc, #348] @ (8001064 ) - 8000f06: 4293 cmp r3, r2 - 8000f08: d031 beq.n 8000f6e - 8000f0a: 687b ldr r3, [r7, #4] - 8000f0c: 4a56 ldr r2, [pc, #344] @ (8001068 ) - 8000f0e: 4293 cmp r3, r2 - 8000f10: d02b beq.n 8000f6a - 8000f12: 687b ldr r3, [r7, #4] - 8000f14: 4a55 ldr r2, [pc, #340] @ (800106c ) - 8000f16: 4293 cmp r3, r2 - 8000f18: d025 beq.n 8000f66 - 8000f1a: 687b ldr r3, [r7, #4] - 8000f1c: 4a54 ldr r2, [pc, #336] @ (8001070 ) - 8000f1e: 4293 cmp r3, r2 - 8000f20: d01f beq.n 8000f62 - 8000f22: 687b ldr r3, [r7, #4] - 8000f24: 4a53 ldr r2, [pc, #332] @ (8001074 ) - 8000f26: 4293 cmp r3, r2 - 8000f28: d019 beq.n 8000f5e - 8000f2a: 687b ldr r3, [r7, #4] - 8000f2c: 4a52 ldr r2, [pc, #328] @ (8001078 ) - 8000f2e: 4293 cmp r3, r2 - 8000f30: d013 beq.n 8000f5a - 8000f32: 687b ldr r3, [r7, #4] - 8000f34: 4a51 ldr r2, [pc, #324] @ (800107c ) - 8000f36: 4293 cmp r3, r2 - 8000f38: d00d beq.n 8000f56 - 8000f3a: 687b ldr r3, [r7, #4] - 8000f3c: 4a50 ldr r2, [pc, #320] @ (8001080 ) - 8000f3e: 4293 cmp r3, r2 - 8000f40: d007 beq.n 8000f52 - 8000f42: 687b ldr r3, [r7, #4] - 8000f44: 4a4f ldr r2, [pc, #316] @ (8001084 ) - 8000f46: 4293 cmp r3, r2 - 8000f48: d101 bne.n 8000f4e - 8000f4a: 2309 movs r3, #9 - 8000f4c: e012 b.n 8000f74 - 8000f4e: 230a movs r3, #10 - 8000f50: e010 b.n 8000f74 - 8000f52: 2308 movs r3, #8 - 8000f54: e00e b.n 8000f74 - 8000f56: 2307 movs r3, #7 - 8000f58: e00c b.n 8000f74 - 8000f5a: 2306 movs r3, #6 - 8000f5c: e00a b.n 8000f74 - 8000f5e: 2305 movs r3, #5 - 8000f60: e008 b.n 8000f74 - 8000f62: 2304 movs r3, #4 - 8000f64: e006 b.n 8000f74 - 8000f66: 2303 movs r3, #3 - 8000f68: e004 b.n 8000f74 - 8000f6a: 2302 movs r3, #2 - 8000f6c: e002 b.n 8000f74 - 8000f6e: 2301 movs r3, #1 - 8000f70: e000 b.n 8000f74 - 8000f72: 2300 movs r3, #0 - 8000f74: 69fa ldr r2, [r7, #28] - 8000f76: f002 0203 and.w r2, r2, #3 - 8000f7a: 0092 lsls r2, r2, #2 - 8000f7c: 4093 lsls r3, r2 - 8000f7e: 69ba ldr r2, [r7, #24] - 8000f80: 4313 orrs r3, r2 - 8000f82: 61bb str r3, [r7, #24] + 8000f4a: 687b ldr r3, [r7, #4] + 8000f4c: 4a58 ldr r2, [pc, #352] @ (80010b0 ) + 8000f4e: 4293 cmp r3, r2 + 8000f50: d037 beq.n 8000fc2 + 8000f52: 687b ldr r3, [r7, #4] + 8000f54: 4a57 ldr r2, [pc, #348] @ (80010b4 ) + 8000f56: 4293 cmp r3, r2 + 8000f58: d031 beq.n 8000fbe + 8000f5a: 687b ldr r3, [r7, #4] + 8000f5c: 4a56 ldr r2, [pc, #344] @ (80010b8 ) + 8000f5e: 4293 cmp r3, r2 + 8000f60: d02b beq.n 8000fba + 8000f62: 687b ldr r3, [r7, #4] + 8000f64: 4a55 ldr r2, [pc, #340] @ (80010bc ) + 8000f66: 4293 cmp r3, r2 + 8000f68: d025 beq.n 8000fb6 + 8000f6a: 687b ldr r3, [r7, #4] + 8000f6c: 4a54 ldr r2, [pc, #336] @ (80010c0 ) + 8000f6e: 4293 cmp r3, r2 + 8000f70: d01f beq.n 8000fb2 + 8000f72: 687b ldr r3, [r7, #4] + 8000f74: 4a53 ldr r2, [pc, #332] @ (80010c4 ) + 8000f76: 4293 cmp r3, r2 + 8000f78: d019 beq.n 8000fae + 8000f7a: 687b ldr r3, [r7, #4] + 8000f7c: 4a52 ldr r2, [pc, #328] @ (80010c8 ) + 8000f7e: 4293 cmp r3, r2 + 8000f80: d013 beq.n 8000faa + 8000f82: 687b ldr r3, [r7, #4] + 8000f84: 4a51 ldr r2, [pc, #324] @ (80010cc ) + 8000f86: 4293 cmp r3, r2 + 8000f88: d00d beq.n 8000fa6 + 8000f8a: 687b ldr r3, [r7, #4] + 8000f8c: 4a50 ldr r2, [pc, #320] @ (80010d0 ) + 8000f8e: 4293 cmp r3, r2 + 8000f90: d007 beq.n 8000fa2 + 8000f92: 687b ldr r3, [r7, #4] + 8000f94: 4a4f ldr r2, [pc, #316] @ (80010d4 ) + 8000f96: 4293 cmp r3, r2 + 8000f98: d101 bne.n 8000f9e + 8000f9a: 2309 movs r3, #9 + 8000f9c: e012 b.n 8000fc4 + 8000f9e: 230a movs r3, #10 + 8000fa0: e010 b.n 8000fc4 + 8000fa2: 2308 movs r3, #8 + 8000fa4: e00e b.n 8000fc4 + 8000fa6: 2307 movs r3, #7 + 8000fa8: e00c b.n 8000fc4 + 8000faa: 2306 movs r3, #6 + 8000fac: e00a b.n 8000fc4 + 8000fae: 2305 movs r3, #5 + 8000fb0: e008 b.n 8000fc4 + 8000fb2: 2304 movs r3, #4 + 8000fb4: e006 b.n 8000fc4 + 8000fb6: 2303 movs r3, #3 + 8000fb8: e004 b.n 8000fc4 + 8000fba: 2302 movs r3, #2 + 8000fbc: e002 b.n 8000fc4 + 8000fbe: 2301 movs r3, #1 + 8000fc0: e000 b.n 8000fc4 + 8000fc2: 2300 movs r3, #0 + 8000fc4: 69fa ldr r2, [r7, #28] + 8000fc6: f002 0203 and.w r2, r2, #3 + 8000fca: 0092 lsls r2, r2, #2 + 8000fcc: 4093 lsls r3, r2 + 8000fce: 69ba ldr r2, [r7, #24] + 8000fd0: 4313 orrs r3, r2 + 8000fd2: 61bb str r3, [r7, #24] SYSCFG->EXTICR[position >> 2U] = temp; - 8000f84: 4935 ldr r1, [pc, #212] @ (800105c ) - 8000f86: 69fb ldr r3, [r7, #28] - 8000f88: 089b lsrs r3, r3, #2 - 8000f8a: 3302 adds r3, #2 - 8000f8c: 69ba ldr r2, [r7, #24] - 8000f8e: f841 2023 str.w r2, [r1, r3, lsl #2] + 8000fd4: 4935 ldr r1, [pc, #212] @ (80010ac ) + 8000fd6: 69fb ldr r3, [r7, #28] + 8000fd8: 089b lsrs r3, r3, #2 + 8000fda: 3302 adds r3, #2 + 8000fdc: 69ba ldr r2, [r7, #24] + 8000fde: f841 2023 str.w r2, [r1, r3, lsl #2] /* Clear Rising Falling edge configuration */ temp = EXTI->RTSR; - 8000f92: 4b3d ldr r3, [pc, #244] @ (8001088 ) - 8000f94: 689b ldr r3, [r3, #8] - 8000f96: 61bb str r3, [r7, #24] + 8000fe2: 4b3d ldr r3, [pc, #244] @ (80010d8 ) + 8000fe4: 689b ldr r3, [r3, #8] + 8000fe6: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); - 8000f98: 693b ldr r3, [r7, #16] - 8000f9a: 43db mvns r3, r3 - 8000f9c: 69ba ldr r2, [r7, #24] - 8000f9e: 4013 ands r3, r2 - 8000fa0: 61bb str r3, [r7, #24] + 8000fe8: 693b ldr r3, [r7, #16] + 8000fea: 43db mvns r3, r3 + 8000fec: 69ba ldr r2, [r7, #24] + 8000fee: 4013 ands r3, r2 + 8000ff0: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) - 8000fa2: 683b ldr r3, [r7, #0] - 8000fa4: 685b ldr r3, [r3, #4] - 8000fa6: f403 1380 and.w r3, r3, #1048576 @ 0x100000 - 8000faa: 2b00 cmp r3, #0 - 8000fac: d003 beq.n 8000fb6 + 8000ff2: 683b ldr r3, [r7, #0] + 8000ff4: 685b ldr r3, [r3, #4] + 8000ff6: f403 1380 and.w r3, r3, #1048576 @ 0x100000 + 8000ffa: 2b00 cmp r3, #0 + 8000ffc: d003 beq.n 8001006 { temp |= iocurrent; - 8000fae: 69ba ldr r2, [r7, #24] - 8000fb0: 693b ldr r3, [r7, #16] - 8000fb2: 4313 orrs r3, r2 - 8000fb4: 61bb str r3, [r7, #24] + 8000ffe: 69ba ldr r2, [r7, #24] + 8001000: 693b ldr r3, [r7, #16] + 8001002: 4313 orrs r3, r2 + 8001004: 61bb str r3, [r7, #24] } EXTI->RTSR = temp; - 8000fb6: 4a34 ldr r2, [pc, #208] @ (8001088 ) - 8000fb8: 69bb ldr r3, [r7, #24] - 8000fba: 6093 str r3, [r2, #8] + 8001006: 4a34 ldr r2, [pc, #208] @ (80010d8 ) + 8001008: 69bb ldr r3, [r7, #24] + 800100a: 6093 str r3, [r2, #8] temp = EXTI->FTSR; - 8000fbc: 4b32 ldr r3, [pc, #200] @ (8001088 ) - 8000fbe: 68db ldr r3, [r3, #12] - 8000fc0: 61bb str r3, [r7, #24] + 800100c: 4b32 ldr r3, [pc, #200] @ (80010d8 ) + 800100e: 68db ldr r3, [r3, #12] + 8001010: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); - 8000fc2: 693b ldr r3, [r7, #16] - 8000fc4: 43db mvns r3, r3 - 8000fc6: 69ba ldr r2, [r7, #24] - 8000fc8: 4013 ands r3, r2 - 8000fca: 61bb str r3, [r7, #24] + 8001012: 693b ldr r3, [r7, #16] + 8001014: 43db mvns r3, r3 + 8001016: 69ba ldr r2, [r7, #24] + 8001018: 4013 ands r3, r2 + 800101a: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) - 8000fcc: 683b ldr r3, [r7, #0] - 8000fce: 685b ldr r3, [r3, #4] - 8000fd0: f403 1300 and.w r3, r3, #2097152 @ 0x200000 - 8000fd4: 2b00 cmp r3, #0 - 8000fd6: d003 beq.n 8000fe0 + 800101c: 683b ldr r3, [r7, #0] + 800101e: 685b ldr r3, [r3, #4] + 8001020: f403 1300 and.w r3, r3, #2097152 @ 0x200000 + 8001024: 2b00 cmp r3, #0 + 8001026: d003 beq.n 8001030 { temp |= iocurrent; - 8000fd8: 69ba ldr r2, [r7, #24] - 8000fda: 693b ldr r3, [r7, #16] - 8000fdc: 4313 orrs r3, r2 - 8000fde: 61bb str r3, [r7, #24] + 8001028: 69ba ldr r2, [r7, #24] + 800102a: 693b ldr r3, [r7, #16] + 800102c: 4313 orrs r3, r2 + 800102e: 61bb str r3, [r7, #24] } EXTI->FTSR = temp; - 8000fe0: 4a29 ldr r2, [pc, #164] @ (8001088 ) - 8000fe2: 69bb ldr r3, [r7, #24] - 8000fe4: 60d3 str r3, [r2, #12] + 8001030: 4a29 ldr r2, [pc, #164] @ (80010d8 ) + 8001032: 69bb ldr r3, [r7, #24] + 8001034: 60d3 str r3, [r2, #12] temp = EXTI->EMR; - 8000fe6: 4b28 ldr r3, [pc, #160] @ (8001088 ) - 8000fe8: 685b ldr r3, [r3, #4] - 8000fea: 61bb str r3, [r7, #24] + 8001036: 4b28 ldr r3, [pc, #160] @ (80010d8 ) + 8001038: 685b ldr r3, [r3, #4] + 800103a: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); - 8000fec: 693b ldr r3, [r7, #16] - 8000fee: 43db mvns r3, r3 - 8000ff0: 69ba ldr r2, [r7, #24] - 8000ff2: 4013 ands r3, r2 - 8000ff4: 61bb str r3, [r7, #24] + 800103c: 693b ldr r3, [r7, #16] + 800103e: 43db mvns r3, r3 + 8001040: 69ba ldr r2, [r7, #24] + 8001042: 4013 ands r3, r2 + 8001044: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & EXTI_EVT) != 0x00U) - 8000ff6: 683b ldr r3, [r7, #0] - 8000ff8: 685b ldr r3, [r3, #4] - 8000ffa: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8000ffe: 2b00 cmp r3, #0 - 8001000: d003 beq.n 800100a + 8001046: 683b ldr r3, [r7, #0] + 8001048: 685b ldr r3, [r3, #4] + 800104a: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 800104e: 2b00 cmp r3, #0 + 8001050: d003 beq.n 800105a { temp |= iocurrent; - 8001002: 69ba ldr r2, [r7, #24] - 8001004: 693b ldr r3, [r7, #16] - 8001006: 4313 orrs r3, r2 - 8001008: 61bb str r3, [r7, #24] + 8001052: 69ba ldr r2, [r7, #24] + 8001054: 693b ldr r3, [r7, #16] + 8001056: 4313 orrs r3, r2 + 8001058: 61bb str r3, [r7, #24] } EXTI->EMR = temp; - 800100a: 4a1f ldr r2, [pc, #124] @ (8001088 ) - 800100c: 69bb ldr r3, [r7, #24] - 800100e: 6053 str r3, [r2, #4] + 800105a: 4a1f ldr r2, [pc, #124] @ (80010d8 ) + 800105c: 69bb ldr r3, [r7, #24] + 800105e: 6053 str r3, [r2, #4] /* Clear EXTI line configuration */ temp = EXTI->IMR; - 8001010: 4b1d ldr r3, [pc, #116] @ (8001088 ) - 8001012: 681b ldr r3, [r3, #0] - 8001014: 61bb str r3, [r7, #24] + 8001060: 4b1d ldr r3, [pc, #116] @ (80010d8 ) + 8001062: 681b ldr r3, [r3, #0] + 8001064: 61bb str r3, [r7, #24] temp &= ~((uint32_t)iocurrent); - 8001016: 693b ldr r3, [r7, #16] - 8001018: 43db mvns r3, r3 - 800101a: 69ba ldr r2, [r7, #24] - 800101c: 4013 ands r3, r2 - 800101e: 61bb str r3, [r7, #24] + 8001066: 693b ldr r3, [r7, #16] + 8001068: 43db mvns r3, r3 + 800106a: 69ba ldr r2, [r7, #24] + 800106c: 4013 ands r3, r2 + 800106e: 61bb str r3, [r7, #24] if((GPIO_Init->Mode & EXTI_IT) != 0x00U) - 8001020: 683b ldr r3, [r7, #0] - 8001022: 685b ldr r3, [r3, #4] - 8001024: f403 3380 and.w r3, r3, #65536 @ 0x10000 - 8001028: 2b00 cmp r3, #0 - 800102a: d003 beq.n 8001034 + 8001070: 683b ldr r3, [r7, #0] + 8001072: 685b ldr r3, [r3, #4] + 8001074: f403 3380 and.w r3, r3, #65536 @ 0x10000 + 8001078: 2b00 cmp r3, #0 + 800107a: d003 beq.n 8001084 { temp |= iocurrent; - 800102c: 69ba ldr r2, [r7, #24] - 800102e: 693b ldr r3, [r7, #16] - 8001030: 4313 orrs r3, r2 - 8001032: 61bb str r3, [r7, #24] + 800107c: 69ba ldr r2, [r7, #24] + 800107e: 693b ldr r3, [r7, #16] + 8001080: 4313 orrs r3, r2 + 8001082: 61bb str r3, [r7, #24] } EXTI->IMR = temp; - 8001034: 4a14 ldr r2, [pc, #80] @ (8001088 ) - 8001036: 69bb ldr r3, [r7, #24] - 8001038: 6013 str r3, [r2, #0] + 8001084: 4a14 ldr r2, [pc, #80] @ (80010d8 ) + 8001086: 69bb ldr r3, [r7, #24] + 8001088: 6013 str r3, [r2, #0] for(position = 0U; position < GPIO_NUMBER; position++) - 800103a: 69fb ldr r3, [r7, #28] - 800103c: 3301 adds r3, #1 - 800103e: 61fb str r3, [r7, #28] - 8001040: 69fb ldr r3, [r7, #28] - 8001042: 2b0f cmp r3, #15 - 8001044: f67f ae84 bls.w 8000d50 + 800108a: 69fb ldr r3, [r7, #28] + 800108c: 3301 adds r3, #1 + 800108e: 61fb str r3, [r7, #28] + 8001090: 69fb ldr r3, [r7, #28] + 8001092: 2b0f cmp r3, #15 + 8001094: f67f ae84 bls.w 8000da0 } } } } - 8001048: bf00 nop - 800104a: bf00 nop - 800104c: 3724 adds r7, #36 @ 0x24 - 800104e: 46bd mov sp, r7 - 8001050: f85d 7b04 ldr.w r7, [sp], #4 - 8001054: 4770 bx lr - 8001056: bf00 nop - 8001058: 40023800 .word 0x40023800 - 800105c: 40013800 .word 0x40013800 - 8001060: 40020000 .word 0x40020000 - 8001064: 40020400 .word 0x40020400 - 8001068: 40020800 .word 0x40020800 - 800106c: 40020c00 .word 0x40020c00 - 8001070: 40021000 .word 0x40021000 - 8001074: 40021400 .word 0x40021400 - 8001078: 40021800 .word 0x40021800 - 800107c: 40021c00 .word 0x40021c00 - 8001080: 40022000 .word 0x40022000 - 8001084: 40022400 .word 0x40022400 - 8001088: 40013c00 .word 0x40013c00 + 8001098: bf00 nop + 800109a: bf00 nop + 800109c: 3724 adds r7, #36 @ 0x24 + 800109e: 46bd mov sp, r7 + 80010a0: f85d 7b04 ldr.w r7, [sp], #4 + 80010a4: 4770 bx lr + 80010a6: bf00 nop + 80010a8: 40023800 .word 0x40023800 + 80010ac: 40013800 .word 0x40013800 + 80010b0: 40020000 .word 0x40020000 + 80010b4: 40020400 .word 0x40020400 + 80010b8: 40020800 .word 0x40020800 + 80010bc: 40020c00 .word 0x40020c00 + 80010c0: 40021000 .word 0x40021000 + 80010c4: 40021400 .word 0x40021400 + 80010c8: 40021800 .word 0x40021800 + 80010cc: 40021c00 .word 0x40021c00 + 80010d0: 40022000 .word 0x40022000 + 80010d4: 40022400 .word 0x40022400 + 80010d8: 40013c00 .word 0x40013c00 -0800108c : +080010dc : * @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) { - 800108c: b480 push {r7} - 800108e: b083 sub sp, #12 - 8001090: af00 add r7, sp, #0 - 8001092: 6078 str r0, [r7, #4] - 8001094: 460b mov r3, r1 - 8001096: 807b strh r3, [r7, #2] - 8001098: 4613 mov r3, r2 - 800109a: 707b strb r3, [r7, #1] + 80010dc: b480 push {r7} + 80010de: b083 sub sp, #12 + 80010e0: af00 add r7, sp, #0 + 80010e2: 6078 str r0, [r7, #4] + 80010e4: 460b mov r3, r1 + 80010e6: 807b strh r3, [r7, #2] + 80010e8: 4613 mov r3, r2 + 80010ea: 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) - 800109c: 787b ldrb r3, [r7, #1] - 800109e: 2b00 cmp r3, #0 - 80010a0: d003 beq.n 80010aa + 80010ec: 787b ldrb r3, [r7, #1] + 80010ee: 2b00 cmp r3, #0 + 80010f0: d003 beq.n 80010fa { GPIOx->BSRR = GPIO_Pin; - 80010a2: 887a ldrh r2, [r7, #2] - 80010a4: 687b ldr r3, [r7, #4] - 80010a6: 619a str r2, [r3, #24] + 80010f2: 887a ldrh r2, [r7, #2] + 80010f4: 687b ldr r3, [r7, #4] + 80010f6: 619a str r2, [r3, #24] } else { GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U; } } - 80010a8: e003 b.n 80010b2 + 80010f8: e003 b.n 8001102 GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U; - 80010aa: 887b ldrh r3, [r7, #2] - 80010ac: 041a lsls r2, r3, #16 - 80010ae: 687b ldr r3, [r7, #4] - 80010b0: 619a str r2, [r3, #24] + 80010fa: 887b ldrh r3, [r7, #2] + 80010fc: 041a lsls r2, r3, #16 + 80010fe: 687b ldr r3, [r7, #4] + 8001100: 619a str r2, [r3, #24] } - 80010b2: bf00 nop - 80010b4: 370c adds r7, #12 - 80010b6: 46bd mov sp, r7 - 80010b8: f85d 7b04 ldr.w r7, [sp], #4 - 80010bc: 4770 bx lr + 8001102: bf00 nop + 8001104: 370c adds r7, #12 + 8001106: 46bd mov sp, r7 + 8001108: f85d 7b04 ldr.w r7, [sp], #4 + 800110c: 4770 bx lr ... -080010c0 : +08001110 : * @brief This function handles EXTI interrupt request. * @param GPIO_Pin Specifies the pins connected EXTI line * @retval None */ void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) { - 80010c0: b580 push {r7, lr} - 80010c2: b082 sub sp, #8 - 80010c4: af00 add r7, sp, #0 - 80010c6: 4603 mov r3, r0 - 80010c8: 80fb strh r3, [r7, #6] + 8001110: b580 push {r7, lr} + 8001112: b082 sub sp, #8 + 8001114: af00 add r7, sp, #0 + 8001116: 4603 mov r3, r0 + 8001118: 80fb strh r3, [r7, #6] /* EXTI line interrupt detected */ if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) - 80010ca: 4b08 ldr r3, [pc, #32] @ (80010ec ) - 80010cc: 695a ldr r2, [r3, #20] - 80010ce: 88fb ldrh r3, [r7, #6] - 80010d0: 4013 ands r3, r2 - 80010d2: 2b00 cmp r3, #0 - 80010d4: d006 beq.n 80010e4 + 800111a: 4b08 ldr r3, [pc, #32] @ (800113c ) + 800111c: 695a ldr r2, [r3, #20] + 800111e: 88fb ldrh r3, [r7, #6] + 8001120: 4013 ands r3, r2 + 8001122: 2b00 cmp r3, #0 + 8001124: d006 beq.n 8001134 { __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); - 80010d6: 4a05 ldr r2, [pc, #20] @ (80010ec ) - 80010d8: 88fb ldrh r3, [r7, #6] - 80010da: 6153 str r3, [r2, #20] + 8001126: 4a05 ldr r2, [pc, #20] @ (800113c ) + 8001128: 88fb ldrh r3, [r7, #6] + 800112a: 6153 str r3, [r2, #20] HAL_GPIO_EXTI_Callback(GPIO_Pin); - 80010dc: 88fb ldrh r3, [r7, #6] - 80010de: 4618 mov r0, r3 - 80010e0: f000 f806 bl 80010f0 + 800112c: 88fb ldrh r3, [r7, #6] + 800112e: 4618 mov r0, r3 + 8001130: f7ff fbbc bl 80008ac } } - 80010e4: bf00 nop - 80010e6: 3708 adds r7, #8 - 80010e8: 46bd mov sp, r7 - 80010ea: bd80 pop {r7, pc} - 80010ec: 40013c00 .word 0x40013c00 + 8001134: bf00 nop + 8001136: 3708 adds r7, #8 + 8001138: 46bd mov sp, r7 + 800113a: bd80 pop {r7, pc} + 800113c: 40013c00 .word 0x40013c00 -080010f0 : - * @brief EXTI line detection callbacks. - * @param GPIO_Pin Specifies the pins connected EXTI line - * @retval None - */ -__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) -{ - 80010f0: b480 push {r7} - 80010f2: b083 sub sp, #12 - 80010f4: af00 add r7, sp, #0 - 80010f6: 4603 mov r3, r0 - 80010f8: 80fb strh r3, [r7, #6] - /* Prevent unused argument(s) compilation warning */ - UNUSED(GPIO_Pin); - /* NOTE: This function Should not be modified, when the callback is needed, - the HAL_GPIO_EXTI_Callback could be implemented in the user file - */ -} - 80010fa: bf00 nop - 80010fc: 370c adds r7, #12 - 80010fe: 46bd mov sp, r7 - 8001100: f85d 7b04 ldr.w r7, [sp], #4 - 8001104: 4770 bx lr - ... - -08001108 : +08001140 : * supported by this API. User should request a transition to HSE Off * first and then HSE On or HSE Bypass. * @retval HAL status */ __weak HAL_StatusTypeDef HAL_RCC_OscConfig(const RCC_OscInitTypeDef *RCC_OscInitStruct) { - 8001108: b580 push {r7, lr} - 800110a: b086 sub sp, #24 - 800110c: af00 add r7, sp, #0 - 800110e: 6078 str r0, [r7, #4] + 8001140: b580 push {r7, lr} + 8001142: b086 sub sp, #24 + 8001144: af00 add r7, sp, #0 + 8001146: 6078 str r0, [r7, #4] uint32_t tickstart; uint32_t pll_config; /* Check Null pointer */ if (RCC_OscInitStruct == NULL) - 8001110: 687b ldr r3, [r7, #4] - 8001112: 2b00 cmp r3, #0 - 8001114: d101 bne.n 800111a + 8001148: 687b ldr r3, [r7, #4] + 800114a: 2b00 cmp r3, #0 + 800114c: d101 bne.n 8001152 { return HAL_ERROR; - 8001116: 2301 movs r3, #1 - 8001118: e267 b.n 80015ea + 800114e: 2301 movs r3, #1 + 8001150: e267 b.n 8001622 } /* Check the parameters */ assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); /*------------------------------- HSE Configuration ------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) - 800111a: 687b ldr r3, [r7, #4] - 800111c: 681b ldr r3, [r3, #0] - 800111e: f003 0301 and.w r3, r3, #1 - 8001122: 2b00 cmp r3, #0 - 8001124: d075 beq.n 8001212 + 8001152: 687b ldr r3, [r7, #4] + 8001154: 681b ldr r3, [r3, #0] + 8001156: f003 0301 and.w r3, r3, #1 + 800115a: 2b00 cmp r3, #0 + 800115c: d075 beq.n 800124a { /* Check the parameters */ assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); /* When the HSE is used as system clock or clock source for PLL in these cases HSE will not disabled */ if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE) || \ - 8001126: 4b88 ldr r3, [pc, #544] @ (8001348 ) - 8001128: 689b ldr r3, [r3, #8] - 800112a: f003 030c and.w r3, r3, #12 - 800112e: 2b04 cmp r3, #4 - 8001130: d00c beq.n 800114c + 800115e: 4b88 ldr r3, [pc, #544] @ (8001380 ) + 8001160: 689b ldr r3, [r3, #8] + 8001162: f003 030c and.w r3, r3, #12 + 8001166: 2b04 cmp r3, #4 + 8001168: d00c beq.n 8001184 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE))) - 8001132: 4b85 ldr r3, [pc, #532] @ (8001348 ) - 8001134: 689b ldr r3, [r3, #8] - 8001136: f003 030c and.w r3, r3, #12 + 800116a: 4b85 ldr r3, [pc, #532] @ (8001380 ) + 800116c: 689b ldr r3, [r3, #8] + 800116e: f003 030c and.w r3, r3, #12 if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSE) || \ - 800113a: 2b08 cmp r3, #8 - 800113c: d112 bne.n 8001164 + 8001172: 2b08 cmp r3, #8 + 8001174: d112 bne.n 800119c ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE))) - 800113e: 4b82 ldr r3, [pc, #520] @ (8001348 ) - 8001140: 685b ldr r3, [r3, #4] - 8001142: f403 0380 and.w r3, r3, #4194304 @ 0x400000 - 8001146: f5b3 0f80 cmp.w r3, #4194304 @ 0x400000 - 800114a: d10b bne.n 8001164 + 8001176: 4b82 ldr r3, [pc, #520] @ (8001380 ) + 8001178: 685b ldr r3, [r3, #4] + 800117a: f403 0380 and.w r3, r3, #4194304 @ 0x400000 + 800117e: f5b3 0f80 cmp.w r3, #4194304 @ 0x400000 + 8001182: d10b bne.n 800119c { if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 800114c: 4b7e ldr r3, [pc, #504] @ (8001348 ) - 800114e: 681b ldr r3, [r3, #0] - 8001150: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 8001154: 2b00 cmp r3, #0 - 8001156: d05b beq.n 8001210 - 8001158: 687b ldr r3, [r7, #4] - 800115a: 685b ldr r3, [r3, #4] - 800115c: 2b00 cmp r3, #0 - 800115e: d157 bne.n 8001210 + 8001184: 4b7e ldr r3, [pc, #504] @ (8001380 ) + 8001186: 681b ldr r3, [r3, #0] + 8001188: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 800118c: 2b00 cmp r3, #0 + 800118e: d05b beq.n 8001248 + 8001190: 687b ldr r3, [r7, #4] + 8001192: 685b ldr r3, [r3, #4] + 8001194: 2b00 cmp r3, #0 + 8001196: d157 bne.n 8001248 { return HAL_ERROR; - 8001160: 2301 movs r3, #1 - 8001162: e242 b.n 80015ea + 8001198: 2301 movs r3, #1 + 800119a: e242 b.n 8001622 } } else { /* Set the new HSE configuration ---------------------------------------*/ __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); - 8001164: 687b ldr r3, [r7, #4] - 8001166: 685b ldr r3, [r3, #4] - 8001168: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 800116c: d106 bne.n 800117c - 800116e: 4b76 ldr r3, [pc, #472] @ (8001348 ) - 8001170: 681b ldr r3, [r3, #0] - 8001172: 4a75 ldr r2, [pc, #468] @ (8001348 ) - 8001174: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 8001178: 6013 str r3, [r2, #0] - 800117a: e01d b.n 80011b8 - 800117c: 687b ldr r3, [r7, #4] - 800117e: 685b ldr r3, [r3, #4] - 8001180: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 - 8001184: d10c bne.n 80011a0 - 8001186: 4b70 ldr r3, [pc, #448] @ (8001348 ) - 8001188: 681b ldr r3, [r3, #0] - 800118a: 4a6f ldr r2, [pc, #444] @ (8001348 ) - 800118c: f443 2380 orr.w r3, r3, #262144 @ 0x40000 - 8001190: 6013 str r3, [r2, #0] - 8001192: 4b6d ldr r3, [pc, #436] @ (8001348 ) - 8001194: 681b ldr r3, [r3, #0] - 8001196: 4a6c ldr r2, [pc, #432] @ (8001348 ) - 8001198: f443 3380 orr.w r3, r3, #65536 @ 0x10000 - 800119c: 6013 str r3, [r2, #0] - 800119e: e00b b.n 80011b8 - 80011a0: 4b69 ldr r3, [pc, #420] @ (8001348 ) - 80011a2: 681b ldr r3, [r3, #0] - 80011a4: 4a68 ldr r2, [pc, #416] @ (8001348 ) - 80011a6: f423 3380 bic.w r3, r3, #65536 @ 0x10000 - 80011aa: 6013 str r3, [r2, #0] - 80011ac: 4b66 ldr r3, [pc, #408] @ (8001348 ) - 80011ae: 681b ldr r3, [r3, #0] - 80011b0: 4a65 ldr r2, [pc, #404] @ (8001348 ) - 80011b2: f423 2380 bic.w r3, r3, #262144 @ 0x40000 - 80011b6: 6013 str r3, [r2, #0] + 800119c: 687b ldr r3, [r7, #4] + 800119e: 685b ldr r3, [r3, #4] + 80011a0: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 80011a4: d106 bne.n 80011b4 + 80011a6: 4b76 ldr r3, [pc, #472] @ (8001380 ) + 80011a8: 681b ldr r3, [r3, #0] + 80011aa: 4a75 ldr r2, [pc, #468] @ (8001380 ) + 80011ac: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 80011b0: 6013 str r3, [r2, #0] + 80011b2: e01d b.n 80011f0 + 80011b4: 687b ldr r3, [r7, #4] + 80011b6: 685b ldr r3, [r3, #4] + 80011b8: f5b3 2fa0 cmp.w r3, #327680 @ 0x50000 + 80011bc: d10c bne.n 80011d8 + 80011be: 4b70 ldr r3, [pc, #448] @ (8001380 ) + 80011c0: 681b ldr r3, [r3, #0] + 80011c2: 4a6f ldr r2, [pc, #444] @ (8001380 ) + 80011c4: f443 2380 orr.w r3, r3, #262144 @ 0x40000 + 80011c8: 6013 str r3, [r2, #0] + 80011ca: 4b6d ldr r3, [pc, #436] @ (8001380 ) + 80011cc: 681b ldr r3, [r3, #0] + 80011ce: 4a6c ldr r2, [pc, #432] @ (8001380 ) + 80011d0: f443 3380 orr.w r3, r3, #65536 @ 0x10000 + 80011d4: 6013 str r3, [r2, #0] + 80011d6: e00b b.n 80011f0 + 80011d8: 4b69 ldr r3, [pc, #420] @ (8001380 ) + 80011da: 681b ldr r3, [r3, #0] + 80011dc: 4a68 ldr r2, [pc, #416] @ (8001380 ) + 80011de: f423 3380 bic.w r3, r3, #65536 @ 0x10000 + 80011e2: 6013 str r3, [r2, #0] + 80011e4: 4b66 ldr r3, [pc, #408] @ (8001380 ) + 80011e6: 681b ldr r3, [r3, #0] + 80011e8: 4a65 ldr r2, [pc, #404] @ (8001380 ) + 80011ea: f423 2380 bic.w r3, r3, #262144 @ 0x40000 + 80011ee: 6013 str r3, [r2, #0] /* Check the HSE State */ if ((RCC_OscInitStruct->HSEState) != RCC_HSE_OFF) - 80011b8: 687b ldr r3, [r7, #4] - 80011ba: 685b ldr r3, [r3, #4] - 80011bc: 2b00 cmp r3, #0 - 80011be: d013 beq.n 80011e8 + 80011f0: 687b ldr r3, [r7, #4] + 80011f2: 685b ldr r3, [r3, #4] + 80011f4: 2b00 cmp r3, #0 + 80011f6: d013 beq.n 8001220 { /* Get Start Tick */ tickstart = HAL_GetTick(); - 80011c0: f7ff fcca bl 8000b58 - 80011c4: 6138 str r0, [r7, #16] + 80011f8: f7ff fcd6 bl 8000ba8 + 80011fc: 6138 str r0, [r7, #16] /* Wait till HSE is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 80011c6: e008 b.n 80011da + 80011fe: e008 b.n 8001212 { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 80011c8: f7ff fcc6 bl 8000b58 - 80011cc: 4602 mov r2, r0 - 80011ce: 693b ldr r3, [r7, #16] - 80011d0: 1ad3 subs r3, r2, r3 - 80011d2: 2b64 cmp r3, #100 @ 0x64 - 80011d4: d901 bls.n 80011da + 8001200: f7ff fcd2 bl 8000ba8 + 8001204: 4602 mov r2, r0 + 8001206: 693b ldr r3, [r7, #16] + 8001208: 1ad3 subs r3, r2, r3 + 800120a: 2b64 cmp r3, #100 @ 0x64 + 800120c: d901 bls.n 8001212 { return HAL_TIMEOUT; - 80011d6: 2303 movs r3, #3 - 80011d8: e207 b.n 80015ea + 800120e: 2303 movs r3, #3 + 8001210: e207 b.n 8001622 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 80011da: 4b5b ldr r3, [pc, #364] @ (8001348 ) - 80011dc: 681b ldr r3, [r3, #0] - 80011de: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 80011e2: 2b00 cmp r3, #0 - 80011e4: d0f0 beq.n 80011c8 - 80011e6: e014 b.n 8001212 + 8001212: 4b5b ldr r3, [pc, #364] @ (8001380 ) + 8001214: 681b ldr r3, [r3, #0] + 8001216: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 800121a: 2b00 cmp r3, #0 + 800121c: d0f0 beq.n 8001200 + 800121e: e014 b.n 800124a } } else { /* Get Start Tick */ tickstart = HAL_GetTick(); - 80011e8: f7ff fcb6 bl 8000b58 - 80011ec: 6138 str r0, [r7, #16] + 8001220: f7ff fcc2 bl 8000ba8 + 8001224: 6138 str r0, [r7, #16] /* Wait till HSE is bypassed or disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 80011ee: e008 b.n 8001202 + 8001226: e008 b.n 800123a { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 80011f0: f7ff fcb2 bl 8000b58 - 80011f4: 4602 mov r2, r0 - 80011f6: 693b ldr r3, [r7, #16] - 80011f8: 1ad3 subs r3, r2, r3 - 80011fa: 2b64 cmp r3, #100 @ 0x64 - 80011fc: d901 bls.n 8001202 + 8001228: f7ff fcbe bl 8000ba8 + 800122c: 4602 mov r2, r0 + 800122e: 693b ldr r3, [r7, #16] + 8001230: 1ad3 subs r3, r2, r3 + 8001232: 2b64 cmp r3, #100 @ 0x64 + 8001234: d901 bls.n 800123a { return HAL_TIMEOUT; - 80011fe: 2303 movs r3, #3 - 8001200: e1f3 b.n 80015ea + 8001236: 2303 movs r3, #3 + 8001238: e1f3 b.n 8001622 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) - 8001202: 4b51 ldr r3, [pc, #324] @ (8001348 ) - 8001204: 681b ldr r3, [r3, #0] - 8001206: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 800120a: 2b00 cmp r3, #0 - 800120c: d1f0 bne.n 80011f0 - 800120e: e000 b.n 8001212 + 800123a: 4b51 ldr r3, [pc, #324] @ (8001380 ) + 800123c: 681b ldr r3, [r3, #0] + 800123e: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 8001242: 2b00 cmp r3, #0 + 8001244: d1f0 bne.n 8001228 + 8001246: e000 b.n 800124a if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8001210: bf00 nop + 8001248: bf00 nop } } } } /*----------------------------- HSI Configuration --------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) - 8001212: 687b ldr r3, [r7, #4] - 8001214: 681b ldr r3, [r3, #0] - 8001216: f003 0302 and.w r3, r3, #2 - 800121a: 2b00 cmp r3, #0 - 800121c: d063 beq.n 80012e6 + 800124a: 687b ldr r3, [r7, #4] + 800124c: 681b ldr r3, [r3, #0] + 800124e: f003 0302 and.w r3, r3, #2 + 8001252: 2b00 cmp r3, #0 + 8001254: d063 beq.n 800131e /* Check the parameters */ assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSI) || \ - 800121e: 4b4a ldr r3, [pc, #296] @ (8001348 ) - 8001220: 689b ldr r3, [r3, #8] - 8001222: f003 030c and.w r3, r3, #12 - 8001226: 2b00 cmp r3, #0 - 8001228: d00b beq.n 8001242 + 8001256: 4b4a ldr r3, [pc, #296] @ (8001380 ) + 8001258: 689b ldr r3, [r3, #8] + 800125a: f003 030c and.w r3, r3, #12 + 800125e: 2b00 cmp r3, #0 + 8001260: d00b beq.n 800127a ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI))) - 800122a: 4b47 ldr r3, [pc, #284] @ (8001348 ) - 800122c: 689b ldr r3, [r3, #8] - 800122e: f003 030c and.w r3, r3, #12 + 8001262: 4b47 ldr r3, [pc, #284] @ (8001380 ) + 8001264: 689b ldr r3, [r3, #8] + 8001266: f003 030c and.w r3, r3, #12 if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_HSI) || \ - 8001232: 2b08 cmp r3, #8 - 8001234: d11c bne.n 8001270 + 800126a: 2b08 cmp r3, #8 + 800126c: d11c bne.n 80012a8 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_PLL) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI))) - 8001236: 4b44 ldr r3, [pc, #272] @ (8001348 ) - 8001238: 685b ldr r3, [r3, #4] - 800123a: f403 0380 and.w r3, r3, #4194304 @ 0x400000 - 800123e: 2b00 cmp r3, #0 - 8001240: d116 bne.n 8001270 + 800126e: 4b44 ldr r3, [pc, #272] @ (8001380 ) + 8001270: 685b ldr r3, [r3, #4] + 8001272: f403 0380 and.w r3, r3, #4194304 @ 0x400000 + 8001276: 2b00 cmp r3, #0 + 8001278: d116 bne.n 80012a8 { /* 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)) - 8001242: 4b41 ldr r3, [pc, #260] @ (8001348 ) - 8001244: 681b ldr r3, [r3, #0] - 8001246: f003 0302 and.w r3, r3, #2 - 800124a: 2b00 cmp r3, #0 - 800124c: d005 beq.n 800125a - 800124e: 687b ldr r3, [r7, #4] - 8001250: 68db ldr r3, [r3, #12] - 8001252: 2b01 cmp r3, #1 - 8001254: d001 beq.n 800125a + 800127a: 4b41 ldr r3, [pc, #260] @ (8001380 ) + 800127c: 681b ldr r3, [r3, #0] + 800127e: f003 0302 and.w r3, r3, #2 + 8001282: 2b00 cmp r3, #0 + 8001284: d005 beq.n 8001292 + 8001286: 687b ldr r3, [r7, #4] + 8001288: 68db ldr r3, [r3, #12] + 800128a: 2b01 cmp r3, #1 + 800128c: d001 beq.n 8001292 { return HAL_ERROR; - 8001256: 2301 movs r3, #1 - 8001258: e1c7 b.n 80015ea + 800128e: 2301 movs r3, #1 + 8001290: e1c7 b.n 8001622 } /* Otherwise, just the calibration is allowed */ else { /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 800125a: 4b3b ldr r3, [pc, #236] @ (8001348 ) - 800125c: 681b ldr r3, [r3, #0] - 800125e: f023 02f8 bic.w r2, r3, #248 @ 0xf8 - 8001262: 687b ldr r3, [r7, #4] - 8001264: 691b ldr r3, [r3, #16] - 8001266: 00db lsls r3, r3, #3 - 8001268: 4937 ldr r1, [pc, #220] @ (8001348 ) - 800126a: 4313 orrs r3, r2 - 800126c: 600b str r3, [r1, #0] + 8001292: 4b3b ldr r3, [pc, #236] @ (8001380 ) + 8001294: 681b ldr r3, [r3, #0] + 8001296: f023 02f8 bic.w r2, r3, #248 @ 0xf8 + 800129a: 687b ldr r3, [r7, #4] + 800129c: 691b ldr r3, [r3, #16] + 800129e: 00db lsls r3, r3, #3 + 80012a0: 4937 ldr r1, [pc, #220] @ (8001380 ) + 80012a2: 4313 orrs r3, r2 + 80012a4: 600b str r3, [r1, #0] if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) - 800126e: e03a b.n 80012e6 + 80012a6: e03a b.n 800131e } } else { /* Check the HSI State */ if ((RCC_OscInitStruct->HSIState) != RCC_HSI_OFF) - 8001270: 687b ldr r3, [r7, #4] - 8001272: 68db ldr r3, [r3, #12] - 8001274: 2b00 cmp r3, #0 - 8001276: d020 beq.n 80012ba + 80012a8: 687b ldr r3, [r7, #4] + 80012aa: 68db ldr r3, [r3, #12] + 80012ac: 2b00 cmp r3, #0 + 80012ae: d020 beq.n 80012f2 { /* Enable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_ENABLE(); - 8001278: 4b34 ldr r3, [pc, #208] @ (800134c ) - 800127a: 2201 movs r2, #1 - 800127c: 601a str r2, [r3, #0] + 80012b0: 4b34 ldr r3, [pc, #208] @ (8001384 ) + 80012b2: 2201 movs r2, #1 + 80012b4: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 800127e: f7ff fc6b bl 8000b58 - 8001282: 6138 str r0, [r7, #16] + 80012b6: f7ff fc77 bl 8000ba8 + 80012ba: 6138 str r0, [r7, #16] /* Wait till HSI is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8001284: e008 b.n 8001298 + 80012bc: e008 b.n 80012d0 { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 8001286: f7ff fc67 bl 8000b58 - 800128a: 4602 mov r2, r0 - 800128c: 693b ldr r3, [r7, #16] - 800128e: 1ad3 subs r3, r2, r3 - 8001290: 2b02 cmp r3, #2 - 8001292: d901 bls.n 8001298 + 80012be: f7ff fc73 bl 8000ba8 + 80012c2: 4602 mov r2, r0 + 80012c4: 693b ldr r3, [r7, #16] + 80012c6: 1ad3 subs r3, r2, r3 + 80012c8: 2b02 cmp r3, #2 + 80012ca: d901 bls.n 80012d0 { return HAL_TIMEOUT; - 8001294: 2303 movs r3, #3 - 8001296: e1a8 b.n 80015ea + 80012cc: 2303 movs r3, #3 + 80012ce: e1a8 b.n 8001622 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 8001298: 4b2b ldr r3, [pc, #172] @ (8001348 ) - 800129a: 681b ldr r3, [r3, #0] - 800129c: f003 0302 and.w r3, r3, #2 - 80012a0: 2b00 cmp r3, #0 - 80012a2: d0f0 beq.n 8001286 + 80012d0: 4b2b ldr r3, [pc, #172] @ (8001380 ) + 80012d2: 681b ldr r3, [r3, #0] + 80012d4: f003 0302 and.w r3, r3, #2 + 80012d8: 2b00 cmp r3, #0 + 80012da: d0f0 beq.n 80012be } } /* Adjusts the Internal High Speed oscillator (HSI) calibration value. */ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 80012a4: 4b28 ldr r3, [pc, #160] @ (8001348 ) - 80012a6: 681b ldr r3, [r3, #0] - 80012a8: f023 02f8 bic.w r2, r3, #248 @ 0xf8 - 80012ac: 687b ldr r3, [r7, #4] - 80012ae: 691b ldr r3, [r3, #16] - 80012b0: 00db lsls r3, r3, #3 - 80012b2: 4925 ldr r1, [pc, #148] @ (8001348 ) - 80012b4: 4313 orrs r3, r2 - 80012b6: 600b str r3, [r1, #0] - 80012b8: e015 b.n 80012e6 + 80012dc: 4b28 ldr r3, [pc, #160] @ (8001380 ) + 80012de: 681b ldr r3, [r3, #0] + 80012e0: f023 02f8 bic.w r2, r3, #248 @ 0xf8 + 80012e4: 687b ldr r3, [r7, #4] + 80012e6: 691b ldr r3, [r3, #16] + 80012e8: 00db lsls r3, r3, #3 + 80012ea: 4925 ldr r1, [pc, #148] @ (8001380 ) + 80012ec: 4313 orrs r3, r2 + 80012ee: 600b str r3, [r1, #0] + 80012f0: e015 b.n 800131e } else { /* Disable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_DISABLE(); - 80012ba: 4b24 ldr r3, [pc, #144] @ (800134c ) - 80012bc: 2200 movs r2, #0 - 80012be: 601a str r2, [r3, #0] + 80012f2: 4b24 ldr r3, [pc, #144] @ (8001384 ) + 80012f4: 2200 movs r2, #0 + 80012f6: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80012c0: f7ff fc4a bl 8000b58 - 80012c4: 6138 str r0, [r7, #16] + 80012f8: f7ff fc56 bl 8000ba8 + 80012fc: 6138 str r0, [r7, #16] /* Wait till HSI is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 80012c6: e008 b.n 80012da + 80012fe: e008 b.n 8001312 { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 80012c8: f7ff fc46 bl 8000b58 - 80012cc: 4602 mov r2, r0 - 80012ce: 693b ldr r3, [r7, #16] - 80012d0: 1ad3 subs r3, r2, r3 - 80012d2: 2b02 cmp r3, #2 - 80012d4: d901 bls.n 80012da + 8001300: f7ff fc52 bl 8000ba8 + 8001304: 4602 mov r2, r0 + 8001306: 693b ldr r3, [r7, #16] + 8001308: 1ad3 subs r3, r2, r3 + 800130a: 2b02 cmp r3, #2 + 800130c: d901 bls.n 8001312 { return HAL_TIMEOUT; - 80012d6: 2303 movs r3, #3 - 80012d8: e187 b.n 80015ea + 800130e: 2303 movs r3, #3 + 8001310: e187 b.n 8001622 while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) - 80012da: 4b1b ldr r3, [pc, #108] @ (8001348 ) - 80012dc: 681b ldr r3, [r3, #0] - 80012de: f003 0302 and.w r3, r3, #2 - 80012e2: 2b00 cmp r3, #0 - 80012e4: d1f0 bne.n 80012c8 + 8001312: 4b1b ldr r3, [pc, #108] @ (8001380 ) + 8001314: 681b ldr r3, [r3, #0] + 8001316: f003 0302 and.w r3, r3, #2 + 800131a: 2b00 cmp r3, #0 + 800131c: d1f0 bne.n 8001300 } } } } /*------------------------------ LSI Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) - 80012e6: 687b ldr r3, [r7, #4] - 80012e8: 681b ldr r3, [r3, #0] - 80012ea: f003 0308 and.w r3, r3, #8 - 80012ee: 2b00 cmp r3, #0 - 80012f0: d036 beq.n 8001360 + 800131e: 687b ldr r3, [r7, #4] + 8001320: 681b ldr r3, [r3, #0] + 8001322: f003 0308 and.w r3, r3, #8 + 8001326: 2b00 cmp r3, #0 + 8001328: d036 beq.n 8001398 { /* Check the parameters */ assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); /* Check the LSI State */ if ((RCC_OscInitStruct->LSIState) != RCC_LSI_OFF) - 80012f2: 687b ldr r3, [r7, #4] - 80012f4: 695b ldr r3, [r3, #20] - 80012f6: 2b00 cmp r3, #0 - 80012f8: d016 beq.n 8001328 + 800132a: 687b ldr r3, [r7, #4] + 800132c: 695b ldr r3, [r3, #20] + 800132e: 2b00 cmp r3, #0 + 8001330: d016 beq.n 8001360 { /* Enable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_ENABLE(); - 80012fa: 4b15 ldr r3, [pc, #84] @ (8001350 ) - 80012fc: 2201 movs r2, #1 - 80012fe: 601a str r2, [r3, #0] + 8001332: 4b15 ldr r3, [pc, #84] @ (8001388 ) + 8001334: 2201 movs r2, #1 + 8001336: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8001300: f7ff fc2a bl 8000b58 - 8001304: 6138 str r0, [r7, #16] + 8001338: f7ff fc36 bl 8000ba8 + 800133c: 6138 str r0, [r7, #16] /* Wait till LSI is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 8001306: e008 b.n 800131a + 800133e: e008 b.n 8001352 { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 8001308: f7ff fc26 bl 8000b58 - 800130c: 4602 mov r2, r0 - 800130e: 693b ldr r3, [r7, #16] - 8001310: 1ad3 subs r3, r2, r3 - 8001312: 2b02 cmp r3, #2 - 8001314: d901 bls.n 800131a + 8001340: f7ff fc32 bl 8000ba8 + 8001344: 4602 mov r2, r0 + 8001346: 693b ldr r3, [r7, #16] + 8001348: 1ad3 subs r3, r2, r3 + 800134a: 2b02 cmp r3, #2 + 800134c: d901 bls.n 8001352 { return HAL_TIMEOUT; - 8001316: 2303 movs r3, #3 - 8001318: e167 b.n 80015ea + 800134e: 2303 movs r3, #3 + 8001350: e167 b.n 8001622 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) - 800131a: 4b0b ldr r3, [pc, #44] @ (8001348 ) - 800131c: 6f5b ldr r3, [r3, #116] @ 0x74 - 800131e: f003 0302 and.w r3, r3, #2 - 8001322: 2b00 cmp r3, #0 - 8001324: d0f0 beq.n 8001308 - 8001326: e01b b.n 8001360 + 8001352: 4b0b ldr r3, [pc, #44] @ (8001380 ) + 8001354: 6f5b ldr r3, [r3, #116] @ 0x74 + 8001356: f003 0302 and.w r3, r3, #2 + 800135a: 2b00 cmp r3, #0 + 800135c: d0f0 beq.n 8001340 + 800135e: e01b b.n 8001398 } } else { /* Disable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_DISABLE(); - 8001328: 4b09 ldr r3, [pc, #36] @ (8001350 ) - 800132a: 2200 movs r2, #0 - 800132c: 601a str r2, [r3, #0] + 8001360: 4b09 ldr r3, [pc, #36] @ (8001388 ) + 8001362: 2200 movs r2, #0 + 8001364: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 800132e: f7ff fc13 bl 8000b58 - 8001332: 6138 str r0, [r7, #16] + 8001366: f7ff fc1f bl 8000ba8 + 800136a: 6138 str r0, [r7, #16] /* Wait till LSI is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 8001334: e00e b.n 8001354 + 800136c: e00e b.n 800138c { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 8001336: f7ff fc0f bl 8000b58 - 800133a: 4602 mov r2, r0 - 800133c: 693b ldr r3, [r7, #16] - 800133e: 1ad3 subs r3, r2, r3 - 8001340: 2b02 cmp r3, #2 - 8001342: d907 bls.n 8001354 + 800136e: f7ff fc1b bl 8000ba8 + 8001372: 4602 mov r2, r0 + 8001374: 693b ldr r3, [r7, #16] + 8001376: 1ad3 subs r3, r2, r3 + 8001378: 2b02 cmp r3, #2 + 800137a: d907 bls.n 800138c { return HAL_TIMEOUT; - 8001344: 2303 movs r3, #3 - 8001346: e150 b.n 80015ea - 8001348: 40023800 .word 0x40023800 - 800134c: 42470000 .word 0x42470000 - 8001350: 42470e80 .word 0x42470e80 + 800137c: 2303 movs r3, #3 + 800137e: e150 b.n 8001622 + 8001380: 40023800 .word 0x40023800 + 8001384: 42470000 .word 0x42470000 + 8001388: 42470e80 .word 0x42470e80 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) - 8001354: 4b88 ldr r3, [pc, #544] @ (8001578 ) - 8001356: 6f5b ldr r3, [r3, #116] @ 0x74 - 8001358: f003 0302 and.w r3, r3, #2 - 800135c: 2b00 cmp r3, #0 - 800135e: d1ea bne.n 8001336 + 800138c: 4b88 ldr r3, [pc, #544] @ (80015b0 ) + 800138e: 6f5b ldr r3, [r3, #116] @ 0x74 + 8001390: f003 0302 and.w r3, r3, #2 + 8001394: 2b00 cmp r3, #0 + 8001396: d1ea bne.n 800136e } } } } /*------------------------------ LSE Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) - 8001360: 687b ldr r3, [r7, #4] - 8001362: 681b ldr r3, [r3, #0] - 8001364: f003 0304 and.w r3, r3, #4 - 8001368: 2b00 cmp r3, #0 - 800136a: f000 8097 beq.w 800149c + 8001398: 687b ldr r3, [r7, #4] + 800139a: 681b ldr r3, [r3, #0] + 800139c: f003 0304 and.w r3, r3, #4 + 80013a0: 2b00 cmp r3, #0 + 80013a2: f000 8097 beq.w 80014d4 { FlagStatus pwrclkchanged = RESET; - 800136e: 2300 movs r3, #0 - 8001370: 75fb strb r3, [r7, #23] + 80013a6: 2300 movs r3, #0 + 80013a8: 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()) - 8001372: 4b81 ldr r3, [pc, #516] @ (8001578 ) - 8001374: 6c1b ldr r3, [r3, #64] @ 0x40 - 8001376: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 800137a: 2b00 cmp r3, #0 - 800137c: d10f bne.n 800139e + 80013aa: 4b81 ldr r3, [pc, #516] @ (80015b0 ) + 80013ac: 6c1b ldr r3, [r3, #64] @ 0x40 + 80013ae: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80013b2: 2b00 cmp r3, #0 + 80013b4: d10f bne.n 80013d6 { __HAL_RCC_PWR_CLK_ENABLE(); - 800137e: 2300 movs r3, #0 - 8001380: 60bb str r3, [r7, #8] - 8001382: 4b7d ldr r3, [pc, #500] @ (8001578 ) - 8001384: 6c1b ldr r3, [r3, #64] @ 0x40 - 8001386: 4a7c ldr r2, [pc, #496] @ (8001578 ) - 8001388: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 - 800138c: 6413 str r3, [r2, #64] @ 0x40 - 800138e: 4b7a ldr r3, [pc, #488] @ (8001578 ) - 8001390: 6c1b ldr r3, [r3, #64] @ 0x40 - 8001392: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 - 8001396: 60bb str r3, [r7, #8] - 8001398: 68bb ldr r3, [r7, #8] + 80013b6: 2300 movs r3, #0 + 80013b8: 60bb str r3, [r7, #8] + 80013ba: 4b7d ldr r3, [pc, #500] @ (80015b0 ) + 80013bc: 6c1b ldr r3, [r3, #64] @ 0x40 + 80013be: 4a7c ldr r2, [pc, #496] @ (80015b0 ) + 80013c0: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000 + 80013c4: 6413 str r3, [r2, #64] @ 0x40 + 80013c6: 4b7a ldr r3, [pc, #488] @ (80015b0 ) + 80013c8: 6c1b ldr r3, [r3, #64] @ 0x40 + 80013ca: f003 5380 and.w r3, r3, #268435456 @ 0x10000000 + 80013ce: 60bb str r3, [r7, #8] + 80013d0: 68bb ldr r3, [r7, #8] pwrclkchanged = SET; - 800139a: 2301 movs r3, #1 - 800139c: 75fb strb r3, [r7, #23] + 80013d2: 2301 movs r3, #1 + 80013d4: 75fb strb r3, [r7, #23] } if (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 800139e: 4b77 ldr r3, [pc, #476] @ (800157c ) - 80013a0: 681b ldr r3, [r3, #0] - 80013a2: f403 7380 and.w r3, r3, #256 @ 0x100 - 80013a6: 2b00 cmp r3, #0 - 80013a8: d118 bne.n 80013dc + 80013d6: 4b77 ldr r3, [pc, #476] @ (80015b4 ) + 80013d8: 681b ldr r3, [r3, #0] + 80013da: f403 7380 and.w r3, r3, #256 @ 0x100 + 80013de: 2b00 cmp r3, #0 + 80013e0: d118 bne.n 8001414 { /* Enable write access to Backup domain */ SET_BIT(PWR->CR, PWR_CR_DBP); - 80013aa: 4b74 ldr r3, [pc, #464] @ (800157c ) - 80013ac: 681b ldr r3, [r3, #0] - 80013ae: 4a73 ldr r2, [pc, #460] @ (800157c ) - 80013b0: f443 7380 orr.w r3, r3, #256 @ 0x100 - 80013b4: 6013 str r3, [r2, #0] + 80013e2: 4b74 ldr r3, [pc, #464] @ (80015b4 ) + 80013e4: 681b ldr r3, [r3, #0] + 80013e6: 4a73 ldr r2, [pc, #460] @ (80015b4 ) + 80013e8: f443 7380 orr.w r3, r3, #256 @ 0x100 + 80013ec: 6013 str r3, [r2, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 80013b6: f7ff fbcf bl 8000b58 - 80013ba: 6138 str r0, [r7, #16] + 80013ee: f7ff fbdb bl 8000ba8 + 80013f2: 6138 str r0, [r7, #16] while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 80013bc: e008 b.n 80013d0 + 80013f4: e008 b.n 8001408 { if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 80013be: f7ff fbcb bl 8000b58 - 80013c2: 4602 mov r2, r0 - 80013c4: 693b ldr r3, [r7, #16] - 80013c6: 1ad3 subs r3, r2, r3 - 80013c8: 2b02 cmp r3, #2 - 80013ca: d901 bls.n 80013d0 + 80013f6: f7ff fbd7 bl 8000ba8 + 80013fa: 4602 mov r2, r0 + 80013fc: 693b ldr r3, [r7, #16] + 80013fe: 1ad3 subs r3, r2, r3 + 8001400: 2b02 cmp r3, #2 + 8001402: d901 bls.n 8001408 { return HAL_TIMEOUT; - 80013cc: 2303 movs r3, #3 - 80013ce: e10c b.n 80015ea + 8001404: 2303 movs r3, #3 + 8001406: e10c b.n 8001622 while (HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) - 80013d0: 4b6a ldr r3, [pc, #424] @ (800157c ) - 80013d2: 681b ldr r3, [r3, #0] - 80013d4: f403 7380 and.w r3, r3, #256 @ 0x100 - 80013d8: 2b00 cmp r3, #0 - 80013da: d0f0 beq.n 80013be + 8001408: 4b6a ldr r3, [pc, #424] @ (80015b4 ) + 800140a: 681b ldr r3, [r3, #0] + 800140c: f403 7380 and.w r3, r3, #256 @ 0x100 + 8001410: 2b00 cmp r3, #0 + 8001412: d0f0 beq.n 80013f6 } } } /* Set the new LSE configuration -----------------------------------------*/ __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); - 80013dc: 687b ldr r3, [r7, #4] - 80013de: 689b ldr r3, [r3, #8] - 80013e0: 2b01 cmp r3, #1 - 80013e2: d106 bne.n 80013f2 - 80013e4: 4b64 ldr r3, [pc, #400] @ (8001578 ) - 80013e6: 6f1b ldr r3, [r3, #112] @ 0x70 - 80013e8: 4a63 ldr r2, [pc, #396] @ (8001578 ) - 80013ea: f043 0301 orr.w r3, r3, #1 - 80013ee: 6713 str r3, [r2, #112] @ 0x70 - 80013f0: e01c b.n 800142c - 80013f2: 687b ldr r3, [r7, #4] - 80013f4: 689b ldr r3, [r3, #8] - 80013f6: 2b05 cmp r3, #5 - 80013f8: d10c bne.n 8001414 - 80013fa: 4b5f ldr r3, [pc, #380] @ (8001578 ) - 80013fc: 6f1b ldr r3, [r3, #112] @ 0x70 - 80013fe: 4a5e ldr r2, [pc, #376] @ (8001578 ) - 8001400: f043 0304 orr.w r3, r3, #4 - 8001404: 6713 str r3, [r2, #112] @ 0x70 - 8001406: 4b5c ldr r3, [pc, #368] @ (8001578 ) - 8001408: 6f1b ldr r3, [r3, #112] @ 0x70 - 800140a: 4a5b ldr r2, [pc, #364] @ (8001578 ) - 800140c: f043 0301 orr.w r3, r3, #1 - 8001410: 6713 str r3, [r2, #112] @ 0x70 - 8001412: e00b b.n 800142c - 8001414: 4b58 ldr r3, [pc, #352] @ (8001578 ) - 8001416: 6f1b ldr r3, [r3, #112] @ 0x70 - 8001418: 4a57 ldr r2, [pc, #348] @ (8001578 ) - 800141a: f023 0301 bic.w r3, r3, #1 - 800141e: 6713 str r3, [r2, #112] @ 0x70 - 8001420: 4b55 ldr r3, [pc, #340] @ (8001578 ) - 8001422: 6f1b ldr r3, [r3, #112] @ 0x70 - 8001424: 4a54 ldr r2, [pc, #336] @ (8001578 ) - 8001426: f023 0304 bic.w r3, r3, #4 - 800142a: 6713 str r3, [r2, #112] @ 0x70 + 8001414: 687b ldr r3, [r7, #4] + 8001416: 689b ldr r3, [r3, #8] + 8001418: 2b01 cmp r3, #1 + 800141a: d106 bne.n 800142a + 800141c: 4b64 ldr r3, [pc, #400] @ (80015b0 ) + 800141e: 6f1b ldr r3, [r3, #112] @ 0x70 + 8001420: 4a63 ldr r2, [pc, #396] @ (80015b0 ) + 8001422: f043 0301 orr.w r3, r3, #1 + 8001426: 6713 str r3, [r2, #112] @ 0x70 + 8001428: e01c b.n 8001464 + 800142a: 687b ldr r3, [r7, #4] + 800142c: 689b ldr r3, [r3, #8] + 800142e: 2b05 cmp r3, #5 + 8001430: d10c bne.n 800144c + 8001432: 4b5f ldr r3, [pc, #380] @ (80015b0 ) + 8001434: 6f1b ldr r3, [r3, #112] @ 0x70 + 8001436: 4a5e ldr r2, [pc, #376] @ (80015b0 ) + 8001438: f043 0304 orr.w r3, r3, #4 + 800143c: 6713 str r3, [r2, #112] @ 0x70 + 800143e: 4b5c ldr r3, [pc, #368] @ (80015b0 ) + 8001440: 6f1b ldr r3, [r3, #112] @ 0x70 + 8001442: 4a5b ldr r2, [pc, #364] @ (80015b0 ) + 8001444: f043 0301 orr.w r3, r3, #1 + 8001448: 6713 str r3, [r2, #112] @ 0x70 + 800144a: e00b b.n 8001464 + 800144c: 4b58 ldr r3, [pc, #352] @ (80015b0 ) + 800144e: 6f1b ldr r3, [r3, #112] @ 0x70 + 8001450: 4a57 ldr r2, [pc, #348] @ (80015b0 ) + 8001452: f023 0301 bic.w r3, r3, #1 + 8001456: 6713 str r3, [r2, #112] @ 0x70 + 8001458: 4b55 ldr r3, [pc, #340] @ (80015b0 ) + 800145a: 6f1b ldr r3, [r3, #112] @ 0x70 + 800145c: 4a54 ldr r2, [pc, #336] @ (80015b0 ) + 800145e: f023 0304 bic.w r3, r3, #4 + 8001462: 6713 str r3, [r2, #112] @ 0x70 /* Check the LSE State */ if ((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF) - 800142c: 687b ldr r3, [r7, #4] - 800142e: 689b ldr r3, [r3, #8] - 8001430: 2b00 cmp r3, #0 - 8001432: d015 beq.n 8001460 + 8001464: 687b ldr r3, [r7, #4] + 8001466: 689b ldr r3, [r3, #8] + 8001468: 2b00 cmp r3, #0 + 800146a: d015 beq.n 8001498 { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8001434: f7ff fb90 bl 8000b58 - 8001438: 6138 str r0, [r7, #16] + 800146c: f7ff fb9c bl 8000ba8 + 8001470: 6138 str r0, [r7, #16] /* Wait till LSE is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 800143a: e00a b.n 8001452 + 8001472: e00a b.n 800148a { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 800143c: f7ff fb8c bl 8000b58 - 8001440: 4602 mov r2, r0 - 8001442: 693b ldr r3, [r7, #16] - 8001444: 1ad3 subs r3, r2, r3 - 8001446: f241 3288 movw r2, #5000 @ 0x1388 - 800144a: 4293 cmp r3, r2 - 800144c: d901 bls.n 8001452 + 8001474: f7ff fb98 bl 8000ba8 + 8001478: 4602 mov r2, r0 + 800147a: 693b ldr r3, [r7, #16] + 800147c: 1ad3 subs r3, r2, r3 + 800147e: f241 3288 movw r2, #5000 @ 0x1388 + 8001482: 4293 cmp r3, r2 + 8001484: d901 bls.n 800148a { return HAL_TIMEOUT; - 800144e: 2303 movs r3, #3 - 8001450: e0cb b.n 80015ea + 8001486: 2303 movs r3, #3 + 8001488: e0cb b.n 8001622 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) - 8001452: 4b49 ldr r3, [pc, #292] @ (8001578 ) - 8001454: 6f1b ldr r3, [r3, #112] @ 0x70 - 8001456: f003 0302 and.w r3, r3, #2 - 800145a: 2b00 cmp r3, #0 - 800145c: d0ee beq.n 800143c - 800145e: e014 b.n 800148a + 800148a: 4b49 ldr r3, [pc, #292] @ (80015b0 ) + 800148c: 6f1b ldr r3, [r3, #112] @ 0x70 + 800148e: f003 0302 and.w r3, r3, #2 + 8001492: 2b00 cmp r3, #0 + 8001494: d0ee beq.n 8001474 + 8001496: e014 b.n 80014c2 } } else { /* Get Start Tick */ tickstart = HAL_GetTick(); - 8001460: f7ff fb7a bl 8000b58 - 8001464: 6138 str r0, [r7, #16] + 8001498: f7ff fb86 bl 8000ba8 + 800149c: 6138 str r0, [r7, #16] /* Wait till LSE is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 8001466: e00a b.n 800147e + 800149e: e00a b.n 80014b6 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8001468: f7ff fb76 bl 8000b58 - 800146c: 4602 mov r2, r0 - 800146e: 693b ldr r3, [r7, #16] - 8001470: 1ad3 subs r3, r2, r3 - 8001472: f241 3288 movw r2, #5000 @ 0x1388 - 8001476: 4293 cmp r3, r2 - 8001478: d901 bls.n 800147e + 80014a0: f7ff fb82 bl 8000ba8 + 80014a4: 4602 mov r2, r0 + 80014a6: 693b ldr r3, [r7, #16] + 80014a8: 1ad3 subs r3, r2, r3 + 80014aa: f241 3288 movw r2, #5000 @ 0x1388 + 80014ae: 4293 cmp r3, r2 + 80014b0: d901 bls.n 80014b6 { return HAL_TIMEOUT; - 800147a: 2303 movs r3, #3 - 800147c: e0b5 b.n 80015ea + 80014b2: 2303 movs r3, #3 + 80014b4: e0b5 b.n 8001622 while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) - 800147e: 4b3e ldr r3, [pc, #248] @ (8001578 ) - 8001480: 6f1b ldr r3, [r3, #112] @ 0x70 - 8001482: f003 0302 and.w r3, r3, #2 - 8001486: 2b00 cmp r3, #0 - 8001488: d1ee bne.n 8001468 + 80014b6: 4b3e ldr r3, [pc, #248] @ (80015b0 ) + 80014b8: 6f1b ldr r3, [r3, #112] @ 0x70 + 80014ba: f003 0302 and.w r3, r3, #2 + 80014be: 2b00 cmp r3, #0 + 80014c0: d1ee bne.n 80014a0 } } } /* Restore clock configuration if changed */ if (pwrclkchanged == SET) - 800148a: 7dfb ldrb r3, [r7, #23] - 800148c: 2b01 cmp r3, #1 - 800148e: d105 bne.n 800149c + 80014c2: 7dfb ldrb r3, [r7, #23] + 80014c4: 2b01 cmp r3, #1 + 80014c6: d105 bne.n 80014d4 { __HAL_RCC_PWR_CLK_DISABLE(); - 8001490: 4b39 ldr r3, [pc, #228] @ (8001578 ) - 8001492: 6c1b ldr r3, [r3, #64] @ 0x40 - 8001494: 4a38 ldr r2, [pc, #224] @ (8001578 ) - 8001496: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 - 800149a: 6413 str r3, [r2, #64] @ 0x40 + 80014c8: 4b39 ldr r3, [pc, #228] @ (80015b0 ) + 80014ca: 6c1b ldr r3, [r3, #64] @ 0x40 + 80014cc: 4a38 ldr r2, [pc, #224] @ (80015b0 ) + 80014ce: f023 5380 bic.w r3, r3, #268435456 @ 0x10000000 + 80014d2: 6413 str r3, [r2, #64] @ 0x40 } } /*-------------------------------- PLL Configuration -----------------------*/ /* Check the parameters */ assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) - 800149c: 687b ldr r3, [r7, #4] - 800149e: 699b ldr r3, [r3, #24] - 80014a0: 2b00 cmp r3, #0 - 80014a2: f000 80a1 beq.w 80015e8 + 80014d4: 687b ldr r3, [r7, #4] + 80014d6: 699b ldr r3, [r3, #24] + 80014d8: 2b00 cmp r3, #0 + 80014da: f000 80a1 beq.w 8001620 { /* Check if the PLL is used as system clock or not */ if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL) - 80014a6: 4b34 ldr r3, [pc, #208] @ (8001578 ) - 80014a8: 689b ldr r3, [r3, #8] - 80014aa: f003 030c and.w r3, r3, #12 - 80014ae: 2b08 cmp r3, #8 - 80014b0: d05c beq.n 800156c + 80014de: 4b34 ldr r3, [pc, #208] @ (80015b0 ) + 80014e0: 689b ldr r3, [r3, #8] + 80014e2: f003 030c and.w r3, r3, #12 + 80014e6: 2b08 cmp r3, #8 + 80014e8: d05c beq.n 80015a4 { if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) - 80014b2: 687b ldr r3, [r7, #4] - 80014b4: 699b ldr r3, [r3, #24] - 80014b6: 2b02 cmp r3, #2 - 80014b8: d141 bne.n 800153e + 80014ea: 687b ldr r3, [r7, #4] + 80014ec: 699b ldr r3, [r3, #24] + 80014ee: 2b02 cmp r3, #2 + 80014f0: d141 bne.n 8001576 assert_param(IS_RCC_PLLN_VALUE(RCC_OscInitStruct->PLL.PLLN)); assert_param(IS_RCC_PLLP_VALUE(RCC_OscInitStruct->PLL.PLLP)); assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ)); /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 80014ba: 4b31 ldr r3, [pc, #196] @ (8001580 ) - 80014bc: 2200 movs r2, #0 - 80014be: 601a str r2, [r3, #0] + 80014f2: 4b31 ldr r3, [pc, #196] @ (80015b8 ) + 80014f4: 2200 movs r2, #0 + 80014f6: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 80014c0: f7ff fb4a bl 8000b58 - 80014c4: 6138 str r0, [r7, #16] + 80014f8: f7ff fb56 bl 8000ba8 + 80014fc: 6138 str r0, [r7, #16] /* Wait till PLL is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 80014c6: e008 b.n 80014da + 80014fe: e008 b.n 8001512 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 80014c8: f7ff fb46 bl 8000b58 - 80014cc: 4602 mov r2, r0 - 80014ce: 693b ldr r3, [r7, #16] - 80014d0: 1ad3 subs r3, r2, r3 - 80014d2: 2b02 cmp r3, #2 - 80014d4: d901 bls.n 80014da + 8001500: f7ff fb52 bl 8000ba8 + 8001504: 4602 mov r2, r0 + 8001506: 693b ldr r3, [r7, #16] + 8001508: 1ad3 subs r3, r2, r3 + 800150a: 2b02 cmp r3, #2 + 800150c: d901 bls.n 8001512 { return HAL_TIMEOUT; - 80014d6: 2303 movs r3, #3 - 80014d8: e087 b.n 80015ea + 800150e: 2303 movs r3, #3 + 8001510: e087 b.n 8001622 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 80014da: 4b27 ldr r3, [pc, #156] @ (8001578 ) - 80014dc: 681b ldr r3, [r3, #0] - 80014de: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 80014e2: 2b00 cmp r3, #0 - 80014e4: d1f0 bne.n 80014c8 + 8001512: 4b27 ldr r3, [pc, #156] @ (80015b0 ) + 8001514: 681b ldr r3, [r3, #0] + 8001516: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 800151a: 2b00 cmp r3, #0 + 800151c: d1f0 bne.n 8001500 } } /* Configure the main PLL clock source, multiplication and division factors. */ WRITE_REG(RCC->PLLCFGR, (RCC_OscInitStruct->PLL.PLLSource | \ - 80014e6: 687b ldr r3, [r7, #4] - 80014e8: 69da ldr r2, [r3, #28] - 80014ea: 687b ldr r3, [r7, #4] - 80014ec: 6a1b ldr r3, [r3, #32] - 80014ee: 431a orrs r2, r3 - 80014f0: 687b ldr r3, [r7, #4] - 80014f2: 6a5b ldr r3, [r3, #36] @ 0x24 - 80014f4: 019b lsls r3, r3, #6 - 80014f6: 431a orrs r2, r3 - 80014f8: 687b ldr r3, [r7, #4] - 80014fa: 6a9b ldr r3, [r3, #40] @ 0x28 - 80014fc: 085b lsrs r3, r3, #1 - 80014fe: 3b01 subs r3, #1 - 8001500: 041b lsls r3, r3, #16 - 8001502: 431a orrs r2, r3 - 8001504: 687b ldr r3, [r7, #4] - 8001506: 6adb ldr r3, [r3, #44] @ 0x2c - 8001508: 061b lsls r3, r3, #24 - 800150a: 491b ldr r1, [pc, #108] @ (8001578 ) - 800150c: 4313 orrs r3, r2 - 800150e: 604b str r3, [r1, #4] + 800151e: 687b ldr r3, [r7, #4] + 8001520: 69da ldr r2, [r3, #28] + 8001522: 687b ldr r3, [r7, #4] + 8001524: 6a1b ldr r3, [r3, #32] + 8001526: 431a orrs r2, r3 + 8001528: 687b ldr r3, [r7, #4] + 800152a: 6a5b ldr r3, [r3, #36] @ 0x24 + 800152c: 019b lsls r3, r3, #6 + 800152e: 431a orrs r2, r3 + 8001530: 687b ldr r3, [r7, #4] + 8001532: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001534: 085b lsrs r3, r3, #1 + 8001536: 3b01 subs r3, #1 + 8001538: 041b lsls r3, r3, #16 + 800153a: 431a orrs r2, r3 + 800153c: 687b ldr r3, [r7, #4] + 800153e: 6adb ldr r3, [r3, #44] @ 0x2c + 8001540: 061b lsls r3, r3, #24 + 8001542: 491b ldr r1, [pc, #108] @ (80015b0 ) + 8001544: 4313 orrs r3, r2 + 8001546: 604b str r3, [r1, #4] RCC_OscInitStruct->PLL.PLLM | \ (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos) | \ (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos) | \ (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos))); /* Enable the main PLL. */ __HAL_RCC_PLL_ENABLE(); - 8001510: 4b1b ldr r3, [pc, #108] @ (8001580 ) - 8001512: 2201 movs r2, #1 - 8001514: 601a str r2, [r3, #0] + 8001548: 4b1b ldr r3, [pc, #108] @ (80015b8 ) + 800154a: 2201 movs r2, #1 + 800154c: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8001516: f7ff fb1f bl 8000b58 - 800151a: 6138 str r0, [r7, #16] + 800154e: f7ff fb2b bl 8000ba8 + 8001552: 6138 str r0, [r7, #16] /* Wait till PLL is ready */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 800151c: e008 b.n 8001530 + 8001554: e008 b.n 8001568 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 800151e: f7ff fb1b bl 8000b58 - 8001522: 4602 mov r2, r0 - 8001524: 693b ldr r3, [r7, #16] - 8001526: 1ad3 subs r3, r2, r3 - 8001528: 2b02 cmp r3, #2 - 800152a: d901 bls.n 8001530 + 8001556: f7ff fb27 bl 8000ba8 + 800155a: 4602 mov r2, r0 + 800155c: 693b ldr r3, [r7, #16] + 800155e: 1ad3 subs r3, r2, r3 + 8001560: 2b02 cmp r3, #2 + 8001562: d901 bls.n 8001568 { return HAL_TIMEOUT; - 800152c: 2303 movs r3, #3 - 800152e: e05c b.n 80015ea + 8001564: 2303 movs r3, #3 + 8001566: e05c b.n 8001622 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 8001530: 4b11 ldr r3, [pc, #68] @ (8001578 ) - 8001532: 681b ldr r3, [r3, #0] - 8001534: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 8001538: 2b00 cmp r3, #0 - 800153a: d0f0 beq.n 800151e - 800153c: e054 b.n 80015e8 + 8001568: 4b11 ldr r3, [pc, #68] @ (80015b0 ) + 800156a: 681b ldr r3, [r3, #0] + 800156c: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 8001570: 2b00 cmp r3, #0 + 8001572: d0f0 beq.n 8001556 + 8001574: e054 b.n 8001620 } } else { /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 800153e: 4b10 ldr r3, [pc, #64] @ (8001580 ) - 8001540: 2200 movs r2, #0 - 8001542: 601a str r2, [r3, #0] + 8001576: 4b10 ldr r3, [pc, #64] @ (80015b8 ) + 8001578: 2200 movs r2, #0 + 800157a: 601a str r2, [r3, #0] /* Get Start Tick */ tickstart = HAL_GetTick(); - 8001544: f7ff fb08 bl 8000b58 - 8001548: 6138 str r0, [r7, #16] + 800157c: f7ff fb14 bl 8000ba8 + 8001580: 6138 str r0, [r7, #16] /* Wait till PLL is disabled */ while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 800154a: e008 b.n 800155e + 8001582: e008 b.n 8001596 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 800154c: f7ff fb04 bl 8000b58 - 8001550: 4602 mov r2, r0 - 8001552: 693b ldr r3, [r7, #16] - 8001554: 1ad3 subs r3, r2, r3 - 8001556: 2b02 cmp r3, #2 - 8001558: d901 bls.n 800155e + 8001584: f7ff fb10 bl 8000ba8 + 8001588: 4602 mov r2, r0 + 800158a: 693b ldr r3, [r7, #16] + 800158c: 1ad3 subs r3, r2, r3 + 800158e: 2b02 cmp r3, #2 + 8001590: d901 bls.n 8001596 { return HAL_TIMEOUT; - 800155a: 2303 movs r3, #3 - 800155c: e045 b.n 80015ea + 8001592: 2303 movs r3, #3 + 8001594: e045 b.n 8001622 while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) - 800155e: 4b06 ldr r3, [pc, #24] @ (8001578 ) - 8001560: 681b ldr r3, [r3, #0] - 8001562: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 8001566: 2b00 cmp r3, #0 - 8001568: d1f0 bne.n 800154c - 800156a: e03d b.n 80015e8 + 8001596: 4b06 ldr r3, [pc, #24] @ (80015b0 ) + 8001598: 681b ldr r3, [r3, #0] + 800159a: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 800159e: 2b00 cmp r3, #0 + 80015a0: d1f0 bne.n 8001584 + 80015a2: e03d b.n 8001620 } } else { /* Check if there is a request to disable the PLL used as System clock source */ if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) - 800156c: 687b ldr r3, [r7, #4] - 800156e: 699b ldr r3, [r3, #24] - 8001570: 2b01 cmp r3, #1 - 8001572: d107 bne.n 8001584 + 80015a4: 687b ldr r3, [r7, #4] + 80015a6: 699b ldr r3, [r3, #24] + 80015a8: 2b01 cmp r3, #1 + 80015aa: d107 bne.n 80015bc { return HAL_ERROR; - 8001574: 2301 movs r3, #1 - 8001576: e038 b.n 80015ea - 8001578: 40023800 .word 0x40023800 - 800157c: 40007000 .word 0x40007000 - 8001580: 42470060 .word 0x42470060 + 80015ac: 2301 movs r3, #1 + 80015ae: e038 b.n 8001622 + 80015b0: 40023800 .word 0x40023800 + 80015b4: 40007000 .word 0x40007000 + 80015b8: 42470060 .word 0x42470060 } else { /* Do not return HAL_ERROR if request repeats the current configuration */ pll_config = RCC->PLLCFGR; - 8001584: 4b1b ldr r3, [pc, #108] @ (80015f4 ) - 8001586: 685b ldr r3, [r3, #4] - 8001588: 60fb str r3, [r7, #12] + 80015bc: 4b1b ldr r3, [pc, #108] @ (800162c ) + 80015be: 685b ldr r3, [r3, #4] + 80015c0: 60fb str r3, [r7, #12] (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos) || (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) || (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)) || (READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != (RCC_OscInitStruct->PLL.PLLR << RCC_PLLCFGR_PLLR_Pos))) #else if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) || - 800158a: 687b ldr r3, [r7, #4] - 800158c: 699b ldr r3, [r3, #24] - 800158e: 2b01 cmp r3, #1 - 8001590: d028 beq.n 80015e4 + 80015c2: 687b ldr r3, [r7, #4] + 80015c4: 699b ldr r3, [r3, #24] + 80015c6: 2b01 cmp r3, #1 + 80015c8: d028 beq.n 800161c (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8001592: 68fb ldr r3, [r7, #12] - 8001594: f403 0280 and.w r2, r3, #4194304 @ 0x400000 - 8001598: 687b ldr r3, [r7, #4] - 800159a: 69db ldr r3, [r3, #28] + 80015ca: 68fb ldr r3, [r7, #12] + 80015cc: f403 0280 and.w r2, r3, #4194304 @ 0x400000 + 80015d0: 687b ldr r3, [r7, #4] + 80015d2: 69db ldr r3, [r3, #28] if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) || - 800159c: 429a cmp r2, r3 - 800159e: d121 bne.n 80015e4 + 80015d4: 429a cmp r2, r3 + 80015d6: d121 bne.n 800161c (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != (RCC_OscInitStruct->PLL.PLLM) << RCC_PLLCFGR_PLLM_Pos) || - 80015a0: 68fb ldr r3, [r7, #12] - 80015a2: f003 023f and.w r2, r3, #63 @ 0x3f - 80015a6: 687b ldr r3, [r7, #4] - 80015a8: 6a1b ldr r3, [r3, #32] + 80015d8: 68fb ldr r3, [r7, #12] + 80015da: f003 023f and.w r2, r3, #63 @ 0x3f + 80015de: 687b ldr r3, [r7, #4] + 80015e0: 6a1b ldr r3, [r3, #32] (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 80015aa: 429a cmp r2, r3 - 80015ac: d11a bne.n 80015e4 + 80015e2: 429a cmp r2, r3 + 80015e4: d11a bne.n 800161c (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos) || - 80015ae: 68fa ldr r2, [r7, #12] - 80015b0: f647 73c0 movw r3, #32704 @ 0x7fc0 - 80015b4: 4013 ands r3, r2 - 80015b6: 687a ldr r2, [r7, #4] - 80015b8: 6a52 ldr r2, [r2, #36] @ 0x24 - 80015ba: 0192 lsls r2, r2, #6 + 80015e6: 68fa ldr r2, [r7, #12] + 80015e8: f647 73c0 movw r3, #32704 @ 0x7fc0 + 80015ec: 4013 ands r3, r2 + 80015ee: 687a ldr r2, [r7, #4] + 80015f0: 6a52 ldr r2, [r2, #36] @ 0x24 + 80015f2: 0192 lsls r2, r2, #6 (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != (RCC_OscInitStruct->PLL.PLLM) << RCC_PLLCFGR_PLLM_Pos) || - 80015bc: 4293 cmp r3, r2 - 80015be: d111 bne.n 80015e4 + 80015f4: 4293 cmp r3, r2 + 80015f6: d111 bne.n 800161c (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) || - 80015c0: 68fb ldr r3, [r7, #12] - 80015c2: f403 3240 and.w r2, r3, #196608 @ 0x30000 - 80015c6: 687b ldr r3, [r7, #4] - 80015c8: 6a9b ldr r3, [r3, #40] @ 0x28 - 80015ca: 085b lsrs r3, r3, #1 - 80015cc: 3b01 subs r3, #1 - 80015ce: 041b lsls r3, r3, #16 + 80015f8: 68fb ldr r3, [r7, #12] + 80015fa: f403 3240 and.w r2, r3, #196608 @ 0x30000 + 80015fe: 687b ldr r3, [r7, #4] + 8001600: 6a9b ldr r3, [r3, #40] @ 0x28 + 8001602: 085b lsrs r3, r3, #1 + 8001604: 3b01 subs r3, #1 + 8001606: 041b lsls r3, r3, #16 (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN) << RCC_PLLCFGR_PLLN_Pos) || - 80015d0: 429a cmp r2, r3 - 80015d2: d107 bne.n 80015e4 + 8001608: 429a cmp r2, r3 + 800160a: d107 bne.n 800161c (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos))) - 80015d4: 68fb ldr r3, [r7, #12] - 80015d6: f003 6270 and.w r2, r3, #251658240 @ 0xf000000 - 80015da: 687b ldr r3, [r7, #4] - 80015dc: 6adb ldr r3, [r3, #44] @ 0x2c - 80015de: 061b lsls r3, r3, #24 + 800160c: 68fb ldr r3, [r7, #12] + 800160e: f003 6270 and.w r2, r3, #251658240 @ 0xf000000 + 8001612: 687b ldr r3, [r7, #4] + 8001614: 6adb ldr r3, [r3, #44] @ 0x2c + 8001616: 061b lsls r3, r3, #24 (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != (((RCC_OscInitStruct->PLL.PLLP >> 1U) - 1U)) << RCC_PLLCFGR_PLLP_Pos) || - 80015e0: 429a cmp r2, r3 - 80015e2: d001 beq.n 80015e8 + 8001618: 429a cmp r2, r3 + 800161a: d001 beq.n 8001620 #endif /* RCC_PLLCFGR_PLLR */ { return HAL_ERROR; - 80015e4: 2301 movs r3, #1 - 80015e6: e000 b.n 80015ea + 800161c: 2301 movs r3, #1 + 800161e: e000 b.n 8001622 } } } } return HAL_OK; - 80015e8: 2300 movs r3, #0 + 8001620: 2300 movs r3, #0 } - 80015ea: 4618 mov r0, r3 - 80015ec: 3718 adds r7, #24 - 80015ee: 46bd mov sp, r7 - 80015f0: bd80 pop {r7, pc} - 80015f2: bf00 nop - 80015f4: 40023800 .word 0x40023800 + 8001622: 4618 mov r0, r3 + 8001624: 3718 adds r7, #24 + 8001626: 46bd mov sp, r7 + 8001628: bd80 pop {r7, pc} + 800162a: bf00 nop + 800162c: 40023800 .word 0x40023800 -080015f8 : +08001630 : * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency * (for more details refer to section above "Initialization/de-initialization functions") * @retval None */ HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) { - 80015f8: b580 push {r7, lr} - 80015fa: b084 sub sp, #16 - 80015fc: af00 add r7, sp, #0 - 80015fe: 6078 str r0, [r7, #4] - 8001600: 6039 str r1, [r7, #0] + 8001630: b580 push {r7, lr} + 8001632: b084 sub sp, #16 + 8001634: af00 add r7, sp, #0 + 8001636: 6078 str r0, [r7, #4] + 8001638: 6039 str r1, [r7, #0] uint32_t tickstart; /* Check Null pointer */ if (RCC_ClkInitStruct == NULL) - 8001602: 687b ldr r3, [r7, #4] - 8001604: 2b00 cmp r3, #0 - 8001606: d101 bne.n 800160c + 800163a: 687b ldr r3, [r7, #4] + 800163c: 2b00 cmp r3, #0 + 800163e: d101 bne.n 8001644 { return HAL_ERROR; - 8001608: 2301 movs r3, #1 - 800160a: e0cc b.n 80017a6 + 8001640: 2301 movs r3, #1 + 8001642: e0cc b.n 80017de /* To correctly read data from FLASH memory, the number of wait states (LATENCY) must be correctly programmed according to the frequency of the CPU clock (HCLK) and the supply voltage of the device. */ /* Increasing the number of wait states because of higher CPU frequency */ if (FLatency > __HAL_FLASH_GET_LATENCY()) - 800160c: 4b68 ldr r3, [pc, #416] @ (80017b0 ) - 800160e: 681b ldr r3, [r3, #0] - 8001610: f003 030f and.w r3, r3, #15 - 8001614: 683a ldr r2, [r7, #0] - 8001616: 429a cmp r2, r3 - 8001618: d90c bls.n 8001634 + 8001644: 4b68 ldr r3, [pc, #416] @ (80017e8 ) + 8001646: 681b ldr r3, [r3, #0] + 8001648: f003 030f and.w r3, r3, #15 + 800164c: 683a ldr r2, [r7, #0] + 800164e: 429a cmp r2, r3 + 8001650: d90c bls.n 800166c { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 800161a: 4b65 ldr r3, [pc, #404] @ (80017b0 ) - 800161c: 683a ldr r2, [r7, #0] - 800161e: b2d2 uxtb r2, r2 - 8001620: 701a strb r2, [r3, #0] + 8001652: 4b65 ldr r3, [pc, #404] @ (80017e8 ) + 8001654: 683a ldr r2, [r7, #0] + 8001656: b2d2 uxtb r2, r2 + 8001658: 701a strb r2, [r3, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by reading the FLASH_ACR register */ if (__HAL_FLASH_GET_LATENCY() != FLatency) - 8001622: 4b63 ldr r3, [pc, #396] @ (80017b0 ) - 8001624: 681b ldr r3, [r3, #0] - 8001626: f003 030f and.w r3, r3, #15 - 800162a: 683a ldr r2, [r7, #0] - 800162c: 429a cmp r2, r3 - 800162e: d001 beq.n 8001634 + 800165a: 4b63 ldr r3, [pc, #396] @ (80017e8 ) + 800165c: 681b ldr r3, [r3, #0] + 800165e: f003 030f and.w r3, r3, #15 + 8001662: 683a ldr r2, [r7, #0] + 8001664: 429a cmp r2, r3 + 8001666: d001 beq.n 800166c { return HAL_ERROR; - 8001630: 2301 movs r3, #1 - 8001632: e0b8 b.n 80017a6 + 8001668: 2301 movs r3, #1 + 800166a: e0b8 b.n 80017de } } /*-------------------------- HCLK Configuration --------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) - 8001634: 687b ldr r3, [r7, #4] - 8001636: 681b ldr r3, [r3, #0] - 8001638: f003 0302 and.w r3, r3, #2 - 800163c: 2b00 cmp r3, #0 - 800163e: d020 beq.n 8001682 + 800166c: 687b ldr r3, [r7, #4] + 800166e: 681b ldr r3, [r3, #0] + 8001670: f003 0302 and.w r3, r3, #2 + 8001674: 2b00 cmp r3, #0 + 8001676: d020 beq.n 80016ba { /* 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) - 8001640: 687b ldr r3, [r7, #4] - 8001642: 681b ldr r3, [r3, #0] - 8001644: f003 0304 and.w r3, r3, #4 - 8001648: 2b00 cmp r3, #0 - 800164a: d005 beq.n 8001658 + 8001678: 687b ldr r3, [r7, #4] + 800167a: 681b ldr r3, [r3, #0] + 800167c: f003 0304 and.w r3, r3, #4 + 8001680: 2b00 cmp r3, #0 + 8001682: d005 beq.n 8001690 { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16); - 800164c: 4b59 ldr r3, [pc, #356] @ (80017b4 ) - 800164e: 689b ldr r3, [r3, #8] - 8001650: 4a58 ldr r2, [pc, #352] @ (80017b4 ) - 8001652: f443 53e0 orr.w r3, r3, #7168 @ 0x1c00 - 8001656: 6093 str r3, [r2, #8] + 8001684: 4b59 ldr r3, [pc, #356] @ (80017ec ) + 8001686: 689b ldr r3, [r3, #8] + 8001688: 4a58 ldr r2, [pc, #352] @ (80017ec ) + 800168a: f443 53e0 orr.w r3, r3, #7168 @ 0x1c00 + 800168e: 6093 str r3, [r2, #8] } if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 8001658: 687b ldr r3, [r7, #4] - 800165a: 681b ldr r3, [r3, #0] - 800165c: f003 0308 and.w r3, r3, #8 - 8001660: 2b00 cmp r3, #0 - 8001662: d005 beq.n 8001670 + 8001690: 687b ldr r3, [r7, #4] + 8001692: 681b ldr r3, [r3, #0] + 8001694: f003 0308 and.w r3, r3, #8 + 8001698: 2b00 cmp r3, #0 + 800169a: d005 beq.n 80016a8 { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3)); - 8001664: 4b53 ldr r3, [pc, #332] @ (80017b4 ) - 8001666: 689b ldr r3, [r3, #8] - 8001668: 4a52 ldr r2, [pc, #328] @ (80017b4 ) - 800166a: f443 4360 orr.w r3, r3, #57344 @ 0xe000 - 800166e: 6093 str r3, [r2, #8] + 800169c: 4b53 ldr r3, [pc, #332] @ (80017ec ) + 800169e: 689b ldr r3, [r3, #8] + 80016a0: 4a52 ldr r2, [pc, #328] @ (80017ec ) + 80016a2: f443 4360 orr.w r3, r3, #57344 @ 0xe000 + 80016a6: 6093 str r3, [r2, #8] } assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); - 8001670: 4b50 ldr r3, [pc, #320] @ (80017b4 ) - 8001672: 689b ldr r3, [r3, #8] - 8001674: f023 02f0 bic.w r2, r3, #240 @ 0xf0 - 8001678: 687b ldr r3, [r7, #4] - 800167a: 689b ldr r3, [r3, #8] - 800167c: 494d ldr r1, [pc, #308] @ (80017b4 ) - 800167e: 4313 orrs r3, r2 - 8001680: 608b str r3, [r1, #8] + 80016a8: 4b50 ldr r3, [pc, #320] @ (80017ec ) + 80016aa: 689b ldr r3, [r3, #8] + 80016ac: f023 02f0 bic.w r2, r3, #240 @ 0xf0 + 80016b0: 687b ldr r3, [r7, #4] + 80016b2: 689b ldr r3, [r3, #8] + 80016b4: 494d ldr r1, [pc, #308] @ (80017ec ) + 80016b6: 4313 orrs r3, r2 + 80016b8: 608b str r3, [r1, #8] } /*------------------------- SYSCLK Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) - 8001682: 687b ldr r3, [r7, #4] - 8001684: 681b ldr r3, [r3, #0] - 8001686: f003 0301 and.w r3, r3, #1 - 800168a: 2b00 cmp r3, #0 - 800168c: d044 beq.n 8001718 + 80016ba: 687b ldr r3, [r7, #4] + 80016bc: 681b ldr r3, [r3, #0] + 80016be: f003 0301 and.w r3, r3, #1 + 80016c2: 2b00 cmp r3, #0 + 80016c4: d044 beq.n 8001750 { assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); /* HSE is selected as System Clock Source */ if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) - 800168e: 687b ldr r3, [r7, #4] - 8001690: 685b ldr r3, [r3, #4] - 8001692: 2b01 cmp r3, #1 - 8001694: d107 bne.n 80016a6 + 80016c6: 687b ldr r3, [r7, #4] + 80016c8: 685b ldr r3, [r3, #4] + 80016ca: 2b01 cmp r3, #1 + 80016cc: d107 bne.n 80016de { /* Check the HSE ready flag */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) - 8001696: 4b47 ldr r3, [pc, #284] @ (80017b4 ) - 8001698: 681b ldr r3, [r3, #0] - 800169a: f403 3300 and.w r3, r3, #131072 @ 0x20000 - 800169e: 2b00 cmp r3, #0 - 80016a0: d119 bne.n 80016d6 + 80016ce: 4b47 ldr r3, [pc, #284] @ (80017ec ) + 80016d0: 681b ldr r3, [r3, #0] + 80016d2: f403 3300 and.w r3, r3, #131072 @ 0x20000 + 80016d6: 2b00 cmp r3, #0 + 80016d8: d119 bne.n 800170e { return HAL_ERROR; - 80016a2: 2301 movs r3, #1 - 80016a4: e07f b.n 80017a6 + 80016da: 2301 movs r3, #1 + 80016dc: e07f b.n 80017de } } /* PLL is selected as System Clock Source */ else if ((RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) || - 80016a6: 687b ldr r3, [r7, #4] - 80016a8: 685b ldr r3, [r3, #4] - 80016aa: 2b02 cmp r3, #2 - 80016ac: d003 beq.n 80016b6 + 80016de: 687b ldr r3, [r7, #4] + 80016e0: 685b ldr r3, [r3, #4] + 80016e2: 2b02 cmp r3, #2 + 80016e4: d003 beq.n 80016ee (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLRCLK)) - 80016ae: 687b ldr r3, [r7, #4] - 80016b0: 685b ldr r3, [r3, #4] + 80016e6: 687b ldr r3, [r7, #4] + 80016e8: 685b ldr r3, [r3, #4] else if ((RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) || - 80016b2: 2b03 cmp r3, #3 - 80016b4: d107 bne.n 80016c6 + 80016ea: 2b03 cmp r3, #3 + 80016ec: d107 bne.n 80016fe { /* Check the PLL ready flag */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) - 80016b6: 4b3f ldr r3, [pc, #252] @ (80017b4 ) - 80016b8: 681b ldr r3, [r3, #0] - 80016ba: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 - 80016be: 2b00 cmp r3, #0 - 80016c0: d109 bne.n 80016d6 + 80016ee: 4b3f ldr r3, [pc, #252] @ (80017ec ) + 80016f0: 681b ldr r3, [r3, #0] + 80016f2: f003 7300 and.w r3, r3, #33554432 @ 0x2000000 + 80016f6: 2b00 cmp r3, #0 + 80016f8: d109 bne.n 800170e { return HAL_ERROR; - 80016c2: 2301 movs r3, #1 - 80016c4: e06f b.n 80017a6 + 80016fa: 2301 movs r3, #1 + 80016fc: e06f b.n 80017de } /* HSI is selected as System Clock Source */ else { /* Check the HSI ready flag */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) - 80016c6: 4b3b ldr r3, [pc, #236] @ (80017b4 ) - 80016c8: 681b ldr r3, [r3, #0] - 80016ca: f003 0302 and.w r3, r3, #2 - 80016ce: 2b00 cmp r3, #0 - 80016d0: d101 bne.n 80016d6 + 80016fe: 4b3b ldr r3, [pc, #236] @ (80017ec ) + 8001700: 681b ldr r3, [r3, #0] + 8001702: f003 0302 and.w r3, r3, #2 + 8001706: 2b00 cmp r3, #0 + 8001708: d101 bne.n 800170e { return HAL_ERROR; - 80016d2: 2301 movs r3, #1 - 80016d4: e067 b.n 80017a6 + 800170a: 2301 movs r3, #1 + 800170c: e067 b.n 80017de } } __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); - 80016d6: 4b37 ldr r3, [pc, #220] @ (80017b4 ) - 80016d8: 689b ldr r3, [r3, #8] - 80016da: f023 0203 bic.w r2, r3, #3 - 80016de: 687b ldr r3, [r7, #4] - 80016e0: 685b ldr r3, [r3, #4] - 80016e2: 4934 ldr r1, [pc, #208] @ (80017b4 ) - 80016e4: 4313 orrs r3, r2 - 80016e6: 608b str r3, [r1, #8] + 800170e: 4b37 ldr r3, [pc, #220] @ (80017ec ) + 8001710: 689b ldr r3, [r3, #8] + 8001712: f023 0203 bic.w r2, r3, #3 + 8001716: 687b ldr r3, [r7, #4] + 8001718: 685b ldr r3, [r3, #4] + 800171a: 4934 ldr r1, [pc, #208] @ (80017ec ) + 800171c: 4313 orrs r3, r2 + 800171e: 608b str r3, [r1, #8] /* Get Start Tick */ tickstart = HAL_GetTick(); - 80016e8: f7ff fa36 bl 8000b58 - 80016ec: 60f8 str r0, [r7, #12] + 8001720: f7ff fa42 bl 8000ba8 + 8001724: 60f8 str r0, [r7, #12] while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 80016ee: e00a b.n 8001706 + 8001726: e00a b.n 800173e { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 80016f0: f7ff fa32 bl 8000b58 - 80016f4: 4602 mov r2, r0 - 80016f6: 68fb ldr r3, [r7, #12] - 80016f8: 1ad3 subs r3, r2, r3 - 80016fa: f241 3288 movw r2, #5000 @ 0x1388 - 80016fe: 4293 cmp r3, r2 - 8001700: d901 bls.n 8001706 + 8001728: f7ff fa3e bl 8000ba8 + 800172c: 4602 mov r2, r0 + 800172e: 68fb ldr r3, [r7, #12] + 8001730: 1ad3 subs r3, r2, r3 + 8001732: f241 3288 movw r2, #5000 @ 0x1388 + 8001736: 4293 cmp r3, r2 + 8001738: d901 bls.n 800173e { return HAL_TIMEOUT; - 8001702: 2303 movs r3, #3 - 8001704: e04f b.n 80017a6 + 800173a: 2303 movs r3, #3 + 800173c: e04f b.n 80017de while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8001706: 4b2b ldr r3, [pc, #172] @ (80017b4 ) - 8001708: 689b ldr r3, [r3, #8] - 800170a: f003 020c and.w r2, r3, #12 - 800170e: 687b ldr r3, [r7, #4] - 8001710: 685b ldr r3, [r3, #4] - 8001712: 009b lsls r3, r3, #2 - 8001714: 429a cmp r2, r3 - 8001716: d1eb bne.n 80016f0 + 800173e: 4b2b ldr r3, [pc, #172] @ (80017ec ) + 8001740: 689b ldr r3, [r3, #8] + 8001742: f003 020c and.w r2, r3, #12 + 8001746: 687b ldr r3, [r7, #4] + 8001748: 685b ldr r3, [r3, #4] + 800174a: 009b lsls r3, r3, #2 + 800174c: 429a cmp r2, r3 + 800174e: d1eb bne.n 8001728 } } } /* Decreasing the number of wait states because of lower CPU frequency */ if (FLatency < __HAL_FLASH_GET_LATENCY()) - 8001718: 4b25 ldr r3, [pc, #148] @ (80017b0 ) - 800171a: 681b ldr r3, [r3, #0] - 800171c: f003 030f and.w r3, r3, #15 - 8001720: 683a ldr r2, [r7, #0] - 8001722: 429a cmp r2, r3 - 8001724: d20c bcs.n 8001740 + 8001750: 4b25 ldr r3, [pc, #148] @ (80017e8 ) + 8001752: 681b ldr r3, [r3, #0] + 8001754: f003 030f and.w r3, r3, #15 + 8001758: 683a ldr r2, [r7, #0] + 800175a: 429a cmp r2, r3 + 800175c: d20c bcs.n 8001778 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8001726: 4b22 ldr r3, [pc, #136] @ (80017b0 ) - 8001728: 683a ldr r2, [r7, #0] - 800172a: b2d2 uxtb r2, r2 - 800172c: 701a strb r2, [r3, #0] + 800175e: 4b22 ldr r3, [pc, #136] @ (80017e8 ) + 8001760: 683a ldr r2, [r7, #0] + 8001762: b2d2 uxtb r2, r2 + 8001764: 701a strb r2, [r3, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by reading the FLASH_ACR register */ if (__HAL_FLASH_GET_LATENCY() != FLatency) - 800172e: 4b20 ldr r3, [pc, #128] @ (80017b0 ) - 8001730: 681b ldr r3, [r3, #0] - 8001732: f003 030f and.w r3, r3, #15 - 8001736: 683a ldr r2, [r7, #0] - 8001738: 429a cmp r2, r3 - 800173a: d001 beq.n 8001740 + 8001766: 4b20 ldr r3, [pc, #128] @ (80017e8 ) + 8001768: 681b ldr r3, [r3, #0] + 800176a: f003 030f and.w r3, r3, #15 + 800176e: 683a ldr r2, [r7, #0] + 8001770: 429a cmp r2, r3 + 8001772: d001 beq.n 8001778 { return HAL_ERROR; - 800173c: 2301 movs r3, #1 - 800173e: e032 b.n 80017a6 + 8001774: 2301 movs r3, #1 + 8001776: e032 b.n 80017de } } /*-------------------------- PCLK1 Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8001740: 687b ldr r3, [r7, #4] - 8001742: 681b ldr r3, [r3, #0] - 8001744: f003 0304 and.w r3, r3, #4 - 8001748: 2b00 cmp r3, #0 - 800174a: d008 beq.n 800175e + 8001778: 687b ldr r3, [r7, #4] + 800177a: 681b ldr r3, [r3, #0] + 800177c: f003 0304 and.w r3, r3, #4 + 8001780: 2b00 cmp r3, #0 + 8001782: d008 beq.n 8001796 { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); - 800174c: 4b19 ldr r3, [pc, #100] @ (80017b4 ) - 800174e: 689b ldr r3, [r3, #8] - 8001750: f423 52e0 bic.w r2, r3, #7168 @ 0x1c00 - 8001754: 687b ldr r3, [r7, #4] - 8001756: 68db ldr r3, [r3, #12] - 8001758: 4916 ldr r1, [pc, #88] @ (80017b4 ) - 800175a: 4313 orrs r3, r2 - 800175c: 608b str r3, [r1, #8] + 8001784: 4b19 ldr r3, [pc, #100] @ (80017ec ) + 8001786: 689b ldr r3, [r3, #8] + 8001788: f423 52e0 bic.w r2, r3, #7168 @ 0x1c00 + 800178c: 687b ldr r3, [r7, #4] + 800178e: 68db ldr r3, [r3, #12] + 8001790: 4916 ldr r1, [pc, #88] @ (80017ec ) + 8001792: 4313 orrs r3, r2 + 8001794: 608b str r3, [r1, #8] } /*-------------------------- PCLK2 Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 800175e: 687b ldr r3, [r7, #4] - 8001760: 681b ldr r3, [r3, #0] - 8001762: f003 0308 and.w r3, r3, #8 - 8001766: 2b00 cmp r3, #0 - 8001768: d009 beq.n 800177e + 8001796: 687b ldr r3, [r7, #4] + 8001798: 681b ldr r3, [r3, #0] + 800179a: f003 0308 and.w r3, r3, #8 + 800179e: 2b00 cmp r3, #0 + 80017a0: d009 beq.n 80017b6 { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3U)); - 800176a: 4b12 ldr r3, [pc, #72] @ (80017b4 ) - 800176c: 689b ldr r3, [r3, #8] - 800176e: f423 4260 bic.w r2, r3, #57344 @ 0xe000 - 8001772: 687b ldr r3, [r7, #4] - 8001774: 691b ldr r3, [r3, #16] - 8001776: 00db lsls r3, r3, #3 - 8001778: 490e ldr r1, [pc, #56] @ (80017b4 ) - 800177a: 4313 orrs r3, r2 - 800177c: 608b str r3, [r1, #8] + 80017a2: 4b12 ldr r3, [pc, #72] @ (80017ec ) + 80017a4: 689b ldr r3, [r3, #8] + 80017a6: f423 4260 bic.w r2, r3, #57344 @ 0xe000 + 80017aa: 687b ldr r3, [r7, #4] + 80017ac: 691b ldr r3, [r3, #16] + 80017ae: 00db lsls r3, r3, #3 + 80017b0: 490e ldr r1, [pc, #56] @ (80017ec ) + 80017b2: 4313 orrs r3, r2 + 80017b4: 608b str r3, [r1, #8] } /* Update the SystemCoreClock global variable */ SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]; - 800177e: f000 f821 bl 80017c4 - 8001782: 4602 mov r2, r0 - 8001784: 4b0b ldr r3, [pc, #44] @ (80017b4 ) - 8001786: 689b ldr r3, [r3, #8] - 8001788: 091b lsrs r3, r3, #4 - 800178a: f003 030f and.w r3, r3, #15 - 800178e: 490a ldr r1, [pc, #40] @ (80017b8 ) - 8001790: 5ccb ldrb r3, [r1, r3] - 8001792: fa22 f303 lsr.w r3, r2, r3 - 8001796: 4a09 ldr r2, [pc, #36] @ (80017bc ) - 8001798: 6013 str r3, [r2, #0] + 80017b6: f000 f821 bl 80017fc + 80017ba: 4602 mov r2, r0 + 80017bc: 4b0b ldr r3, [pc, #44] @ (80017ec ) + 80017be: 689b ldr r3, [r3, #8] + 80017c0: 091b lsrs r3, r3, #4 + 80017c2: f003 030f and.w r3, r3, #15 + 80017c6: 490a ldr r1, [pc, #40] @ (80017f0 ) + 80017c8: 5ccb ldrb r3, [r1, r3] + 80017ca: fa22 f303 lsr.w r3, r2, r3 + 80017ce: 4a09 ldr r2, [pc, #36] @ (80017f4 ) + 80017d0: 6013 str r3, [r2, #0] /* Configure the source of time base considering new system clocks settings */ HAL_InitTick(uwTickPrio); - 800179a: 4b09 ldr r3, [pc, #36] @ (80017c0 ) - 800179c: 681b ldr r3, [r3, #0] - 800179e: 4618 mov r0, r3 - 80017a0: f7ff f8d2 bl 8000948 + 80017d2: 4b09 ldr r3, [pc, #36] @ (80017f8 ) + 80017d4: 681b ldr r3, [r3, #0] + 80017d6: 4618 mov r0, r3 + 80017d8: f7ff f8de bl 8000998 return HAL_OK; - 80017a4: 2300 movs r3, #0 + 80017dc: 2300 movs r3, #0 } - 80017a6: 4618 mov r0, r3 - 80017a8: 3710 adds r7, #16 - 80017aa: 46bd mov sp, r7 - 80017ac: bd80 pop {r7, pc} - 80017ae: bf00 nop - 80017b0: 40023c00 .word 0x40023c00 - 80017b4: 40023800 .word 0x40023800 - 80017b8: 0800244c .word 0x0800244c - 80017bc: 20000000 .word 0x20000000 - 80017c0: 20000004 .word 0x20000004 + 80017de: 4618 mov r0, r3 + 80017e0: 3710 adds r7, #16 + 80017e2: 46bd mov sp, r7 + 80017e4: bd80 pop {r7, pc} + 80017e6: bf00 nop + 80017e8: 40023c00 .word 0x40023c00 + 80017ec: 40023800 .word 0x40023800 + 80017f0: 0800248c .word 0x0800248c + 80017f4: 20000004 .word 0x20000004 + 80017f8: 20000008 .word 0x20000008 -080017c4 : +080017fc : * * * @retval SYSCLK frequency */ __weak uint32_t HAL_RCC_GetSysClockFreq(void) { - 80017c4: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} - 80017c8: b094 sub sp, #80 @ 0x50 - 80017ca: af00 add r7, sp, #0 + 80017fc: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 8001800: b094 sub sp, #80 @ 0x50 + 8001802: af00 add r7, sp, #0 uint32_t pllm = 0U; - 80017cc: 2300 movs r3, #0 - 80017ce: 647b str r3, [r7, #68] @ 0x44 + 8001804: 2300 movs r3, #0 + 8001806: 647b str r3, [r7, #68] @ 0x44 uint32_t pllvco = 0U; - 80017d0: 2300 movs r3, #0 - 80017d2: 64fb str r3, [r7, #76] @ 0x4c + 8001808: 2300 movs r3, #0 + 800180a: 64fb str r3, [r7, #76] @ 0x4c uint32_t pllp = 0U; - 80017d4: 2300 movs r3, #0 - 80017d6: 643b str r3, [r7, #64] @ 0x40 + 800180c: 2300 movs r3, #0 + 800180e: 643b str r3, [r7, #64] @ 0x40 uint32_t sysclockfreq = 0U; - 80017d8: 2300 movs r3, #0 - 80017da: 64bb str r3, [r7, #72] @ 0x48 + 8001810: 2300 movs r3, #0 + 8001812: 64bb str r3, [r7, #72] @ 0x48 /* Get SYSCLK source -------------------------------------------------------*/ switch (RCC->CFGR & RCC_CFGR_SWS) - 80017dc: 4b79 ldr r3, [pc, #484] @ (80019c4 ) - 80017de: 689b ldr r3, [r3, #8] - 80017e0: f003 030c and.w r3, r3, #12 - 80017e4: 2b08 cmp r3, #8 - 80017e6: d00d beq.n 8001804 - 80017e8: 2b08 cmp r3, #8 - 80017ea: f200 80e1 bhi.w 80019b0 - 80017ee: 2b00 cmp r3, #0 - 80017f0: d002 beq.n 80017f8 - 80017f2: 2b04 cmp r3, #4 - 80017f4: d003 beq.n 80017fe - 80017f6: e0db b.n 80019b0 + 8001814: 4b79 ldr r3, [pc, #484] @ (80019fc ) + 8001816: 689b ldr r3, [r3, #8] + 8001818: f003 030c and.w r3, r3, #12 + 800181c: 2b08 cmp r3, #8 + 800181e: d00d beq.n 800183c + 8001820: 2b08 cmp r3, #8 + 8001822: f200 80e1 bhi.w 80019e8 + 8001826: 2b00 cmp r3, #0 + 8001828: d002 beq.n 8001830 + 800182a: 2b04 cmp r3, #4 + 800182c: d003 beq.n 8001836 + 800182e: e0db b.n 80019e8 { case RCC_CFGR_SWS_HSI: /* HSI used as system clock source */ { sysclockfreq = HSI_VALUE; - 80017f8: 4b73 ldr r3, [pc, #460] @ (80019c8 ) - 80017fa: 64bb str r3, [r7, #72] @ 0x48 + 8001830: 4b73 ldr r3, [pc, #460] @ (8001a00 ) + 8001832: 64bb str r3, [r7, #72] @ 0x48 break; - 80017fc: e0db b.n 80019b6 + 8001834: e0db b.n 80019ee } case RCC_CFGR_SWS_HSE: /* HSE used as system clock source */ { sysclockfreq = HSE_VALUE; - 80017fe: 4b73 ldr r3, [pc, #460] @ (80019cc ) - 8001800: 64bb str r3, [r7, #72] @ 0x48 + 8001836: 4b73 ldr r3, [pc, #460] @ (8001a04 ) + 8001838: 64bb str r3, [r7, #72] @ 0x48 break; - 8001802: e0d8 b.n 80019b6 + 800183a: e0d8 b.n 80019ee } case RCC_CFGR_SWS_PLL: /* PLL used as system clock source */ { /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN SYSCLK = PLL_VCO / PLLP */ pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; - 8001804: 4b6f ldr r3, [pc, #444] @ (80019c4 ) - 8001806: 685b ldr r3, [r3, #4] - 8001808: f003 033f and.w r3, r3, #63 @ 0x3f - 800180c: 647b str r3, [r7, #68] @ 0x44 + 800183c: 4b6f ldr r3, [pc, #444] @ (80019fc ) + 800183e: 685b ldr r3, [r3, #4] + 8001840: f003 033f and.w r3, r3, #63 @ 0x3f + 8001844: 647b str r3, [r7, #68] @ 0x44 if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) - 800180e: 4b6d ldr r3, [pc, #436] @ (80019c4 ) - 8001810: 685b ldr r3, [r3, #4] - 8001812: f403 0380 and.w r3, r3, #4194304 @ 0x400000 - 8001816: 2b00 cmp r3, #0 - 8001818: d063 beq.n 80018e2 + 8001846: 4b6d ldr r3, [pc, #436] @ (80019fc ) + 8001848: 685b ldr r3, [r3, #4] + 800184a: f403 0380 and.w r3, r3, #4194304 @ 0x400000 + 800184e: 2b00 cmp r3, #0 + 8001850: d063 beq.n 800191a { /* HSE used as PLL clock source */ pllvco = (uint32_t)((((uint64_t) HSE_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm); - 800181a: 4b6a ldr r3, [pc, #424] @ (80019c4 ) - 800181c: 685b ldr r3, [r3, #4] - 800181e: 099b lsrs r3, r3, #6 - 8001820: 2200 movs r2, #0 - 8001822: 63bb str r3, [r7, #56] @ 0x38 - 8001824: 63fa str r2, [r7, #60] @ 0x3c - 8001826: 6bbb ldr r3, [r7, #56] @ 0x38 - 8001828: f3c3 0308 ubfx r3, r3, #0, #9 - 800182c: 633b str r3, [r7, #48] @ 0x30 - 800182e: 2300 movs r3, #0 - 8001830: 637b str r3, [r7, #52] @ 0x34 - 8001832: e9d7 450c ldrd r4, r5, [r7, #48] @ 0x30 - 8001836: 4622 mov r2, r4 - 8001838: 462b mov r3, r5 - 800183a: f04f 0000 mov.w r0, #0 - 800183e: f04f 0100 mov.w r1, #0 - 8001842: 0159 lsls r1, r3, #5 - 8001844: ea41 61d2 orr.w r1, r1, r2, lsr #27 - 8001848: 0150 lsls r0, r2, #5 - 800184a: 4602 mov r2, r0 - 800184c: 460b mov r3, r1 - 800184e: 4621 mov r1, r4 - 8001850: 1a51 subs r1, r2, r1 - 8001852: 6139 str r1, [r7, #16] - 8001854: 4629 mov r1, r5 - 8001856: eb63 0301 sbc.w r3, r3, r1 - 800185a: 617b str r3, [r7, #20] - 800185c: f04f 0200 mov.w r2, #0 - 8001860: f04f 0300 mov.w r3, #0 - 8001864: e9d7 ab04 ldrd sl, fp, [r7, #16] - 8001868: 4659 mov r1, fp - 800186a: 018b lsls r3, r1, #6 - 800186c: 4651 mov r1, sl - 800186e: ea43 6391 orr.w r3, r3, r1, lsr #26 - 8001872: 4651 mov r1, sl - 8001874: 018a lsls r2, r1, #6 - 8001876: 4651 mov r1, sl - 8001878: ebb2 0801 subs.w r8, r2, r1 - 800187c: 4659 mov r1, fp - 800187e: eb63 0901 sbc.w r9, r3, r1 - 8001882: f04f 0200 mov.w r2, #0 - 8001886: f04f 0300 mov.w r3, #0 - 800188a: ea4f 03c9 mov.w r3, r9, lsl #3 - 800188e: ea43 7358 orr.w r3, r3, r8, lsr #29 - 8001892: ea4f 02c8 mov.w r2, r8, lsl #3 - 8001896: 4690 mov r8, r2 - 8001898: 4699 mov r9, r3 - 800189a: 4623 mov r3, r4 - 800189c: eb18 0303 adds.w r3, r8, r3 - 80018a0: 60bb str r3, [r7, #8] - 80018a2: 462b mov r3, r5 - 80018a4: eb49 0303 adc.w r3, r9, r3 - 80018a8: 60fb str r3, [r7, #12] - 80018aa: f04f 0200 mov.w r2, #0 - 80018ae: f04f 0300 mov.w r3, #0 - 80018b2: e9d7 4502 ldrd r4, r5, [r7, #8] - 80018b6: 4629 mov r1, r5 - 80018b8: 024b lsls r3, r1, #9 - 80018ba: 4621 mov r1, r4 - 80018bc: ea43 53d1 orr.w r3, r3, r1, lsr #23 - 80018c0: 4621 mov r1, r4 - 80018c2: 024a lsls r2, r1, #9 - 80018c4: 4610 mov r0, r2 - 80018c6: 4619 mov r1, r3 - 80018c8: 6c7b ldr r3, [r7, #68] @ 0x44 - 80018ca: 2200 movs r2, #0 - 80018cc: 62bb str r3, [r7, #40] @ 0x28 - 80018ce: 62fa str r2, [r7, #44] @ 0x2c - 80018d0: e9d7 230a ldrd r2, r3, [r7, #40] @ 0x28 - 80018d4: f7fe fc8c bl 80001f0 <__aeabi_uldivmod> - 80018d8: 4602 mov r2, r0 - 80018da: 460b mov r3, r1 - 80018dc: 4613 mov r3, r2 - 80018de: 64fb str r3, [r7, #76] @ 0x4c - 80018e0: e058 b.n 8001994 + 8001852: 4b6a ldr r3, [pc, #424] @ (80019fc ) + 8001854: 685b ldr r3, [r3, #4] + 8001856: 099b lsrs r3, r3, #6 + 8001858: 2200 movs r2, #0 + 800185a: 63bb str r3, [r7, #56] @ 0x38 + 800185c: 63fa str r2, [r7, #60] @ 0x3c + 800185e: 6bbb ldr r3, [r7, #56] @ 0x38 + 8001860: f3c3 0308 ubfx r3, r3, #0, #9 + 8001864: 633b str r3, [r7, #48] @ 0x30 + 8001866: 2300 movs r3, #0 + 8001868: 637b str r3, [r7, #52] @ 0x34 + 800186a: e9d7 450c ldrd r4, r5, [r7, #48] @ 0x30 + 800186e: 4622 mov r2, r4 + 8001870: 462b mov r3, r5 + 8001872: f04f 0000 mov.w r0, #0 + 8001876: f04f 0100 mov.w r1, #0 + 800187a: 0159 lsls r1, r3, #5 + 800187c: ea41 61d2 orr.w r1, r1, r2, lsr #27 + 8001880: 0150 lsls r0, r2, #5 + 8001882: 4602 mov r2, r0 + 8001884: 460b mov r3, r1 + 8001886: 4621 mov r1, r4 + 8001888: 1a51 subs r1, r2, r1 + 800188a: 6139 str r1, [r7, #16] + 800188c: 4629 mov r1, r5 + 800188e: eb63 0301 sbc.w r3, r3, r1 + 8001892: 617b str r3, [r7, #20] + 8001894: f04f 0200 mov.w r2, #0 + 8001898: f04f 0300 mov.w r3, #0 + 800189c: e9d7 ab04 ldrd sl, fp, [r7, #16] + 80018a0: 4659 mov r1, fp + 80018a2: 018b lsls r3, r1, #6 + 80018a4: 4651 mov r1, sl + 80018a6: ea43 6391 orr.w r3, r3, r1, lsr #26 + 80018aa: 4651 mov r1, sl + 80018ac: 018a lsls r2, r1, #6 + 80018ae: 4651 mov r1, sl + 80018b0: ebb2 0801 subs.w r8, r2, r1 + 80018b4: 4659 mov r1, fp + 80018b6: eb63 0901 sbc.w r9, r3, r1 + 80018ba: f04f 0200 mov.w r2, #0 + 80018be: f04f 0300 mov.w r3, #0 + 80018c2: ea4f 03c9 mov.w r3, r9, lsl #3 + 80018c6: ea43 7358 orr.w r3, r3, r8, lsr #29 + 80018ca: ea4f 02c8 mov.w r2, r8, lsl #3 + 80018ce: 4690 mov r8, r2 + 80018d0: 4699 mov r9, r3 + 80018d2: 4623 mov r3, r4 + 80018d4: eb18 0303 adds.w r3, r8, r3 + 80018d8: 60bb str r3, [r7, #8] + 80018da: 462b mov r3, r5 + 80018dc: eb49 0303 adc.w r3, r9, r3 + 80018e0: 60fb str r3, [r7, #12] + 80018e2: f04f 0200 mov.w r2, #0 + 80018e6: f04f 0300 mov.w r3, #0 + 80018ea: e9d7 4502 ldrd r4, r5, [r7, #8] + 80018ee: 4629 mov r1, r5 + 80018f0: 024b lsls r3, r1, #9 + 80018f2: 4621 mov r1, r4 + 80018f4: ea43 53d1 orr.w r3, r3, r1, lsr #23 + 80018f8: 4621 mov r1, r4 + 80018fa: 024a lsls r2, r1, #9 + 80018fc: 4610 mov r0, r2 + 80018fe: 4619 mov r1, r3 + 8001900: 6c7b ldr r3, [r7, #68] @ 0x44 + 8001902: 2200 movs r2, #0 + 8001904: 62bb str r3, [r7, #40] @ 0x28 + 8001906: 62fa str r2, [r7, #44] @ 0x2c + 8001908: e9d7 230a ldrd r2, r3, [r7, #40] @ 0x28 + 800190c: f7fe fc70 bl 80001f0 <__aeabi_uldivmod> + 8001910: 4602 mov r2, r0 + 8001912: 460b mov r3, r1 + 8001914: 4613 mov r3, r2 + 8001916: 64fb str r3, [r7, #76] @ 0x4c + 8001918: e058 b.n 80019cc } else { /* HSI used as PLL clock source */ pllvco = (uint32_t)((((uint64_t) HSI_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm); - 80018e2: 4b38 ldr r3, [pc, #224] @ (80019c4 ) - 80018e4: 685b ldr r3, [r3, #4] - 80018e6: 099b lsrs r3, r3, #6 - 80018e8: 2200 movs r2, #0 - 80018ea: 4618 mov r0, r3 - 80018ec: 4611 mov r1, r2 - 80018ee: f3c0 0308 ubfx r3, r0, #0, #9 - 80018f2: 623b str r3, [r7, #32] - 80018f4: 2300 movs r3, #0 - 80018f6: 627b str r3, [r7, #36] @ 0x24 - 80018f8: e9d7 8908 ldrd r8, r9, [r7, #32] - 80018fc: 4642 mov r2, r8 - 80018fe: 464b mov r3, r9 - 8001900: f04f 0000 mov.w r0, #0 - 8001904: f04f 0100 mov.w r1, #0 - 8001908: 0159 lsls r1, r3, #5 - 800190a: ea41 61d2 orr.w r1, r1, r2, lsr #27 - 800190e: 0150 lsls r0, r2, #5 - 8001910: 4602 mov r2, r0 - 8001912: 460b mov r3, r1 - 8001914: 4641 mov r1, r8 - 8001916: ebb2 0a01 subs.w sl, r2, r1 - 800191a: 4649 mov r1, r9 - 800191c: eb63 0b01 sbc.w fp, r3, r1 - 8001920: f04f 0200 mov.w r2, #0 - 8001924: f04f 0300 mov.w r3, #0 - 8001928: ea4f 138b mov.w r3, fp, lsl #6 - 800192c: ea43 639a orr.w r3, r3, sl, lsr #26 - 8001930: ea4f 128a mov.w r2, sl, lsl #6 - 8001934: ebb2 040a subs.w r4, r2, sl - 8001938: eb63 050b sbc.w r5, r3, fp - 800193c: f04f 0200 mov.w r2, #0 - 8001940: f04f 0300 mov.w r3, #0 - 8001944: 00eb lsls r3, r5, #3 - 8001946: ea43 7354 orr.w r3, r3, r4, lsr #29 - 800194a: 00e2 lsls r2, r4, #3 - 800194c: 4614 mov r4, r2 - 800194e: 461d mov r5, r3 - 8001950: 4643 mov r3, r8 - 8001952: 18e3 adds r3, r4, r3 - 8001954: 603b str r3, [r7, #0] - 8001956: 464b mov r3, r9 - 8001958: eb45 0303 adc.w r3, r5, r3 - 800195c: 607b str r3, [r7, #4] - 800195e: f04f 0200 mov.w r2, #0 - 8001962: f04f 0300 mov.w r3, #0 - 8001966: e9d7 4500 ldrd r4, r5, [r7] - 800196a: 4629 mov r1, r5 - 800196c: 028b lsls r3, r1, #10 - 800196e: 4621 mov r1, r4 - 8001970: ea43 5391 orr.w r3, r3, r1, lsr #22 - 8001974: 4621 mov r1, r4 - 8001976: 028a lsls r2, r1, #10 - 8001978: 4610 mov r0, r2 - 800197a: 4619 mov r1, r3 - 800197c: 6c7b ldr r3, [r7, #68] @ 0x44 - 800197e: 2200 movs r2, #0 - 8001980: 61bb str r3, [r7, #24] - 8001982: 61fa str r2, [r7, #28] - 8001984: e9d7 2306 ldrd r2, r3, [r7, #24] - 8001988: f7fe fc32 bl 80001f0 <__aeabi_uldivmod> - 800198c: 4602 mov r2, r0 - 800198e: 460b mov r3, r1 - 8001990: 4613 mov r3, r2 - 8001992: 64fb str r3, [r7, #76] @ 0x4c + 800191a: 4b38 ldr r3, [pc, #224] @ (80019fc ) + 800191c: 685b ldr r3, [r3, #4] + 800191e: 099b lsrs r3, r3, #6 + 8001920: 2200 movs r2, #0 + 8001922: 4618 mov r0, r3 + 8001924: 4611 mov r1, r2 + 8001926: f3c0 0308 ubfx r3, r0, #0, #9 + 800192a: 623b str r3, [r7, #32] + 800192c: 2300 movs r3, #0 + 800192e: 627b str r3, [r7, #36] @ 0x24 + 8001930: e9d7 8908 ldrd r8, r9, [r7, #32] + 8001934: 4642 mov r2, r8 + 8001936: 464b mov r3, r9 + 8001938: f04f 0000 mov.w r0, #0 + 800193c: f04f 0100 mov.w r1, #0 + 8001940: 0159 lsls r1, r3, #5 + 8001942: ea41 61d2 orr.w r1, r1, r2, lsr #27 + 8001946: 0150 lsls r0, r2, #5 + 8001948: 4602 mov r2, r0 + 800194a: 460b mov r3, r1 + 800194c: 4641 mov r1, r8 + 800194e: ebb2 0a01 subs.w sl, r2, r1 + 8001952: 4649 mov r1, r9 + 8001954: eb63 0b01 sbc.w fp, r3, r1 + 8001958: f04f 0200 mov.w r2, #0 + 800195c: f04f 0300 mov.w r3, #0 + 8001960: ea4f 138b mov.w r3, fp, lsl #6 + 8001964: ea43 639a orr.w r3, r3, sl, lsr #26 + 8001968: ea4f 128a mov.w r2, sl, lsl #6 + 800196c: ebb2 040a subs.w r4, r2, sl + 8001970: eb63 050b sbc.w r5, r3, fp + 8001974: f04f 0200 mov.w r2, #0 + 8001978: f04f 0300 mov.w r3, #0 + 800197c: 00eb lsls r3, r5, #3 + 800197e: ea43 7354 orr.w r3, r3, r4, lsr #29 + 8001982: 00e2 lsls r2, r4, #3 + 8001984: 4614 mov r4, r2 + 8001986: 461d mov r5, r3 + 8001988: 4643 mov r3, r8 + 800198a: 18e3 adds r3, r4, r3 + 800198c: 603b str r3, [r7, #0] + 800198e: 464b mov r3, r9 + 8001990: eb45 0303 adc.w r3, r5, r3 + 8001994: 607b str r3, [r7, #4] + 8001996: f04f 0200 mov.w r2, #0 + 800199a: f04f 0300 mov.w r3, #0 + 800199e: e9d7 4500 ldrd r4, r5, [r7] + 80019a2: 4629 mov r1, r5 + 80019a4: 028b lsls r3, r1, #10 + 80019a6: 4621 mov r1, r4 + 80019a8: ea43 5391 orr.w r3, r3, r1, lsr #22 + 80019ac: 4621 mov r1, r4 + 80019ae: 028a lsls r2, r1, #10 + 80019b0: 4610 mov r0, r2 + 80019b2: 4619 mov r1, r3 + 80019b4: 6c7b ldr r3, [r7, #68] @ 0x44 + 80019b6: 2200 movs r2, #0 + 80019b8: 61bb str r3, [r7, #24] + 80019ba: 61fa str r2, [r7, #28] + 80019bc: e9d7 2306 ldrd r2, r3, [r7, #24] + 80019c0: f7fe fc16 bl 80001f0 <__aeabi_uldivmod> + 80019c4: 4602 mov r2, r0 + 80019c6: 460b mov r3, r1 + 80019c8: 4613 mov r3, r2 + 80019ca: 64fb str r3, [r7, #76] @ 0x4c } pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1U) * 2U); - 8001994: 4b0b ldr r3, [pc, #44] @ (80019c4 ) - 8001996: 685b ldr r3, [r3, #4] - 8001998: 0c1b lsrs r3, r3, #16 - 800199a: f003 0303 and.w r3, r3, #3 - 800199e: 3301 adds r3, #1 - 80019a0: 005b lsls r3, r3, #1 - 80019a2: 643b str r3, [r7, #64] @ 0x40 + 80019cc: 4b0b ldr r3, [pc, #44] @ (80019fc ) + 80019ce: 685b ldr r3, [r3, #4] + 80019d0: 0c1b lsrs r3, r3, #16 + 80019d2: f003 0303 and.w r3, r3, #3 + 80019d6: 3301 adds r3, #1 + 80019d8: 005b lsls r3, r3, #1 + 80019da: 643b str r3, [r7, #64] @ 0x40 sysclockfreq = pllvco / pllp; - 80019a4: 6cfa ldr r2, [r7, #76] @ 0x4c - 80019a6: 6c3b ldr r3, [r7, #64] @ 0x40 - 80019a8: fbb2 f3f3 udiv r3, r2, r3 - 80019ac: 64bb str r3, [r7, #72] @ 0x48 + 80019dc: 6cfa ldr r2, [r7, #76] @ 0x4c + 80019de: 6c3b ldr r3, [r7, #64] @ 0x40 + 80019e0: fbb2 f3f3 udiv r3, r2, r3 + 80019e4: 64bb str r3, [r7, #72] @ 0x48 break; - 80019ae: e002 b.n 80019b6 + 80019e6: e002 b.n 80019ee } default: { sysclockfreq = HSI_VALUE; - 80019b0: 4b05 ldr r3, [pc, #20] @ (80019c8 ) - 80019b2: 64bb str r3, [r7, #72] @ 0x48 + 80019e8: 4b05 ldr r3, [pc, #20] @ (8001a00 ) + 80019ea: 64bb str r3, [r7, #72] @ 0x48 break; - 80019b4: bf00 nop + 80019ec: bf00 nop } } return sysclockfreq; - 80019b6: 6cbb ldr r3, [r7, #72] @ 0x48 + 80019ee: 6cbb ldr r3, [r7, #72] @ 0x48 } - 80019b8: 4618 mov r0, r3 - 80019ba: 3750 adds r7, #80 @ 0x50 - 80019bc: 46bd mov sp, r7 - 80019be: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} - 80019c2: bf00 nop - 80019c4: 40023800 .word 0x40023800 - 80019c8: 00f42400 .word 0x00f42400 - 80019cc: 007a1200 .word 0x007a1200 + 80019f0: 4618 mov r0, r3 + 80019f2: 3750 adds r7, #80 @ 0x50 + 80019f4: 46bd mov sp, r7 + 80019f6: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 80019fa: bf00 nop + 80019fc: 40023800 .word 0x40023800 + 8001a00: 00f42400 .word 0x00f42400 + 8001a04: 007a1200 .word 0x007a1200 -080019d0 : +08001a08 : * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency * and updated within this function * @retval HCLK frequency */ uint32_t HAL_RCC_GetHCLKFreq(void) { - 80019d0: b480 push {r7} - 80019d2: af00 add r7, sp, #0 + 8001a08: b480 push {r7} + 8001a0a: af00 add r7, sp, #0 return SystemCoreClock; - 80019d4: 4b03 ldr r3, [pc, #12] @ (80019e4 ) - 80019d6: 681b ldr r3, [r3, #0] + 8001a0c: 4b03 ldr r3, [pc, #12] @ (8001a1c ) + 8001a0e: 681b ldr r3, [r3, #0] } - 80019d8: 4618 mov r0, r3 - 80019da: 46bd mov sp, r7 - 80019dc: f85d 7b04 ldr.w r7, [sp], #4 - 80019e0: 4770 bx lr - 80019e2: bf00 nop - 80019e4: 20000000 .word 0x20000000 + 8001a10: 4618 mov r0, r3 + 8001a12: 46bd mov sp, r7 + 8001a14: f85d 7b04 ldr.w r7, [sp], #4 + 8001a18: 4770 bx lr + 8001a1a: bf00 nop + 8001a1c: 20000004 .word 0x20000004 -080019e8 : +08001a20 : * @note Each time PCLK1 changes, this function must be called to update the * right PCLK1 value. Otherwise, any configuration based on this function will be incorrect. * @retval PCLK1 frequency */ uint32_t HAL_RCC_GetPCLK1Freq(void) { - 80019e8: b580 push {r7, lr} - 80019ea: af00 add r7, sp, #0 + 8001a20: b580 push {r7, lr} + 8001a22: af00 add r7, sp, #0 /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/ return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos]); - 80019ec: f7ff fff0 bl 80019d0 - 80019f0: 4602 mov r2, r0 - 80019f2: 4b05 ldr r3, [pc, #20] @ (8001a08 ) - 80019f4: 689b ldr r3, [r3, #8] - 80019f6: 0a9b lsrs r3, r3, #10 - 80019f8: f003 0307 and.w r3, r3, #7 - 80019fc: 4903 ldr r1, [pc, #12] @ (8001a0c ) - 80019fe: 5ccb ldrb r3, [r1, r3] - 8001a00: fa22 f303 lsr.w r3, r2, r3 + 8001a24: f7ff fff0 bl 8001a08 + 8001a28: 4602 mov r2, r0 + 8001a2a: 4b05 ldr r3, [pc, #20] @ (8001a40 ) + 8001a2c: 689b ldr r3, [r3, #8] + 8001a2e: 0a9b lsrs r3, r3, #10 + 8001a30: f003 0307 and.w r3, r3, #7 + 8001a34: 4903 ldr r1, [pc, #12] @ (8001a44 ) + 8001a36: 5ccb ldrb r3, [r1, r3] + 8001a38: fa22 f303 lsr.w r3, r2, r3 } - 8001a04: 4618 mov r0, r3 - 8001a06: bd80 pop {r7, pc} - 8001a08: 40023800 .word 0x40023800 - 8001a0c: 0800245c .word 0x0800245c + 8001a3c: 4618 mov r0, r3 + 8001a3e: bd80 pop {r7, pc} + 8001a40: 40023800 .word 0x40023800 + 8001a44: 0800249c .word 0x0800249c -08001a10 : +08001a48 : * will be configured. * @param pFLatency Pointer on the Flash Latency. * @retval None */ void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency) { - 8001a10: b480 push {r7} - 8001a12: b083 sub sp, #12 - 8001a14: af00 add r7, sp, #0 - 8001a16: 6078 str r0, [r7, #4] - 8001a18: 6039 str r1, [r7, #0] + 8001a48: b480 push {r7} + 8001a4a: b083 sub sp, #12 + 8001a4c: af00 add r7, sp, #0 + 8001a4e: 6078 str r0, [r7, #4] + 8001a50: 6039 str r1, [r7, #0] /* Set all possible values for the Clock type parameter --------------------*/ RCC_ClkInitStruct->ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; - 8001a1a: 687b ldr r3, [r7, #4] - 8001a1c: 220f movs r2, #15 - 8001a1e: 601a str r2, [r3, #0] + 8001a52: 687b ldr r3, [r7, #4] + 8001a54: 220f movs r2, #15 + 8001a56: 601a str r2, [r3, #0] /* Get the SYSCLK configuration --------------------------------------------*/ RCC_ClkInitStruct->SYSCLKSource = (uint32_t)(RCC->CFGR & RCC_CFGR_SW); - 8001a20: 4b12 ldr r3, [pc, #72] @ (8001a6c ) - 8001a22: 689b ldr r3, [r3, #8] - 8001a24: f003 0203 and.w r2, r3, #3 - 8001a28: 687b ldr r3, [r7, #4] - 8001a2a: 605a str r2, [r3, #4] + 8001a58: 4b12 ldr r3, [pc, #72] @ (8001aa4 ) + 8001a5a: 689b ldr r3, [r3, #8] + 8001a5c: f003 0203 and.w r2, r3, #3 + 8001a60: 687b ldr r3, [r7, #4] + 8001a62: 605a str r2, [r3, #4] /* Get the HCLK configuration ----------------------------------------------*/ RCC_ClkInitStruct->AHBCLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_HPRE); - 8001a2c: 4b0f ldr r3, [pc, #60] @ (8001a6c ) - 8001a2e: 689b ldr r3, [r3, #8] - 8001a30: f003 02f0 and.w r2, r3, #240 @ 0xf0 - 8001a34: 687b ldr r3, [r7, #4] - 8001a36: 609a str r2, [r3, #8] + 8001a64: 4b0f ldr r3, [pc, #60] @ (8001aa4 ) + 8001a66: 689b ldr r3, [r3, #8] + 8001a68: f003 02f0 and.w r2, r3, #240 @ 0xf0 + 8001a6c: 687b ldr r3, [r7, #4] + 8001a6e: 609a str r2, [r3, #8] /* Get the APB1 configuration ----------------------------------------------*/ RCC_ClkInitStruct->APB1CLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_PPRE1); - 8001a38: 4b0c ldr r3, [pc, #48] @ (8001a6c ) - 8001a3a: 689b ldr r3, [r3, #8] - 8001a3c: f403 52e0 and.w r2, r3, #7168 @ 0x1c00 - 8001a40: 687b ldr r3, [r7, #4] - 8001a42: 60da str r2, [r3, #12] + 8001a70: 4b0c ldr r3, [pc, #48] @ (8001aa4 ) + 8001a72: 689b ldr r3, [r3, #8] + 8001a74: f403 52e0 and.w r2, r3, #7168 @ 0x1c00 + 8001a78: 687b ldr r3, [r7, #4] + 8001a7a: 60da str r2, [r3, #12] /* Get the APB2 configuration ----------------------------------------------*/ RCC_ClkInitStruct->APB2CLKDivider = (uint32_t)((RCC->CFGR & RCC_CFGR_PPRE2) >> 3U); - 8001a44: 4b09 ldr r3, [pc, #36] @ (8001a6c ) - 8001a46: 689b ldr r3, [r3, #8] - 8001a48: 08db lsrs r3, r3, #3 - 8001a4a: f403 52e0 and.w r2, r3, #7168 @ 0x1c00 - 8001a4e: 687b ldr r3, [r7, #4] - 8001a50: 611a str r2, [r3, #16] + 8001a7c: 4b09 ldr r3, [pc, #36] @ (8001aa4 ) + 8001a7e: 689b ldr r3, [r3, #8] + 8001a80: 08db lsrs r3, r3, #3 + 8001a82: f403 52e0 and.w r2, r3, #7168 @ 0x1c00 + 8001a86: 687b ldr r3, [r7, #4] + 8001a88: 611a str r2, [r3, #16] /* Get the Flash Wait State (Latency) configuration ------------------------*/ *pFLatency = (uint32_t)(FLASH->ACR & FLASH_ACR_LATENCY); - 8001a52: 4b07 ldr r3, [pc, #28] @ (8001a70 ) - 8001a54: 681b ldr r3, [r3, #0] - 8001a56: f003 020f and.w r2, r3, #15 - 8001a5a: 683b ldr r3, [r7, #0] - 8001a5c: 601a str r2, [r3, #0] + 8001a8a: 4b07 ldr r3, [pc, #28] @ (8001aa8 ) + 8001a8c: 681b ldr r3, [r3, #0] + 8001a8e: f003 020f and.w r2, r3, #15 + 8001a92: 683b ldr r3, [r7, #0] + 8001a94: 601a str r2, [r3, #0] } - 8001a5e: bf00 nop - 8001a60: 370c adds r7, #12 - 8001a62: 46bd mov sp, r7 - 8001a64: f85d 7b04 ldr.w r7, [sp], #4 - 8001a68: 4770 bx lr - 8001a6a: bf00 nop - 8001a6c: 40023800 .word 0x40023800 - 8001a70: 40023c00 .word 0x40023c00 + 8001a96: bf00 nop + 8001a98: 370c adds r7, #12 + 8001a9a: 46bd mov sp, r7 + 8001a9c: f85d 7b04 ldr.w r7, [sp], #4 + 8001aa0: 4770 bx lr + 8001aa2: bf00 nop + 8001aa4: 40023800 .word 0x40023800 + 8001aa8: 40023c00 .word 0x40023c00 -08001a74 : +08001aac : * 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) { - 8001a74: b580 push {r7, lr} - 8001a76: b082 sub sp, #8 - 8001a78: af00 add r7, sp, #0 - 8001a7a: 6078 str r0, [r7, #4] + 8001aac: b580 push {r7, lr} + 8001aae: b082 sub sp, #8 + 8001ab0: af00 add r7, sp, #0 + 8001ab2: 6078 str r0, [r7, #4] /* Check the TIM handle allocation */ if (htim == NULL) - 8001a7c: 687b ldr r3, [r7, #4] - 8001a7e: 2b00 cmp r3, #0 - 8001a80: d101 bne.n 8001a86 + 8001ab4: 687b ldr r3, [r7, #4] + 8001ab6: 2b00 cmp r3, #0 + 8001ab8: d101 bne.n 8001abe { return HAL_ERROR; - 8001a82: 2301 movs r3, #1 - 8001a84: e041 b.n 8001b0a + 8001aba: 2301 movs r3, #1 + 8001abc: e041 b.n 8001b42 assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); if (htim->State == HAL_TIM_STATE_RESET) - 8001a86: 687b ldr r3, [r7, #4] - 8001a88: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 8001a8c: b2db uxtb r3, r3 - 8001a8e: 2b00 cmp r3, #0 - 8001a90: d106 bne.n 8001aa0 + 8001abe: 687b ldr r3, [r7, #4] + 8001ac0: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8001ac4: b2db uxtb r3, r3 + 8001ac6: 2b00 cmp r3, #0 + 8001ac8: d106 bne.n 8001ad8 { /* Allocate lock resource and initialize it */ htim->Lock = HAL_UNLOCKED; - 8001a92: 687b ldr r3, [r7, #4] - 8001a94: 2200 movs r2, #0 - 8001a96: f883 203c strb.w r2, [r3, #60] @ 0x3c + 8001aca: 687b ldr r3, [r7, #4] + 8001acc: 2200 movs r2, #0 + 8001ace: 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); - 8001a9a: 6878 ldr r0, [r7, #4] - 8001a9c: f7fe ff32 bl 8000904 + 8001ad2: 6878 ldr r0, [r7, #4] + 8001ad4: f7fe ff3e bl 8000954 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; - 8001aa0: 687b ldr r3, [r7, #4] - 8001aa2: 2202 movs r2, #2 - 8001aa4: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8001ad8: 687b ldr r3, [r7, #4] + 8001ada: 2202 movs r2, #2 + 8001adc: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Set the Time Base configuration */ TIM_Base_SetConfig(htim->Instance, &htim->Init); - 8001aa8: 687b ldr r3, [r7, #4] - 8001aaa: 681a ldr r2, [r3, #0] - 8001aac: 687b ldr r3, [r7, #4] - 8001aae: 3304 adds r3, #4 - 8001ab0: 4619 mov r1, r3 - 8001ab2: 4610 mov r0, r2 - 8001ab4: f000 f9c0 bl 8001e38 + 8001ae0: 687b ldr r3, [r7, #4] + 8001ae2: 681a ldr r2, [r3, #0] + 8001ae4: 687b ldr r3, [r7, #4] + 8001ae6: 3304 adds r3, #4 + 8001ae8: 4619 mov r1, r3 + 8001aea: 4610 mov r0, r2 + 8001aec: f000 f9c0 bl 8001e70 /* Initialize the DMA burst operation state */ htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 8001ab8: 687b ldr r3, [r7, #4] - 8001aba: 2201 movs r2, #1 - 8001abc: f883 2046 strb.w r2, [r3, #70] @ 0x46 + 8001af0: 687b ldr r3, [r7, #4] + 8001af2: 2201 movs r2, #1 + 8001af4: f883 2046 strb.w r2, [r3, #70] @ 0x46 /* Initialize the TIM channels state */ TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8001ac0: 687b ldr r3, [r7, #4] - 8001ac2: 2201 movs r2, #1 - 8001ac4: f883 203e strb.w r2, [r3, #62] @ 0x3e - 8001ac8: 687b ldr r3, [r7, #4] - 8001aca: 2201 movs r2, #1 - 8001acc: f883 203f strb.w r2, [r3, #63] @ 0x3f - 8001ad0: 687b ldr r3, [r7, #4] - 8001ad2: 2201 movs r2, #1 - 8001ad4: f883 2040 strb.w r2, [r3, #64] @ 0x40 - 8001ad8: 687b ldr r3, [r7, #4] - 8001ada: 2201 movs r2, #1 - 8001adc: f883 2041 strb.w r2, [r3, #65] @ 0x41 - TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8001ae0: 687b ldr r3, [r7, #4] - 8001ae2: 2201 movs r2, #1 - 8001ae4: f883 2042 strb.w r2, [r3, #66] @ 0x42 - 8001ae8: 687b ldr r3, [r7, #4] - 8001aea: 2201 movs r2, #1 - 8001aec: f883 2043 strb.w r2, [r3, #67] @ 0x43 - 8001af0: 687b ldr r3, [r7, #4] - 8001af2: 2201 movs r2, #1 - 8001af4: f883 2044 strb.w r2, [r3, #68] @ 0x44 8001af8: 687b ldr r3, [r7, #4] 8001afa: 2201 movs r2, #1 - 8001afc: f883 2045 strb.w r2, [r3, #69] @ 0x45 + 8001afc: f883 203e strb.w r2, [r3, #62] @ 0x3e + 8001b00: 687b ldr r3, [r7, #4] + 8001b02: 2201 movs r2, #1 + 8001b04: f883 203f strb.w r2, [r3, #63] @ 0x3f + 8001b08: 687b ldr r3, [r7, #4] + 8001b0a: 2201 movs r2, #1 + 8001b0c: f883 2040 strb.w r2, [r3, #64] @ 0x40 + 8001b10: 687b ldr r3, [r7, #4] + 8001b12: 2201 movs r2, #1 + 8001b14: f883 2041 strb.w r2, [r3, #65] @ 0x41 + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8001b18: 687b ldr r3, [r7, #4] + 8001b1a: 2201 movs r2, #1 + 8001b1c: f883 2042 strb.w r2, [r3, #66] @ 0x42 + 8001b20: 687b ldr r3, [r7, #4] + 8001b22: 2201 movs r2, #1 + 8001b24: f883 2043 strb.w r2, [r3, #67] @ 0x43 + 8001b28: 687b ldr r3, [r7, #4] + 8001b2a: 2201 movs r2, #1 + 8001b2c: f883 2044 strb.w r2, [r3, #68] @ 0x44 + 8001b30: 687b ldr r3, [r7, #4] + 8001b32: 2201 movs r2, #1 + 8001b34: f883 2045 strb.w r2, [r3, #69] @ 0x45 /* Initialize the TIM state*/ htim->State = HAL_TIM_STATE_READY; - 8001b00: 687b ldr r3, [r7, #4] - 8001b02: 2201 movs r2, #1 - 8001b04: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8001b38: 687b ldr r3, [r7, #4] + 8001b3a: 2201 movs r2, #1 + 8001b3c: f883 203d strb.w r2, [r3, #61] @ 0x3d return HAL_OK; - 8001b08: 2300 movs r3, #0 + 8001b40: 2300 movs r3, #0 } - 8001b0a: 4618 mov r0, r3 - 8001b0c: 3708 adds r7, #8 - 8001b0e: 46bd mov sp, r7 - 8001b10: bd80 pop {r7, pc} + 8001b42: 4618 mov r0, r3 + 8001b44: 3708 adds r7, #8 + 8001b46: 46bd mov sp, r7 + 8001b48: bd80 pop {r7, pc} ... -08001b14 : +08001b4c : * @brief Starts the TIM Base generation in interrupt mode. * @param htim TIM Base handle * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim) { - 8001b14: b480 push {r7} - 8001b16: b085 sub sp, #20 - 8001b18: af00 add r7, sp, #0 - 8001b1a: 6078 str r0, [r7, #4] + 8001b4c: b480 push {r7} + 8001b4e: b085 sub sp, #20 + 8001b50: af00 add r7, sp, #0 + 8001b52: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_TIM_INSTANCE(htim->Instance)); /* Check the TIM state */ if (htim->State != HAL_TIM_STATE_READY) - 8001b1c: 687b ldr r3, [r7, #4] - 8001b1e: f893 303d ldrb.w r3, [r3, #61] @ 0x3d - 8001b22: b2db uxtb r3, r3 - 8001b24: 2b01 cmp r3, #1 - 8001b26: d001 beq.n 8001b2c + 8001b54: 687b ldr r3, [r7, #4] + 8001b56: f893 303d ldrb.w r3, [r3, #61] @ 0x3d + 8001b5a: b2db uxtb r3, r3 + 8001b5c: 2b01 cmp r3, #1 + 8001b5e: d001 beq.n 8001b64 { return HAL_ERROR; - 8001b28: 2301 movs r3, #1 - 8001b2a: e04e b.n 8001bca + 8001b60: 2301 movs r3, #1 + 8001b62: e04e b.n 8001c02 } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; - 8001b2c: 687b ldr r3, [r7, #4] - 8001b2e: 2202 movs r2, #2 - 8001b30: f883 203d strb.w r2, [r3, #61] @ 0x3d + 8001b64: 687b ldr r3, [r7, #4] + 8001b66: 2202 movs r2, #2 + 8001b68: f883 203d strb.w r2, [r3, #61] @ 0x3d /* Enable the TIM Update interrupt */ __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); - 8001b34: 687b ldr r3, [r7, #4] - 8001b36: 681b ldr r3, [r3, #0] - 8001b38: 68da ldr r2, [r3, #12] - 8001b3a: 687b ldr r3, [r7, #4] - 8001b3c: 681b ldr r3, [r3, #0] - 8001b3e: f042 0201 orr.w r2, r2, #1 - 8001b42: 60da str r2, [r3, #12] + 8001b6c: 687b ldr r3, [r7, #4] + 8001b6e: 681b ldr r3, [r3, #0] + 8001b70: 68da ldr r2, [r3, #12] + 8001b72: 687b ldr r3, [r7, #4] + 8001b74: 681b ldr r3, [r3, #0] + 8001b76: f042 0201 orr.w r2, r2, #1 + 8001b7a: 60da str r2, [r3, #12] /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 8001b44: 687b ldr r3, [r7, #4] - 8001b46: 681b ldr r3, [r3, #0] - 8001b48: 4a23 ldr r2, [pc, #140] @ (8001bd8 ) - 8001b4a: 4293 cmp r3, r2 - 8001b4c: d022 beq.n 8001b94 - 8001b4e: 687b ldr r3, [r7, #4] - 8001b50: 681b ldr r3, [r3, #0] - 8001b52: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8001b56: d01d beq.n 8001b94 - 8001b58: 687b ldr r3, [r7, #4] - 8001b5a: 681b ldr r3, [r3, #0] - 8001b5c: 4a1f ldr r2, [pc, #124] @ (8001bdc ) - 8001b5e: 4293 cmp r3, r2 - 8001b60: d018 beq.n 8001b94 - 8001b62: 687b ldr r3, [r7, #4] - 8001b64: 681b ldr r3, [r3, #0] - 8001b66: 4a1e ldr r2, [pc, #120] @ (8001be0 ) - 8001b68: 4293 cmp r3, r2 - 8001b6a: d013 beq.n 8001b94 - 8001b6c: 687b ldr r3, [r7, #4] - 8001b6e: 681b ldr r3, [r3, #0] - 8001b70: 4a1c ldr r2, [pc, #112] @ (8001be4 ) - 8001b72: 4293 cmp r3, r2 - 8001b74: d00e beq.n 8001b94 - 8001b76: 687b ldr r3, [r7, #4] - 8001b78: 681b ldr r3, [r3, #0] - 8001b7a: 4a1b ldr r2, [pc, #108] @ (8001be8 ) - 8001b7c: 4293 cmp r3, r2 - 8001b7e: d009 beq.n 8001b94 - 8001b80: 687b ldr r3, [r7, #4] - 8001b82: 681b ldr r3, [r3, #0] - 8001b84: 4a19 ldr r2, [pc, #100] @ (8001bec ) - 8001b86: 4293 cmp r3, r2 - 8001b88: d004 beq.n 8001b94 - 8001b8a: 687b ldr r3, [r7, #4] - 8001b8c: 681b ldr r3, [r3, #0] - 8001b8e: 4a18 ldr r2, [pc, #96] @ (8001bf0 ) - 8001b90: 4293 cmp r3, r2 - 8001b92: d111 bne.n 8001bb8 + 8001b7c: 687b ldr r3, [r7, #4] + 8001b7e: 681b ldr r3, [r3, #0] + 8001b80: 4a23 ldr r2, [pc, #140] @ (8001c10 ) + 8001b82: 4293 cmp r3, r2 + 8001b84: d022 beq.n 8001bcc + 8001b86: 687b ldr r3, [r7, #4] + 8001b88: 681b ldr r3, [r3, #0] + 8001b8a: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8001b8e: d01d beq.n 8001bcc + 8001b90: 687b ldr r3, [r7, #4] + 8001b92: 681b ldr r3, [r3, #0] + 8001b94: 4a1f ldr r2, [pc, #124] @ (8001c14 ) + 8001b96: 4293 cmp r3, r2 + 8001b98: d018 beq.n 8001bcc + 8001b9a: 687b ldr r3, [r7, #4] + 8001b9c: 681b ldr r3, [r3, #0] + 8001b9e: 4a1e ldr r2, [pc, #120] @ (8001c18 ) + 8001ba0: 4293 cmp r3, r2 + 8001ba2: d013 beq.n 8001bcc + 8001ba4: 687b ldr r3, [r7, #4] + 8001ba6: 681b ldr r3, [r3, #0] + 8001ba8: 4a1c ldr r2, [pc, #112] @ (8001c1c ) + 8001baa: 4293 cmp r3, r2 + 8001bac: d00e beq.n 8001bcc + 8001bae: 687b ldr r3, [r7, #4] + 8001bb0: 681b ldr r3, [r3, #0] + 8001bb2: 4a1b ldr r2, [pc, #108] @ (8001c20 ) + 8001bb4: 4293 cmp r3, r2 + 8001bb6: d009 beq.n 8001bcc + 8001bb8: 687b ldr r3, [r7, #4] + 8001bba: 681b ldr r3, [r3, #0] + 8001bbc: 4a19 ldr r2, [pc, #100] @ (8001c24 ) + 8001bbe: 4293 cmp r3, r2 + 8001bc0: d004 beq.n 8001bcc + 8001bc2: 687b ldr r3, [r7, #4] + 8001bc4: 681b ldr r3, [r3, #0] + 8001bc6: 4a18 ldr r2, [pc, #96] @ (8001c28 ) + 8001bc8: 4293 cmp r3, r2 + 8001bca: d111 bne.n 8001bf0 { tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; - 8001b94: 687b ldr r3, [r7, #4] - 8001b96: 681b ldr r3, [r3, #0] - 8001b98: 689b ldr r3, [r3, #8] - 8001b9a: f003 0307 and.w r3, r3, #7 - 8001b9e: 60fb str r3, [r7, #12] + 8001bcc: 687b ldr r3, [r7, #4] + 8001bce: 681b ldr r3, [r3, #0] + 8001bd0: 689b ldr r3, [r3, #8] + 8001bd2: f003 0307 and.w r3, r3, #7 + 8001bd6: 60fb str r3, [r7, #12] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 8001ba0: 68fb ldr r3, [r7, #12] - 8001ba2: 2b06 cmp r3, #6 - 8001ba4: d010 beq.n 8001bc8 + 8001bd8: 68fb ldr r3, [r7, #12] + 8001bda: 2b06 cmp r3, #6 + 8001bdc: d010 beq.n 8001c00 { __HAL_TIM_ENABLE(htim); - 8001ba6: 687b ldr r3, [r7, #4] - 8001ba8: 681b ldr r3, [r3, #0] - 8001baa: 681a ldr r2, [r3, #0] - 8001bac: 687b ldr r3, [r7, #4] - 8001bae: 681b ldr r3, [r3, #0] - 8001bb0: f042 0201 orr.w r2, r2, #1 - 8001bb4: 601a str r2, [r3, #0] + 8001bde: 687b ldr r3, [r7, #4] + 8001be0: 681b ldr r3, [r3, #0] + 8001be2: 681a ldr r2, [r3, #0] + 8001be4: 687b ldr r3, [r7, #4] + 8001be6: 681b ldr r3, [r3, #0] + 8001be8: f042 0201 orr.w r2, r2, #1 + 8001bec: 601a str r2, [r3, #0] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 8001bb6: e007 b.n 8001bc8 + 8001bee: e007 b.n 8001c00 } } else { __HAL_TIM_ENABLE(htim); - 8001bb8: 687b ldr r3, [r7, #4] - 8001bba: 681b ldr r3, [r3, #0] - 8001bbc: 681a ldr r2, [r3, #0] - 8001bbe: 687b ldr r3, [r7, #4] - 8001bc0: 681b ldr r3, [r3, #0] - 8001bc2: f042 0201 orr.w r2, r2, #1 - 8001bc6: 601a str r2, [r3, #0] + 8001bf0: 687b ldr r3, [r7, #4] + 8001bf2: 681b ldr r3, [r3, #0] + 8001bf4: 681a ldr r2, [r3, #0] + 8001bf6: 687b ldr r3, [r7, #4] + 8001bf8: 681b ldr r3, [r3, #0] + 8001bfa: f042 0201 orr.w r2, r2, #1 + 8001bfe: 601a str r2, [r3, #0] } /* Return function status */ return HAL_OK; - 8001bc8: 2300 movs r3, #0 + 8001c00: 2300 movs r3, #0 } - 8001bca: 4618 mov r0, r3 - 8001bcc: 3714 adds r7, #20 - 8001bce: 46bd mov sp, r7 - 8001bd0: f85d 7b04 ldr.w r7, [sp], #4 - 8001bd4: 4770 bx lr - 8001bd6: bf00 nop - 8001bd8: 40010000 .word 0x40010000 - 8001bdc: 40000400 .word 0x40000400 - 8001be0: 40000800 .word 0x40000800 - 8001be4: 40000c00 .word 0x40000c00 - 8001be8: 40010400 .word 0x40010400 - 8001bec: 40014000 .word 0x40014000 - 8001bf0: 40001800 .word 0x40001800 + 8001c02: 4618 mov r0, r3 + 8001c04: 3714 adds r7, #20 + 8001c06: 46bd mov sp, r7 + 8001c08: f85d 7b04 ldr.w r7, [sp], #4 + 8001c0c: 4770 bx lr + 8001c0e: bf00 nop + 8001c10: 40010000 .word 0x40010000 + 8001c14: 40000400 .word 0x40000400 + 8001c18: 40000800 .word 0x40000800 + 8001c1c: 40000c00 .word 0x40000c00 + 8001c20: 40010400 .word 0x40010400 + 8001c24: 40014000 .word 0x40014000 + 8001c28: 40001800 .word 0x40001800 -08001bf4 : +08001c2c : * @brief This function handles TIM interrupts requests. * @param htim TIM handle * @retval None */ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) { - 8001bf4: b580 push {r7, lr} - 8001bf6: b084 sub sp, #16 - 8001bf8: af00 add r7, sp, #0 - 8001bfa: 6078 str r0, [r7, #4] + 8001c2c: b580 push {r7, lr} + 8001c2e: b084 sub sp, #16 + 8001c30: af00 add r7, sp, #0 + 8001c32: 6078 str r0, [r7, #4] uint32_t itsource = htim->Instance->DIER; - 8001bfc: 687b ldr r3, [r7, #4] - 8001bfe: 681b ldr r3, [r3, #0] - 8001c00: 68db ldr r3, [r3, #12] - 8001c02: 60fb str r3, [r7, #12] + 8001c34: 687b ldr r3, [r7, #4] + 8001c36: 681b ldr r3, [r3, #0] + 8001c38: 68db ldr r3, [r3, #12] + 8001c3a: 60fb str r3, [r7, #12] uint32_t itflag = htim->Instance->SR; - 8001c04: 687b ldr r3, [r7, #4] - 8001c06: 681b ldr r3, [r3, #0] - 8001c08: 691b ldr r3, [r3, #16] - 8001c0a: 60bb str r3, [r7, #8] + 8001c3c: 687b ldr r3, [r7, #4] + 8001c3e: 681b ldr r3, [r3, #0] + 8001c40: 691b ldr r3, [r3, #16] + 8001c42: 60bb str r3, [r7, #8] /* Capture compare 1 event */ if ((itflag & (TIM_FLAG_CC1)) == (TIM_FLAG_CC1)) - 8001c0c: 68bb ldr r3, [r7, #8] - 8001c0e: f003 0302 and.w r3, r3, #2 - 8001c12: 2b00 cmp r3, #0 - 8001c14: d020 beq.n 8001c58 + 8001c44: 68bb ldr r3, [r7, #8] + 8001c46: f003 0302 and.w r3, r3, #2 + 8001c4a: 2b00 cmp r3, #0 + 8001c4c: d020 beq.n 8001c90 { if ((itsource & (TIM_IT_CC1)) == (TIM_IT_CC1)) - 8001c16: 68fb ldr r3, [r7, #12] - 8001c18: f003 0302 and.w r3, r3, #2 - 8001c1c: 2b00 cmp r3, #0 - 8001c1e: d01b beq.n 8001c58 + 8001c4e: 68fb ldr r3, [r7, #12] + 8001c50: f003 0302 and.w r3, r3, #2 + 8001c54: 2b00 cmp r3, #0 + 8001c56: d01b beq.n 8001c90 { { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC1); - 8001c20: 687b ldr r3, [r7, #4] - 8001c22: 681b ldr r3, [r3, #0] - 8001c24: f06f 0202 mvn.w r2, #2 - 8001c28: 611a str r2, [r3, #16] + 8001c58: 687b ldr r3, [r7, #4] + 8001c5a: 681b ldr r3, [r3, #0] + 8001c5c: f06f 0202 mvn.w r2, #2 + 8001c60: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; - 8001c2a: 687b ldr r3, [r7, #4] - 8001c2c: 2201 movs r2, #1 - 8001c2e: 771a strb r2, [r3, #28] + 8001c62: 687b ldr r3, [r7, #4] + 8001c64: 2201 movs r2, #1 + 8001c66: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) - 8001c30: 687b ldr r3, [r7, #4] - 8001c32: 681b ldr r3, [r3, #0] - 8001c34: 699b ldr r3, [r3, #24] - 8001c36: f003 0303 and.w r3, r3, #3 - 8001c3a: 2b00 cmp r3, #0 - 8001c3c: d003 beq.n 8001c46 + 8001c68: 687b ldr r3, [r7, #4] + 8001c6a: 681b ldr r3, [r3, #0] + 8001c6c: 699b ldr r3, [r3, #24] + 8001c6e: f003 0303 and.w r3, r3, #3 + 8001c72: 2b00 cmp r3, #0 + 8001c74: d003 beq.n 8001c7e { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 8001c3e: 6878 ldr r0, [r7, #4] - 8001c40: f000 f8dc bl 8001dfc - 8001c44: e005 b.n 8001c52 + 8001c76: 6878 ldr r0, [r7, #4] + 8001c78: f000 f8dc bl 8001e34 + 8001c7c: e005 b.n 8001c8a { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 8001c46: 6878 ldr r0, [r7, #4] - 8001c48: f000 f8ce bl 8001de8 + 8001c7e: 6878 ldr r0, [r7, #4] + 8001c80: f000 f8ce bl 8001e20 HAL_TIM_PWM_PulseFinishedCallback(htim); - 8001c4c: 6878 ldr r0, [r7, #4] - 8001c4e: f000 f8df bl 8001e10 + 8001c84: 6878 ldr r0, [r7, #4] + 8001c86: f000 f8df bl 8001e48 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8001c52: 687b ldr r3, [r7, #4] - 8001c54: 2200 movs r2, #0 - 8001c56: 771a strb r2, [r3, #28] + 8001c8a: 687b ldr r3, [r7, #4] + 8001c8c: 2200 movs r2, #0 + 8001c8e: 771a strb r2, [r3, #28] } } } /* Capture compare 2 event */ if ((itflag & (TIM_FLAG_CC2)) == (TIM_FLAG_CC2)) - 8001c58: 68bb ldr r3, [r7, #8] - 8001c5a: f003 0304 and.w r3, r3, #4 - 8001c5e: 2b00 cmp r3, #0 - 8001c60: d020 beq.n 8001ca4 + 8001c90: 68bb ldr r3, [r7, #8] + 8001c92: f003 0304 and.w r3, r3, #4 + 8001c96: 2b00 cmp r3, #0 + 8001c98: d020 beq.n 8001cdc { if ((itsource & (TIM_IT_CC2)) == (TIM_IT_CC2)) - 8001c62: 68fb ldr r3, [r7, #12] - 8001c64: f003 0304 and.w r3, r3, #4 - 8001c68: 2b00 cmp r3, #0 - 8001c6a: d01b beq.n 8001ca4 + 8001c9a: 68fb ldr r3, [r7, #12] + 8001c9c: f003 0304 and.w r3, r3, #4 + 8001ca0: 2b00 cmp r3, #0 + 8001ca2: d01b beq.n 8001cdc { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC2); - 8001c6c: 687b ldr r3, [r7, #4] - 8001c6e: 681b ldr r3, [r3, #0] - 8001c70: f06f 0204 mvn.w r2, #4 - 8001c74: 611a str r2, [r3, #16] + 8001ca4: 687b ldr r3, [r7, #4] + 8001ca6: 681b ldr r3, [r3, #0] + 8001ca8: f06f 0204 mvn.w r2, #4 + 8001cac: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; - 8001c76: 687b ldr r3, [r7, #4] - 8001c78: 2202 movs r2, #2 - 8001c7a: 771a strb r2, [r3, #28] + 8001cae: 687b ldr r3, [r7, #4] + 8001cb0: 2202 movs r2, #2 + 8001cb2: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) - 8001c7c: 687b ldr r3, [r7, #4] - 8001c7e: 681b ldr r3, [r3, #0] - 8001c80: 699b ldr r3, [r3, #24] - 8001c82: f403 7340 and.w r3, r3, #768 @ 0x300 - 8001c86: 2b00 cmp r3, #0 - 8001c88: d003 beq.n 8001c92 + 8001cb4: 687b ldr r3, [r7, #4] + 8001cb6: 681b ldr r3, [r3, #0] + 8001cb8: 699b ldr r3, [r3, #24] + 8001cba: f403 7340 and.w r3, r3, #768 @ 0x300 + 8001cbe: 2b00 cmp r3, #0 + 8001cc0: d003 beq.n 8001cca { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 8001c8a: 6878 ldr r0, [r7, #4] - 8001c8c: f000 f8b6 bl 8001dfc - 8001c90: e005 b.n 8001c9e + 8001cc2: 6878 ldr r0, [r7, #4] + 8001cc4: f000 f8b6 bl 8001e34 + 8001cc8: e005 b.n 8001cd6 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 8001c92: 6878 ldr r0, [r7, #4] - 8001c94: f000 f8a8 bl 8001de8 + 8001cca: 6878 ldr r0, [r7, #4] + 8001ccc: f000 f8a8 bl 8001e20 HAL_TIM_PWM_PulseFinishedCallback(htim); - 8001c98: 6878 ldr r0, [r7, #4] - 8001c9a: f000 f8b9 bl 8001e10 + 8001cd0: 6878 ldr r0, [r7, #4] + 8001cd2: f000 f8b9 bl 8001e48 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8001c9e: 687b ldr r3, [r7, #4] - 8001ca0: 2200 movs r2, #0 - 8001ca2: 771a strb r2, [r3, #28] + 8001cd6: 687b ldr r3, [r7, #4] + 8001cd8: 2200 movs r2, #0 + 8001cda: 771a strb r2, [r3, #28] } } /* Capture compare 3 event */ if ((itflag & (TIM_FLAG_CC3)) == (TIM_FLAG_CC3)) - 8001ca4: 68bb ldr r3, [r7, #8] - 8001ca6: f003 0308 and.w r3, r3, #8 - 8001caa: 2b00 cmp r3, #0 - 8001cac: d020 beq.n 8001cf0 + 8001cdc: 68bb ldr r3, [r7, #8] + 8001cde: f003 0308 and.w r3, r3, #8 + 8001ce2: 2b00 cmp r3, #0 + 8001ce4: d020 beq.n 8001d28 { if ((itsource & (TIM_IT_CC3)) == (TIM_IT_CC3)) - 8001cae: 68fb ldr r3, [r7, #12] - 8001cb0: f003 0308 and.w r3, r3, #8 - 8001cb4: 2b00 cmp r3, #0 - 8001cb6: d01b beq.n 8001cf0 + 8001ce6: 68fb ldr r3, [r7, #12] + 8001ce8: f003 0308 and.w r3, r3, #8 + 8001cec: 2b00 cmp r3, #0 + 8001cee: d01b beq.n 8001d28 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC3); - 8001cb8: 687b ldr r3, [r7, #4] - 8001cba: 681b ldr r3, [r3, #0] - 8001cbc: f06f 0208 mvn.w r2, #8 - 8001cc0: 611a str r2, [r3, #16] + 8001cf0: 687b ldr r3, [r7, #4] + 8001cf2: 681b ldr r3, [r3, #0] + 8001cf4: f06f 0208 mvn.w r2, #8 + 8001cf8: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; - 8001cc2: 687b ldr r3, [r7, #4] - 8001cc4: 2204 movs r2, #4 - 8001cc6: 771a strb r2, [r3, #28] + 8001cfa: 687b ldr r3, [r7, #4] + 8001cfc: 2204 movs r2, #4 + 8001cfe: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) - 8001cc8: 687b ldr r3, [r7, #4] - 8001cca: 681b ldr r3, [r3, #0] - 8001ccc: 69db ldr r3, [r3, #28] - 8001cce: f003 0303 and.w r3, r3, #3 - 8001cd2: 2b00 cmp r3, #0 - 8001cd4: d003 beq.n 8001cde + 8001d00: 687b ldr r3, [r7, #4] + 8001d02: 681b ldr r3, [r3, #0] + 8001d04: 69db ldr r3, [r3, #28] + 8001d06: f003 0303 and.w r3, r3, #3 + 8001d0a: 2b00 cmp r3, #0 + 8001d0c: d003 beq.n 8001d16 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 8001cd6: 6878 ldr r0, [r7, #4] - 8001cd8: f000 f890 bl 8001dfc - 8001cdc: e005 b.n 8001cea + 8001d0e: 6878 ldr r0, [r7, #4] + 8001d10: f000 f890 bl 8001e34 + 8001d14: e005 b.n 8001d22 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 8001cde: 6878 ldr r0, [r7, #4] - 8001ce0: f000 f882 bl 8001de8 + 8001d16: 6878 ldr r0, [r7, #4] + 8001d18: f000 f882 bl 8001e20 HAL_TIM_PWM_PulseFinishedCallback(htim); - 8001ce4: 6878 ldr r0, [r7, #4] - 8001ce6: f000 f893 bl 8001e10 + 8001d1c: 6878 ldr r0, [r7, #4] + 8001d1e: f000 f893 bl 8001e48 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8001cea: 687b ldr r3, [r7, #4] - 8001cec: 2200 movs r2, #0 - 8001cee: 771a strb r2, [r3, #28] + 8001d22: 687b ldr r3, [r7, #4] + 8001d24: 2200 movs r2, #0 + 8001d26: 771a strb r2, [r3, #28] } } /* Capture compare 4 event */ if ((itflag & (TIM_FLAG_CC4)) == (TIM_FLAG_CC4)) - 8001cf0: 68bb ldr r3, [r7, #8] - 8001cf2: f003 0310 and.w r3, r3, #16 - 8001cf6: 2b00 cmp r3, #0 - 8001cf8: d020 beq.n 8001d3c + 8001d28: 68bb ldr r3, [r7, #8] + 8001d2a: f003 0310 and.w r3, r3, #16 + 8001d2e: 2b00 cmp r3, #0 + 8001d30: d020 beq.n 8001d74 { if ((itsource & (TIM_IT_CC4)) == (TIM_IT_CC4)) - 8001cfa: 68fb ldr r3, [r7, #12] - 8001cfc: f003 0310 and.w r3, r3, #16 - 8001d00: 2b00 cmp r3, #0 - 8001d02: d01b beq.n 8001d3c + 8001d32: 68fb ldr r3, [r7, #12] + 8001d34: f003 0310 and.w r3, r3, #16 + 8001d38: 2b00 cmp r3, #0 + 8001d3a: d01b beq.n 8001d74 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC4); - 8001d04: 687b ldr r3, [r7, #4] - 8001d06: 681b ldr r3, [r3, #0] - 8001d08: f06f 0210 mvn.w r2, #16 - 8001d0c: 611a str r2, [r3, #16] + 8001d3c: 687b ldr r3, [r7, #4] + 8001d3e: 681b ldr r3, [r3, #0] + 8001d40: f06f 0210 mvn.w r2, #16 + 8001d44: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; - 8001d0e: 687b ldr r3, [r7, #4] - 8001d10: 2208 movs r2, #8 - 8001d12: 771a strb r2, [r3, #28] + 8001d46: 687b ldr r3, [r7, #4] + 8001d48: 2208 movs r2, #8 + 8001d4a: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) - 8001d14: 687b ldr r3, [r7, #4] - 8001d16: 681b ldr r3, [r3, #0] - 8001d18: 69db ldr r3, [r3, #28] - 8001d1a: f403 7340 and.w r3, r3, #768 @ 0x300 - 8001d1e: 2b00 cmp r3, #0 - 8001d20: d003 beq.n 8001d2a + 8001d4c: 687b ldr r3, [r7, #4] + 8001d4e: 681b ldr r3, [r3, #0] + 8001d50: 69db ldr r3, [r3, #28] + 8001d52: f403 7340 and.w r3, r3, #768 @ 0x300 + 8001d56: 2b00 cmp r3, #0 + 8001d58: d003 beq.n 8001d62 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 8001d22: 6878 ldr r0, [r7, #4] - 8001d24: f000 f86a bl 8001dfc - 8001d28: e005 b.n 8001d36 + 8001d5a: 6878 ldr r0, [r7, #4] + 8001d5c: f000 f86a bl 8001e34 + 8001d60: e005 b.n 8001d6e { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 8001d2a: 6878 ldr r0, [r7, #4] - 8001d2c: f000 f85c bl 8001de8 + 8001d62: 6878 ldr r0, [r7, #4] + 8001d64: f000 f85c bl 8001e20 HAL_TIM_PWM_PulseFinishedCallback(htim); - 8001d30: 6878 ldr r0, [r7, #4] - 8001d32: f000 f86d bl 8001e10 + 8001d68: 6878 ldr r0, [r7, #4] + 8001d6a: f000 f86d bl 8001e48 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8001d36: 687b ldr r3, [r7, #4] - 8001d38: 2200 movs r2, #0 - 8001d3a: 771a strb r2, [r3, #28] + 8001d6e: 687b ldr r3, [r7, #4] + 8001d70: 2200 movs r2, #0 + 8001d72: 771a strb r2, [r3, #28] } } /* TIM Update event */ if ((itflag & (TIM_FLAG_UPDATE)) == (TIM_FLAG_UPDATE)) - 8001d3c: 68bb ldr r3, [r7, #8] - 8001d3e: f003 0301 and.w r3, r3, #1 - 8001d42: 2b00 cmp r3, #0 - 8001d44: d00c beq.n 8001d60 + 8001d74: 68bb ldr r3, [r7, #8] + 8001d76: f003 0301 and.w r3, r3, #1 + 8001d7a: 2b00 cmp r3, #0 + 8001d7c: d00c beq.n 8001d98 { if ((itsource & (TIM_IT_UPDATE)) == (TIM_IT_UPDATE)) - 8001d46: 68fb ldr r3, [r7, #12] - 8001d48: f003 0301 and.w r3, r3, #1 - 8001d4c: 2b00 cmp r3, #0 - 8001d4e: d007 beq.n 8001d60 + 8001d7e: 68fb ldr r3, [r7, #12] + 8001d80: f003 0301 and.w r3, r3, #1 + 8001d84: 2b00 cmp r3, #0 + 8001d86: d007 beq.n 8001d98 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_UPDATE); - 8001d50: 687b ldr r3, [r7, #4] - 8001d52: 681b ldr r3, [r3, #0] - 8001d54: f06f 0201 mvn.w r2, #1 - 8001d58: 611a str r2, [r3, #16] + 8001d88: 687b ldr r3, [r7, #4] + 8001d8a: 681b ldr r3, [r3, #0] + 8001d8c: f06f 0201 mvn.w r2, #1 + 8001d90: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->PeriodElapsedCallback(htim); #else HAL_TIM_PeriodElapsedCallback(htim); - 8001d5a: 6878 ldr r0, [r7, #4] - 8001d5c: f000 f83a bl 8001dd4 + 8001d92: 6878 ldr r0, [r7, #4] + 8001d94: f000 f83a bl 8001e0c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Break input event */ if ((itflag & (TIM_FLAG_BREAK)) == (TIM_FLAG_BREAK)) - 8001d60: 68bb ldr r3, [r7, #8] - 8001d62: f003 0380 and.w r3, r3, #128 @ 0x80 - 8001d66: 2b00 cmp r3, #0 - 8001d68: d00c beq.n 8001d84 + 8001d98: 68bb ldr r3, [r7, #8] + 8001d9a: f003 0380 and.w r3, r3, #128 @ 0x80 + 8001d9e: 2b00 cmp r3, #0 + 8001da0: d00c beq.n 8001dbc { if ((itsource & (TIM_IT_BREAK)) == (TIM_IT_BREAK)) - 8001d6a: 68fb ldr r3, [r7, #12] - 8001d6c: f003 0380 and.w r3, r3, #128 @ 0x80 - 8001d70: 2b00 cmp r3, #0 - 8001d72: d007 beq.n 8001d84 + 8001da2: 68fb ldr r3, [r7, #12] + 8001da4: f003 0380 and.w r3, r3, #128 @ 0x80 + 8001da8: 2b00 cmp r3, #0 + 8001daa: d007 beq.n 8001dbc { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK); - 8001d74: 687b ldr r3, [r7, #4] - 8001d76: 681b ldr r3, [r3, #0] - 8001d78: f06f 0280 mvn.w r2, #128 @ 0x80 - 8001d7c: 611a str r2, [r3, #16] + 8001dac: 687b ldr r3, [r7, #4] + 8001dae: 681b ldr r3, [r3, #0] + 8001db0: f06f 0280 mvn.w r2, #128 @ 0x80 + 8001db4: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->BreakCallback(htim); #else HAL_TIMEx_BreakCallback(htim); - 8001d7e: 6878 ldr r0, [r7, #4] - 8001d80: f000 f90a bl 8001f98 + 8001db6: 6878 ldr r0, [r7, #4] + 8001db8: f000 f90a bl 8001fd0 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Trigger detection event */ if ((itflag & (TIM_FLAG_TRIGGER)) == (TIM_FLAG_TRIGGER)) - 8001d84: 68bb ldr r3, [r7, #8] - 8001d86: f003 0340 and.w r3, r3, #64 @ 0x40 - 8001d8a: 2b00 cmp r3, #0 - 8001d8c: d00c beq.n 8001da8 + 8001dbc: 68bb ldr r3, [r7, #8] + 8001dbe: f003 0340 and.w r3, r3, #64 @ 0x40 + 8001dc2: 2b00 cmp r3, #0 + 8001dc4: d00c beq.n 8001de0 { if ((itsource & (TIM_IT_TRIGGER)) == (TIM_IT_TRIGGER)) - 8001d8e: 68fb ldr r3, [r7, #12] - 8001d90: f003 0340 and.w r3, r3, #64 @ 0x40 - 8001d94: 2b00 cmp r3, #0 - 8001d96: d007 beq.n 8001da8 + 8001dc6: 68fb ldr r3, [r7, #12] + 8001dc8: f003 0340 and.w r3, r3, #64 @ 0x40 + 8001dcc: 2b00 cmp r3, #0 + 8001dce: d007 beq.n 8001de0 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_TRIGGER); - 8001d98: 687b ldr r3, [r7, #4] - 8001d9a: 681b ldr r3, [r3, #0] - 8001d9c: f06f 0240 mvn.w r2, #64 @ 0x40 - 8001da0: 611a str r2, [r3, #16] + 8001dd0: 687b ldr r3, [r7, #4] + 8001dd2: 681b ldr r3, [r3, #0] + 8001dd4: f06f 0240 mvn.w r2, #64 @ 0x40 + 8001dd8: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->TriggerCallback(htim); #else HAL_TIM_TriggerCallback(htim); - 8001da2: 6878 ldr r0, [r7, #4] - 8001da4: f000 f83e bl 8001e24 + 8001dda: 6878 ldr r0, [r7, #4] + 8001ddc: f000 f83e bl 8001e5c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM commutation event */ if ((itflag & (TIM_FLAG_COM)) == (TIM_FLAG_COM)) - 8001da8: 68bb ldr r3, [r7, #8] - 8001daa: f003 0320 and.w r3, r3, #32 - 8001dae: 2b00 cmp r3, #0 - 8001db0: d00c beq.n 8001dcc + 8001de0: 68bb ldr r3, [r7, #8] + 8001de2: f003 0320 and.w r3, r3, #32 + 8001de6: 2b00 cmp r3, #0 + 8001de8: d00c beq.n 8001e04 { if ((itsource & (TIM_IT_COM)) == (TIM_IT_COM)) - 8001db2: 68fb ldr r3, [r7, #12] - 8001db4: f003 0320 and.w r3, r3, #32 - 8001db8: 2b00 cmp r3, #0 - 8001dba: d007 beq.n 8001dcc + 8001dea: 68fb ldr r3, [r7, #12] + 8001dec: f003 0320 and.w r3, r3, #32 + 8001df0: 2b00 cmp r3, #0 + 8001df2: d007 beq.n 8001e04 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_COM); - 8001dbc: 687b ldr r3, [r7, #4] - 8001dbe: 681b ldr r3, [r3, #0] - 8001dc0: f06f 0220 mvn.w r2, #32 - 8001dc4: 611a str r2, [r3, #16] + 8001df4: 687b ldr r3, [r7, #4] + 8001df6: 681b ldr r3, [r3, #0] + 8001df8: f06f 0220 mvn.w r2, #32 + 8001dfc: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->CommutationCallback(htim); #else HAL_TIMEx_CommutCallback(htim); - 8001dc6: 6878 ldr r0, [r7, #4] - 8001dc8: f000 f8dc bl 8001f84 + 8001dfe: 6878 ldr r0, [r7, #4] + 8001e00: f000 f8dc bl 8001fbc #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } } - 8001dcc: bf00 nop - 8001dce: 3710 adds r7, #16 - 8001dd0: 46bd mov sp, r7 - 8001dd2: bd80 pop {r7, pc} + 8001e04: bf00 nop + 8001e06: 3710 adds r7, #16 + 8001e08: 46bd mov sp, r7 + 8001e0a: bd80 pop {r7, pc} -08001dd4 : +08001e0c : * @brief Period elapsed callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { - 8001dd4: b480 push {r7} - 8001dd6: b083 sub sp, #12 - 8001dd8: af00 add r7, sp, #0 - 8001dda: 6078 str r0, [r7, #4] + 8001e0c: b480 push {r7} + 8001e0e: b083 sub sp, #12 + 8001e10: af00 add r7, sp, #0 + 8001e12: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_PeriodElapsedCallback could be implemented in the user file */ } - 8001ddc: bf00 nop - 8001dde: 370c adds r7, #12 - 8001de0: 46bd mov sp, r7 - 8001de2: f85d 7b04 ldr.w r7, [sp], #4 - 8001de6: 4770 bx lr + 8001e14: bf00 nop + 8001e16: 370c adds r7, #12 + 8001e18: 46bd mov sp, r7 + 8001e1a: f85d 7b04 ldr.w r7, [sp], #4 + 8001e1e: 4770 bx lr -08001de8 : +08001e20 : * @brief Output Compare callback in non-blocking mode * @param htim TIM OC handle * @retval None */ __weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) { - 8001de8: b480 push {r7} - 8001dea: b083 sub sp, #12 - 8001dec: af00 add r7, sp, #0 - 8001dee: 6078 str r0, [r7, #4] + 8001e20: b480 push {r7} + 8001e22: b083 sub sp, #12 + 8001e24: af00 add r7, sp, #0 + 8001e26: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file */ } - 8001df0: bf00 nop - 8001df2: 370c adds r7, #12 - 8001df4: 46bd mov sp, r7 - 8001df6: f85d 7b04 ldr.w r7, [sp], #4 - 8001dfa: 4770 bx lr + 8001e28: bf00 nop + 8001e2a: 370c adds r7, #12 + 8001e2c: 46bd mov sp, r7 + 8001e2e: f85d 7b04 ldr.w r7, [sp], #4 + 8001e32: 4770 bx lr -08001dfc : +08001e34 : * @brief Input Capture callback in non-blocking mode * @param htim TIM IC handle * @retval None */ __weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { - 8001dfc: b480 push {r7} - 8001dfe: b083 sub sp, #12 - 8001e00: af00 add r7, sp, #0 - 8001e02: 6078 str r0, [r7, #4] + 8001e34: b480 push {r7} + 8001e36: b083 sub sp, #12 + 8001e38: af00 add r7, sp, #0 + 8001e3a: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_IC_CaptureCallback could be implemented in the user file */ } - 8001e04: bf00 nop - 8001e06: 370c adds r7, #12 - 8001e08: 46bd mov sp, r7 - 8001e0a: f85d 7b04 ldr.w r7, [sp], #4 - 8001e0e: 4770 bx lr + 8001e3c: bf00 nop + 8001e3e: 370c adds r7, #12 + 8001e40: 46bd mov sp, r7 + 8001e42: f85d 7b04 ldr.w r7, [sp], #4 + 8001e46: 4770 bx lr -08001e10 : +08001e48 : * @brief PWM Pulse finished callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) { - 8001e10: b480 push {r7} - 8001e12: b083 sub sp, #12 - 8001e14: af00 add r7, sp, #0 - 8001e16: 6078 str r0, [r7, #4] + 8001e48: b480 push {r7} + 8001e4a: b083 sub sp, #12 + 8001e4c: af00 add r7, sp, #0 + 8001e4e: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file */ } - 8001e18: bf00 nop - 8001e1a: 370c adds r7, #12 - 8001e1c: 46bd mov sp, r7 - 8001e1e: f85d 7b04 ldr.w r7, [sp], #4 - 8001e22: 4770 bx lr + 8001e50: bf00 nop + 8001e52: 370c adds r7, #12 + 8001e54: 46bd mov sp, r7 + 8001e56: f85d 7b04 ldr.w r7, [sp], #4 + 8001e5a: 4770 bx lr -08001e24 : +08001e5c : * @brief Hall Trigger detection callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) { - 8001e24: b480 push {r7} - 8001e26: b083 sub sp, #12 - 8001e28: af00 add r7, sp, #0 - 8001e2a: 6078 str r0, [r7, #4] + 8001e5c: b480 push {r7} + 8001e5e: b083 sub sp, #12 + 8001e60: af00 add r7, sp, #0 + 8001e62: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_TriggerCallback could be implemented in the user file */ } - 8001e2c: bf00 nop - 8001e2e: 370c adds r7, #12 - 8001e30: 46bd mov sp, r7 - 8001e32: f85d 7b04 ldr.w r7, [sp], #4 - 8001e36: 4770 bx lr + 8001e64: bf00 nop + 8001e66: 370c adds r7, #12 + 8001e68: 46bd mov sp, r7 + 8001e6a: f85d 7b04 ldr.w r7, [sp], #4 + 8001e6e: 4770 bx lr -08001e38 : +08001e70 : * @param TIMx TIM peripheral * @param Structure TIM Base configuration structure * @retval None */ void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) { - 8001e38: b480 push {r7} - 8001e3a: b085 sub sp, #20 - 8001e3c: af00 add r7, sp, #0 - 8001e3e: 6078 str r0, [r7, #4] - 8001e40: 6039 str r1, [r7, #0] + 8001e70: b480 push {r7} + 8001e72: b085 sub sp, #20 + 8001e74: af00 add r7, sp, #0 + 8001e76: 6078 str r0, [r7, #4] + 8001e78: 6039 str r1, [r7, #0] uint32_t tmpcr1; tmpcr1 = TIMx->CR1; - 8001e42: 687b ldr r3, [r7, #4] - 8001e44: 681b ldr r3, [r3, #0] - 8001e46: 60fb str r3, [r7, #12] + 8001e7a: 687b ldr r3, [r7, #4] + 8001e7c: 681b ldr r3, [r3, #0] + 8001e7e: 60fb str r3, [r7, #12] /* Set TIM Time Base Unit parameters ---------------------------------------*/ if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) - 8001e48: 687b ldr r3, [r7, #4] - 8001e4a: 4a43 ldr r2, [pc, #268] @ (8001f58 ) - 8001e4c: 4293 cmp r3, r2 - 8001e4e: d013 beq.n 8001e78 - 8001e50: 687b ldr r3, [r7, #4] - 8001e52: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8001e56: d00f beq.n 8001e78 - 8001e58: 687b ldr r3, [r7, #4] - 8001e5a: 4a40 ldr r2, [pc, #256] @ (8001f5c ) - 8001e5c: 4293 cmp r3, r2 - 8001e5e: d00b beq.n 8001e78 - 8001e60: 687b ldr r3, [r7, #4] - 8001e62: 4a3f ldr r2, [pc, #252] @ (8001f60 ) - 8001e64: 4293 cmp r3, r2 - 8001e66: d007 beq.n 8001e78 - 8001e68: 687b ldr r3, [r7, #4] - 8001e6a: 4a3e ldr r2, [pc, #248] @ (8001f64 ) - 8001e6c: 4293 cmp r3, r2 - 8001e6e: d003 beq.n 8001e78 - 8001e70: 687b ldr r3, [r7, #4] - 8001e72: 4a3d ldr r2, [pc, #244] @ (8001f68 ) - 8001e74: 4293 cmp r3, r2 - 8001e76: d108 bne.n 8001e8a + 8001e80: 687b ldr r3, [r7, #4] + 8001e82: 4a43 ldr r2, [pc, #268] @ (8001f90 ) + 8001e84: 4293 cmp r3, r2 + 8001e86: d013 beq.n 8001eb0 + 8001e88: 687b ldr r3, [r7, #4] + 8001e8a: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8001e8e: d00f beq.n 8001eb0 + 8001e90: 687b ldr r3, [r7, #4] + 8001e92: 4a40 ldr r2, [pc, #256] @ (8001f94 ) + 8001e94: 4293 cmp r3, r2 + 8001e96: d00b beq.n 8001eb0 + 8001e98: 687b ldr r3, [r7, #4] + 8001e9a: 4a3f ldr r2, [pc, #252] @ (8001f98 ) + 8001e9c: 4293 cmp r3, r2 + 8001e9e: d007 beq.n 8001eb0 + 8001ea0: 687b ldr r3, [r7, #4] + 8001ea2: 4a3e ldr r2, [pc, #248] @ (8001f9c ) + 8001ea4: 4293 cmp r3, r2 + 8001ea6: d003 beq.n 8001eb0 + 8001ea8: 687b ldr r3, [r7, #4] + 8001eaa: 4a3d ldr r2, [pc, #244] @ (8001fa0 ) + 8001eac: 4293 cmp r3, r2 + 8001eae: d108 bne.n 8001ec2 { /* Select the Counter Mode */ tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); - 8001e78: 68fb ldr r3, [r7, #12] - 8001e7a: f023 0370 bic.w r3, r3, #112 @ 0x70 - 8001e7e: 60fb str r3, [r7, #12] + 8001eb0: 68fb ldr r3, [r7, #12] + 8001eb2: f023 0370 bic.w r3, r3, #112 @ 0x70 + 8001eb6: 60fb str r3, [r7, #12] tmpcr1 |= Structure->CounterMode; - 8001e80: 683b ldr r3, [r7, #0] - 8001e82: 685b ldr r3, [r3, #4] - 8001e84: 68fa ldr r2, [r7, #12] - 8001e86: 4313 orrs r3, r2 - 8001e88: 60fb str r3, [r7, #12] + 8001eb8: 683b ldr r3, [r7, #0] + 8001eba: 685b ldr r3, [r3, #4] + 8001ebc: 68fa ldr r2, [r7, #12] + 8001ebe: 4313 orrs r3, r2 + 8001ec0: 60fb str r3, [r7, #12] } if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) - 8001e8a: 687b ldr r3, [r7, #4] - 8001e8c: 4a32 ldr r2, [pc, #200] @ (8001f58 ) - 8001e8e: 4293 cmp r3, r2 - 8001e90: d02b beq.n 8001eea - 8001e92: 687b ldr r3, [r7, #4] - 8001e94: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 - 8001e98: d027 beq.n 8001eea - 8001e9a: 687b ldr r3, [r7, #4] - 8001e9c: 4a2f ldr r2, [pc, #188] @ (8001f5c ) - 8001e9e: 4293 cmp r3, r2 - 8001ea0: d023 beq.n 8001eea - 8001ea2: 687b ldr r3, [r7, #4] - 8001ea4: 4a2e ldr r2, [pc, #184] @ (8001f60 ) - 8001ea6: 4293 cmp r3, r2 - 8001ea8: d01f beq.n 8001eea - 8001eaa: 687b ldr r3, [r7, #4] - 8001eac: 4a2d ldr r2, [pc, #180] @ (8001f64 ) - 8001eae: 4293 cmp r3, r2 - 8001eb0: d01b beq.n 8001eea - 8001eb2: 687b ldr r3, [r7, #4] - 8001eb4: 4a2c ldr r2, [pc, #176] @ (8001f68 ) - 8001eb6: 4293 cmp r3, r2 - 8001eb8: d017 beq.n 8001eea - 8001eba: 687b ldr r3, [r7, #4] - 8001ebc: 4a2b ldr r2, [pc, #172] @ (8001f6c ) - 8001ebe: 4293 cmp r3, r2 - 8001ec0: d013 beq.n 8001eea 8001ec2: 687b ldr r3, [r7, #4] - 8001ec4: 4a2a ldr r2, [pc, #168] @ (8001f70 ) + 8001ec4: 4a32 ldr r2, [pc, #200] @ (8001f90 ) 8001ec6: 4293 cmp r3, r2 - 8001ec8: d00f beq.n 8001eea + 8001ec8: d02b beq.n 8001f22 8001eca: 687b ldr r3, [r7, #4] - 8001ecc: 4a29 ldr r2, [pc, #164] @ (8001f74 ) - 8001ece: 4293 cmp r3, r2 - 8001ed0: d00b beq.n 8001eea + 8001ecc: f1b3 4f80 cmp.w r3, #1073741824 @ 0x40000000 + 8001ed0: d027 beq.n 8001f22 8001ed2: 687b ldr r3, [r7, #4] - 8001ed4: 4a28 ldr r2, [pc, #160] @ (8001f78 ) + 8001ed4: 4a2f ldr r2, [pc, #188] @ (8001f94 ) 8001ed6: 4293 cmp r3, r2 - 8001ed8: d007 beq.n 8001eea + 8001ed8: d023 beq.n 8001f22 8001eda: 687b ldr r3, [r7, #4] - 8001edc: 4a27 ldr r2, [pc, #156] @ (8001f7c ) + 8001edc: 4a2e ldr r2, [pc, #184] @ (8001f98 ) 8001ede: 4293 cmp r3, r2 - 8001ee0: d003 beq.n 8001eea + 8001ee0: d01f beq.n 8001f22 8001ee2: 687b ldr r3, [r7, #4] - 8001ee4: 4a26 ldr r2, [pc, #152] @ (8001f80 ) + 8001ee4: 4a2d ldr r2, [pc, #180] @ (8001f9c ) 8001ee6: 4293 cmp r3, r2 - 8001ee8: d108 bne.n 8001efc + 8001ee8: d01b beq.n 8001f22 + 8001eea: 687b ldr r3, [r7, #4] + 8001eec: 4a2c ldr r2, [pc, #176] @ (8001fa0 ) + 8001eee: 4293 cmp r3, r2 + 8001ef0: d017 beq.n 8001f22 + 8001ef2: 687b ldr r3, [r7, #4] + 8001ef4: 4a2b ldr r2, [pc, #172] @ (8001fa4 ) + 8001ef6: 4293 cmp r3, r2 + 8001ef8: d013 beq.n 8001f22 + 8001efa: 687b ldr r3, [r7, #4] + 8001efc: 4a2a ldr r2, [pc, #168] @ (8001fa8 ) + 8001efe: 4293 cmp r3, r2 + 8001f00: d00f beq.n 8001f22 + 8001f02: 687b ldr r3, [r7, #4] + 8001f04: 4a29 ldr r2, [pc, #164] @ (8001fac ) + 8001f06: 4293 cmp r3, r2 + 8001f08: d00b beq.n 8001f22 + 8001f0a: 687b ldr r3, [r7, #4] + 8001f0c: 4a28 ldr r2, [pc, #160] @ (8001fb0 ) + 8001f0e: 4293 cmp r3, r2 + 8001f10: d007 beq.n 8001f22 + 8001f12: 687b ldr r3, [r7, #4] + 8001f14: 4a27 ldr r2, [pc, #156] @ (8001fb4 ) + 8001f16: 4293 cmp r3, r2 + 8001f18: d003 beq.n 8001f22 + 8001f1a: 687b ldr r3, [r7, #4] + 8001f1c: 4a26 ldr r2, [pc, #152] @ (8001fb8 ) + 8001f1e: 4293 cmp r3, r2 + 8001f20: d108 bne.n 8001f34 { /* Set the clock division */ tmpcr1 &= ~TIM_CR1_CKD; - 8001eea: 68fb ldr r3, [r7, #12] - 8001eec: f423 7340 bic.w r3, r3, #768 @ 0x300 - 8001ef0: 60fb str r3, [r7, #12] + 8001f22: 68fb ldr r3, [r7, #12] + 8001f24: f423 7340 bic.w r3, r3, #768 @ 0x300 + 8001f28: 60fb str r3, [r7, #12] tmpcr1 |= (uint32_t)Structure->ClockDivision; - 8001ef2: 683b ldr r3, [r7, #0] - 8001ef4: 68db ldr r3, [r3, #12] - 8001ef6: 68fa ldr r2, [r7, #12] - 8001ef8: 4313 orrs r3, r2 - 8001efa: 60fb str r3, [r7, #12] + 8001f2a: 683b ldr r3, [r7, #0] + 8001f2c: 68db ldr r3, [r3, #12] + 8001f2e: 68fa ldr r2, [r7, #12] + 8001f30: 4313 orrs r3, r2 + 8001f32: 60fb str r3, [r7, #12] } /* Set the auto-reload preload */ MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); - 8001efc: 68fb ldr r3, [r7, #12] - 8001efe: f023 0280 bic.w r2, r3, #128 @ 0x80 - 8001f02: 683b ldr r3, [r7, #0] - 8001f04: 695b ldr r3, [r3, #20] - 8001f06: 4313 orrs r3, r2 - 8001f08: 60fb str r3, [r7, #12] + 8001f34: 68fb ldr r3, [r7, #12] + 8001f36: f023 0280 bic.w r2, r3, #128 @ 0x80 + 8001f3a: 683b ldr r3, [r7, #0] + 8001f3c: 695b ldr r3, [r3, #20] + 8001f3e: 4313 orrs r3, r2 + 8001f40: 60fb str r3, [r7, #12] /* Set the Autoreload value */ TIMx->ARR = (uint32_t)Structure->Period ; - 8001f0a: 683b ldr r3, [r7, #0] - 8001f0c: 689a ldr r2, [r3, #8] - 8001f0e: 687b ldr r3, [r7, #4] - 8001f10: 62da str r2, [r3, #44] @ 0x2c + 8001f42: 683b ldr r3, [r7, #0] + 8001f44: 689a ldr r2, [r3, #8] + 8001f46: 687b ldr r3, [r7, #4] + 8001f48: 62da str r2, [r3, #44] @ 0x2c /* Set the Prescaler value */ TIMx->PSC = Structure->Prescaler; - 8001f12: 683b ldr r3, [r7, #0] - 8001f14: 681a ldr r2, [r3, #0] - 8001f16: 687b ldr r3, [r7, #4] - 8001f18: 629a str r2, [r3, #40] @ 0x28 + 8001f4a: 683b ldr r3, [r7, #0] + 8001f4c: 681a ldr r2, [r3, #0] + 8001f4e: 687b ldr r3, [r7, #4] + 8001f50: 629a str r2, [r3, #40] @ 0x28 if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) - 8001f1a: 687b ldr r3, [r7, #4] - 8001f1c: 4a0e ldr r2, [pc, #56] @ (8001f58 ) - 8001f1e: 4293 cmp r3, r2 - 8001f20: d003 beq.n 8001f2a - 8001f22: 687b ldr r3, [r7, #4] - 8001f24: 4a10 ldr r2, [pc, #64] @ (8001f68 ) - 8001f26: 4293 cmp r3, r2 - 8001f28: d103 bne.n 8001f32 + 8001f52: 687b ldr r3, [r7, #4] + 8001f54: 4a0e ldr r2, [pc, #56] @ (8001f90 ) + 8001f56: 4293 cmp r3, r2 + 8001f58: d003 beq.n 8001f62 + 8001f5a: 687b ldr r3, [r7, #4] + 8001f5c: 4a10 ldr r2, [pc, #64] @ (8001fa0 ) + 8001f5e: 4293 cmp r3, r2 + 8001f60: d103 bne.n 8001f6a { /* Set the Repetition Counter value */ TIMx->RCR = Structure->RepetitionCounter; - 8001f2a: 683b ldr r3, [r7, #0] - 8001f2c: 691a ldr r2, [r3, #16] - 8001f2e: 687b ldr r3, [r7, #4] - 8001f30: 631a str r2, [r3, #48] @ 0x30 + 8001f62: 683b ldr r3, [r7, #0] + 8001f64: 691a ldr r2, [r3, #16] + 8001f66: 687b ldr r3, [r7, #4] + 8001f68: 631a str r2, [r3, #48] @ 0x30 } /* Disable Update Event (UEV) with Update Generation (UG) by changing Update Request Source (URS) to avoid Update flag (UIF) */ SET_BIT(TIMx->CR1, TIM_CR1_URS); - 8001f32: 687b ldr r3, [r7, #4] - 8001f34: 681b ldr r3, [r3, #0] - 8001f36: f043 0204 orr.w r2, r3, #4 - 8001f3a: 687b ldr r3, [r7, #4] - 8001f3c: 601a str r2, [r3, #0] + 8001f6a: 687b ldr r3, [r7, #4] + 8001f6c: 681b ldr r3, [r3, #0] + 8001f6e: f043 0204 orr.w r2, r3, #4 + 8001f72: 687b ldr r3, [r7, #4] + 8001f74: 601a str r2, [r3, #0] /* Generate an update event to reload the Prescaler and the repetition counter (only for advanced timer) value immediately */ TIMx->EGR = TIM_EGR_UG; - 8001f3e: 687b ldr r3, [r7, #4] - 8001f40: 2201 movs r2, #1 - 8001f42: 615a str r2, [r3, #20] + 8001f76: 687b ldr r3, [r7, #4] + 8001f78: 2201 movs r2, #1 + 8001f7a: 615a str r2, [r3, #20] TIMx->CR1 = tmpcr1; - 8001f44: 687b ldr r3, [r7, #4] - 8001f46: 68fa ldr r2, [r7, #12] - 8001f48: 601a str r2, [r3, #0] + 8001f7c: 687b ldr r3, [r7, #4] + 8001f7e: 68fa ldr r2, [r7, #12] + 8001f80: 601a str r2, [r3, #0] } - 8001f4a: bf00 nop - 8001f4c: 3714 adds r7, #20 - 8001f4e: 46bd mov sp, r7 - 8001f50: f85d 7b04 ldr.w r7, [sp], #4 - 8001f54: 4770 bx lr - 8001f56: bf00 nop - 8001f58: 40010000 .word 0x40010000 - 8001f5c: 40000400 .word 0x40000400 - 8001f60: 40000800 .word 0x40000800 - 8001f64: 40000c00 .word 0x40000c00 - 8001f68: 40010400 .word 0x40010400 - 8001f6c: 40014000 .word 0x40014000 - 8001f70: 40014400 .word 0x40014400 - 8001f74: 40014800 .word 0x40014800 - 8001f78: 40001800 .word 0x40001800 - 8001f7c: 40001c00 .word 0x40001c00 - 8001f80: 40002000 .word 0x40002000 + 8001f82: bf00 nop + 8001f84: 3714 adds r7, #20 + 8001f86: 46bd mov sp, r7 + 8001f88: f85d 7b04 ldr.w r7, [sp], #4 + 8001f8c: 4770 bx lr + 8001f8e: bf00 nop + 8001f90: 40010000 .word 0x40010000 + 8001f94: 40000400 .word 0x40000400 + 8001f98: 40000800 .word 0x40000800 + 8001f9c: 40000c00 .word 0x40000c00 + 8001fa0: 40010400 .word 0x40010400 + 8001fa4: 40014000 .word 0x40014000 + 8001fa8: 40014400 .word 0x40014400 + 8001fac: 40014800 .word 0x40014800 + 8001fb0: 40001800 .word 0x40001800 + 8001fb4: 40001c00 .word 0x40001c00 + 8001fb8: 40002000 .word 0x40002000 -08001f84 : +08001fbc : * @brief Commutation callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim) { - 8001f84: b480 push {r7} - 8001f86: b083 sub sp, #12 - 8001f88: af00 add r7, sp, #0 - 8001f8a: 6078 str r0, [r7, #4] + 8001fbc: b480 push {r7} + 8001fbe: b083 sub sp, #12 + 8001fc0: af00 add r7, sp, #0 + 8001fc2: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIMEx_CommutCallback could be implemented in the user file */ } - 8001f8c: bf00 nop - 8001f8e: 370c adds r7, #12 - 8001f90: 46bd mov sp, r7 - 8001f92: f85d 7b04 ldr.w r7, [sp], #4 - 8001f96: 4770 bx lr + 8001fc4: bf00 nop + 8001fc6: 370c adds r7, #12 + 8001fc8: 46bd mov sp, r7 + 8001fca: f85d 7b04 ldr.w r7, [sp], #4 + 8001fce: 4770 bx lr -08001f98 : +08001fd0 : * @brief Break detection callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim) { - 8001f98: b480 push {r7} - 8001f9a: b083 sub sp, #12 - 8001f9c: af00 add r7, sp, #0 - 8001f9e: 6078 str r0, [r7, #4] + 8001fd0: b480 push {r7} + 8001fd2: b083 sub sp, #12 + 8001fd4: af00 add r7, sp, #0 + 8001fd6: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIMEx_BreakCallback could be implemented in the user file */ } - 8001fa0: bf00 nop - 8001fa2: 370c adds r7, #12 - 8001fa4: 46bd mov sp, r7 - 8001fa6: f85d 7b04 ldr.w r7, [sp], #4 - 8001faa: 4770 bx lr + 8001fd8: bf00 nop + 8001fda: 370c adds r7, #12 + 8001fdc: 46bd mov sp, r7 + 8001fde: f85d 7b04 ldr.w r7, [sp], #4 + 8001fe2: 4770 bx lr -08001fac : +08001fe4 : listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem ); } /*-----------------------------------------------------------*/ void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem ) { - 8001fac: b480 push {r7} - 8001fae: b085 sub sp, #20 - 8001fb0: af00 add r7, sp, #0 - 8001fb2: 6078 str r0, [r7, #4] - 8001fb4: 6039 str r1, [r7, #0] + 8001fe4: b480 push {r7} + 8001fe6: b085 sub sp, #20 + 8001fe8: af00 add r7, sp, #0 + 8001fea: 6078 str r0, [r7, #4] + 8001fec: 6039 str r1, [r7, #0] ListItem_t * const pxIndex = pxList->pxIndex; - 8001fb6: 687b ldr r3, [r7, #4] - 8001fb8: 685b ldr r3, [r3, #4] - 8001fba: 60fb str r3, [r7, #12] + 8001fee: 687b ldr r3, [r7, #4] + 8001ff0: 685b ldr r3, [r3, #4] + 8001ff2: 60fb str r3, [r7, #12] listTEST_LIST_ITEM_INTEGRITY( pxNewListItem ); /* Insert a new list item into pxList, but rather than sort the list, makes the new list item the last item to be removed by a call to listGET_OWNER_OF_NEXT_ENTRY(). */ pxNewListItem->pxNext = pxIndex; - 8001fbc: 683b ldr r3, [r7, #0] - 8001fbe: 68fa ldr r2, [r7, #12] - 8001fc0: 605a str r2, [r3, #4] + 8001ff4: 683b ldr r3, [r7, #0] + 8001ff6: 68fa ldr r2, [r7, #12] + 8001ff8: 605a str r2, [r3, #4] pxNewListItem->pxPrevious = pxIndex->pxPrevious; - 8001fc2: 68fb ldr r3, [r7, #12] - 8001fc4: 689a ldr r2, [r3, #8] - 8001fc6: 683b ldr r3, [r7, #0] - 8001fc8: 609a str r2, [r3, #8] + 8001ffa: 68fb ldr r3, [r7, #12] + 8001ffc: 689a ldr r2, [r3, #8] + 8001ffe: 683b ldr r3, [r7, #0] + 8002000: 609a str r2, [r3, #8] /* Only used during decision coverage testing. */ mtCOVERAGE_TEST_DELAY(); pxIndex->pxPrevious->pxNext = pxNewListItem; - 8001fca: 68fb ldr r3, [r7, #12] - 8001fcc: 689b ldr r3, [r3, #8] - 8001fce: 683a ldr r2, [r7, #0] - 8001fd0: 605a str r2, [r3, #4] + 8002002: 68fb ldr r3, [r7, #12] + 8002004: 689b ldr r3, [r3, #8] + 8002006: 683a ldr r2, [r7, #0] + 8002008: 605a str r2, [r3, #4] pxIndex->pxPrevious = pxNewListItem; - 8001fd2: 68fb ldr r3, [r7, #12] - 8001fd4: 683a ldr r2, [r7, #0] - 8001fd6: 609a str r2, [r3, #8] + 800200a: 68fb ldr r3, [r7, #12] + 800200c: 683a ldr r2, [r7, #0] + 800200e: 609a str r2, [r3, #8] /* Remember which list the item is in. */ pxNewListItem->pxContainer = pxList; - 8001fd8: 683b ldr r3, [r7, #0] - 8001fda: 687a ldr r2, [r7, #4] - 8001fdc: 611a str r2, [r3, #16] + 8002010: 683b ldr r3, [r7, #0] + 8002012: 687a ldr r2, [r7, #4] + 8002014: 611a str r2, [r3, #16] ( pxList->uxNumberOfItems )++; - 8001fde: 687b ldr r3, [r7, #4] - 8001fe0: 681b ldr r3, [r3, #0] - 8001fe2: 1c5a adds r2, r3, #1 - 8001fe4: 687b ldr r3, [r7, #4] - 8001fe6: 601a str r2, [r3, #0] + 8002016: 687b ldr r3, [r7, #4] + 8002018: 681b ldr r3, [r3, #0] + 800201a: 1c5a adds r2, r3, #1 + 800201c: 687b ldr r3, [r7, #4] + 800201e: 601a str r2, [r3, #0] } - 8001fe8: bf00 nop - 8001fea: 3714 adds r7, #20 - 8001fec: 46bd mov sp, r7 - 8001fee: f85d 7b04 ldr.w r7, [sp], #4 - 8001ff2: 4770 bx lr + 8002020: bf00 nop + 8002022: 3714 adds r7, #20 + 8002024: 46bd mov sp, r7 + 8002026: f85d 7b04 ldr.w r7, [sp], #4 + 800202a: 4770 bx lr -08001ff4 : +0800202c : ( pxList->uxNumberOfItems )++; } /*-----------------------------------------------------------*/ UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove ) { - 8001ff4: b480 push {r7} - 8001ff6: b085 sub sp, #20 - 8001ff8: af00 add r7, sp, #0 - 8001ffa: 6078 str r0, [r7, #4] + 800202c: b480 push {r7} + 800202e: b085 sub sp, #20 + 8002030: af00 add r7, sp, #0 + 8002032: 6078 str r0, [r7, #4] /* The list item knows which list it is in. Obtain the list from the list item. */ List_t * const pxList = pxItemToRemove->pxContainer; - 8001ffc: 687b ldr r3, [r7, #4] - 8001ffe: 691b ldr r3, [r3, #16] - 8002000: 60fb str r3, [r7, #12] + 8002034: 687b ldr r3, [r7, #4] + 8002036: 691b ldr r3, [r3, #16] + 8002038: 60fb str r3, [r7, #12] pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious; - 8002002: 687b ldr r3, [r7, #4] - 8002004: 685b ldr r3, [r3, #4] - 8002006: 687a ldr r2, [r7, #4] - 8002008: 6892 ldr r2, [r2, #8] - 800200a: 609a str r2, [r3, #8] + 800203a: 687b ldr r3, [r7, #4] + 800203c: 685b ldr r3, [r3, #4] + 800203e: 687a ldr r2, [r7, #4] + 8002040: 6892 ldr r2, [r2, #8] + 8002042: 609a str r2, [r3, #8] pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext; - 800200c: 687b ldr r3, [r7, #4] - 800200e: 689b ldr r3, [r3, #8] - 8002010: 687a ldr r2, [r7, #4] - 8002012: 6852 ldr r2, [r2, #4] - 8002014: 605a str r2, [r3, #4] + 8002044: 687b ldr r3, [r7, #4] + 8002046: 689b ldr r3, [r3, #8] + 8002048: 687a ldr r2, [r7, #4] + 800204a: 6852 ldr r2, [r2, #4] + 800204c: 605a str r2, [r3, #4] /* Only used during decision coverage testing. */ mtCOVERAGE_TEST_DELAY(); /* Make sure the index is left pointing to a valid item. */ if( pxList->pxIndex == pxItemToRemove ) - 8002016: 68fb ldr r3, [r7, #12] - 8002018: 685b ldr r3, [r3, #4] - 800201a: 687a ldr r2, [r7, #4] - 800201c: 429a cmp r2, r3 - 800201e: d103 bne.n 8002028 + 800204e: 68fb ldr r3, [r7, #12] + 8002050: 685b ldr r3, [r3, #4] + 8002052: 687a ldr r2, [r7, #4] + 8002054: 429a cmp r2, r3 + 8002056: d103 bne.n 8002060 { pxList->pxIndex = pxItemToRemove->pxPrevious; - 8002020: 687b ldr r3, [r7, #4] - 8002022: 689a ldr r2, [r3, #8] - 8002024: 68fb ldr r3, [r7, #12] - 8002026: 605a str r2, [r3, #4] + 8002058: 687b ldr r3, [r7, #4] + 800205a: 689a ldr r2, [r3, #8] + 800205c: 68fb ldr r3, [r7, #12] + 800205e: 605a str r2, [r3, #4] else { mtCOVERAGE_TEST_MARKER(); } pxItemToRemove->pxContainer = NULL; - 8002028: 687b ldr r3, [r7, #4] - 800202a: 2200 movs r2, #0 - 800202c: 611a str r2, [r3, #16] + 8002060: 687b ldr r3, [r7, #4] + 8002062: 2200 movs r2, #0 + 8002064: 611a str r2, [r3, #16] ( pxList->uxNumberOfItems )--; - 800202e: 68fb ldr r3, [r7, #12] - 8002030: 681b ldr r3, [r3, #0] - 8002032: 1e5a subs r2, r3, #1 - 8002034: 68fb ldr r3, [r7, #12] - 8002036: 601a str r2, [r3, #0] + 8002066: 68fb ldr r3, [r7, #12] + 8002068: 681b ldr r3, [r3, #0] + 800206a: 1e5a subs r2, r3, #1 + 800206c: 68fb ldr r3, [r7, #12] + 800206e: 601a str r2, [r3, #0] return pxList->uxNumberOfItems; - 8002038: 68fb ldr r3, [r7, #12] - 800203a: 681b ldr r3, [r3, #0] + 8002070: 68fb ldr r3, [r7, #12] + 8002072: 681b ldr r3, [r3, #0] } - 800203c: 4618 mov r0, r3 - 800203e: 3714 adds r7, #20 - 8002040: 46bd mov sp, r7 - 8002042: f85d 7b04 ldr.w r7, [sp], #4 - 8002046: 4770 bx lr + 8002074: 4618 mov r0, r3 + 8002076: 3714 adds r7, #20 + 8002078: 46bd mov sp, r7 + 800207a: f85d 7b04 ldr.w r7, [sp], #4 + 800207e: 4770 bx lr -08002048 : +08002080 : #endif /* INCLUDE_xTaskAbortDelay */ /*----------------------------------------------------------*/ BaseType_t xTaskIncrementTick( void ) { - 8002048: b580 push {r7, lr} - 800204a: b086 sub sp, #24 - 800204c: af00 add r7, sp, #0 + 8002080: b580 push {r7, lr} + 8002082: b086 sub sp, #24 + 8002084: af00 add r7, sp, #0 TCB_t * pxTCB; TickType_t xItemValue; BaseType_t xSwitchRequired = pdFALSE; - 800204e: 2300 movs r3, #0 - 8002050: 617b str r3, [r7, #20] + 8002086: 2300 movs r3, #0 + 8002088: 617b str r3, [r7, #20] /* Called by the portable layer each time a tick interrupt occurs. Increments the tick then checks to see if the new tick value will cause any tasks to be unblocked. */ traceTASK_INCREMENT_TICK( xTickCount ); if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE ) - 8002052: 4b4f ldr r3, [pc, #316] @ (8002190 ) - 8002054: 681b ldr r3, [r3, #0] - 8002056: 2b00 cmp r3, #0 - 8002058: f040 808f bne.w 800217a + 800208a: 4b4f ldr r3, [pc, #316] @ (80021c8 ) + 800208c: 681b ldr r3, [r3, #0] + 800208e: 2b00 cmp r3, #0 + 8002090: f040 808f bne.w 80021b2 { /* Minor optimisation. The tick count cannot change in this block. */ const TickType_t xConstTickCount = xTickCount + ( TickType_t ) 1; - 800205c: 4b4d ldr r3, [pc, #308] @ (8002194 ) - 800205e: 681b ldr r3, [r3, #0] - 8002060: 3301 adds r3, #1 - 8002062: 613b str r3, [r7, #16] + 8002094: 4b4d ldr r3, [pc, #308] @ (80021cc ) + 8002096: 681b ldr r3, [r3, #0] + 8002098: 3301 adds r3, #1 + 800209a: 613b str r3, [r7, #16] /* Increment the RTOS tick, switching the delayed and overflowed delayed lists if it wraps to 0. */ xTickCount = xConstTickCount; - 8002064: 4a4b ldr r2, [pc, #300] @ (8002194 ) - 8002066: 693b ldr r3, [r7, #16] - 8002068: 6013 str r3, [r2, #0] + 800209c: 4a4b ldr r2, [pc, #300] @ (80021cc ) + 800209e: 693b ldr r3, [r7, #16] + 80020a0: 6013 str r3, [r2, #0] if( xConstTickCount == ( TickType_t ) 0U ) /*lint !e774 'if' does not always evaluate to false as it is looking for an overflow. */ - 800206a: 693b ldr r3, [r7, #16] - 800206c: 2b00 cmp r3, #0 - 800206e: d121 bne.n 80020b4 + 80020a2: 693b ldr r3, [r7, #16] + 80020a4: 2b00 cmp r3, #0 + 80020a6: d121 bne.n 80020ec { taskSWITCH_DELAYED_LISTS(); - 8002070: 4b49 ldr r3, [pc, #292] @ (8002198 ) - 8002072: 681b ldr r3, [r3, #0] - 8002074: 681b ldr r3, [r3, #0] - 8002076: 2b00 cmp r3, #0 - 8002078: d00b beq.n 8002092 + 80020a8: 4b49 ldr r3, [pc, #292] @ (80021d0 ) + 80020aa: 681b ldr r3, [r3, #0] + 80020ac: 681b ldr r3, [r3, #0] + 80020ae: 2b00 cmp r3, #0 + 80020b0: d00b beq.n 80020ca portFORCE_INLINE static void vPortRaiseBASEPRI( void ) { uint32_t ulNewBASEPRI; __asm volatile - 800207a: f04f 0350 mov.w r3, #80 @ 0x50 - 800207e: f383 8811 msr BASEPRI, r3 - 8002082: f3bf 8f6f isb sy - 8002086: f3bf 8f4f dsb sy - 800208a: 603b str r3, [r7, #0] + 80020b2: f04f 0350 mov.w r3, #80 @ 0x50 + 80020b6: f383 8811 msr BASEPRI, r3 + 80020ba: f3bf 8f6f isb sy + 80020be: f3bf 8f4f dsb sy + 80020c2: 603b str r3, [r7, #0] " msr basepri, %0 \n" \ " isb \n" \ " dsb \n" \ :"=r" (ulNewBASEPRI) : "i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) : "memory" ); } - 800208c: bf00 nop - 800208e: bf00 nop - 8002090: e7fd b.n 800208e - 8002092: 4b41 ldr r3, [pc, #260] @ (8002198 ) - 8002094: 681b ldr r3, [r3, #0] - 8002096: 60fb str r3, [r7, #12] - 8002098: 4b40 ldr r3, [pc, #256] @ (800219c ) - 800209a: 681b ldr r3, [r3, #0] - 800209c: 4a3e ldr r2, [pc, #248] @ (8002198 ) - 800209e: 6013 str r3, [r2, #0] - 80020a0: 4a3e ldr r2, [pc, #248] @ (800219c ) - 80020a2: 68fb ldr r3, [r7, #12] - 80020a4: 6013 str r3, [r2, #0] - 80020a6: 4b3e ldr r3, [pc, #248] @ (80021a0 ) - 80020a8: 681b ldr r3, [r3, #0] - 80020aa: 3301 adds r3, #1 - 80020ac: 4a3c ldr r2, [pc, #240] @ (80021a0 ) - 80020ae: 6013 str r3, [r2, #0] - 80020b0: f000 f906 bl 80022c0 + 80020c4: bf00 nop + 80020c6: bf00 nop + 80020c8: e7fd b.n 80020c6 + 80020ca: 4b41 ldr r3, [pc, #260] @ (80021d0 ) + 80020cc: 681b ldr r3, [r3, #0] + 80020ce: 60fb str r3, [r7, #12] + 80020d0: 4b40 ldr r3, [pc, #256] @ (80021d4 ) + 80020d2: 681b ldr r3, [r3, #0] + 80020d4: 4a3e ldr r2, [pc, #248] @ (80021d0 ) + 80020d6: 6013 str r3, [r2, #0] + 80020d8: 4a3e ldr r2, [pc, #248] @ (80021d4 ) + 80020da: 68fb ldr r3, [r7, #12] + 80020dc: 6013 str r3, [r2, #0] + 80020de: 4b3e ldr r3, [pc, #248] @ (80021d8 ) + 80020e0: 681b ldr r3, [r3, #0] + 80020e2: 3301 adds r3, #1 + 80020e4: 4a3c ldr r2, [pc, #240] @ (80021d8 ) + 80020e6: 6013 str r3, [r2, #0] + 80020e8: f000 f906 bl 80022f8 /* See if this tick has made a timeout expire. Tasks are stored in the queue in the order of their wake time - meaning once one task has been found whose block time has not expired there is no need to look any further down the list. */ if( xConstTickCount >= xNextTaskUnblockTime ) - 80020b4: 4b3b ldr r3, [pc, #236] @ (80021a4 ) - 80020b6: 681b ldr r3, [r3, #0] - 80020b8: 693a ldr r2, [r7, #16] - 80020ba: 429a cmp r2, r3 - 80020bc: d348 bcc.n 8002150 + 80020ec: 4b3b ldr r3, [pc, #236] @ (80021dc ) + 80020ee: 681b ldr r3, [r3, #0] + 80020f0: 693a ldr r2, [r7, #16] + 80020f2: 429a cmp r2, r3 + 80020f4: d348 bcc.n 8002188 { for( ;; ) { if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) - 80020be: 4b36 ldr r3, [pc, #216] @ (8002198 ) - 80020c0: 681b ldr r3, [r3, #0] - 80020c2: 681b ldr r3, [r3, #0] - 80020c4: 2b00 cmp r3, #0 - 80020c6: d104 bne.n 80020d2 + 80020f6: 4b36 ldr r3, [pc, #216] @ (80021d0 ) + 80020f8: 681b ldr r3, [r3, #0] + 80020fa: 681b ldr r3, [r3, #0] + 80020fc: 2b00 cmp r3, #0 + 80020fe: d104 bne.n 800210a /* The delayed list is empty. Set xNextTaskUnblockTime to the maximum possible value so it is extremely unlikely that the if( xTickCount >= xNextTaskUnblockTime ) test will pass next time through. */ xNextTaskUnblockTime = portMAX_DELAY; /*lint !e961 MISRA exception as the casts are only redundant for some ports. */ - 80020c8: 4b36 ldr r3, [pc, #216] @ (80021a4 ) - 80020ca: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff - 80020ce: 601a str r2, [r3, #0] + 8002100: 4b36 ldr r3, [pc, #216] @ (80021dc ) + 8002102: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 8002106: 601a str r2, [r3, #0] break; - 80020d0: e03e b.n 8002150 + 8002108: e03e b.n 8002188 { /* The delayed list is not empty, get the value of the item at the head of the delayed list. This is the time at which the task at the head of the delayed list must be removed from the Blocked state. */ pxTCB = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 80020d2: 4b31 ldr r3, [pc, #196] @ (8002198 ) - 80020d4: 681b ldr r3, [r3, #0] - 80020d6: 68db ldr r3, [r3, #12] - 80020d8: 68db ldr r3, [r3, #12] - 80020da: 60bb str r3, [r7, #8] + 800210a: 4b31 ldr r3, [pc, #196] @ (80021d0 ) + 800210c: 681b ldr r3, [r3, #0] + 800210e: 68db ldr r3, [r3, #12] + 8002110: 68db ldr r3, [r3, #12] + 8002112: 60bb str r3, [r7, #8] xItemValue = listGET_LIST_ITEM_VALUE( &( pxTCB->xStateListItem ) ); - 80020dc: 68bb ldr r3, [r7, #8] - 80020de: 685b ldr r3, [r3, #4] - 80020e0: 607b str r3, [r7, #4] + 8002114: 68bb ldr r3, [r7, #8] + 8002116: 685b ldr r3, [r3, #4] + 8002118: 607b str r3, [r7, #4] if( xConstTickCount < xItemValue ) - 80020e2: 693a ldr r2, [r7, #16] - 80020e4: 687b ldr r3, [r7, #4] - 80020e6: 429a cmp r2, r3 - 80020e8: d203 bcs.n 80020f2 + 800211a: 693a ldr r2, [r7, #16] + 800211c: 687b ldr r3, [r7, #4] + 800211e: 429a cmp r2, r3 + 8002120: d203 bcs.n 800212a /* It is not time to unblock this item yet, but the item value is the time at which the task at the head of the blocked list must be removed from the Blocked state - so record the item value in xNextTaskUnblockTime. */ xNextTaskUnblockTime = xItemValue; - 80020ea: 4a2e ldr r2, [pc, #184] @ (80021a4 ) - 80020ec: 687b ldr r3, [r7, #4] - 80020ee: 6013 str r3, [r2, #0] + 8002122: 4a2e ldr r2, [pc, #184] @ (80021dc ) + 8002124: 687b ldr r3, [r7, #4] + 8002126: 6013 str r3, [r2, #0] break; /*lint !e9011 Code structure here is deedmed easier to understand with multiple breaks. */ - 80020f0: e02e b.n 8002150 + 8002128: e02e b.n 8002188 { mtCOVERAGE_TEST_MARKER(); } /* It is time to remove the item from the Blocked state. */ ( void ) uxListRemove( &( pxTCB->xStateListItem ) ); - 80020f2: 68bb ldr r3, [r7, #8] - 80020f4: 3304 adds r3, #4 - 80020f6: 4618 mov r0, r3 - 80020f8: f7ff ff7c bl 8001ff4 + 800212a: 68bb ldr r3, [r7, #8] + 800212c: 3304 adds r3, #4 + 800212e: 4618 mov r0, r3 + 8002130: f7ff ff7c bl 800202c /* Is the task waiting on an event also? If so remove it from the event list. */ if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL ) - 80020fc: 68bb ldr r3, [r7, #8] - 80020fe: 6a9b ldr r3, [r3, #40] @ 0x28 - 8002100: 2b00 cmp r3, #0 - 8002102: d004 beq.n 800210e + 8002134: 68bb ldr r3, [r7, #8] + 8002136: 6a9b ldr r3, [r3, #40] @ 0x28 + 8002138: 2b00 cmp r3, #0 + 800213a: d004 beq.n 8002146 { ( void ) uxListRemove( &( pxTCB->xEventListItem ) ); - 8002104: 68bb ldr r3, [r7, #8] - 8002106: 3318 adds r3, #24 - 8002108: 4618 mov r0, r3 - 800210a: f7ff ff73 bl 8001ff4 + 800213c: 68bb ldr r3, [r7, #8] + 800213e: 3318 adds r3, #24 + 8002140: 4618 mov r0, r3 + 8002142: f7ff ff73 bl 800202c mtCOVERAGE_TEST_MARKER(); } /* Place the unblocked task into the appropriate ready list. */ prvAddTaskToReadyList( pxTCB ); - 800210e: 68bb ldr r3, [r7, #8] - 8002110: 6adb ldr r3, [r3, #44] @ 0x2c - 8002112: 2201 movs r2, #1 - 8002114: 409a lsls r2, r3 - 8002116: 4b24 ldr r3, [pc, #144] @ (80021a8 ) - 8002118: 681b ldr r3, [r3, #0] - 800211a: 4313 orrs r3, r2 - 800211c: 4a22 ldr r2, [pc, #136] @ (80021a8 ) - 800211e: 6013 str r3, [r2, #0] - 8002120: 68bb ldr r3, [r7, #8] - 8002122: 6ada ldr r2, [r3, #44] @ 0x2c - 8002124: 4613 mov r3, r2 - 8002126: 009b lsls r3, r3, #2 - 8002128: 4413 add r3, r2 - 800212a: 009b lsls r3, r3, #2 - 800212c: 4a1f ldr r2, [pc, #124] @ (80021ac ) - 800212e: 441a add r2, r3 - 8002130: 68bb ldr r3, [r7, #8] - 8002132: 3304 adds r3, #4 - 8002134: 4619 mov r1, r3 - 8002136: 4610 mov r0, r2 - 8002138: f7ff ff38 bl 8001fac + 8002146: 68bb ldr r3, [r7, #8] + 8002148: 6adb ldr r3, [r3, #44] @ 0x2c + 800214a: 2201 movs r2, #1 + 800214c: 409a lsls r2, r3 + 800214e: 4b24 ldr r3, [pc, #144] @ (80021e0 ) + 8002150: 681b ldr r3, [r3, #0] + 8002152: 4313 orrs r3, r2 + 8002154: 4a22 ldr r2, [pc, #136] @ (80021e0 ) + 8002156: 6013 str r3, [r2, #0] + 8002158: 68bb ldr r3, [r7, #8] + 800215a: 6ada ldr r2, [r3, #44] @ 0x2c + 800215c: 4613 mov r3, r2 + 800215e: 009b lsls r3, r3, #2 + 8002160: 4413 add r3, r2 + 8002162: 009b lsls r3, r3, #2 + 8002164: 4a1f ldr r2, [pc, #124] @ (80021e4 ) + 8002166: 441a add r2, r3 + 8002168: 68bb ldr r3, [r7, #8] + 800216a: 3304 adds r3, #4 + 800216c: 4619 mov r1, r3 + 800216e: 4610 mov r0, r2 + 8002170: f7ff ff38 bl 8001fe4 { /* Preemption is on, but a context switch should only be performed if the unblocked task has a priority that is equal to or higher than the currently executing task. */ if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) - 800213c: 68bb ldr r3, [r7, #8] - 800213e: 6ada ldr r2, [r3, #44] @ 0x2c - 8002140: 4b1b ldr r3, [pc, #108] @ (80021b0 ) - 8002142: 681b ldr r3, [r3, #0] - 8002144: 6adb ldr r3, [r3, #44] @ 0x2c - 8002146: 429a cmp r2, r3 - 8002148: d3b9 bcc.n 80020be + 8002174: 68bb ldr r3, [r7, #8] + 8002176: 6ada ldr r2, [r3, #44] @ 0x2c + 8002178: 4b1b ldr r3, [pc, #108] @ (80021e8 ) + 800217a: 681b ldr r3, [r3, #0] + 800217c: 6adb ldr r3, [r3, #44] @ 0x2c + 800217e: 429a cmp r2, r3 + 8002180: d3b9 bcc.n 80020f6 { xSwitchRequired = pdTRUE; - 800214a: 2301 movs r3, #1 - 800214c: 617b str r3, [r7, #20] + 8002182: 2301 movs r3, #1 + 8002184: 617b str r3, [r7, #20] if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) - 800214e: e7b6 b.n 80020be + 8002186: e7b6 b.n 80020f6 /* Tasks of equal priority to the currently running task will share processing time (time slice) if preemption is on, and the application writer has not explicitly turned time slicing off. */ #if ( ( configUSE_PREEMPTION == 1 ) && ( configUSE_TIME_SLICING == 1 ) ) { if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ pxCurrentTCB->uxPriority ] ) ) > ( UBaseType_t ) 1 ) - 8002150: 4b17 ldr r3, [pc, #92] @ (80021b0 ) - 8002152: 681b ldr r3, [r3, #0] - 8002154: 6ada ldr r2, [r3, #44] @ 0x2c - 8002156: 4915 ldr r1, [pc, #84] @ (80021ac ) - 8002158: 4613 mov r3, r2 - 800215a: 009b lsls r3, r3, #2 - 800215c: 4413 add r3, r2 - 800215e: 009b lsls r3, r3, #2 - 8002160: 440b add r3, r1 - 8002162: 681b ldr r3, [r3, #0] - 8002164: 2b01 cmp r3, #1 - 8002166: d901 bls.n 800216c + 8002188: 4b17 ldr r3, [pc, #92] @ (80021e8 ) + 800218a: 681b ldr r3, [r3, #0] + 800218c: 6ada ldr r2, [r3, #44] @ 0x2c + 800218e: 4915 ldr r1, [pc, #84] @ (80021e4 ) + 8002190: 4613 mov r3, r2 + 8002192: 009b lsls r3, r3, #2 + 8002194: 4413 add r3, r2 + 8002196: 009b lsls r3, r3, #2 + 8002198: 440b add r3, r1 + 800219a: 681b ldr r3, [r3, #0] + 800219c: 2b01 cmp r3, #1 + 800219e: d901 bls.n 80021a4 { xSwitchRequired = pdTRUE; - 8002168: 2301 movs r3, #1 - 800216a: 617b str r3, [r7, #20] + 80021a0: 2301 movs r3, #1 + 80021a2: 617b str r3, [r7, #20] } #endif /* configUSE_TICK_HOOK */ #if ( configUSE_PREEMPTION == 1 ) { if( xYieldPending != pdFALSE ) - 800216c: 4b11 ldr r3, [pc, #68] @ (80021b4 ) - 800216e: 681b ldr r3, [r3, #0] - 8002170: 2b00 cmp r3, #0 - 8002172: d007 beq.n 8002184 + 80021a4: 4b11 ldr r3, [pc, #68] @ (80021ec ) + 80021a6: 681b ldr r3, [r3, #0] + 80021a8: 2b00 cmp r3, #0 + 80021aa: d007 beq.n 80021bc { xSwitchRequired = pdTRUE; - 8002174: 2301 movs r3, #1 - 8002176: 617b str r3, [r7, #20] - 8002178: e004 b.n 8002184 + 80021ac: 2301 movs r3, #1 + 80021ae: 617b str r3, [r7, #20] + 80021b0: e004 b.n 80021bc } #endif /* configUSE_PREEMPTION */ } else { ++xPendedTicks; - 800217a: 4b0f ldr r3, [pc, #60] @ (80021b8 ) - 800217c: 681b ldr r3, [r3, #0] - 800217e: 3301 adds r3, #1 - 8002180: 4a0d ldr r2, [pc, #52] @ (80021b8 ) - 8002182: 6013 str r3, [r2, #0] + 80021b2: 4b0f ldr r3, [pc, #60] @ (80021f0 ) + 80021b4: 681b ldr r3, [r3, #0] + 80021b6: 3301 adds r3, #1 + 80021b8: 4a0d ldr r2, [pc, #52] @ (80021f0 ) + 80021ba: 6013 str r3, [r2, #0] vApplicationTickHook(); } #endif } return xSwitchRequired; - 8002184: 697b ldr r3, [r7, #20] + 80021bc: 697b ldr r3, [r7, #20] } - 8002186: 4618 mov r0, r3 - 8002188: 3718 adds r7, #24 - 800218a: 46bd mov sp, r7 - 800218c: bd80 pop {r7, pc} - 800218e: bf00 nop - 8002190: 2000012c .word 0x2000012c - 8002194: 20000114 .word 0x20000114 - 8002198: 2000010c .word 0x2000010c - 800219c: 20000110 .word 0x20000110 - 80021a0: 20000124 .word 0x20000124 - 80021a4: 20000128 .word 0x20000128 - 80021a8: 20000118 .word 0x20000118 - 80021ac: 20000080 .word 0x20000080 - 80021b0: 2000007c .word 0x2000007c - 80021b4: 20000120 .word 0x20000120 - 80021b8: 2000011c .word 0x2000011c + 80021be: 4618 mov r0, r3 + 80021c0: 3718 adds r7, #24 + 80021c2: 46bd mov sp, r7 + 80021c4: bd80 pop {r7, pc} + 80021c6: bf00 nop + 80021c8: 20000130 .word 0x20000130 + 80021cc: 20000118 .word 0x20000118 + 80021d0: 20000110 .word 0x20000110 + 80021d4: 20000114 .word 0x20000114 + 80021d8: 20000128 .word 0x20000128 + 80021dc: 2000012c .word 0x2000012c + 80021e0: 2000011c .word 0x2000011c + 80021e4: 20000084 .word 0x20000084 + 80021e8: 20000080 .word 0x20000080 + 80021ec: 20000124 .word 0x20000124 + 80021f0: 20000120 .word 0x20000120 -080021bc : +080021f4 : #endif /* configUSE_APPLICATION_TASK_TAG */ /*-----------------------------------------------------------*/ void vTaskSwitchContext( void ) { - 80021bc: b580 push {r7, lr} - 80021be: b088 sub sp, #32 - 80021c0: af00 add r7, sp, #0 + 80021f4: b580 push {r7, lr} + 80021f6: b088 sub sp, #32 + 80021f8: af00 add r7, sp, #0 if( uxSchedulerSuspended != ( UBaseType_t ) pdFALSE ) - 80021c2: 4b3a ldr r3, [pc, #232] @ (80022ac ) - 80021c4: 681b ldr r3, [r3, #0] - 80021c6: 2b00 cmp r3, #0 - 80021c8: d003 beq.n 80021d2 + 80021fa: 4b3a ldr r3, [pc, #232] @ (80022e4 ) + 80021fc: 681b ldr r3, [r3, #0] + 80021fe: 2b00 cmp r3, #0 + 8002200: d003 beq.n 800220a { /* The scheduler is currently suspended - do not allow a context switch. */ xYieldPending = pdTRUE; - 80021ca: 4b39 ldr r3, [pc, #228] @ (80022b0 ) - 80021cc: 2201 movs r2, #1 - 80021ce: 601a str r2, [r3, #0] + 8002202: 4b39 ldr r3, [pc, #228] @ (80022e8 ) + 8002204: 2201 movs r2, #1 + 8002206: 601a str r2, [r3, #0] for additional information. */ _impure_ptr = &( pxCurrentTCB->xNewLib_reent ); } #endif /* configUSE_NEWLIB_REENTRANT */ } } - 80021d0: e067 b.n 80022a2 + 8002208: e067 b.n 80022da xYieldPending = pdFALSE; - 80021d2: 4b37 ldr r3, [pc, #220] @ (80022b0 ) - 80021d4: 2200 movs r2, #0 - 80021d6: 601a str r2, [r3, #0] + 800220a: 4b37 ldr r3, [pc, #220] @ (80022e8 ) + 800220c: 2200 movs r2, #0 + 800220e: 601a str r2, [r3, #0] taskCHECK_FOR_STACK_OVERFLOW(); - 80021d8: 4b36 ldr r3, [pc, #216] @ (80022b4 ) - 80021da: 681b ldr r3, [r3, #0] - 80021dc: 6b1b ldr r3, [r3, #48] @ 0x30 - 80021de: 61fb str r3, [r7, #28] - 80021e0: f04f 33a5 mov.w r3, #2779096485 @ 0xa5a5a5a5 - 80021e4: 61bb str r3, [r7, #24] - 80021e6: 69fb ldr r3, [r7, #28] - 80021e8: 681b ldr r3, [r3, #0] - 80021ea: 69ba ldr r2, [r7, #24] - 80021ec: 429a cmp r2, r3 - 80021ee: d111 bne.n 8002214 - 80021f0: 69fb ldr r3, [r7, #28] - 80021f2: 3304 adds r3, #4 - 80021f4: 681b ldr r3, [r3, #0] - 80021f6: 69ba ldr r2, [r7, #24] - 80021f8: 429a cmp r2, r3 - 80021fa: d10b bne.n 8002214 - 80021fc: 69fb ldr r3, [r7, #28] - 80021fe: 3308 adds r3, #8 - 8002200: 681b ldr r3, [r3, #0] - 8002202: 69ba ldr r2, [r7, #24] - 8002204: 429a cmp r2, r3 - 8002206: d105 bne.n 8002214 - 8002208: 69fb ldr r3, [r7, #28] - 800220a: 330c adds r3, #12 - 800220c: 681b ldr r3, [r3, #0] - 800220e: 69ba ldr r2, [r7, #24] - 8002210: 429a cmp r2, r3 - 8002212: d008 beq.n 8002226 - 8002214: 4b27 ldr r3, [pc, #156] @ (80022b4 ) - 8002216: 681a ldr r2, [r3, #0] - 8002218: 4b26 ldr r3, [pc, #152] @ (80022b4 ) - 800221a: 681b ldr r3, [r3, #0] - 800221c: 3334 adds r3, #52 @ 0x34 - 800221e: 4619 mov r1, r3 - 8002220: 4610 mov r0, r2 - 8002222: f7fe f97b bl 800051c + 8002210: 4b36 ldr r3, [pc, #216] @ (80022ec ) + 8002212: 681b ldr r3, [r3, #0] + 8002214: 6b1b ldr r3, [r3, #48] @ 0x30 + 8002216: 61fb str r3, [r7, #28] + 8002218: f04f 33a5 mov.w r3, #2779096485 @ 0xa5a5a5a5 + 800221c: 61bb str r3, [r7, #24] + 800221e: 69fb ldr r3, [r7, #28] + 8002220: 681b ldr r3, [r3, #0] + 8002222: 69ba ldr r2, [r7, #24] + 8002224: 429a cmp r2, r3 + 8002226: d111 bne.n 800224c + 8002228: 69fb ldr r3, [r7, #28] + 800222a: 3304 adds r3, #4 + 800222c: 681b ldr r3, [r3, #0] + 800222e: 69ba ldr r2, [r7, #24] + 8002230: 429a cmp r2, r3 + 8002232: d10b bne.n 800224c + 8002234: 69fb ldr r3, [r7, #28] + 8002236: 3308 adds r3, #8 + 8002238: 681b ldr r3, [r3, #0] + 800223a: 69ba ldr r2, [r7, #24] + 800223c: 429a cmp r2, r3 + 800223e: d105 bne.n 800224c + 8002240: 69fb ldr r3, [r7, #28] + 8002242: 330c adds r3, #12 + 8002244: 681b ldr r3, [r3, #0] + 8002246: 69ba ldr r2, [r7, #24] + 8002248: 429a cmp r2, r3 + 800224a: d008 beq.n 800225e + 800224c: 4b27 ldr r3, [pc, #156] @ (80022ec ) + 800224e: 681a ldr r2, [r3, #0] + 8002250: 4b26 ldr r3, [pc, #152] @ (80022ec ) + 8002252: 681b ldr r3, [r3, #0] + 8002254: 3334 adds r3, #52 @ 0x34 + 8002256: 4619 mov r1, r3 + 8002258: 4610 mov r0, r2 + 800225a: f7fe f95f bl 800051c taskSELECT_HIGHEST_PRIORITY_TASK(); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 8002226: 4b24 ldr r3, [pc, #144] @ (80022b8 ) - 8002228: 681b ldr r3, [r3, #0] - 800222a: 60fb str r3, [r7, #12] + 800225e: 4b24 ldr r3, [pc, #144] @ (80022f0 ) + 8002260: 681b ldr r3, [r3, #0] + 8002262: 60fb str r3, [r7, #12] __asm volatile ( "clz %0, %1" : "=r" ( ucReturn ) : "r" ( ulBitmap ) : "memory" ); - 800222c: 68fb ldr r3, [r7, #12] - 800222e: fab3 f383 clz r3, r3 - 8002232: 72fb strb r3, [r7, #11] + 8002264: 68fb ldr r3, [r7, #12] + 8002266: fab3 f383 clz r3, r3 + 800226a: 72fb strb r3, [r7, #11] return ucReturn; - 8002234: 7afb ldrb r3, [r7, #11] - 8002236: f1c3 031f rsb r3, r3, #31 - 800223a: 617b str r3, [r7, #20] - 800223c: 491f ldr r1, [pc, #124] @ (80022bc ) - 800223e: 697a ldr r2, [r7, #20] - 8002240: 4613 mov r3, r2 - 8002242: 009b lsls r3, r3, #2 - 8002244: 4413 add r3, r2 - 8002246: 009b lsls r3, r3, #2 - 8002248: 440b add r3, r1 - 800224a: 681b ldr r3, [r3, #0] - 800224c: 2b00 cmp r3, #0 - 800224e: d10b bne.n 8002268 + 800226c: 7afb ldrb r3, [r7, #11] + 800226e: f1c3 031f rsb r3, r3, #31 + 8002272: 617b str r3, [r7, #20] + 8002274: 491f ldr r1, [pc, #124] @ (80022f4 ) + 8002276: 697a ldr r2, [r7, #20] + 8002278: 4613 mov r3, r2 + 800227a: 009b lsls r3, r3, #2 + 800227c: 4413 add r3, r2 + 800227e: 009b lsls r3, r3, #2 + 8002280: 440b add r3, r1 + 8002282: 681b ldr r3, [r3, #0] + 8002284: 2b00 cmp r3, #0 + 8002286: d10b bne.n 80022a0 __asm volatile - 8002250: f04f 0350 mov.w r3, #80 @ 0x50 - 8002254: f383 8811 msr BASEPRI, r3 - 8002258: f3bf 8f6f isb sy - 800225c: f3bf 8f4f dsb sy - 8002260: 607b str r3, [r7, #4] + 8002288: f04f 0350 mov.w r3, #80 @ 0x50 + 800228c: f383 8811 msr BASEPRI, r3 + 8002290: f3bf 8f6f isb sy + 8002294: f3bf 8f4f dsb sy + 8002298: 607b str r3, [r7, #4] } - 8002262: bf00 nop - 8002264: bf00 nop - 8002266: e7fd b.n 8002264 - 8002268: 697a ldr r2, [r7, #20] - 800226a: 4613 mov r3, r2 - 800226c: 009b lsls r3, r3, #2 - 800226e: 4413 add r3, r2 - 8002270: 009b lsls r3, r3, #2 - 8002272: 4a12 ldr r2, [pc, #72] @ (80022bc ) - 8002274: 4413 add r3, r2 - 8002276: 613b str r3, [r7, #16] - 8002278: 693b ldr r3, [r7, #16] - 800227a: 685b ldr r3, [r3, #4] - 800227c: 685a ldr r2, [r3, #4] - 800227e: 693b ldr r3, [r7, #16] - 8002280: 605a str r2, [r3, #4] - 8002282: 693b ldr r3, [r7, #16] - 8002284: 685a ldr r2, [r3, #4] - 8002286: 693b ldr r3, [r7, #16] - 8002288: 3308 adds r3, #8 - 800228a: 429a cmp r2, r3 - 800228c: d104 bne.n 8002298 - 800228e: 693b ldr r3, [r7, #16] - 8002290: 685b ldr r3, [r3, #4] - 8002292: 685a ldr r2, [r3, #4] - 8002294: 693b ldr r3, [r7, #16] - 8002296: 605a str r2, [r3, #4] - 8002298: 693b ldr r3, [r7, #16] - 800229a: 685b ldr r3, [r3, #4] - 800229c: 68db ldr r3, [r3, #12] - 800229e: 4a05 ldr r2, [pc, #20] @ (80022b4 ) - 80022a0: 6013 str r3, [r2, #0] + 800229a: bf00 nop + 800229c: bf00 nop + 800229e: e7fd b.n 800229c + 80022a0: 697a ldr r2, [r7, #20] + 80022a2: 4613 mov r3, r2 + 80022a4: 009b lsls r3, r3, #2 + 80022a6: 4413 add r3, r2 + 80022a8: 009b lsls r3, r3, #2 + 80022aa: 4a12 ldr r2, [pc, #72] @ (80022f4 ) + 80022ac: 4413 add r3, r2 + 80022ae: 613b str r3, [r7, #16] + 80022b0: 693b ldr r3, [r7, #16] + 80022b2: 685b ldr r3, [r3, #4] + 80022b4: 685a ldr r2, [r3, #4] + 80022b6: 693b ldr r3, [r7, #16] + 80022b8: 605a str r2, [r3, #4] + 80022ba: 693b ldr r3, [r7, #16] + 80022bc: 685a ldr r2, [r3, #4] + 80022be: 693b ldr r3, [r7, #16] + 80022c0: 3308 adds r3, #8 + 80022c2: 429a cmp r2, r3 + 80022c4: d104 bne.n 80022d0 + 80022c6: 693b ldr r3, [r7, #16] + 80022c8: 685b ldr r3, [r3, #4] + 80022ca: 685a ldr r2, [r3, #4] + 80022cc: 693b ldr r3, [r7, #16] + 80022ce: 605a str r2, [r3, #4] + 80022d0: 693b ldr r3, [r7, #16] + 80022d2: 685b ldr r3, [r3, #4] + 80022d4: 68db ldr r3, [r3, #12] + 80022d6: 4a05 ldr r2, [pc, #20] @ (80022ec ) + 80022d8: 6013 str r3, [r2, #0] } - 80022a2: bf00 nop - 80022a4: 3720 adds r7, #32 - 80022a6: 46bd mov sp, r7 - 80022a8: bd80 pop {r7, pc} - 80022aa: bf00 nop - 80022ac: 2000012c .word 0x2000012c - 80022b0: 20000120 .word 0x20000120 - 80022b4: 2000007c .word 0x2000007c - 80022b8: 20000118 .word 0x20000118 - 80022bc: 20000080 .word 0x20000080 + 80022da: bf00 nop + 80022dc: 3720 adds r7, #32 + 80022de: 46bd mov sp, r7 + 80022e0: bd80 pop {r7, pc} + 80022e2: bf00 nop + 80022e4: 20000130 .word 0x20000130 + 80022e8: 20000124 .word 0x20000124 + 80022ec: 20000080 .word 0x20000080 + 80022f0: 2000011c .word 0x2000011c + 80022f4: 20000084 .word 0x20000084 -080022c0 : +080022f8 : #endif /* INCLUDE_vTaskDelete */ /*-----------------------------------------------------------*/ static void prvResetNextTaskUnblockTime( void ) { - 80022c0: b480 push {r7} - 80022c2: b083 sub sp, #12 - 80022c4: af00 add r7, sp, #0 + 80022f8: b480 push {r7} + 80022fa: b083 sub sp, #12 + 80022fc: af00 add r7, sp, #0 TCB_t *pxTCB; if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE ) - 80022c6: 4b0c ldr r3, [pc, #48] @ (80022f8 ) - 80022c8: 681b ldr r3, [r3, #0] - 80022ca: 681b ldr r3, [r3, #0] - 80022cc: 2b00 cmp r3, #0 - 80022ce: d104 bne.n 80022da + 80022fe: 4b0c ldr r3, [pc, #48] @ (8002330 ) + 8002300: 681b ldr r3, [r3, #0] + 8002302: 681b ldr r3, [r3, #0] + 8002304: 2b00 cmp r3, #0 + 8002306: d104 bne.n 8002312 { /* The new current delayed list is empty. Set xNextTaskUnblockTime to the maximum possible value so it is extremely unlikely that the if( xTickCount >= xNextTaskUnblockTime ) test will pass until there is an item in the delayed list. */ xNextTaskUnblockTime = portMAX_DELAY; - 80022d0: 4b0a ldr r3, [pc, #40] @ (80022fc ) - 80022d2: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff - 80022d6: 601a str r2, [r3, #0] + 8002308: 4b0a ldr r3, [pc, #40] @ (8002334 ) + 800230a: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 800230e: 601a str r2, [r3, #0] which the task at the head of the delayed list should be removed from the Blocked state. */ ( pxTCB ) = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ xNextTaskUnblockTime = listGET_LIST_ITEM_VALUE( &( ( pxTCB )->xStateListItem ) ); } } - 80022d8: e008 b.n 80022ec + 8002310: e008 b.n 8002324 ( pxTCB ) = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */ - 80022da: 4b07 ldr r3, [pc, #28] @ (80022f8 ) - 80022dc: 681b ldr r3, [r3, #0] - 80022de: 68db ldr r3, [r3, #12] - 80022e0: 68db ldr r3, [r3, #12] - 80022e2: 607b str r3, [r7, #4] + 8002312: 4b07 ldr r3, [pc, #28] @ (8002330 ) + 8002314: 681b ldr r3, [r3, #0] + 8002316: 68db ldr r3, [r3, #12] + 8002318: 68db ldr r3, [r3, #12] + 800231a: 607b str r3, [r7, #4] xNextTaskUnblockTime = listGET_LIST_ITEM_VALUE( &( ( pxTCB )->xStateListItem ) ); - 80022e4: 687b ldr r3, [r7, #4] - 80022e6: 685b ldr r3, [r3, #4] - 80022e8: 4a04 ldr r2, [pc, #16] @ (80022fc ) - 80022ea: 6013 str r3, [r2, #0] + 800231c: 687b ldr r3, [r7, #4] + 800231e: 685b ldr r3, [r3, #4] + 8002320: 4a04 ldr r2, [pc, #16] @ (8002334 ) + 8002322: 6013 str r3, [r2, #0] } - 80022ec: bf00 nop - 80022ee: 370c adds r7, #12 - 80022f0: 46bd mov sp, r7 - 80022f2: f85d 7b04 ldr.w r7, [sp], #4 - 80022f6: 4770 bx lr - 80022f8: 2000010c .word 0x2000010c - 80022fc: 20000128 .word 0x20000128 + 8002324: bf00 nop + 8002326: 370c adds r7, #12 + 8002328: 46bd mov sp, r7 + 800232a: f85d 7b04 ldr.w r7, [sp], #4 + 800232e: 4770 bx lr + 8002330: 20000110 .word 0x20000110 + 8002334: 2000012c .word 0x2000012c + ... -08002300 : +08002340 : } /*-----------------------------------------------------------*/ void vPortSVCHandler( void ) { __asm volatile ( - 8002300: 4b07 ldr r3, [pc, #28] @ (8002320 ) - 8002302: 6819 ldr r1, [r3, #0] - 8002304: 6808 ldr r0, [r1, #0] - 8002306: e8b0 4ff0 ldmia.w r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 800230a: f380 8809 msr PSP, r0 - 800230e: f3bf 8f6f isb sy - 8002312: f04f 0000 mov.w r0, #0 - 8002316: f380 8811 msr BASEPRI, r0 - 800231a: 4770 bx lr - 800231c: f3af 8000 nop.w + 8002340: 4b07 ldr r3, [pc, #28] @ (8002360 ) + 8002342: 6819 ldr r1, [r3, #0] + 8002344: 6808 ldr r0, [r1, #0] + 8002346: e8b0 4ff0 ldmia.w r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800234a: f380 8809 msr PSP, r0 + 800234e: f3bf 8f6f isb sy + 8002352: f04f 0000 mov.w r0, #0 + 8002356: f380 8811 msr BASEPRI, r0 + 800235a: 4770 bx lr + 800235c: f3af 8000 nop.w -08002320 : - 8002320: 2000007c .word 0x2000007c +08002360 : + 8002360: 20000080 .word 0x20000080 " bx r14 \n" " \n" " .align 4 \n" "pxCurrentTCBConst2: .word pxCurrentTCB \n" ); } - 8002324: bf00 nop - 8002326: bf00 nop + 8002364: bf00 nop + 8002366: bf00 nop ... -08002330 : +08002370 : void xPortPendSVHandler( void ) { /* This is a naked function. */ __asm volatile - 8002330: f3ef 8009 mrs r0, PSP - 8002334: f3bf 8f6f isb sy - 8002338: 4b15 ldr r3, [pc, #84] @ (8002390 ) - 800233a: 681a ldr r2, [r3, #0] - 800233c: f01e 0f10 tst.w lr, #16 - 8002340: bf08 it eq - 8002342: ed20 8a10 vstmdbeq r0!, {s16-s31} - 8002346: e920 4ff0 stmdb r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 800234a: 6010 str r0, [r2, #0] - 800234c: e92d 0009 stmdb sp!, {r0, r3} - 8002350: f04f 0050 mov.w r0, #80 @ 0x50 - 8002354: f380 8811 msr BASEPRI, r0 - 8002358: f3bf 8f4f dsb sy - 800235c: f3bf 8f6f isb sy - 8002360: f7ff ff2c bl 80021bc - 8002364: f04f 0000 mov.w r0, #0 - 8002368: f380 8811 msr BASEPRI, r0 - 800236c: bc09 pop {r0, r3} - 800236e: 6819 ldr r1, [r3, #0] - 8002370: 6808 ldr r0, [r1, #0] - 8002372: e8b0 4ff0 ldmia.w r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8002376: f01e 0f10 tst.w lr, #16 - 800237a: bf08 it eq - 800237c: ecb0 8a10 vldmiaeq r0!, {s16-s31} - 8002380: f380 8809 msr PSP, r0 - 8002384: f3bf 8f6f isb sy - 8002388: 4770 bx lr - 800238a: bf00 nop - 800238c: f3af 8000 nop.w + 8002370: f3ef 8009 mrs r0, PSP + 8002374: f3bf 8f6f isb sy + 8002378: 4b15 ldr r3, [pc, #84] @ (80023d0 ) + 800237a: 681a ldr r2, [r3, #0] + 800237c: f01e 0f10 tst.w lr, #16 + 8002380: bf08 it eq + 8002382: ed20 8a10 vstmdbeq r0!, {s16-s31} + 8002386: e920 4ff0 stmdb r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800238a: 6010 str r0, [r2, #0] + 800238c: e92d 0009 stmdb sp!, {r0, r3} + 8002390: f04f 0050 mov.w r0, #80 @ 0x50 + 8002394: f380 8811 msr BASEPRI, r0 + 8002398: f3bf 8f4f dsb sy + 800239c: f3bf 8f6f isb sy + 80023a0: f7ff ff28 bl 80021f4 + 80023a4: f04f 0000 mov.w r0, #0 + 80023a8: f380 8811 msr BASEPRI, r0 + 80023ac: bc09 pop {r0, r3} + 80023ae: 6819 ldr r1, [r3, #0] + 80023b0: 6808 ldr r0, [r1, #0] + 80023b2: e8b0 4ff0 ldmia.w r0!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 80023b6: f01e 0f10 tst.w lr, #16 + 80023ba: bf08 it eq + 80023bc: ecb0 8a10 vldmiaeq r0!, {s16-s31} + 80023c0: f380 8809 msr PSP, r0 + 80023c4: f3bf 8f6f isb sy + 80023c8: 4770 bx lr + 80023ca: bf00 nop + 80023cc: f3af 8000 nop.w -08002390 : - 8002390: 2000007c .word 0x2000007c +080023d0 : + 80023d0: 20000080 .word 0x20000080 " \n" " .align 4 \n" "pxCurrentTCBConst: .word pxCurrentTCB \n" ::"i"(configMAX_SYSCALL_INTERRUPT_PRIORITY) ); } - 8002394: bf00 nop - 8002396: bf00 nop + 80023d4: bf00 nop + 80023d6: bf00 nop -08002398 : +080023d8 : /*-----------------------------------------------------------*/ void xPortSysTickHandler( void ) { - 8002398: b580 push {r7, lr} - 800239a: b082 sub sp, #8 - 800239c: af00 add r7, sp, #0 + 80023d8: b580 push {r7, lr} + 80023da: b082 sub sp, #8 + 80023dc: af00 add r7, sp, #0 __asm volatile - 800239e: f04f 0350 mov.w r3, #80 @ 0x50 - 80023a2: f383 8811 msr BASEPRI, r3 - 80023a6: f3bf 8f6f isb sy - 80023aa: f3bf 8f4f dsb sy - 80023ae: 607b str r3, [r7, #4] + 80023de: f04f 0350 mov.w r3, #80 @ 0x50 + 80023e2: f383 8811 msr BASEPRI, r3 + 80023e6: f3bf 8f6f isb sy + 80023ea: f3bf 8f4f dsb sy + 80023ee: 607b str r3, [r7, #4] } - 80023b0: bf00 nop + 80023f0: bf00 nop save and then restore the interrupt mask value as its value is already known. */ portDISABLE_INTERRUPTS(); { /* Increment the RTOS tick. */ if( xTaskIncrementTick() != pdFALSE ) - 80023b2: f7ff fe49 bl 8002048 - 80023b6: 4603 mov r3, r0 - 80023b8: 2b00 cmp r3, #0 - 80023ba: d003 beq.n 80023c4 + 80023f2: f7ff fe45 bl 8002080 + 80023f6: 4603 mov r3, r0 + 80023f8: 2b00 cmp r3, #0 + 80023fa: d003 beq.n 8002404 { /* A context switch is required. Context switching is performed in the PendSV interrupt. Pend the PendSV interrupt. */ portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT; - 80023bc: 4b06 ldr r3, [pc, #24] @ (80023d8 ) - 80023be: f04f 5280 mov.w r2, #268435456 @ 0x10000000 - 80023c2: 601a str r2, [r3, #0] - 80023c4: 2300 movs r3, #0 - 80023c6: 603b str r3, [r7, #0] + 80023fc: 4b06 ldr r3, [pc, #24] @ (8002418 ) + 80023fe: f04f 5280 mov.w r2, #268435456 @ 0x10000000 + 8002402: 601a str r2, [r3, #0] + 8002404: 2300 movs r3, #0 + 8002406: 603b str r3, [r7, #0] } /*-----------------------------------------------------------*/ portFORCE_INLINE static void vPortSetBASEPRI( uint32_t ulNewMaskValue ) { __asm volatile - 80023c8: 683b ldr r3, [r7, #0] - 80023ca: f383 8811 msr BASEPRI, r3 + 8002408: 683b ldr r3, [r7, #0] + 800240a: f383 8811 msr BASEPRI, r3 ( " msr basepri, %0 " :: "r" ( ulNewMaskValue ) : "memory" ); } - 80023ce: bf00 nop + 800240e: bf00 nop } } portENABLE_INTERRUPTS(); } - 80023d0: bf00 nop - 80023d2: 3708 adds r7, #8 - 80023d4: 46bd mov sp, r7 - 80023d6: bd80 pop {r7, pc} - 80023d8: e000ed04 .word 0xe000ed04 + 8002410: bf00 nop + 8002412: 3708 adds r7, #8 + 8002414: 46bd mov sp, r7 + 8002416: bd80 pop {r7, pc} + 8002418: e000ed04 .word 0xe000ed04 -080023dc : - 80023dc: 4402 add r2, r0 - 80023de: 4603 mov r3, r0 - 80023e0: 4293 cmp r3, r2 - 80023e2: d100 bne.n 80023e6 - 80023e4: 4770 bx lr - 80023e6: f803 1b01 strb.w r1, [r3], #1 - 80023ea: e7f9 b.n 80023e0 +0800241c : + 800241c: 4402 add r2, r0 + 800241e: 4603 mov r3, r0 + 8002420: 4293 cmp r3, r2 + 8002422: d100 bne.n 8002426 + 8002424: 4770 bx lr + 8002426: f803 1b01 strb.w r1, [r3], #1 + 800242a: e7f9 b.n 8002420 -080023ec <__libc_init_array>: - 80023ec: b570 push {r4, r5, r6, lr} - 80023ee: 4d0d ldr r5, [pc, #52] @ (8002424 <__libc_init_array+0x38>) - 80023f0: 4c0d ldr r4, [pc, #52] @ (8002428 <__libc_init_array+0x3c>) - 80023f2: 1b64 subs r4, r4, r5 - 80023f4: 10a4 asrs r4, r4, #2 - 80023f6: 2600 movs r6, #0 - 80023f8: 42a6 cmp r6, r4 - 80023fa: d109 bne.n 8002410 <__libc_init_array+0x24> - 80023fc: 4d0b ldr r5, [pc, #44] @ (800242c <__libc_init_array+0x40>) - 80023fe: 4c0c ldr r4, [pc, #48] @ (8002430 <__libc_init_array+0x44>) - 8002400: f000 f818 bl 8002434 <_init> - 8002404: 1b64 subs r4, r4, r5 - 8002406: 10a4 asrs r4, r4, #2 - 8002408: 2600 movs r6, #0 - 800240a: 42a6 cmp r6, r4 - 800240c: d105 bne.n 800241a <__libc_init_array+0x2e> - 800240e: bd70 pop {r4, r5, r6, pc} - 8002410: f855 3b04 ldr.w r3, [r5], #4 - 8002414: 4798 blx r3 - 8002416: 3601 adds r6, #1 - 8002418: e7ee b.n 80023f8 <__libc_init_array+0xc> - 800241a: f855 3b04 ldr.w r3, [r5], #4 - 800241e: 4798 blx r3 - 8002420: 3601 adds r6, #1 - 8002422: e7f2 b.n 800240a <__libc_init_array+0x1e> - 8002424: 0800246c .word 0x0800246c - 8002428: 0800246c .word 0x0800246c - 800242c: 0800246c .word 0x0800246c - 8002430: 08002470 .word 0x08002470 +0800242c <__libc_init_array>: + 800242c: b570 push {r4, r5, r6, lr} + 800242e: 4d0d ldr r5, [pc, #52] @ (8002464 <__libc_init_array+0x38>) + 8002430: 4c0d ldr r4, [pc, #52] @ (8002468 <__libc_init_array+0x3c>) + 8002432: 1b64 subs r4, r4, r5 + 8002434: 10a4 asrs r4, r4, #2 + 8002436: 2600 movs r6, #0 + 8002438: 42a6 cmp r6, r4 + 800243a: d109 bne.n 8002450 <__libc_init_array+0x24> + 800243c: 4d0b ldr r5, [pc, #44] @ (800246c <__libc_init_array+0x40>) + 800243e: 4c0c ldr r4, [pc, #48] @ (8002470 <__libc_init_array+0x44>) + 8002440: f000 f818 bl 8002474 <_init> + 8002444: 1b64 subs r4, r4, r5 + 8002446: 10a4 asrs r4, r4, #2 + 8002448: 2600 movs r6, #0 + 800244a: 42a6 cmp r6, r4 + 800244c: d105 bne.n 800245a <__libc_init_array+0x2e> + 800244e: bd70 pop {r4, r5, r6, pc} + 8002450: f855 3b04 ldr.w r3, [r5], #4 + 8002454: 4798 blx r3 + 8002456: 3601 adds r6, #1 + 8002458: e7ee b.n 8002438 <__libc_init_array+0xc> + 800245a: f855 3b04 ldr.w r3, [r5], #4 + 800245e: 4798 blx r3 + 8002460: 3601 adds r6, #1 + 8002462: e7f2 b.n 800244a <__libc_init_array+0x1e> + 8002464: 080024ac .word 0x080024ac + 8002468: 080024ac .word 0x080024ac + 800246c: 080024ac .word 0x080024ac + 8002470: 080024b0 .word 0x080024b0 -08002434 <_init>: - 8002434: b5f8 push {r3, r4, r5, r6, r7, lr} - 8002436: bf00 nop - 8002438: bcf8 pop {r3, r4, r5, r6, r7} - 800243a: bc08 pop {r3} - 800243c: 469e mov lr, r3 - 800243e: 4770 bx lr +08002474 <_init>: + 8002474: b5f8 push {r3, r4, r5, r6, r7, lr} + 8002476: bf00 nop + 8002478: bcf8 pop {r3, r4, r5, r6, r7} + 800247a: bc08 pop {r3} + 800247c: 469e mov lr, r3 + 800247e: 4770 bx lr -08002440 <_fini>: - 8002440: b5f8 push {r3, r4, r5, r6, r7, lr} - 8002442: bf00 nop - 8002444: bcf8 pop {r3, r4, r5, r6, r7} - 8002446: bc08 pop {r3} - 8002448: 469e mov lr, r3 - 800244a: 4770 bx lr +08002480 <_fini>: + 8002480: b5f8 push {r3, r4, r5, r6, r7, lr} + 8002482: bf00 nop + 8002484: bcf8 pop {r3, r4, r5, r6, r7} + 8002486: bc08 pop {r3} + 8002488: 469e mov lr, r3 + 800248a: 4770 bx lr diff --git a/TrafficLightsPlusPlus/Debug/TrafficLightsPlusPlus.map b/TrafficLightsPlusPlus/Debug/TrafficLightsPlusPlus.map index 08e92e3..3180d69 100644 --- a/TrafficLightsPlusPlus/Debug/TrafficLightsPlusPlus.map +++ b/TrafficLightsPlusPlus/Debug/TrafficLightsPlusPlus.map @@ -192,10 +192,6 @@ Discarded input sections 0x00000000 0x4 ./Core/Src/main.o .rodata._ZL16DURATION_RED_PED 0x00000000 0x4 ./Core/Src/main.o - .bss._ZZ22HAL_GPIO_EXTI_CallBackE17lastInterruptTime - 0x00000000 0x4 ./Core/Src/main.o - .text.HAL_GPIO_EXTI_CallBack - 0x00000000 0x44 ./Core/Src/main.o .debug_macro 0x00000000 0xbb0 ./Core/Src/main.o .debug_macro 0x00000000 0x2a1 ./Core/Src/main.o .debug_macro 0x00000000 0x2e ./Core/Src/main.o @@ -2101,6 +2097,8 @@ Discarded input sections 0x00000000 0x34 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o .text.HAL_GPIO_LockPin 0x00000000 0x50 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .text.HAL_GPIO_EXTI_Callback + 0x00000000 0x16 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o .debug_macro 0x00000000 0xad8 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o .debug_macro 0x00000000 0x2a1 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o .debug_macro 0x00000000 0x2e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o @@ -4565,7 +4563,7 @@ LOAD /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externalto 0x08000000 g_pfnVectors 0x080001ac . = ALIGN (0x4) -.text 0x080001b0 0x229c +.text 0x080001b0 0x22dc 0x080001b0 . = ALIGN (0x4) *(.text) .text 0x080001b0 0x40 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o @@ -4582,371 +4580,374 @@ LOAD /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externalto 0x0800051c vApplicationStackOverflowHook *fill* 0x08000532 0x2 .text._Z16SetTrafficLights12TrafficState - 0x08000534 0x70 ./Core/Src/main.o + 0x08000534 0x68 ./Core/Src/main.o 0x08000534 SetTrafficLights(TrafficState) - .text.main 0x080005a4 0x15c ./Core/Src/main.o - 0x080005a4 main + .text.main 0x0800059c 0x170 ./Core/Src/main.o + 0x0800059c main .text.SystemClock_Config - 0x08000700 0xec ./Core/Src/main.o - 0x08000700 SystemClock_Config + 0x0800070c 0xec ./Core/Src/main.o + 0x0800070c SystemClock_Config .text.MX_GPIO_Init - 0x080007ec 0xb4 ./Core/Src/main.o - .text.Error_Handler - 0x080008a0 0xc ./Core/Src/main.o - 0x080008a0 Error_Handler - .text.HAL_MspInit - 0x080008ac 0x58 ./Core/Src/stm32f4xx_hal_msp.o - 0x080008ac HAL_MspInit - .text.HAL_TIM_Base_MspInit - 0x08000904 0x44 ./Core/Src/stm32f4xx_hal_msp.o - 0x08000904 HAL_TIM_Base_MspInit - .text.HAL_InitTick - 0x08000948 0xf8 ./Core/Src/stm32f4xx_hal_timebase_tim.o - 0x08000948 HAL_InitTick - .text.NMI_Handler - 0x08000a40 0x8 ./Core/Src/stm32f4xx_it.o - 0x08000a40 NMI_Handler - .text.HardFault_Handler - 0x08000a48 0x8 ./Core/Src/stm32f4xx_it.o - 0x08000a48 HardFault_Handler - .text.MemManage_Handler - 0x08000a50 0x8 ./Core/Src/stm32f4xx_it.o - 0x08000a50 MemManage_Handler - .text.BusFault_Handler - 0x08000a58 0x8 ./Core/Src/stm32f4xx_it.o - 0x08000a58 BusFault_Handler - .text.UsageFault_Handler - 0x08000a60 0x8 ./Core/Src/stm32f4xx_it.o - 0x08000a60 UsageFault_Handler - .text.DebugMon_Handler - 0x08000a68 0xe ./Core/Src/stm32f4xx_it.o - 0x08000a68 DebugMon_Handler - .text.EXTI15_10_IRQHandler - 0x08000a76 0x10 ./Core/Src/stm32f4xx_it.o - 0x08000a76 EXTI15_10_IRQHandler - *fill* 0x08000a86 0x2 - .text.TIM6_DAC_IRQHandler - 0x08000a88 0x14 ./Core/Src/stm32f4xx_it.o - 0x08000a88 TIM6_DAC_IRQHandler - .text.SystemInit - 0x08000a9c 0x24 ./Core/Src/system_stm32f4xx.o - 0x08000a9c SystemInit - .text.Reset_Handler - 0x08000ac0 0x50 ./Core/Startup/startup_stm32f429zitx.o - 0x08000ac0 Reset_Handler - .text.Default_Handler - 0x08000b10 0x2 ./Core/Startup/startup_stm32f429zitx.o - 0x08000b10 RTC_Alarm_IRQHandler - 0x08000b10 HASH_RNG_IRQHandler - 0x08000b10 EXTI2_IRQHandler - 0x08000b10 TIM8_CC_IRQHandler - 0x08000b10 UART8_IRQHandler - 0x08000b10 SPI4_IRQHandler - 0x08000b10 TIM1_CC_IRQHandler - 0x08000b10 DMA2_Stream5_IRQHandler - 0x08000b10 DMA1_Stream5_IRQHandler - 0x08000b10 PVD_IRQHandler - 0x08000b10 SDIO_IRQHandler - 0x08000b10 TAMP_STAMP_IRQHandler - 0x08000b10 CAN2_RX1_IRQHandler - 0x08000b10 EXTI3_IRQHandler - 0x08000b10 TIM8_TRG_COM_TIM14_IRQHandler - 0x08000b10 TIM1_UP_TIM10_IRQHandler - 0x08000b10 TIM8_UP_TIM13_IRQHandler - 0x08000b10 I2C3_ER_IRQHandler - 0x08000b10 EXTI0_IRQHandler - 0x08000b10 I2C2_EV_IRQHandler - 0x08000b10 DMA1_Stream2_IRQHandler - 0x08000b10 CAN1_RX0_IRQHandler - 0x08000b10 FPU_IRQHandler - 0x08000b10 OTG_HS_WKUP_IRQHandler - 0x08000b10 LTDC_ER_IRQHandler - 0x08000b10 CAN2_SCE_IRQHandler - 0x08000b10 DMA2_Stream2_IRQHandler - 0x08000b10 SPI1_IRQHandler - 0x08000b10 TIM1_BRK_TIM9_IRQHandler - 0x08000b10 DCMI_IRQHandler - 0x08000b10 CAN2_RX0_IRQHandler - 0x08000b10 DMA2_Stream3_IRQHandler - 0x08000b10 USART6_IRQHandler - 0x08000b10 USART3_IRQHandler - 0x08000b10 CAN1_RX1_IRQHandler - 0x08000b10 UART5_IRQHandler - 0x08000b10 DMA2_Stream0_IRQHandler - 0x08000b10 TIM4_IRQHandler - 0x08000b10 I2C1_EV_IRQHandler - 0x08000b10 DMA1_Stream6_IRQHandler - 0x08000b10 DMA1_Stream1_IRQHandler - 0x08000b10 UART4_IRQHandler - 0x08000b10 TIM3_IRQHandler - 0x08000b10 RCC_IRQHandler - 0x08000b10 TIM8_BRK_TIM12_IRQHandler - 0x08000b10 Default_Handler - 0x08000b10 ADC_IRQHandler - 0x08000b10 DMA1_Stream7_IRQHandler - 0x08000b10 SPI5_IRQHandler - 0x08000b10 TIM7_IRQHandler - 0x08000b10 CAN2_TX_IRQHandler - 0x08000b10 TIM5_IRQHandler - 0x08000b10 DMA2_Stream7_IRQHandler - 0x08000b10 I2C3_EV_IRQHandler - 0x08000b10 EXTI9_5_IRQHandler - 0x08000b10 RTC_WKUP_IRQHandler - 0x08000b10 LTDC_IRQHandler - 0x08000b10 ETH_WKUP_IRQHandler - 0x08000b10 SPI2_IRQHandler - 0x08000b10 OTG_HS_EP1_IN_IRQHandler - 0x08000b10 DMA1_Stream0_IRQHandler - 0x08000b10 CAN1_TX_IRQHandler - 0x08000b10 EXTI4_IRQHandler - 0x08000b10 ETH_IRQHandler - 0x08000b10 OTG_HS_EP1_OUT_IRQHandler - 0x08000b10 WWDG_IRQHandler - 0x08000b10 SPI6_IRQHandler - 0x08000b10 TIM2_IRQHandler - 0x08000b10 OTG_FS_WKUP_IRQHandler - 0x08000b10 TIM1_TRG_COM_TIM11_IRQHandler - 0x08000b10 OTG_HS_IRQHandler - 0x08000b10 DMA2D_IRQHandler - 0x08000b10 EXTI1_IRQHandler - 0x08000b10 UART7_IRQHandler - 0x08000b10 USART2_IRQHandler - 0x08000b10 I2C2_ER_IRQHandler - 0x08000b10 DMA2_Stream1_IRQHandler - 0x08000b10 CAN1_SCE_IRQHandler - 0x08000b10 FLASH_IRQHandler - 0x08000b10 DMA2_Stream4_IRQHandler - 0x08000b10 USART1_IRQHandler - 0x08000b10 OTG_FS_IRQHandler - 0x08000b10 SPI3_IRQHandler - 0x08000b10 DMA1_Stream4_IRQHandler - 0x08000b10 I2C1_ER_IRQHandler - 0x08000b10 FMC_IRQHandler - 0x08000b10 DMA2_Stream6_IRQHandler - 0x08000b10 SAI1_IRQHandler - 0x08000b10 DMA1_Stream3_IRQHandler - *fill* 0x08000b12 0x2 - .text.HAL_Init - 0x08000b14 0x44 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x08000b14 HAL_Init - .text.HAL_GetTick - 0x08000b58 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x08000b58 HAL_GetTick - .text.__NVIC_SetPriorityGrouping - 0x08000b70 0x48 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .text.__NVIC_GetPriorityGrouping - 0x08000bb8 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .text.__NVIC_EnableIRQ - 0x08000bd4 0x3c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .text.__NVIC_SetPriority - 0x08000c10 0x54 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .text.NVIC_EncodePriority - 0x08000c64 0x66 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .text.HAL_NVIC_SetPriorityGrouping - 0x08000cca 0x16 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - 0x08000cca HAL_NVIC_SetPriorityGrouping - .text.HAL_NVIC_SetPriority - 0x08000ce0 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - 0x08000ce0 HAL_NVIC_SetPriority - .text.HAL_NVIC_EnableIRQ - 0x08000d18 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - 0x08000d18 HAL_NVIC_EnableIRQ - .text.HAL_GPIO_Init - 0x08000d34 0x358 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - 0x08000d34 HAL_GPIO_Init - .text.HAL_GPIO_WritePin - 0x0800108c 0x32 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - 0x0800108c HAL_GPIO_WritePin - *fill* 0x080010be 0x2 - .text.HAL_GPIO_EXTI_IRQHandler - 0x080010c0 0x30 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - 0x080010c0 HAL_GPIO_EXTI_IRQHandler + 0x080007f8 0xb4 ./Core/Src/main.o .text.HAL_GPIO_EXTI_Callback - 0x080010f0 0x16 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - 0x080010f0 HAL_GPIO_EXTI_Callback - *fill* 0x08001106 0x2 + 0x080008ac 0x44 ./Core/Src/main.o + 0x080008ac HAL_GPIO_EXTI_Callback + .text.Error_Handler + 0x080008f0 0xc ./Core/Src/main.o + 0x080008f0 Error_Handler + .text.HAL_MspInit + 0x080008fc 0x58 ./Core/Src/stm32f4xx_hal_msp.o + 0x080008fc HAL_MspInit + .text.HAL_TIM_Base_MspInit + 0x08000954 0x44 ./Core/Src/stm32f4xx_hal_msp.o + 0x08000954 HAL_TIM_Base_MspInit + .text.HAL_InitTick + 0x08000998 0xf8 ./Core/Src/stm32f4xx_hal_timebase_tim.o + 0x08000998 HAL_InitTick + .text.NMI_Handler + 0x08000a90 0x8 ./Core/Src/stm32f4xx_it.o + 0x08000a90 NMI_Handler + .text.HardFault_Handler + 0x08000a98 0x8 ./Core/Src/stm32f4xx_it.o + 0x08000a98 HardFault_Handler + .text.MemManage_Handler + 0x08000aa0 0x8 ./Core/Src/stm32f4xx_it.o + 0x08000aa0 MemManage_Handler + .text.BusFault_Handler + 0x08000aa8 0x8 ./Core/Src/stm32f4xx_it.o + 0x08000aa8 BusFault_Handler + .text.UsageFault_Handler + 0x08000ab0 0x8 ./Core/Src/stm32f4xx_it.o + 0x08000ab0 UsageFault_Handler + .text.DebugMon_Handler + 0x08000ab8 0xe ./Core/Src/stm32f4xx_it.o + 0x08000ab8 DebugMon_Handler + .text.EXTI15_10_IRQHandler + 0x08000ac6 0x10 ./Core/Src/stm32f4xx_it.o + 0x08000ac6 EXTI15_10_IRQHandler + *fill* 0x08000ad6 0x2 + .text.TIM6_DAC_IRQHandler + 0x08000ad8 0x14 ./Core/Src/stm32f4xx_it.o + 0x08000ad8 TIM6_DAC_IRQHandler + .text.SystemInit + 0x08000aec 0x24 ./Core/Src/system_stm32f4xx.o + 0x08000aec SystemInit + .text.Reset_Handler + 0x08000b10 0x50 ./Core/Startup/startup_stm32f429zitx.o + 0x08000b10 Reset_Handler + .text.Default_Handler + 0x08000b60 0x2 ./Core/Startup/startup_stm32f429zitx.o + 0x08000b60 RTC_Alarm_IRQHandler + 0x08000b60 HASH_RNG_IRQHandler + 0x08000b60 EXTI2_IRQHandler + 0x08000b60 TIM8_CC_IRQHandler + 0x08000b60 UART8_IRQHandler + 0x08000b60 SPI4_IRQHandler + 0x08000b60 TIM1_CC_IRQHandler + 0x08000b60 DMA2_Stream5_IRQHandler + 0x08000b60 DMA1_Stream5_IRQHandler + 0x08000b60 PVD_IRQHandler + 0x08000b60 SDIO_IRQHandler + 0x08000b60 TAMP_STAMP_IRQHandler + 0x08000b60 CAN2_RX1_IRQHandler + 0x08000b60 EXTI3_IRQHandler + 0x08000b60 TIM8_TRG_COM_TIM14_IRQHandler + 0x08000b60 TIM1_UP_TIM10_IRQHandler + 0x08000b60 TIM8_UP_TIM13_IRQHandler + 0x08000b60 I2C3_ER_IRQHandler + 0x08000b60 EXTI0_IRQHandler + 0x08000b60 I2C2_EV_IRQHandler + 0x08000b60 DMA1_Stream2_IRQHandler + 0x08000b60 CAN1_RX0_IRQHandler + 0x08000b60 FPU_IRQHandler + 0x08000b60 OTG_HS_WKUP_IRQHandler + 0x08000b60 LTDC_ER_IRQHandler + 0x08000b60 CAN2_SCE_IRQHandler + 0x08000b60 DMA2_Stream2_IRQHandler + 0x08000b60 SPI1_IRQHandler + 0x08000b60 TIM1_BRK_TIM9_IRQHandler + 0x08000b60 DCMI_IRQHandler + 0x08000b60 CAN2_RX0_IRQHandler + 0x08000b60 DMA2_Stream3_IRQHandler + 0x08000b60 USART6_IRQHandler + 0x08000b60 USART3_IRQHandler + 0x08000b60 CAN1_RX1_IRQHandler + 0x08000b60 UART5_IRQHandler + 0x08000b60 DMA2_Stream0_IRQHandler + 0x08000b60 TIM4_IRQHandler + 0x08000b60 I2C1_EV_IRQHandler + 0x08000b60 DMA1_Stream6_IRQHandler + 0x08000b60 DMA1_Stream1_IRQHandler + 0x08000b60 UART4_IRQHandler + 0x08000b60 TIM3_IRQHandler + 0x08000b60 RCC_IRQHandler + 0x08000b60 TIM8_BRK_TIM12_IRQHandler + 0x08000b60 Default_Handler + 0x08000b60 ADC_IRQHandler + 0x08000b60 DMA1_Stream7_IRQHandler + 0x08000b60 SPI5_IRQHandler + 0x08000b60 TIM7_IRQHandler + 0x08000b60 CAN2_TX_IRQHandler + 0x08000b60 TIM5_IRQHandler + 0x08000b60 DMA2_Stream7_IRQHandler + 0x08000b60 I2C3_EV_IRQHandler + 0x08000b60 EXTI9_5_IRQHandler + 0x08000b60 RTC_WKUP_IRQHandler + 0x08000b60 LTDC_IRQHandler + 0x08000b60 ETH_WKUP_IRQHandler + 0x08000b60 SPI2_IRQHandler + 0x08000b60 OTG_HS_EP1_IN_IRQHandler + 0x08000b60 DMA1_Stream0_IRQHandler + 0x08000b60 CAN1_TX_IRQHandler + 0x08000b60 EXTI4_IRQHandler + 0x08000b60 ETH_IRQHandler + 0x08000b60 OTG_HS_EP1_OUT_IRQHandler + 0x08000b60 WWDG_IRQHandler + 0x08000b60 SPI6_IRQHandler + 0x08000b60 TIM2_IRQHandler + 0x08000b60 OTG_FS_WKUP_IRQHandler + 0x08000b60 TIM1_TRG_COM_TIM11_IRQHandler + 0x08000b60 OTG_HS_IRQHandler + 0x08000b60 DMA2D_IRQHandler + 0x08000b60 EXTI1_IRQHandler + 0x08000b60 UART7_IRQHandler + 0x08000b60 USART2_IRQHandler + 0x08000b60 I2C2_ER_IRQHandler + 0x08000b60 DMA2_Stream1_IRQHandler + 0x08000b60 CAN1_SCE_IRQHandler + 0x08000b60 FLASH_IRQHandler + 0x08000b60 DMA2_Stream4_IRQHandler + 0x08000b60 USART1_IRQHandler + 0x08000b60 OTG_FS_IRQHandler + 0x08000b60 SPI3_IRQHandler + 0x08000b60 DMA1_Stream4_IRQHandler + 0x08000b60 I2C1_ER_IRQHandler + 0x08000b60 FMC_IRQHandler + 0x08000b60 DMA2_Stream6_IRQHandler + 0x08000b60 SAI1_IRQHandler + 0x08000b60 DMA1_Stream3_IRQHandler + *fill* 0x08000b62 0x2 + .text.HAL_Init + 0x08000b64 0x44 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x08000b64 HAL_Init + .text.HAL_GetTick + 0x08000ba8 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x08000ba8 HAL_GetTick + .text.__NVIC_SetPriorityGrouping + 0x08000bc0 0x48 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .text.__NVIC_GetPriorityGrouping + 0x08000c08 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .text.__NVIC_EnableIRQ + 0x08000c24 0x3c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .text.__NVIC_SetPriority + 0x08000c60 0x54 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .text.NVIC_EncodePriority + 0x08000cb4 0x66 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .text.HAL_NVIC_SetPriorityGrouping + 0x08000d1a 0x16 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08000d1a HAL_NVIC_SetPriorityGrouping + .text.HAL_NVIC_SetPriority + 0x08000d30 0x38 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08000d30 HAL_NVIC_SetPriority + .text.HAL_NVIC_EnableIRQ + 0x08000d68 0x1c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08000d68 HAL_NVIC_EnableIRQ + .text.HAL_GPIO_Init + 0x08000d84 0x358 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + 0x08000d84 HAL_GPIO_Init + .text.HAL_GPIO_WritePin + 0x080010dc 0x32 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + 0x080010dc HAL_GPIO_WritePin + *fill* 0x0800110e 0x2 + .text.HAL_GPIO_EXTI_IRQHandler + 0x08001110 0x30 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + 0x08001110 HAL_GPIO_EXTI_IRQHandler .text.HAL_RCC_OscConfig - 0x08001108 0x4f0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x08001108 HAL_RCC_OscConfig + 0x08001140 0x4f0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x08001140 HAL_RCC_OscConfig .text.HAL_RCC_ClockConfig - 0x080015f8 0x1cc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x080015f8 HAL_RCC_ClockConfig + 0x08001630 0x1cc ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x08001630 HAL_RCC_ClockConfig .text.HAL_RCC_GetSysClockFreq - 0x080017c4 0x20c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x080017c4 HAL_RCC_GetSysClockFreq + 0x080017fc 0x20c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x080017fc HAL_RCC_GetSysClockFreq .text.HAL_RCC_GetHCLKFreq - 0x080019d0 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x080019d0 HAL_RCC_GetHCLKFreq + 0x08001a08 0x18 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x08001a08 HAL_RCC_GetHCLKFreq .text.HAL_RCC_GetPCLK1Freq - 0x080019e8 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x080019e8 HAL_RCC_GetPCLK1Freq + 0x08001a20 0x28 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x08001a20 HAL_RCC_GetPCLK1Freq .text.HAL_RCC_GetClockConfig - 0x08001a10 0x64 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x08001a10 HAL_RCC_GetClockConfig + 0x08001a48 0x64 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x08001a48 HAL_RCC_GetClockConfig .text.HAL_TIM_Base_Init - 0x08001a74 0x9e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08001a74 HAL_TIM_Base_Init - *fill* 0x08001b12 0x2 + 0x08001aac 0x9e ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08001aac HAL_TIM_Base_Init + *fill* 0x08001b4a 0x2 .text.HAL_TIM_Base_Start_IT - 0x08001b14 0xe0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08001b14 HAL_TIM_Base_Start_IT + 0x08001b4c 0xe0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08001b4c HAL_TIM_Base_Start_IT .text.HAL_TIM_IRQHandler - 0x08001bf4 0x1e0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08001bf4 HAL_TIM_IRQHandler + 0x08001c2c 0x1e0 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08001c2c HAL_TIM_IRQHandler .text.HAL_TIM_PeriodElapsedCallback - 0x08001dd4 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08001dd4 HAL_TIM_PeriodElapsedCallback + 0x08001e0c 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08001e0c HAL_TIM_PeriodElapsedCallback .text.HAL_TIM_OC_DelayElapsedCallback - 0x08001de8 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08001de8 HAL_TIM_OC_DelayElapsedCallback + 0x08001e20 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08001e20 HAL_TIM_OC_DelayElapsedCallback .text.HAL_TIM_IC_CaptureCallback - 0x08001dfc 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08001dfc HAL_TIM_IC_CaptureCallback + 0x08001e34 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08001e34 HAL_TIM_IC_CaptureCallback .text.HAL_TIM_PWM_PulseFinishedCallback - 0x08001e10 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08001e10 HAL_TIM_PWM_PulseFinishedCallback + 0x08001e48 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08001e48 HAL_TIM_PWM_PulseFinishedCallback .text.HAL_TIM_TriggerCallback - 0x08001e24 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08001e24 HAL_TIM_TriggerCallback + 0x08001e5c 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08001e5c HAL_TIM_TriggerCallback .text.TIM_Base_SetConfig - 0x08001e38 0x14c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - 0x08001e38 TIM_Base_SetConfig + 0x08001e70 0x14c ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + 0x08001e70 TIM_Base_SetConfig .text.HAL_TIMEx_CommutCallback - 0x08001f84 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - 0x08001f84 HAL_TIMEx_CommutCallback + 0x08001fbc 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + 0x08001fbc HAL_TIMEx_CommutCallback .text.HAL_TIMEx_BreakCallback - 0x08001f98 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - 0x08001f98 HAL_TIMEx_BreakCallback + 0x08001fd0 0x14 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + 0x08001fd0 HAL_TIMEx_BreakCallback .text.vListInsertEnd - 0x08001fac 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - 0x08001fac vListInsertEnd + 0x08001fe4 0x48 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + 0x08001fe4 vListInsertEnd .text.uxListRemove - 0x08001ff4 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - 0x08001ff4 uxListRemove + 0x0800202c 0x54 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + 0x0800202c uxListRemove .text.xTaskIncrementTick - 0x08002048 0x174 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x08002048 xTaskIncrementTick + 0x08002080 0x174 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x08002080 xTaskIncrementTick .text.vTaskSwitchContext - 0x080021bc 0x104 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x080021bc vTaskSwitchContext + 0x080021f4 0x104 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x080021f4 vTaskSwitchContext .text.prvResetNextTaskUnblockTime - 0x080022c0 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x080022f8 0x40 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + *fill* 0x08002338 0x8 .text.SVC_Handler - 0x08002300 0x28 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x08002300 SVC_Handler - *fill* 0x08002328 0x8 + 0x08002340 0x28 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x08002340 SVC_Handler + *fill* 0x08002368 0x8 .text.PendSV_Handler - 0x08002330 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x08002330 PendSV_Handler + 0x08002370 0x68 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x08002370 PendSV_Handler .text.SysTick_Handler - 0x08002398 0x44 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o - 0x08002398 SysTick_Handler - .text.memset 0x080023dc 0x10 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memset.o) - 0x080023dc memset + 0x080023d8 0x44 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + 0x080023d8 SysTick_Handler + .text.memset 0x0800241c 0x10 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-memset.o) + 0x0800241c memset .text.__libc_init_array - 0x080023ec 0x48 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-init.o) - 0x080023ec __libc_init_array + 0x0800242c 0x48 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(libc_a-init.o) + 0x0800242c __libc_init_array *(.glue_7) - .glue_7 0x08002434 0x0 linker stubs + .glue_7 0x08002474 0x0 linker stubs *(.glue_7t) - .glue_7t 0x08002434 0x0 linker stubs + .glue_7t 0x08002474 0x0 linker stubs *(.eh_frame) - .eh_frame 0x08002434 0x0 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o + .eh_frame 0x08002474 0x0 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o *(.init) - .init 0x08002434 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crti.o - 0x08002434 _init - .init 0x08002438 0x8 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtn.o + .init 0x08002474 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crti.o + 0x08002474 _init + .init 0x08002478 0x8 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtn.o *(.fini) - .fini 0x08002440 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crti.o - 0x08002440 _fini - .fini 0x08002444 0x8 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtn.o - 0x0800244c . = ALIGN (0x4) - 0x0800244c _etext = . + .fini 0x08002480 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crti.o + 0x08002480 _fini + .fini 0x08002484 0x8 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtn.o + 0x0800248c . = ALIGN (0x4) + 0x0800248c _etext = . -.vfp11_veneer 0x0800244c 0x0 - .vfp11_veneer 0x0800244c 0x0 linker stubs +.vfp11_veneer 0x0800248c 0x0 + .vfp11_veneer 0x0800248c 0x0 linker stubs -.v4_bx 0x0800244c 0x0 - .v4_bx 0x0800244c 0x0 linker stubs +.v4_bx 0x0800248c 0x0 + .v4_bx 0x0800248c 0x0 linker stubs -.iplt 0x0800244c 0x0 - .iplt 0x0800244c 0x0 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o +.iplt 0x0800248c 0x0 + .iplt 0x0800248c 0x0 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o -.rodata 0x0800244c 0x18 - 0x0800244c . = ALIGN (0x4) +.rodata 0x0800248c 0x18 + 0x0800248c . = ALIGN (0x4) *(.rodata) *(.rodata*) .rodata.AHBPrescTable - 0x0800244c 0x10 ./Core/Src/system_stm32f4xx.o - 0x0800244c AHBPrescTable + 0x0800248c 0x10 ./Core/Src/system_stm32f4xx.o + 0x0800248c AHBPrescTable .rodata.APBPrescTable - 0x0800245c 0x8 ./Core/Src/system_stm32f4xx.o - 0x0800245c APBPrescTable - 0x08002464 . = ALIGN (0x4) + 0x0800249c 0x8 ./Core/Src/system_stm32f4xx.o + 0x0800249c APBPrescTable + 0x080024a4 . = ALIGN (0x4) -.ARM.extab 0x08002464 0x0 - 0x08002464 . = ALIGN (0x4) +.ARM.extab 0x080024a4 0x0 + 0x080024a4 . = ALIGN (0x4) *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x08002464 . = ALIGN (0x4) + 0x080024a4 . = ALIGN (0x4) -.ARM 0x08002464 0x8 - 0x08002464 . = ALIGN (0x4) - 0x08002464 __exidx_start = . +.ARM 0x080024a4 0x8 + 0x080024a4 . = ALIGN (0x4) + 0x080024a4 __exidx_start = . *(.ARM.exidx*) - .ARM.exidx 0x08002464 0x8 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) - 0x0800246c __exidx_end = . - 0x0800246c . = ALIGN (0x4) + .ARM.exidx 0x080024a4 0x8 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) + 0x080024ac __exidx_end = . + 0x080024ac . = ALIGN (0x4) -.preinit_array 0x0800246c 0x0 - 0x0800246c . = ALIGN (0x4) - 0x0800246c PROVIDE (__preinit_array_start = .) +.preinit_array 0x080024ac 0x0 + 0x080024ac . = ALIGN (0x4) + 0x080024ac PROVIDE (__preinit_array_start = .) *(.preinit_array*) - 0x0800246c PROVIDE (__preinit_array_end = .) - 0x0800246c . = ALIGN (0x4) + 0x080024ac PROVIDE (__preinit_array_end = .) + 0x080024ac . = ALIGN (0x4) -.init_array 0x0800246c 0x4 - 0x0800246c . = ALIGN (0x4) - 0x0800246c PROVIDE (__init_array_start = .) +.init_array 0x080024ac 0x4 + 0x080024ac . = ALIGN (0x4) + 0x080024ac PROVIDE (__init_array_start = .) *(SORT_BY_NAME(.init_array.*)) *(.init_array*) - .init_array 0x0800246c 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o - 0x08002470 PROVIDE (__init_array_end = .) - 0x08002470 . = ALIGN (0x4) + .init_array 0x080024ac 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o + 0x080024b0 PROVIDE (__init_array_end = .) + 0x080024b0 . = ALIGN (0x4) -.fini_array 0x08002470 0x4 - 0x08002470 . = ALIGN (0x4) +.fini_array 0x080024b0 0x4 + 0x080024b0 . = ALIGN (0x4) [!provide] PROVIDE (__fini_array_start = .) *(SORT_BY_NAME(.fini_array.*)) *(.fini_array*) - .fini_array 0x08002470 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o + .fini_array 0x080024b0 0x4 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o [!provide] PROVIDE (__fini_array_end = .) - 0x08002474 . = ALIGN (0x4) - 0x08002474 _sidata = LOADADDR (.data) + 0x080024b4 . = ALIGN (0x4) + 0x080024b4 _sidata = LOADADDR (.data) -.rel.dyn 0x08002474 0x0 - .rel.iplt 0x08002474 0x0 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o +.rel.dyn 0x080024b4 0x0 + .rel.iplt 0x080024b4 0x0 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o -.data 0x20000000 0x8 load address 0x08002474 +.data 0x20000000 0xc load address 0x080024b4 0x20000000 . = ALIGN (0x4) 0x20000000 _sdata = . *(.data) *(.data*) + .data.currentState + 0x20000000 0x4 ./Core/Src/main.o + 0x20000000 currentState .data.SystemCoreClock - 0x20000000 0x4 ./Core/Src/system_stm32f4xx.o - 0x20000000 SystemCoreClock + 0x20000004 0x4 ./Core/Src/system_stm32f4xx.o + 0x20000004 SystemCoreClock .data.uwTickPrio - 0x20000004 0x4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x20000004 uwTickPrio + 0x20000008 0x4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x20000008 uwTickPrio *(.RamFunc) *(.RamFunc*) - 0x20000008 . = ALIGN (0x4) - 0x20000008 _edata = . - 0x0800247c _siccmram = LOADADDR (.ccmram) + 0x2000000c . = ALIGN (0x4) + 0x2000000c _edata = . + 0x080024c0 _siccmram = LOADADDR (.ccmram) -.igot.plt 0x20000008 0x0 load address 0x0800247c - .igot.plt 0x20000008 0x0 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o +.igot.plt 0x2000000c 0x0 load address 0x080024c0 + .igot.plt 0x2000000c 0x0 /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o -.ccmram 0x10000000 0x0 load address 0x0800247c +.ccmram 0x10000000 0x0 load address 0x080024c0 0x10000000 . = ALIGN (0x4) 0x10000000 _sccmram = . *(.ccmram) @@ -4955,15 +4956,12 @@ LOAD /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externalto 0x10000000 _eccmram = . 0x10000000 . = ALIGN (0x4) -.bss 0x20000008 0x128 - 0x20000008 _sbss = . - 0x20000008 __bss_start__ = _sbss +.bss 0x2000000c 0x128 + 0x2000000c _sbss = . + 0x2000000c __bss_start__ = _sbss *(.bss) - .bss 0x20000008 0x1c /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o + .bss 0x2000000c 0x1c /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.0.202410170706/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m+fp/hard/crtbegin.o *(.bss*) - .bss.currentState - 0x20000024 0x4 ./Core/Src/main.o - 0x20000024 currentState .bss.stateStartTime 0x20000028 0x4 ./Core/Src/main.o 0x20000028 stateStartTime @@ -4977,48 +4975,51 @@ LOAD /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externalto 0x2000002e 0x1 ./Core/Src/main.o 0x2000002e pedestrianThisCycle *fill* 0x2000002f 0x1 - .bss.htim6 0x20000030 0x48 ./Core/Src/stm32f4xx_hal_timebase_tim.o - 0x20000030 htim6 - .bss.uwTick 0x20000078 0x4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x20000078 uwTick + .bss._ZZ22HAL_GPIO_EXTI_CallbackE17lastInterruptTime + 0x20000030 0x4 ./Core/Src/main.o + .bss.htim6 0x20000034 0x48 ./Core/Src/stm32f4xx_hal_timebase_tim.o + 0x20000034 htim6 + .bss.uwTick 0x2000007c 0x4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x2000007c uwTick .bss.pxCurrentTCB - 0x2000007c 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - 0x2000007c pxCurrentTCB + 0x20000080 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x20000080 pxCurrentTCB .bss.pxReadyTasksLists - 0x20000080 0x8c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + 0x20000084 0x8c ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .bss.pxDelayedTaskList - 0x2000010c 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.pxOverflowDelayedTaskList 0x20000110 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.xTickCount + .bss.pxOverflowDelayedTaskList 0x20000114 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.uxTopReadyPriority + .bss.xTickCount 0x20000118 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.xPendedTicks + .bss.uxTopReadyPriority 0x2000011c 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.xYieldPending + .bss.xPendedTicks 0x20000120 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.xNumOfOverflows + .bss.xYieldPending 0x20000124 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.xNextTaskUnblockTime + .bss.xNumOfOverflows 0x20000128 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .bss.uxSchedulerSuspended + .bss.xNextTaskUnblockTime 0x2000012c 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .bss.uxSchedulerSuspended + 0x20000130 0x4 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o *(COMMON) - 0x20000130 . = ALIGN (0x4) - 0x20000130 _ebss = . - 0x20000130 __bss_end__ = _ebss + 0x20000134 . = ALIGN (0x4) + 0x20000134 _ebss = . + 0x20000134 __bss_end__ = _ebss ._user_heap_stack - 0x20000130 0x600 - 0x20000130 . = ALIGN (0x8) + 0x20000134 0x604 + 0x20000138 . = ALIGN (0x8) + *fill* 0x20000134 0x4 [!provide] PROVIDE (end = .) - 0x20000130 PROVIDE (_end = .) - 0x20000330 . = (. + _Min_Heap_Size) - *fill* 0x20000130 0x200 - 0x20000730 . = (. + _Min_Stack_Size) - *fill* 0x20000330 0x400 - 0x20000730 . = ALIGN (0x8) + 0x20000138 PROVIDE (_end = .) + 0x20000338 . = (. + _Min_Heap_Size) + *fill* 0x20000138 0x200 + 0x20000738 . = (. + _Min_Stack_Size) + *fill* 0x20000338 0x400 + 0x20000738 . = ALIGN (0x8) /DISCARD/ libc.a(*) @@ -5258,42 +5259,42 @@ LOAD /home/ja/st/stm32cubeide_1.19.0/plugins/com.st.stm32cube.ide.mcu.externalto .debug_macro 0x00024a21 0x10 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o .debug_macro 0x00024a31 0x196 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o -.debug_line 0x00000000 0xd487 +.debug_line 0x00000000 0xd485 .debug_line 0x00000000 0x7f0 ./Core/Src/freertos.o - .debug_line 0x000007f0 0x875 ./Core/Src/main.o - .debug_line 0x00001065 0x75c ./Core/Src/stm32f4xx_hal_msp.o - .debug_line 0x000017c1 0x731 ./Core/Src/stm32f4xx_hal_timebase_tim.o - .debug_line 0x00001ef2 0x754 ./Core/Src/stm32f4xx_it.o - .debug_line 0x00002646 0x729 ./Core/Src/system_stm32f4xx.o - .debug_line 0x00002d6f 0x7a ./Core/Startup/startup_stm32f429zitx.o - .debug_line 0x00002de9 0x9db ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_line 0x000037c4 0xc75 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_line 0x00004439 0xb25 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_line 0x00004f5e 0xdb4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_line 0x00005d12 0x371a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .debug_line 0x0000942c 0x1905 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - .debug_line 0x0000ad31 0x6d5 ./Middlewares/Third_Party/FreeRTOS/Source/list.o - .debug_line 0x0000b406 0x191b ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .debug_line 0x0000cd21 0x766 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + .debug_line 0x000007f0 0x873 ./Core/Src/main.o + .debug_line 0x00001063 0x75c ./Core/Src/stm32f4xx_hal_msp.o + .debug_line 0x000017bf 0x731 ./Core/Src/stm32f4xx_hal_timebase_tim.o + .debug_line 0x00001ef0 0x754 ./Core/Src/stm32f4xx_it.o + .debug_line 0x00002644 0x729 ./Core/Src/system_stm32f4xx.o + .debug_line 0x00002d6d 0x7a ./Core/Startup/startup_stm32f429zitx.o + .debug_line 0x00002de7 0x9db ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_line 0x000037c2 0xc75 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_line 0x00004437 0xb25 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_line 0x00004f5c 0xdb4 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_line 0x00005d10 0x371a ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + .debug_line 0x0000942a 0x1905 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + .debug_line 0x0000ad2f 0x6d5 ./Middlewares/Third_Party/FreeRTOS/Source/list.o + .debug_line 0x0000b404 0x191b ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_line 0x0000cd1f 0x766 ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o -.debug_str 0x00000000 0xdf3c5 - .debug_str 0x00000000 0xdf3c5 ./Core/Src/freertos.o +.debug_str 0x00000000 0xdf3ae + .debug_str 0x00000000 0xdf3ae ./Core/Src/freertos.o 0xd6231 (size before relaxing) - .debug_str 0x000df3c5 0xd3337 ./Core/Src/main.o - .debug_str 0x000df3c5 0xd3140 ./Core/Src/stm32f4xx_hal_msp.o - .debug_str 0x000df3c5 0xd2e9d ./Core/Src/stm32f4xx_hal_timebase_tim.o - .debug_str 0x000df3c5 0xd2882 ./Core/Src/stm32f4xx_it.o - .debug_str 0x000df3c5 0xd2342 ./Core/Src/system_stm32f4xx.o - .debug_str 0x000df3c5 0x71 ./Core/Startup/startup_stm32f429zitx.o - .debug_str 0x000df3c5 0xd2f65 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_str 0x000df3c5 0xd2c93 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_str 0x000df3c5 0xd24bd ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_str 0x000df3c5 0xd2776 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_str 0x000df3c5 0xd36b9 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o - .debug_str 0x000df3c5 0xd2ec5 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o - .debug_str 0x000df3c5 0xac1b ./Middlewares/Third_Party/FreeRTOS/Source/list.o - .debug_str 0x000df3c5 0xd209 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o - .debug_str 0x000df3c5 0x87bd ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o + .debug_str 0x000df3ae 0xd3337 ./Core/Src/main.o + .debug_str 0x000df3ae 0xd3140 ./Core/Src/stm32f4xx_hal_msp.o + .debug_str 0x000df3ae 0xd2e9d ./Core/Src/stm32f4xx_hal_timebase_tim.o + .debug_str 0x000df3ae 0xd2882 ./Core/Src/stm32f4xx_it.o + .debug_str 0x000df3ae 0xd2342 ./Core/Src/system_stm32f4xx.o + .debug_str 0x000df3ae 0x71 ./Core/Startup/startup_stm32f429zitx.o + .debug_str 0x000df3ae 0xd2f65 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_str 0x000df3ae 0xd2c93 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_str 0x000df3ae 0xd24bd ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_str 0x000df3ae 0xd2776 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_str 0x000df3ae 0xd36b9 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o + .debug_str 0x000df3ae 0xd2ec5 ./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o + .debug_str 0x000df3ae 0xac1b ./Middlewares/Third_Party/FreeRTOS/Source/list.o + .debug_str 0x000df3ae 0xd209 ./Middlewares/Third_Party/FreeRTOS/Source/tasks.o + .debug_str 0x000df3ae 0x87bd ./Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.o .comment 0x00000000 0x43 .comment 0x00000000 0x43 ./Core/Src/freertos.o